This is an automated email from the ASF dual-hosted git repository.

zqr10159 pushed a commit to branch 2.0.0
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git


The following commit(s) were added to refs/heads/2.0.0 by this push:
     new 9c4e8d93f2 Record entity context in signal evidence payloads
9c4e8d93f2 is described below

commit 9c4e8d93f2a8253991c692df1eafbee153c9f8ba
Author: Logic <[email protected]>
AuthorDate: Tue Jun 9 19:57:56 2026 +0800

    Record entity context in signal evidence payloads
---
 web-next/lib/signal-dashboards.test.ts | 39 ++++++++++++++++++++++++++++++++--
 web-next/lib/signal-dashboards.ts      | 32 +++++++++++++++++++---------
 2 files changed, 59 insertions(+), 12 deletions(-)

diff --git a/web-next/lib/signal-dashboards.test.ts 
b/web-next/lib/signal-dashboards.test.ts
index 7556770168..b16c77b707 100644
--- a/web-next/lib/signal-dashboards.test.ts
+++ b/web-next/lib/signal-dashboards.test.ts
@@ -2411,9 +2411,19 @@ describe('signal dashboards API client', () => {
         traceId: 'trace-1',
         spanId: 'span-log',
         operationName: 'POST /checkout',
+        serviceNamespace: 'payments',
         resourceFilter: 'service.version=1.2.3',
         attributeFilter: 'region:us',
-        relatedSignal: 'traces'
+        relatedSignal: 'traces',
+        breakoutAttributes: [
+          { key: 'resource:deployment.environment.name:prod', name: 
'resource:deployment.environment.name', value: 'prod' },
+          { key: 'resource:hertzbeat.entity_id:4200', name: 
'resource:hertzbeat.entity_id', value: '4200' },
+          { key: 'resource:hertzbeat.entity_type:service', name: 
'resource:hertzbeat.entity_type', value: 'service' },
+          { key: 'resource:hertzbeat.entity_name:Checkout API', name: 
'resource:hertzbeat.entity_name', value: 'Checkout API' },
+          { key: 'resource:hertzbeat.source:otlp', name: 
'resource:hertzbeat.source', value: 'otlp' },
+          { key: 'resource:hertzbeat.collector:collector-a', name: 
'resource:hertzbeat.collector', value: 'collector-a' },
+          { key: 'resource:hertzbeat.template:spring-boot', name: 
'resource:hertzbeat.template', value: 'spring-boot' }
+        ]
       },
       route: 
'/log/manage?view=table&traceId=trace-1&spanId=span-log&serviceName=checkout&start=1000&end=3000',
       titlePrefix: 'Evidence panel'
@@ -2434,6 +2444,15 @@ describe('signal dashboards API client', () => {
       evidenceSource: 'table-row',
       evidenceLabel: 'checkout',
       evidenceValue: 'checkout timeout',
+      serviceName: 'checkout',
+      serviceNamespace: 'payments',
+      environment: 'prod',
+      entityId: '4200',
+      entityType: 'service',
+      entityName: 'Checkout API',
+      signalSource: 'otlp',
+      collector: 'collector-a',
+      template: 'spring-boot',
       traceId: 'trace-1',
       spanId: 'span-log',
       operationName: 'POST /checkout',
@@ -2486,7 +2505,16 @@ describe('signal dashboards API client', () => {
         label: 'signoz_db_latency_count',
         value: '7',
         meta: '2000',
-        resourceFilter: 'db.system=postgresql'
+        serviceName: 'checkout',
+        serviceNamespace: 'payments',
+        resourceFilter: 'db.system=postgresql',
+        breakoutAttributes: [
+          { key: 'label:deployment.environment.name:prod', name: 
'deployment.environment.name', value: 'prod' },
+          { key: 'label:hertzbeat.entity_id:4200', name: 
'hertzbeat.entity_id', value: '4200' },
+          { key: 'label:hertzbeat.entity_type:service', name: 
'hertzbeat.entity_type', value: 'service' },
+          { key: 'label:hertzbeat.entity_name:Checkout API', name: 
'hertzbeat.entity_name', value: 'Checkout API' },
+          { key: 'label:hertzbeat.source:otlp', name: 'hertzbeat.source', 
value: 'otlp' }
+        ]
       },
       route: 
'/ingestion/otlp/metrics?query=signoz_db_latency_count&serviceName=checkout&series=postgresql&inspector=graph&start=1000&end=3000',
       attribute: {
@@ -2512,6 +2540,13 @@ describe('signal dashboards API client', () => {
       evidenceSource: 'metrics-point',
       evidenceLabel: 'signoz_db_latency_count',
       evidenceValue: '7',
+      serviceName: 'checkout',
+      serviceNamespace: 'payments',
+      environment: 'prod',
+      entityId: '4200',
+      entityType: 'service',
+      entityName: 'Checkout API',
+      signalSource: 'otlp',
       resourceFilter: 'db.system=postgresql',
       breakoutAttribute: 'db.system',
       breakoutAttributeValue: 'postgresql'
diff --git a/web-next/lib/signal-dashboards.ts 
b/web-next/lib/signal-dashboards.ts
index 83c3502386..6491d57bbd 100644
--- a/web-next/lib/signal-dashboards.ts
+++ b/web-next/lib/signal-dashboards.ts
@@ -1224,6 +1224,26 @@ function runtimeEvidencePanelLabel(
   return row.label || row.signal;
 }
 
+function runtimeEvidencePayloadContext(row: 
SignalDashboardRuntimeSyncTooltipRow) {
+  const values = evidenceFilterValues(row);
+  return {
+    ...(values.service ? { serviceName: values.service } : {}),
+    ...(values.serviceNamespace ? { serviceNamespace: values.serviceNamespace 
} : {}),
+    ...(values.environment ? { environment: values.environment } : {}),
+    ...(values.entityId ? { entityId: values.entityId } : {}),
+    ...(values.entityType ? { entityType: values.entityType } : {}),
+    ...(values.entityName ? { entityName: values.entityName } : {}),
+    ...(values.signalSource ? { signalSource: values.signalSource } : {}),
+    ...(values.collector ? { collector: values.collector } : {}),
+    ...(values.template ? { template: values.template } : {}),
+    ...(values.operation ? { operationName: values.operation } : {}),
+    ...(values.resourceFilter ? { resourceFilter: values.resourceFilter } : 
{}),
+    ...(values.attributeFilter ? { attributeFilter: values.attributeFilter } : 
{}),
+    ...(values.traceId ? { traceId: values.traceId } : {}),
+    ...(values.spanId ? { spanId: values.spanId } : {})
+  };
+}
+
 export function createSignalDashboardPanelDraftFromRuntimeEvidence(input: {
   row: SignalDashboardRuntimeSyncTooltipRow;
   route: string;
@@ -1252,11 +1272,7 @@ export function 
createSignalDashboardPanelDraftFromRuntimeEvidence(input: {
       evidenceLabel,
       evidenceSeriesLabel: input.row.label,
       evidenceValue: input.row.value,
-      ...(input.row.traceId ? { traceId: input.row.traceId } : {}),
-      ...(input.row.spanId ? { spanId: input.row.spanId } : {}),
-      ...(input.row.operationName ? { operationName: input.row.operationName } 
: {}),
-      ...(input.row.resourceFilter ? { resourceFilter: 
input.row.resourceFilter } : {}),
-      ...(input.row.attributeFilter ? { attributeFilter: 
input.row.attributeFilter } : {}),
+      ...runtimeEvidencePayloadContext(input.row),
       ...(input.row.relatedSignal ? { relatedSignal: input.row.relatedSignal } 
: {})
     }
   });
@@ -1314,11 +1330,7 @@ export function 
createSignalDashboardPanelDraftFromRuntimeBreakout(input: {
       evidenceSource: input.row.source,
       evidenceLabel,
       evidenceValue: input.row.value,
-      ...(input.row.traceId ? { traceId: input.row.traceId } : {}),
-      ...(input.row.spanId ? { spanId: input.row.spanId } : {}),
-      ...(input.row.operationName ? { operationName: input.row.operationName } 
: {}),
-      ...(input.row.resourceFilter ? { resourceFilter: 
input.row.resourceFilter } : {}),
-      ...(input.row.attributeFilter ? { attributeFilter: 
input.row.attributeFilter } : {}),
+      ...runtimeEvidencePayloadContext(input.row),
       breakoutAttribute: attributeName,
       ...(attributeValue ? { breakoutAttributeValue: attributeValue } : {})
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to