Skip to content

Commit 21154d7

Browse files
authored
Refactor metric tagging in object reporting and request tracing (#511)
1 parent c057e86 commit 21154d7

File tree

4 files changed

+16
-15
lines changed

4 files changed

+16
-15
lines changed

apps/backend/src/app/controllers/object.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
} from '../../shared/utils/neverthrow.js'
1212
import { handleError } from '../../errors/index.js'
1313
import { sendMetricToVictoria } from '../../infrastructure/drivers/vmetrics.js'
14+
import { config } from '../../config.js'
1415

1516
const logger = createLogger('http:controllers:object')
1617

@@ -448,9 +449,13 @@ objectController.post(
448449
const { cid } = req.params
449450

450451
logger.info('Reporting object', { cid })
452+
const tags = {
453+
chain: config.monitoring.metricEnvironmentTag,
454+
ip: req.ip?.toString() ?? 'unknown',
455+
}
451456
sendMetricToVictoria({
452457
measurement: 'object_report',
453-
tag: req.ip?.toString() ?? 'unknown',
458+
tags,
454459
fields: {
455460
cid,
456461
ip: req.ip?.toString() ?? 'unknown',

apps/backend/src/app/middlewares/requestTrace.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,9 @@ export const requestTrace: RequestHandler = (req, res) => {
2323
provider,
2424
}
2525

26-
const tag = Object.entries(tags)
27-
.map(([key, value]) => `${key}=${value}`)
28-
.join(',')
29-
3026
const metric: Metric = {
3127
measurement: 'auto_drive_api_request',
32-
tag,
28+
tags,
3329
fields: {
3430
status: res.statusCode,
3531
method,

apps/backend/src/core/objects/interactions.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,9 @@ const createMetric = (type: InteractionType, size: bigint): Metric => {
1717
type,
1818
}
1919

20-
const tag = Object.entries(tags)
21-
.map(([key, value]) => `${key}=${value}`)
22-
.join(',')
23-
2420
return {
2521
measurement: 'auto_drive_interactions',
26-
tag,
22+
tags,
2723
fields: {
2824
size,
2925
},
@@ -47,7 +43,7 @@ const createInteraction = async (
4743
logger.trace(
4844
'Sending metric to Victoria (measurement=%s, tag=%s)',
4945
metric.measurement,
50-
metric.tag,
46+
JSON.stringify(metric.tags),
5147
)
5248
sendMetricToVictoria(metric)
5349

apps/backend/src/infrastructure/drivers/vmetrics.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,21 @@ const logger = createLogger('drivers:metrics')
55

66
export interface Metric {
77
measurement: string
8-
tag: string
8+
tags: Record<string, string>
99
fields: Record<string, string | number | bigint>
1010
timestamp?: number
1111
}
1212

1313
export const sendMetricToVictoria = async (metric: Metric): Promise<void> => {
1414
try {
15+
const tag = Object.entries(metric.tags)
16+
.map(([key, value]) => `${key}=${value}`)
17+
.join(',')
18+
1519
const values = Object.entries(metric.fields).map(
1620
([key, value]) => `${key}=${value}`,
1721
)
18-
const data = `${metric.measurement},${metric.tag} ${values.join(',')}`
22+
const data = `${metric.measurement},${tag} ${values.join(',')}`
1923

2024
const basicAuthToken = Buffer.from(
2125
`${config.monitoring.auth.username}:${config.monitoring.auth.password}`,
@@ -37,7 +41,7 @@ export const sendMetricToVictoria = async (metric: Metric): Promise<void> => {
3741
})
3842
if (!response.ok) {
3943
throw new Error(
40-
`Failed to send metric to Victoria: ${response.statusText}`,
44+
`Failed to send metric to Victoria: ${response.statusText}: ${await response.text()}`,
4145
)
4246
} else {
4347
logger.debug('Metric %s sent to Victoria', metric.measurement)

0 commit comments

Comments
 (0)