@oneuptime/common 10.5.27 → 10.5.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/AnalyticsModels/MetricBaselineHourly.ts +30 -0
- package/Models/AnalyticsModels/MetricItemAggMV1m.ts +35 -5
- package/Models/AnalyticsModels/MetricItemAggMV1mByHost.ts +28 -0
- package/Server/Services/DockerHostService.ts +53 -8
- package/Server/Services/HostService.ts +64 -5
- package/Server/Services/KubernetesClusterService.ts +15 -3
- package/Server/Services/OpenTelemetryIngestService.ts +11 -2
- package/build/dist/Models/AnalyticsModels/MetricBaselineHourly.js +30 -0
- package/build/dist/Models/AnalyticsModels/MetricBaselineHourly.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js +35 -5
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByHost.js +28 -0
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByHost.js.map +1 -1
- package/build/dist/Server/Services/DockerHostService.js +46 -8
- package/build/dist/Server/Services/DockerHostService.js.map +1 -1
- package/build/dist/Server/Services/HostService.js +57 -5
- package/build/dist/Server/Services/HostService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterService.js +13 -3
- package/build/dist/Server/Services/KubernetesClusterService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +11 -2
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/package.json +1 -1
|
@@ -171,6 +171,36 @@ export default class MetricBaselineHourly extends AnalyticsBaseModel {
|
|
|
171
171
|
maxObsStateColumn,
|
|
172
172
|
],
|
|
173
173
|
projections: [],
|
|
174
|
+
/*
|
|
175
|
+
* Baseline materialized view. Canonical definition applied
|
|
176
|
+
* idempotently by the analytics schema-sync on every boot (see
|
|
177
|
+
* AnalyticsTableManagement.createMaterializedViews), so a
|
|
178
|
+
* wiped/recreated ClickHouse volume self-heals. Aggregates each
|
|
179
|
+
* sample into a (calendar day, hour-of-week) cell.
|
|
180
|
+
*/
|
|
181
|
+
materializedViews: [
|
|
182
|
+
{
|
|
183
|
+
name: "MetricBaselineHourly_mv",
|
|
184
|
+
query: `CREATE MATERIALIZED VIEW IF NOT EXISTS MetricBaselineHourly_mv
|
|
185
|
+
TO MetricBaselineHourly
|
|
186
|
+
AS
|
|
187
|
+
SELECT
|
|
188
|
+
projectId,
|
|
189
|
+
name,
|
|
190
|
+
serviceId,
|
|
191
|
+
toDate(time) AS day,
|
|
192
|
+
toUInt8((toDayOfWeek(time, 1) - 1) * 24 + toHour(time)) AS hourOfWeek,
|
|
193
|
+
countState(toFloat64(coalesce(value, sum, 0))) AS sampleCountState,
|
|
194
|
+
avgState(toFloat64(coalesce(value, sum, 0))) AS meanState,
|
|
195
|
+
stddevPopState(toFloat64(coalesce(value, sum, 0))) AS stddevState,
|
|
196
|
+
quantileState(0.5)(toFloat64(coalesce(value, sum, 0))) AS medianState,
|
|
197
|
+
quantileState(0.95)(toFloat64(coalesce(value, sum, 0))) AS p95State,
|
|
198
|
+
minState(toFloat64(coalesce(value, sum, 0))) AS minObsState,
|
|
199
|
+
maxState(toFloat64(coalesce(value, sum, 0))) AS maxObsState
|
|
200
|
+
FROM MetricItemV2
|
|
201
|
+
GROUP BY projectId, name, serviceId, day, hourOfWeek`,
|
|
202
|
+
},
|
|
203
|
+
],
|
|
174
204
|
/*
|
|
175
205
|
* Sort key prefix matches the read-side WHERE clause of
|
|
176
206
|
* MetricBaselineService.getBaseline so lookups touch a tight
|
|
@@ -8,11 +8,12 @@ import TableColumnType from "../../Types/AnalyticsDatabase/TableColumnType";
|
|
|
8
8
|
* Per-minute pre-aggregated rollup of `MetricItemV2` value samples.
|
|
9
9
|
*
|
|
10
10
|
* Populated by the attached materialized view `MetricItemAggMV1m_mv`
|
|
11
|
-
* (
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* `*Merge()` (e.g.
|
|
11
|
+
* (declared below in `materializedViews` and applied idempotently by
|
|
12
|
+
* the analytics schema-sync on every boot), which fires on every
|
|
13
|
+
* insert into `MetricItemV2`. Each row holds AggregateFunction
|
|
14
|
+
* *states* — partial intermediate values combined by background merges
|
|
15
|
+
* and finalized at read time via `*Merge()` (e.g.
|
|
16
|
+
* `sumMerge(valueSumState)`).
|
|
16
17
|
*
|
|
17
18
|
* Read access goes through `MetricService.tryBuildMinuteAggregateMVStatement`
|
|
18
19
|
* for chart aggregation queries that span ≥ 1 minute and don't filter
|
|
@@ -130,6 +131,35 @@ export default class MetricItemAggMV1m extends AnalyticsBaseModel {
|
|
|
130
131
|
retentionDateColumn,
|
|
131
132
|
],
|
|
132
133
|
projections: [],
|
|
134
|
+
/*
|
|
135
|
+
* Materialized view that pre-rolls MetricItemV2 value samples into
|
|
136
|
+
* 1-minute buckets. This is the canonical definition: the analytics
|
|
137
|
+
* schema-sync (AnalyticsTableManagement.createMaterializedViews)
|
|
138
|
+
* creates it on every boot if missing, so a wiped/recreated
|
|
139
|
+
* ClickHouse volume self-heals even when the one-time DataMigration
|
|
140
|
+
* is already recorded as executed in Postgres. Kept idempotent with
|
|
141
|
+
* `IF NOT EXISTS`.
|
|
142
|
+
*/
|
|
143
|
+
materializedViews: [
|
|
144
|
+
{
|
|
145
|
+
name: "MetricItemAggMV1m_mv",
|
|
146
|
+
query: `CREATE MATERIALIZED VIEW IF NOT EXISTS MetricItemAggMV1m_mv
|
|
147
|
+
TO MetricItemAggMV1m
|
|
148
|
+
AS
|
|
149
|
+
SELECT
|
|
150
|
+
projectId,
|
|
151
|
+
name,
|
|
152
|
+
serviceId,
|
|
153
|
+
toStartOfMinute(time) AS bucketTime,
|
|
154
|
+
sumState(toFloat64(coalesce(value, sum, 0))) AS valueSumState,
|
|
155
|
+
countState(toFloat64(coalesce(value, sum, 0))) AS valueCountState,
|
|
156
|
+
minState(toFloat64(coalesce(value, sum, 0))) AS valueMinState,
|
|
157
|
+
maxState(toFloat64(coalesce(value, sum, 0))) AS valueMaxState,
|
|
158
|
+
max(retentionDate) AS retentionDate
|
|
159
|
+
FROM MetricItemV2
|
|
160
|
+
GROUP BY projectId, name, serviceId, bucketTime`,
|
|
161
|
+
},
|
|
162
|
+
],
|
|
133
163
|
sortKeys: ["projectId", "name", "serviceId", "bucketTime"],
|
|
134
164
|
primaryKeys: ["projectId", "name", "serviceId", "bucketTime"],
|
|
135
165
|
partitionKey: "sipHash64(projectId) % 16",
|
|
@@ -131,6 +131,34 @@ export default class MetricItemAggMV1mByHost extends AnalyticsBaseModel {
|
|
|
131
131
|
retentionDateColumn,
|
|
132
132
|
],
|
|
133
133
|
projections: [],
|
|
134
|
+
/*
|
|
135
|
+
* Per-host materialized view. Canonical definition applied
|
|
136
|
+
* idempotently by the analytics schema-sync on every boot (see
|
|
137
|
+
* AnalyticsTableManagement.createMaterializedViews), so a
|
|
138
|
+
* wiped/recreated ClickHouse volume self-heals. Rows without a
|
|
139
|
+
* host identifier are filtered out so the per-host MV stays small.
|
|
140
|
+
*/
|
|
141
|
+
materializedViews: [
|
|
142
|
+
{
|
|
143
|
+
name: "MetricItemAggMV1mByHost_mv",
|
|
144
|
+
query: `CREATE MATERIALIZED VIEW IF NOT EXISTS MetricItemAggMV1mByHost_mv
|
|
145
|
+
TO MetricItemAggMV1mByHost
|
|
146
|
+
AS
|
|
147
|
+
SELECT
|
|
148
|
+
projectId,
|
|
149
|
+
name,
|
|
150
|
+
attributes['resource.host.name'] AS hostIdentifier,
|
|
151
|
+
toStartOfMinute(time) AS bucketTime,
|
|
152
|
+
sumState(toFloat64(coalesce(value, sum, 0))) AS valueSumState,
|
|
153
|
+
countState(toFloat64(coalesce(value, sum, 0))) AS valueCountState,
|
|
154
|
+
minState(toFloat64(coalesce(value, sum, 0))) AS valueMinState,
|
|
155
|
+
maxState(toFloat64(coalesce(value, sum, 0))) AS valueMaxState,
|
|
156
|
+
max(retentionDate) AS retentionDate
|
|
157
|
+
FROM MetricItemV2
|
|
158
|
+
WHERE attributes['resource.host.name'] != ''
|
|
159
|
+
GROUP BY projectId, name, hostIdentifier, bucketTime`,
|
|
160
|
+
},
|
|
161
|
+
],
|
|
134
162
|
sortKeys: ["projectId", "name", "hostIdentifier", "bucketTime"],
|
|
135
163
|
primaryKeys: ["projectId", "name", "hostIdentifier", "bucketTime"],
|
|
136
164
|
partitionKey: "sipHash64(projectId) % 16",
|
|
@@ -59,11 +59,23 @@ export class Service extends DatabaseService<Model> {
|
|
|
59
59
|
projectId: ObjectID;
|
|
60
60
|
hostIdentifier: string;
|
|
61
61
|
}): Promise<Model> {
|
|
62
|
-
|
|
62
|
+
/*
|
|
63
|
+
* Canonicalize + look up case-insensitively. A Docker host is keyed by
|
|
64
|
+
* the OTel `host.name` resource attribute (see autoDiscoverDockerHost),
|
|
65
|
+
* whose casing is not stable — Windows surfaces PRIMARY01 vs primary01
|
|
66
|
+
* across resource detectors. Ingest already canonicalizes host.name
|
|
67
|
+
* (OtelIngestBaseService.normalizeHostNameAttributesInPlace); we repeat
|
|
68
|
+
* it here so the method is correct for any caller. A case-sensitive
|
|
69
|
+
* lookup would miss an existing row, then fail to create it because the
|
|
70
|
+
* unique guard (checkUniqueColumnBy -> findWithSameText) compares
|
|
71
|
+
* case-insensitively, wedging ingest for that host. Mirrors HostService.
|
|
72
|
+
*/
|
|
73
|
+
const hostIdentifier: string = data.hostIdentifier.trim().toLowerCase();
|
|
74
|
+
|
|
63
75
|
const existingHost: Model | null = await this.findOneBy({
|
|
64
76
|
query: {
|
|
65
77
|
projectId: data.projectId,
|
|
66
|
-
hostIdentifier:
|
|
78
|
+
hostIdentifier: QueryHelper.findWithSameText(hostIdentifier),
|
|
67
79
|
},
|
|
68
80
|
select: {
|
|
69
81
|
_id: true,
|
|
@@ -76,6 +88,37 @@ export class Service extends DatabaseService<Model> {
|
|
|
76
88
|
});
|
|
77
89
|
|
|
78
90
|
if (existingHost) {
|
|
91
|
+
/*
|
|
92
|
+
* Converge a legacy mixed-case identifier onto the canonical form so
|
|
93
|
+
* the stored resource.host.name (canonicalized at ingest) keeps
|
|
94
|
+
* matching the Docker-host detail page filter. Best-effort — never
|
|
95
|
+
* block ingest on it. Updates don't re-run the unique guard.
|
|
96
|
+
*/
|
|
97
|
+
if (
|
|
98
|
+
existingHost._id &&
|
|
99
|
+
existingHost.hostIdentifier &&
|
|
100
|
+
existingHost.hostIdentifier !== hostIdentifier
|
|
101
|
+
) {
|
|
102
|
+
try {
|
|
103
|
+
await this.updateOneById({
|
|
104
|
+
id: new ObjectID(existingHost._id.toString()),
|
|
105
|
+
data: {
|
|
106
|
+
hostIdentifier: hostIdentifier,
|
|
107
|
+
},
|
|
108
|
+
props: {
|
|
109
|
+
isRoot: true,
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
existingHost.hostIdentifier = hostIdentifier;
|
|
113
|
+
} catch (err) {
|
|
114
|
+
logger.warn(
|
|
115
|
+
`DockerHostService: failed to canonicalize hostIdentifier for host ${existingHost._id.toString()}: ${
|
|
116
|
+
err instanceof Error ? err.message : String(err)
|
|
117
|
+
}`,
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
79
122
|
return existingHost;
|
|
80
123
|
}
|
|
81
124
|
|
|
@@ -83,8 +126,8 @@ export class Service extends DatabaseService<Model> {
|
|
|
83
126
|
// Create new host
|
|
84
127
|
const newHost: Model = new Model();
|
|
85
128
|
newHost.projectId = data.projectId;
|
|
86
|
-
newHost.name =
|
|
87
|
-
newHost.hostIdentifier =
|
|
129
|
+
newHost.name = hostIdentifier;
|
|
130
|
+
newHost.hostIdentifier = hostIdentifier;
|
|
88
131
|
newHost.otelCollectorStatus = "connected";
|
|
89
132
|
newHost.lastSeenAt = OneUptimeDate.getCurrentDate();
|
|
90
133
|
|
|
@@ -98,13 +141,15 @@ export class Service extends DatabaseService<Model> {
|
|
|
98
141
|
return createdHost;
|
|
99
142
|
} catch {
|
|
100
143
|
/*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
144
|
+
* Either two ingest workers raced to create the same host, or a host
|
|
145
|
+
* with this identifier in a different case already existed and the
|
|
146
|
+
* unique guard rejected the insert. Re-resolve case-insensitively so
|
|
147
|
+
* the caller still gets the existing row instead of throwing.
|
|
103
148
|
*/
|
|
104
149
|
const reFetchedHost: Model | null = await this.findOneBy({
|
|
105
150
|
query: {
|
|
106
151
|
projectId: data.projectId,
|
|
107
|
-
hostIdentifier:
|
|
152
|
+
hostIdentifier: QueryHelper.findWithSameText(hostIdentifier),
|
|
108
153
|
},
|
|
109
154
|
select: {
|
|
110
155
|
_id: true,
|
|
@@ -121,7 +166,7 @@ export class Service extends DatabaseService<Model> {
|
|
|
121
166
|
}
|
|
122
167
|
|
|
123
168
|
throw new Error(
|
|
124
|
-
"Failed to create or find Docker host: " +
|
|
169
|
+
"Failed to create or find Docker host: " + hostIdentifier,
|
|
125
170
|
);
|
|
126
171
|
}
|
|
127
172
|
}
|
|
@@ -60,10 +60,31 @@ export class Service extends DatabaseService<Model> {
|
|
|
60
60
|
projectId: ObjectID;
|
|
61
61
|
hostIdentifier: string;
|
|
62
62
|
}): Promise<Model> {
|
|
63
|
+
/*
|
|
64
|
+
* Canonicalize the identifier (trim + lowercase, matching
|
|
65
|
+
* QueryHelper.findWithSameText). Host identity comes from the OTel
|
|
66
|
+
* `host.name` resource attribute, whose casing is not stable across
|
|
67
|
+
* batches — Windows in particular surfaces the hostname uppercased
|
|
68
|
+
* (`COMPUTERNAME`-style, e.g. PRIMARY01) from some resource detectors
|
|
69
|
+
* and lowercased from others, so the same physical host arrives as
|
|
70
|
+
* both `PRIMARY01` and `primary01`. Ingest already canonicalizes
|
|
71
|
+
* host.name (OtelIngestBaseService.normalizeHostNameAttributesInPlace);
|
|
72
|
+
* we repeat it here so the method is correct for any caller.
|
|
73
|
+
*/
|
|
74
|
+
const hostIdentifier: string = data.hostIdentifier.trim().toLowerCase();
|
|
75
|
+
|
|
76
|
+
/*
|
|
77
|
+
* Look up case-insensitively. The unique guard on name/hostIdentifier
|
|
78
|
+
* (DatabaseService.checkUniqueColumnBy -> QueryHelper.findWithSameText)
|
|
79
|
+
* already compares case-insensitively, so a case-sensitive lookup here
|
|
80
|
+
* would miss an existing row, then fail to create it ("Host with the
|
|
81
|
+
* same name already exists"), and permanently wedge ingest for that
|
|
82
|
+
* host. Mirrors LabelService.findOrCreateLabelByName.
|
|
83
|
+
*/
|
|
63
84
|
const existingHost: Model | null = await this.findOneBy({
|
|
64
85
|
query: {
|
|
65
86
|
projectId: data.projectId,
|
|
66
|
-
hostIdentifier:
|
|
87
|
+
hostIdentifier: QueryHelper.findWithSameText(hostIdentifier),
|
|
67
88
|
},
|
|
68
89
|
select: {
|
|
69
90
|
_id: true,
|
|
@@ -76,14 +97,46 @@ export class Service extends DatabaseService<Model> {
|
|
|
76
97
|
});
|
|
77
98
|
|
|
78
99
|
if (existingHost) {
|
|
100
|
+
/*
|
|
101
|
+
* Converge a legacy mixed-case identifier onto the canonical form so
|
|
102
|
+
* the stored resource.host.name (also canonicalized at ingest) keeps
|
|
103
|
+
* matching the host-detail page filter. Best-effort — never block
|
|
104
|
+
* ingest on it. Updates don't re-run the unique guard, so writing the
|
|
105
|
+
* host's own canonical identifier cannot collide.
|
|
106
|
+
*/
|
|
107
|
+
if (
|
|
108
|
+
existingHost._id &&
|
|
109
|
+
existingHost.hostIdentifier &&
|
|
110
|
+
existingHost.hostIdentifier !== hostIdentifier
|
|
111
|
+
) {
|
|
112
|
+
try {
|
|
113
|
+
await this.updateOneById({
|
|
114
|
+
id: new ObjectID(existingHost._id.toString()),
|
|
115
|
+
data: {
|
|
116
|
+
hostIdentifier: hostIdentifier,
|
|
117
|
+
},
|
|
118
|
+
props: {
|
|
119
|
+
isRoot: true,
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
existingHost.hostIdentifier = hostIdentifier;
|
|
123
|
+
} catch (err) {
|
|
124
|
+
logger.warn(
|
|
125
|
+
`HostService: failed to canonicalize hostIdentifier for host ${existingHost._id.toString()}: ${
|
|
126
|
+
err instanceof Error ? err.message : String(err)
|
|
127
|
+
}`,
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
79
132
|
return existingHost;
|
|
80
133
|
}
|
|
81
134
|
|
|
82
135
|
try {
|
|
83
136
|
const newHost: Model = new Model();
|
|
84
137
|
newHost.projectId = data.projectId;
|
|
85
|
-
newHost.name =
|
|
86
|
-
newHost.hostIdentifier =
|
|
138
|
+
newHost.name = hostIdentifier;
|
|
139
|
+
newHost.hostIdentifier = hostIdentifier;
|
|
87
140
|
newHost.otelCollectorStatus = "connected";
|
|
88
141
|
newHost.lastSeenAt = OneUptimeDate.getCurrentDate();
|
|
89
142
|
|
|
@@ -96,10 +149,16 @@ export class Service extends DatabaseService<Model> {
|
|
|
96
149
|
|
|
97
150
|
return createdHost;
|
|
98
151
|
} catch {
|
|
152
|
+
/*
|
|
153
|
+
* Either two ingest workers raced to create the same host, or a
|
|
154
|
+
* host with this identifier in a different case already existed and
|
|
155
|
+
* the unique guard rejected the insert. Re-resolve case-insensitively
|
|
156
|
+
* so the caller still gets the existing row instead of throwing.
|
|
157
|
+
*/
|
|
99
158
|
const reFetchedHost: Model | null = await this.findOneBy({
|
|
100
159
|
query: {
|
|
101
160
|
projectId: data.projectId,
|
|
102
|
-
hostIdentifier:
|
|
161
|
+
hostIdentifier: QueryHelper.findWithSameText(hostIdentifier),
|
|
103
162
|
},
|
|
104
163
|
select: {
|
|
105
164
|
_id: true,
|
|
@@ -115,7 +174,7 @@ export class Service extends DatabaseService<Model> {
|
|
|
115
174
|
return reFetchedHost;
|
|
116
175
|
}
|
|
117
176
|
|
|
118
|
-
throw new Error("Failed to create or find host: " +
|
|
177
|
+
throw new Error("Failed to create or find host: " + hostIdentifier);
|
|
119
178
|
}
|
|
120
179
|
}
|
|
121
180
|
|
|
@@ -59,11 +59,21 @@ export class Service extends DatabaseService<Model> {
|
|
|
59
59
|
projectId: ObjectID;
|
|
60
60
|
clusterIdentifier: string;
|
|
61
61
|
}): Promise<Model> {
|
|
62
|
-
|
|
62
|
+
/*
|
|
63
|
+
* Look up case-insensitively. The unique guard on name/clusterIdentifier
|
|
64
|
+
* (checkUniqueColumnBy -> findWithSameText) compares case-insensitively,
|
|
65
|
+
* so a case-sensitive lookup would miss an existing row on casing drift
|
|
66
|
+
* (k8s.cluster.name), then fail to create it ("KubernetesCluster with the
|
|
67
|
+
* same name already exists") and wedge ingest. Mirrors
|
|
68
|
+
* LabelService.findOrCreateLabelByName. Unlike HostService we keep the
|
|
69
|
+
* stored casing as-is: k8s.cluster.name is not normalized at ingest, so
|
|
70
|
+
* lowering the identifier here would desync it from the raw-cased
|
|
71
|
+
* resource.k8s.cluster.name attribute the detail page filters on.
|
|
72
|
+
*/
|
|
63
73
|
const existingCluster: Model | null = await this.findOneBy({
|
|
64
74
|
query: {
|
|
65
75
|
projectId: data.projectId,
|
|
66
|
-
clusterIdentifier: data.clusterIdentifier,
|
|
76
|
+
clusterIdentifier: QueryHelper.findWithSameText(data.clusterIdentifier),
|
|
67
77
|
},
|
|
68
78
|
select: {
|
|
69
79
|
_id: true,
|
|
@@ -104,7 +114,9 @@ export class Service extends DatabaseService<Model> {
|
|
|
104
114
|
const reFetchedCluster: Model | null = await this.findOneBy({
|
|
105
115
|
query: {
|
|
106
116
|
projectId: data.projectId,
|
|
107
|
-
clusterIdentifier:
|
|
117
|
+
clusterIdentifier: QueryHelper.findWithSameText(
|
|
118
|
+
data.clusterIdentifier,
|
|
119
|
+
),
|
|
108
120
|
},
|
|
109
121
|
select: {
|
|
110
122
|
_id: true,
|
|
@@ -14,6 +14,7 @@ import TelemetryUtil from "../../Server/Utils/Telemetry/Telemetry";
|
|
|
14
14
|
import { extractOneuptimeLabelNames } from "../Utils/Telemetry/OneuptimeLabel";
|
|
15
15
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
16
16
|
import SortOrder from "../../Types/BaseDatabase/SortOrder";
|
|
17
|
+
import QueryHelper from "../Types/Database/QueryHelper";
|
|
17
18
|
import logger from "../Utils/Logger";
|
|
18
19
|
import TelemetryRetentionConfig from "../../Types/Telemetry/TelemetryRetentionConfig";
|
|
19
20
|
import ServiceType from "../../Types/Telemetry/ServiceType";
|
|
@@ -252,10 +253,18 @@ export default class OTelIngestService {
|
|
|
252
253
|
* inserts into unique-violation errors that the catch block
|
|
253
254
|
* below resolves to the winning row).
|
|
254
255
|
*/
|
|
256
|
+
/*
|
|
257
|
+
* Case-insensitive lookup (findWithSameText) to match the unique
|
|
258
|
+
* guard's comparison — otherwise a service.name that drifts only in
|
|
259
|
+
* case or surrounding whitespace misses here, gets rejected on create
|
|
260
|
+
* ("Service with the same name already exists"), and wedges ingest.
|
|
261
|
+
* Stored casing is preserved: service-detail pages key telemetry by the
|
|
262
|
+
* stable serviceId, and the name is user-facing.
|
|
263
|
+
*/
|
|
255
264
|
const service: Service | null = await ServiceService.findOneBy({
|
|
256
265
|
query: {
|
|
257
266
|
projectId: data.projectId,
|
|
258
|
-
name: data.serviceName,
|
|
267
|
+
name: QueryHelper.findWithSameText(data.serviceName),
|
|
259
268
|
},
|
|
260
269
|
select: {
|
|
261
270
|
_id: true,
|
|
@@ -314,7 +323,7 @@ export default class OTelIngestService {
|
|
|
314
323
|
const existingService: Service | null = await ServiceService.findOneBy({
|
|
315
324
|
query: {
|
|
316
325
|
projectId: data.projectId,
|
|
317
|
-
name: data.serviceName,
|
|
326
|
+
name: QueryHelper.findWithSameText(data.serviceName),
|
|
318
327
|
},
|
|
319
328
|
select: {
|
|
320
329
|
_id: true,
|
|
@@ -148,6 +148,36 @@ export default class MetricBaselineHourly extends AnalyticsBaseModel {
|
|
|
148
148
|
maxObsStateColumn,
|
|
149
149
|
],
|
|
150
150
|
projections: [],
|
|
151
|
+
/*
|
|
152
|
+
* Baseline materialized view. Canonical definition applied
|
|
153
|
+
* idempotently by the analytics schema-sync on every boot (see
|
|
154
|
+
* AnalyticsTableManagement.createMaterializedViews), so a
|
|
155
|
+
* wiped/recreated ClickHouse volume self-heals. Aggregates each
|
|
156
|
+
* sample into a (calendar day, hour-of-week) cell.
|
|
157
|
+
*/
|
|
158
|
+
materializedViews: [
|
|
159
|
+
{
|
|
160
|
+
name: "MetricBaselineHourly_mv",
|
|
161
|
+
query: `CREATE MATERIALIZED VIEW IF NOT EXISTS MetricBaselineHourly_mv
|
|
162
|
+
TO MetricBaselineHourly
|
|
163
|
+
AS
|
|
164
|
+
SELECT
|
|
165
|
+
projectId,
|
|
166
|
+
name,
|
|
167
|
+
serviceId,
|
|
168
|
+
toDate(time) AS day,
|
|
169
|
+
toUInt8((toDayOfWeek(time, 1) - 1) * 24 + toHour(time)) AS hourOfWeek,
|
|
170
|
+
countState(toFloat64(coalesce(value, sum, 0))) AS sampleCountState,
|
|
171
|
+
avgState(toFloat64(coalesce(value, sum, 0))) AS meanState,
|
|
172
|
+
stddevPopState(toFloat64(coalesce(value, sum, 0))) AS stddevState,
|
|
173
|
+
quantileState(0.5)(toFloat64(coalesce(value, sum, 0))) AS medianState,
|
|
174
|
+
quantileState(0.95)(toFloat64(coalesce(value, sum, 0))) AS p95State,
|
|
175
|
+
minState(toFloat64(coalesce(value, sum, 0))) AS minObsState,
|
|
176
|
+
maxState(toFloat64(coalesce(value, sum, 0))) AS maxObsState
|
|
177
|
+
FROM MetricItemV2
|
|
178
|
+
GROUP BY projectId, name, serviceId, day, hourOfWeek`,
|
|
179
|
+
},
|
|
180
|
+
],
|
|
151
181
|
/*
|
|
152
182
|
* Sort key prefix matches the read-side WHERE clause of
|
|
153
183
|
* MetricBaselineService.getBaseline so lookups touch a tight
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricBaselineHourly.js","sourceRoot":"","sources":["../../../../Models/AnalyticsModels/MetricBaselineHourly.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MetricBaselineHourly.js","sourceRoot":"","sources":["../../../../Models/AnalyticsModels/MetricBaselineHourly.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,11 +7,12 @@ import TableColumnType from "../../Types/AnalyticsDatabase/TableColumnType";
|
|
|
7
7
|
* Per-minute pre-aggregated rollup of `MetricItemV2` value samples.
|
|
8
8
|
*
|
|
9
9
|
* Populated by the attached materialized view `MetricItemAggMV1m_mv`
|
|
10
|
-
* (
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* `*Merge()` (e.g.
|
|
10
|
+
* (declared below in `materializedViews` and applied idempotently by
|
|
11
|
+
* the analytics schema-sync on every boot), which fires on every
|
|
12
|
+
* insert into `MetricItemV2`. Each row holds AggregateFunction
|
|
13
|
+
* *states* — partial intermediate values combined by background merges
|
|
14
|
+
* and finalized at read time via `*Merge()` (e.g.
|
|
15
|
+
* `sumMerge(valueSumState)`).
|
|
15
16
|
*
|
|
16
17
|
* Read access goes through `MetricService.tryBuildMinuteAggregateMVStatement`
|
|
17
18
|
* for chart aggregation queries that span ≥ 1 minute and don't filter
|
|
@@ -113,6 +114,35 @@ export default class MetricItemAggMV1m extends AnalyticsBaseModel {
|
|
|
113
114
|
retentionDateColumn,
|
|
114
115
|
],
|
|
115
116
|
projections: [],
|
|
117
|
+
/*
|
|
118
|
+
* Materialized view that pre-rolls MetricItemV2 value samples into
|
|
119
|
+
* 1-minute buckets. This is the canonical definition: the analytics
|
|
120
|
+
* schema-sync (AnalyticsTableManagement.createMaterializedViews)
|
|
121
|
+
* creates it on every boot if missing, so a wiped/recreated
|
|
122
|
+
* ClickHouse volume self-heals even when the one-time DataMigration
|
|
123
|
+
* is already recorded as executed in Postgres. Kept idempotent with
|
|
124
|
+
* `IF NOT EXISTS`.
|
|
125
|
+
*/
|
|
126
|
+
materializedViews: [
|
|
127
|
+
{
|
|
128
|
+
name: "MetricItemAggMV1m_mv",
|
|
129
|
+
query: `CREATE MATERIALIZED VIEW IF NOT EXISTS MetricItemAggMV1m_mv
|
|
130
|
+
TO MetricItemAggMV1m
|
|
131
|
+
AS
|
|
132
|
+
SELECT
|
|
133
|
+
projectId,
|
|
134
|
+
name,
|
|
135
|
+
serviceId,
|
|
136
|
+
toStartOfMinute(time) AS bucketTime,
|
|
137
|
+
sumState(toFloat64(coalesce(value, sum, 0))) AS valueSumState,
|
|
138
|
+
countState(toFloat64(coalesce(value, sum, 0))) AS valueCountState,
|
|
139
|
+
minState(toFloat64(coalesce(value, sum, 0))) AS valueMinState,
|
|
140
|
+
maxState(toFloat64(coalesce(value, sum, 0))) AS valueMaxState,
|
|
141
|
+
max(retentionDate) AS retentionDate
|
|
142
|
+
FROM MetricItemV2
|
|
143
|
+
GROUP BY projectId, name, serviceId, bucketTime`,
|
|
144
|
+
},
|
|
145
|
+
],
|
|
116
146
|
sortKeys: ["projectId", "name", "serviceId", "bucketTime"],
|
|
117
147
|
primaryKeys: ["projectId", "name", "serviceId", "bucketTime"],
|
|
118
148
|
partitionKey: "sipHash64(projectId) % 16",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricItemAggMV1m.js","sourceRoot":"","sources":["../../../../Models/AnalyticsModels/MetricItemAggMV1m.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,yCAAyC,CAAC;AACzE,OAAO,oBAAoB,MAAM,oDAAoD,CAAC;AACtF,OAAO,kBAAkB,MAAM,kDAAkD,CAAC;AAClF,OAAO,oBAAoB,MAAM,2CAA2C,CAAC;AAC7E,OAAO,eAAe,MAAM,+CAA+C,CAAC;AAE5E
|
|
1
|
+
{"version":3,"file":"MetricItemAggMV1m.js","sourceRoot":"","sources":["../../../../Models/AnalyticsModels/MetricItemAggMV1m.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,yCAAyC,CAAC;AACzE,OAAO,oBAAoB,MAAM,oDAAoD,CAAC;AACtF,OAAO,kBAAkB,MAAM,kDAAkD,CAAC;AAClF,OAAO,oBAAoB,MAAM,2CAA2C,CAAC;AAC7E,OAAO,eAAe,MAAM,+CAA+C,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,kBAAkB;IAC/D;QACE,MAAM,eAAe,GAAyB,IAAI,oBAAoB,CAAC;YACrE,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,YAAY;YACnB,WAAW,EAAE,0DAA0D;YACvE,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,UAAU,GAAyB,IAAI,oBAAoB,CAAC;YAChE,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,4CAA4C;YACzD,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,IAAI;SAC3B,CAAC,CAAC;QAEH,MAAM,eAAe,GAAyB,IAAI,oBAAoB,CAAC;YACrE,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,YAAY;YACnB,WAAW,EAAE,2CAA2C;YACxD,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,IAAI;SAC3B,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAyB,IAAI,oBAAoB,CAAC;YACtE,GAAG,EAAE,YAAY;YACjB,KAAK,EAAE,aAAa;YACpB,WAAW,EACT,gGAAgG;YAClG,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,IAAI;SAC3B,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAyB,IAAI,oBAAoB,CAAC;YACzE,GAAG,EAAE,eAAe;YACpB,KAAK,EAAE,aAAa;YACpB,WAAW,EACT,uFAAuF;YACzF,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,iBAAiB;YACvC,2BAA2B,EAAE,cAAc;SAC5C,CAAC,CAAC;QAEH,MAAM,qBAAqB,GACzB,IAAI,oBAAoB,CAAC;YACvB,GAAG,EAAE,iBAAiB;YACtB,KAAK,EAAE,eAAe;YACtB,WAAW,EACT,+FAA+F;YACjG,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,iBAAiB;YACvC,2BAA2B,EAAE,gBAAgB;SAC9C,CAAC,CAAC;QAEL,MAAM,mBAAmB,GAAyB,IAAI,oBAAoB,CAAC;YACzE,GAAG,EAAE,eAAe;YACpB,KAAK,EAAE,aAAa;YACpB,WAAW,EACT,0EAA0E;YAC5E,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,iBAAiB;YACvC,2BAA2B,EAAE,cAAc;SAC5C,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAyB,IAAI,oBAAoB,CAAC;YACzE,GAAG,EAAE,eAAe;YACpB,KAAK,EAAE,aAAa;YACpB,WAAW,EACT,0EAA0E;YAC5E,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,iBAAiB;YACvC,2BAA2B,EAAE,cAAc;SAC5C,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAyB,IAAI,oBAAoB,CAAC;YACzE,GAAG,EAAE,eAAe;YACpB,KAAK,EAAE,gBAAgB;YACvB,WAAW,EACT,2JAA2J;YAC7J,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,IAAI;SAC3B,CAAC,CAAC;QAEH,KAAK,CAAC;YACJ,SAAS,EAAE,kBAAkB,CAAC,iBAAiB;YAC/C,WAAW,EAAE,oBAAoB,CAAC,oBAAoB;YACtD,YAAY,EAAE,2BAA2B;YACzC,UAAU,EAAE,4BAA4B;YACxC,YAAY,EAAE;gBACZ,eAAe;gBACf,UAAU;gBACV,eAAe;gBACf,gBAAgB;gBAChB,mBAAmB;gBACnB,qBAAqB;gBACrB,mBAAmB;gBACnB,mBAAmB;gBACnB,mBAAmB;aACpB;YACD,WAAW,EAAE,EAAE;YACf;;;;;;;;eAQG;YACH,iBAAiB,EAAE;gBACjB;oBACE,IAAI,EAAE,sBAAsB;oBAC5B,KAAK,EAAE;;;;;;;;;;;;;;gDAc+B;iBACvC;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC;YAC1D,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC;YAC7D,YAAY,EAAE,2BAA2B;YACzC,aAAa,EAAE,sBAAsB;SACtC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -111,6 +111,34 @@ export default class MetricItemAggMV1mByHost extends AnalyticsBaseModel {
|
|
|
111
111
|
retentionDateColumn,
|
|
112
112
|
],
|
|
113
113
|
projections: [],
|
|
114
|
+
/*
|
|
115
|
+
* Per-host materialized view. Canonical definition applied
|
|
116
|
+
* idempotently by the analytics schema-sync on every boot (see
|
|
117
|
+
* AnalyticsTableManagement.createMaterializedViews), so a
|
|
118
|
+
* wiped/recreated ClickHouse volume self-heals. Rows without a
|
|
119
|
+
* host identifier are filtered out so the per-host MV stays small.
|
|
120
|
+
*/
|
|
121
|
+
materializedViews: [
|
|
122
|
+
{
|
|
123
|
+
name: "MetricItemAggMV1mByHost_mv",
|
|
124
|
+
query: `CREATE MATERIALIZED VIEW IF NOT EXISTS MetricItemAggMV1mByHost_mv
|
|
125
|
+
TO MetricItemAggMV1mByHost
|
|
126
|
+
AS
|
|
127
|
+
SELECT
|
|
128
|
+
projectId,
|
|
129
|
+
name,
|
|
130
|
+
attributes['resource.host.name'] AS hostIdentifier,
|
|
131
|
+
toStartOfMinute(time) AS bucketTime,
|
|
132
|
+
sumState(toFloat64(coalesce(value, sum, 0))) AS valueSumState,
|
|
133
|
+
countState(toFloat64(coalesce(value, sum, 0))) AS valueCountState,
|
|
134
|
+
minState(toFloat64(coalesce(value, sum, 0))) AS valueMinState,
|
|
135
|
+
maxState(toFloat64(coalesce(value, sum, 0))) AS valueMaxState,
|
|
136
|
+
max(retentionDate) AS retentionDate
|
|
137
|
+
FROM MetricItemV2
|
|
138
|
+
WHERE attributes['resource.host.name'] != ''
|
|
139
|
+
GROUP BY projectId, name, hostIdentifier, bucketTime`,
|
|
140
|
+
},
|
|
141
|
+
],
|
|
114
142
|
sortKeys: ["projectId", "name", "hostIdentifier", "bucketTime"],
|
|
115
143
|
primaryKeys: ["projectId", "name", "hostIdentifier", "bucketTime"],
|
|
116
144
|
partitionKey: "sipHash64(projectId) % 16",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricItemAggMV1mByHost.js","sourceRoot":"","sources":["../../../../Models/AnalyticsModels/MetricItemAggMV1mByHost.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MetricItemAggMV1mByHost.js","sourceRoot":"","sources":["../../../../Models/AnalyticsModels/MetricItemAggMV1mByHost.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,11 +47,22 @@ export class Service extends DatabaseService {
|
|
|
47
47
|
return createdItem;
|
|
48
48
|
}
|
|
49
49
|
async findOrCreateByHostIdentifier(data) {
|
|
50
|
-
|
|
50
|
+
/*
|
|
51
|
+
* Canonicalize + look up case-insensitively. A Docker host is keyed by
|
|
52
|
+
* the OTel `host.name` resource attribute (see autoDiscoverDockerHost),
|
|
53
|
+
* whose casing is not stable — Windows surfaces PRIMARY01 vs primary01
|
|
54
|
+
* across resource detectors. Ingest already canonicalizes host.name
|
|
55
|
+
* (OtelIngestBaseService.normalizeHostNameAttributesInPlace); we repeat
|
|
56
|
+
* it here so the method is correct for any caller. A case-sensitive
|
|
57
|
+
* lookup would miss an existing row, then fail to create it because the
|
|
58
|
+
* unique guard (checkUniqueColumnBy -> findWithSameText) compares
|
|
59
|
+
* case-insensitively, wedging ingest for that host. Mirrors HostService.
|
|
60
|
+
*/
|
|
61
|
+
const hostIdentifier = data.hostIdentifier.trim().toLowerCase();
|
|
51
62
|
const existingHost = await this.findOneBy({
|
|
52
63
|
query: {
|
|
53
64
|
projectId: data.projectId,
|
|
54
|
-
hostIdentifier:
|
|
65
|
+
hostIdentifier: QueryHelper.findWithSameText(hostIdentifier),
|
|
55
66
|
},
|
|
56
67
|
select: {
|
|
57
68
|
_id: true,
|
|
@@ -63,14 +74,39 @@ export class Service extends DatabaseService {
|
|
|
63
74
|
},
|
|
64
75
|
});
|
|
65
76
|
if (existingHost) {
|
|
77
|
+
/*
|
|
78
|
+
* Converge a legacy mixed-case identifier onto the canonical form so
|
|
79
|
+
* the stored resource.host.name (canonicalized at ingest) keeps
|
|
80
|
+
* matching the Docker-host detail page filter. Best-effort — never
|
|
81
|
+
* block ingest on it. Updates don't re-run the unique guard.
|
|
82
|
+
*/
|
|
83
|
+
if (existingHost._id &&
|
|
84
|
+
existingHost.hostIdentifier &&
|
|
85
|
+
existingHost.hostIdentifier !== hostIdentifier) {
|
|
86
|
+
try {
|
|
87
|
+
await this.updateOneById({
|
|
88
|
+
id: new ObjectID(existingHost._id.toString()),
|
|
89
|
+
data: {
|
|
90
|
+
hostIdentifier: hostIdentifier,
|
|
91
|
+
},
|
|
92
|
+
props: {
|
|
93
|
+
isRoot: true,
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
existingHost.hostIdentifier = hostIdentifier;
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
logger.warn(`DockerHostService: failed to canonicalize hostIdentifier for host ${existingHost._id.toString()}: ${err instanceof Error ? err.message : String(err)}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
66
102
|
return existingHost;
|
|
67
103
|
}
|
|
68
104
|
try {
|
|
69
105
|
// Create new host
|
|
70
106
|
const newHost = new Model();
|
|
71
107
|
newHost.projectId = data.projectId;
|
|
72
|
-
newHost.name =
|
|
73
|
-
newHost.hostIdentifier =
|
|
108
|
+
newHost.name = hostIdentifier;
|
|
109
|
+
newHost.hostIdentifier = hostIdentifier;
|
|
74
110
|
newHost.otelCollectorStatus = "connected";
|
|
75
111
|
newHost.lastSeenAt = OneUptimeDate.getCurrentDate();
|
|
76
112
|
const createdHost = await this.create({
|
|
@@ -83,13 +119,15 @@ export class Service extends DatabaseService {
|
|
|
83
119
|
}
|
|
84
120
|
catch (_a) {
|
|
85
121
|
/*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
122
|
+
* Either two ingest workers raced to create the same host, or a host
|
|
123
|
+
* with this identifier in a different case already existed and the
|
|
124
|
+
* unique guard rejected the insert. Re-resolve case-insensitively so
|
|
125
|
+
* the caller still gets the existing row instead of throwing.
|
|
88
126
|
*/
|
|
89
127
|
const reFetchedHost = await this.findOneBy({
|
|
90
128
|
query: {
|
|
91
129
|
projectId: data.projectId,
|
|
92
|
-
hostIdentifier:
|
|
130
|
+
hostIdentifier: QueryHelper.findWithSameText(hostIdentifier),
|
|
93
131
|
},
|
|
94
132
|
select: {
|
|
95
133
|
_id: true,
|
|
@@ -103,7 +141,7 @@ export class Service extends DatabaseService {
|
|
|
103
141
|
if (reFetchedHost) {
|
|
104
142
|
return reFetchedHost;
|
|
105
143
|
}
|
|
106
|
-
throw new Error("Failed to create or find Docker host: " +
|
|
144
|
+
throw new Error("Failed to create or find Docker host: " + hostIdentifier);
|
|
107
145
|
}
|
|
108
146
|
}
|
|
109
147
|
async updateLastSeen(hostId, extra) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DockerHostService.js","sourceRoot":"","sources":["../../../../Server/Services/DockerHostService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,gCAAgC,MAAM,oCAAoC,CAAC;AAClF,OAAO,gCAAgC,MAAM,oCAAoC,CAAC;AAClF,OAAO,KAAK,MAAM,wCAAwC,CAAC;AAG3D,OAAO,WAAW,MAAM,gCAAgC,CAAC;AACzD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,SAAS,MAAM,+BAA+B,CAAC;AACtD,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,MAAyB,MAAM,iBAAiB,CAAC;AACxD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,yBAAyB,GAAW,uBAAuB,CAAC;AAClE,MAAM,0BAA0B,GAAW,EAAE,CAAC;AAE9C,MAAM,8BAA8B,GAAW,4BAA4B,CAAC;AAC5E,MAAM,gCAAgC,GAAW,EAAE,CAAC;AAEpD,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAGwB,AAAN,KAAK,CAAC,eAAe,CACtC,SAA0B,EAC1B,WAAkB;QAElB,IAAI,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC;YAC5C,OAAO,CAAC,OAAO,EAAE;iBACd,IAAI,CAAC,KAAK,IAAI,EAAE;gBACf,MAAM,gCAAgC,CAAC,sBAAsB,CAC3D,WAAW,CACZ,CAAC;YACJ,CAAC,CAAC;iBACD,IAAI,CAAC,KAAK,IAAI,EAAE;gBACf,MAAM,gCAAgC,CAAC,sBAAsB,CAC3D,WAAW,CACZ,CAAC;YACJ,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;;gBACtB,MAAM,CAAC,KAAK,CACV,0EAA0E,KAAK,EAAE,EACjF;oBACE,SAAS,EAAE,MAAA,WAAW,CAAC,SAAS,0CAAE,QAAQ,EAAE;oBAC5C,YAAY,EAAE,MAAA,WAAW,CAAC,EAAE,0CAAE,QAAQ,EAAE;iBACxB,CACnB,CAAC;YACJ,CAAC,CAAC,CAAC;QACP,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAGY,AAAN,KAAK,CAAC,4BAA4B,CAAC,IAGzC;QACC,
|
|
1
|
+
{"version":3,"file":"DockerHostService.js","sourceRoot":"","sources":["../../../../Server/Services/DockerHostService.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,10 +52,30 @@ export class Service extends DatabaseService {
|
|
|
52
52
|
return createdItem;
|
|
53
53
|
}
|
|
54
54
|
async findOrCreateByHostIdentifier(data) {
|
|
55
|
+
/*
|
|
56
|
+
* Canonicalize the identifier (trim + lowercase, matching
|
|
57
|
+
* QueryHelper.findWithSameText). Host identity comes from the OTel
|
|
58
|
+
* `host.name` resource attribute, whose casing is not stable across
|
|
59
|
+
* batches — Windows in particular surfaces the hostname uppercased
|
|
60
|
+
* (`COMPUTERNAME`-style, e.g. PRIMARY01) from some resource detectors
|
|
61
|
+
* and lowercased from others, so the same physical host arrives as
|
|
62
|
+
* both `PRIMARY01` and `primary01`. Ingest already canonicalizes
|
|
63
|
+
* host.name (OtelIngestBaseService.normalizeHostNameAttributesInPlace);
|
|
64
|
+
* we repeat it here so the method is correct for any caller.
|
|
65
|
+
*/
|
|
66
|
+
const hostIdentifier = data.hostIdentifier.trim().toLowerCase();
|
|
67
|
+
/*
|
|
68
|
+
* Look up case-insensitively. The unique guard on name/hostIdentifier
|
|
69
|
+
* (DatabaseService.checkUniqueColumnBy -> QueryHelper.findWithSameText)
|
|
70
|
+
* already compares case-insensitively, so a case-sensitive lookup here
|
|
71
|
+
* would miss an existing row, then fail to create it ("Host with the
|
|
72
|
+
* same name already exists"), and permanently wedge ingest for that
|
|
73
|
+
* host. Mirrors LabelService.findOrCreateLabelByName.
|
|
74
|
+
*/
|
|
55
75
|
const existingHost = await this.findOneBy({
|
|
56
76
|
query: {
|
|
57
77
|
projectId: data.projectId,
|
|
58
|
-
hostIdentifier:
|
|
78
|
+
hostIdentifier: QueryHelper.findWithSameText(hostIdentifier),
|
|
59
79
|
},
|
|
60
80
|
select: {
|
|
61
81
|
_id: true,
|
|
@@ -67,13 +87,39 @@ export class Service extends DatabaseService {
|
|
|
67
87
|
},
|
|
68
88
|
});
|
|
69
89
|
if (existingHost) {
|
|
90
|
+
/*
|
|
91
|
+
* Converge a legacy mixed-case identifier onto the canonical form so
|
|
92
|
+
* the stored resource.host.name (also canonicalized at ingest) keeps
|
|
93
|
+
* matching the host-detail page filter. Best-effort — never block
|
|
94
|
+
* ingest on it. Updates don't re-run the unique guard, so writing the
|
|
95
|
+
* host's own canonical identifier cannot collide.
|
|
96
|
+
*/
|
|
97
|
+
if (existingHost._id &&
|
|
98
|
+
existingHost.hostIdentifier &&
|
|
99
|
+
existingHost.hostIdentifier !== hostIdentifier) {
|
|
100
|
+
try {
|
|
101
|
+
await this.updateOneById({
|
|
102
|
+
id: new ObjectID(existingHost._id.toString()),
|
|
103
|
+
data: {
|
|
104
|
+
hostIdentifier: hostIdentifier,
|
|
105
|
+
},
|
|
106
|
+
props: {
|
|
107
|
+
isRoot: true,
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
existingHost.hostIdentifier = hostIdentifier;
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
logger.warn(`HostService: failed to canonicalize hostIdentifier for host ${existingHost._id.toString()}: ${err instanceof Error ? err.message : String(err)}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
70
116
|
return existingHost;
|
|
71
117
|
}
|
|
72
118
|
try {
|
|
73
119
|
const newHost = new Model();
|
|
74
120
|
newHost.projectId = data.projectId;
|
|
75
|
-
newHost.name =
|
|
76
|
-
newHost.hostIdentifier =
|
|
121
|
+
newHost.name = hostIdentifier;
|
|
122
|
+
newHost.hostIdentifier = hostIdentifier;
|
|
77
123
|
newHost.otelCollectorStatus = "connected";
|
|
78
124
|
newHost.lastSeenAt = OneUptimeDate.getCurrentDate();
|
|
79
125
|
const createdHost = await this.create({
|
|
@@ -85,10 +131,16 @@ export class Service extends DatabaseService {
|
|
|
85
131
|
return createdHost;
|
|
86
132
|
}
|
|
87
133
|
catch (_a) {
|
|
134
|
+
/*
|
|
135
|
+
* Either two ingest workers raced to create the same host, or a
|
|
136
|
+
* host with this identifier in a different case already existed and
|
|
137
|
+
* the unique guard rejected the insert. Re-resolve case-insensitively
|
|
138
|
+
* so the caller still gets the existing row instead of throwing.
|
|
139
|
+
*/
|
|
88
140
|
const reFetchedHost = await this.findOneBy({
|
|
89
141
|
query: {
|
|
90
142
|
projectId: data.projectId,
|
|
91
|
-
hostIdentifier:
|
|
143
|
+
hostIdentifier: QueryHelper.findWithSameText(hostIdentifier),
|
|
92
144
|
},
|
|
93
145
|
select: {
|
|
94
146
|
_id: true,
|
|
@@ -102,7 +154,7 @@ export class Service extends DatabaseService {
|
|
|
102
154
|
if (reFetchedHost) {
|
|
103
155
|
return reFetchedHost;
|
|
104
156
|
}
|
|
105
|
-
throw new Error("Failed to create or find host: " +
|
|
157
|
+
throw new Error("Failed to create or find host: " + hostIdentifier);
|
|
106
158
|
}
|
|
107
159
|
}
|
|
108
160
|
async updateLastSeen(hostId, extra) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HostService.js","sourceRoot":"","sources":["../../../../Server/Services/HostService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AACtE,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,MAAM,kCAAkC,CAAC;AAGrD,OAAO,WAAW,MAAM,gCAAgC,CAAC;AACzD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,SAAS,MAAM,+BAA+B,CAAC;AACtD,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,MAAyB,MAAM,iBAAiB,CAAC;AACxD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,yBAAyB,GAAW,gBAAgB,CAAC;AAC3D,MAAM,0BAA0B,GAAW,EAAE,CAAC;AAE9C,MAAM,8BAA8B,GAAW,qBAAqB,CAAC;AACrE,MAAM,gCAAgC,GAAW,EAAE,CAAC;AAEpD,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAGwB,AAAN,KAAK,CAAC,eAAe,CACtC,SAA0B,EAC1B,WAAkB;QAElB,IAAI,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC;YAC5C;;;;eAIG;YACH,OAAO,CAAC,OAAO,EAAE;iBACd,IAAI,CAAC,KAAK,IAAI,EAAE;gBACf,MAAM,0BAA0B,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;YACjE,CAAC,CAAC;iBACD,IAAI,CAAC,KAAK,IAAI,EAAE;gBACf,MAAM,0BAA0B,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;YACjE,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;;gBACtB,MAAM,CAAC,KAAK,CACV,6DAA6D,KAAK,EAAE,EACpE;oBACE,SAAS,EAAE,MAAA,WAAW,CAAC,SAAS,0CAAE,QAAQ,EAAE;oBAC5C,MAAM,EAAE,MAAA,WAAW,CAAC,EAAE,0CAAE,QAAQ,EAAE;iBAClB,CACnB,CAAC;YACJ,CAAC,CAAC,CAAC;QACP,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAGY,AAAN,KAAK,CAAC,4BAA4B,CAAC,IAGzC;QACC,MAAM,YAAY,GAAiB,MAAM,IAAI,CAAC,SAAS,CAAC;YACtD,KAAK,EAAE;gBACL,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"HostService.js","sourceRoot":"","sources":["../../../../Server/Services/HostService.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,11 +47,21 @@ export class Service extends DatabaseService {
|
|
|
47
47
|
return createdItem;
|
|
48
48
|
}
|
|
49
49
|
async findOrCreateByClusterIdentifier(data) {
|
|
50
|
-
|
|
50
|
+
/*
|
|
51
|
+
* Look up case-insensitively. The unique guard on name/clusterIdentifier
|
|
52
|
+
* (checkUniqueColumnBy -> findWithSameText) compares case-insensitively,
|
|
53
|
+
* so a case-sensitive lookup would miss an existing row on casing drift
|
|
54
|
+
* (k8s.cluster.name), then fail to create it ("KubernetesCluster with the
|
|
55
|
+
* same name already exists") and wedge ingest. Mirrors
|
|
56
|
+
* LabelService.findOrCreateLabelByName. Unlike HostService we keep the
|
|
57
|
+
* stored casing as-is: k8s.cluster.name is not normalized at ingest, so
|
|
58
|
+
* lowering the identifier here would desync it from the raw-cased
|
|
59
|
+
* resource.k8s.cluster.name attribute the detail page filters on.
|
|
60
|
+
*/
|
|
51
61
|
const existingCluster = await this.findOneBy({
|
|
52
62
|
query: {
|
|
53
63
|
projectId: data.projectId,
|
|
54
|
-
clusterIdentifier: data.clusterIdentifier,
|
|
64
|
+
clusterIdentifier: QueryHelper.findWithSameText(data.clusterIdentifier),
|
|
55
65
|
},
|
|
56
66
|
select: {
|
|
57
67
|
_id: true,
|
|
@@ -89,7 +99,7 @@ export class Service extends DatabaseService {
|
|
|
89
99
|
const reFetchedCluster = await this.findOneBy({
|
|
90
100
|
query: {
|
|
91
101
|
projectId: data.projectId,
|
|
92
|
-
clusterIdentifier: data.clusterIdentifier,
|
|
102
|
+
clusterIdentifier: QueryHelper.findWithSameText(data.clusterIdentifier),
|
|
93
103
|
},
|
|
94
104
|
select: {
|
|
95
105
|
_id: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KubernetesClusterService.js","sourceRoot":"","sources":["../../../../Server/Services/KubernetesClusterService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,uCAAuC,MAAM,2CAA2C,CAAC;AAChG,OAAO,uCAAuC,MAAM,2CAA2C,CAAC;AAChG,OAAO,KAAK,MAAM,+CAA+C,CAAC;AAGlE,OAAO,WAAW,MAAM,gCAAgC,CAAC;AACzD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,SAAS,MAAM,+BAA+B,CAAC;AACtD,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,MAAyB,MAAM,iBAAiB,CAAC;AACxD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,yBAAyB,GAAW,uBAAuB,CAAC;AAClE,MAAM,0BAA0B,GAAW,EAAE,CAAC;AAE9C,MAAM,8BAA8B,GAAW,4BAA4B,CAAC;AAC5E,MAAM,gCAAgC,GAAW,EAAE,CAAC;AAEpD,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAGwB,AAAN,KAAK,CAAC,eAAe,CACtC,SAA0B,EAC1B,WAAkB;QAElB,IAAI,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC;YAC5C,OAAO,CAAC,OAAO,EAAE;iBACd,IAAI,CAAC,KAAK,IAAI,EAAE;gBACf,MAAM,uCAAuC,CAAC,6BAA6B,CACzE,WAAW,CACZ,CAAC;YACJ,CAAC,CAAC;iBACD,IAAI,CAAC,KAAK,IAAI,EAAE;gBACf,MAAM,uCAAuC,CAAC,6BAA6B,CACzE,WAAW,CACZ,CAAC;YACJ,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;;gBACtB,MAAM,CAAC,KAAK,CACV,wFAAwF,KAAK,EAAE,EAC/F;oBACE,SAAS,EAAE,MAAA,WAAW,CAAC,SAAS,0CAAE,QAAQ,EAAE;oBAC5C,mBAAmB,EAAE,MAAA,WAAW,CAAC,EAAE,0CAAE,QAAQ,EAAE;iBAC/B,CACnB,CAAC;YACJ,CAAC,CAAC,CAAC;QACP,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAGY,AAAN,KAAK,CAAC,+BAA+B,CAAC,IAG5C;QACC
|
|
1
|
+
{"version":3,"file":"KubernetesClusterService.js","sourceRoot":"","sources":["../../../../Server/Services/KubernetesClusterService.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ import TelemetryUtil from "../../Server/Utils/Telemetry/Telemetry";
|
|
|
19
19
|
import { extractOneuptimeLabelNames } from "../Utils/Telemetry/OneuptimeLabel";
|
|
20
20
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
21
21
|
import SortOrder from "../../Types/BaseDatabase/SortOrder";
|
|
22
|
+
import QueryHelper from "../Types/Database/QueryHelper";
|
|
22
23
|
import logger from "../Utils/Logger";
|
|
23
24
|
import ServiceType from "../../Types/Telemetry/ServiceType";
|
|
24
25
|
import HostService from "./HostService";
|
|
@@ -158,10 +159,18 @@ export default class OTelIngestService {
|
|
|
158
159
|
* inserts into unique-violation errors that the catch block
|
|
159
160
|
* below resolves to the winning row).
|
|
160
161
|
*/
|
|
162
|
+
/*
|
|
163
|
+
* Case-insensitive lookup (findWithSameText) to match the unique
|
|
164
|
+
* guard's comparison — otherwise a service.name that drifts only in
|
|
165
|
+
* case or surrounding whitespace misses here, gets rejected on create
|
|
166
|
+
* ("Service with the same name already exists"), and wedges ingest.
|
|
167
|
+
* Stored casing is preserved: service-detail pages key telemetry by the
|
|
168
|
+
* stable serviceId, and the name is user-facing.
|
|
169
|
+
*/
|
|
161
170
|
const service = await ServiceService.findOneBy({
|
|
162
171
|
query: {
|
|
163
172
|
projectId: data.projectId,
|
|
164
|
-
name: data.serviceName,
|
|
173
|
+
name: QueryHelper.findWithSameText(data.serviceName),
|
|
165
174
|
},
|
|
166
175
|
select: {
|
|
167
176
|
_id: true,
|
|
@@ -212,7 +221,7 @@ export default class OTelIngestService {
|
|
|
212
221
|
const existingService = await ServiceService.findOneBy({
|
|
213
222
|
query: {
|
|
214
223
|
projectId: data.projectId,
|
|
215
|
-
name: data.serviceName,
|
|
224
|
+
name: QueryHelper.findWithSameText(data.serviceName),
|
|
216
225
|
},
|
|
217
226
|
select: {
|
|
218
227
|
_id: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenTelemetryIngestService.js","sourceRoot":"","sources":["../../../../Server/Services/OpenTelemetryIngestService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OpenTelemetryIngestService.js","sourceRoot":"","sources":["../../../../Server/Services/OpenTelemetryIngestService.ts"],"names":[],"mappings":"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"}
|