You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PR #264 (Grafana dashboard) review found that 4 of 7 dashboard panels render empty against current patterndetectorprocessor output. Verdict log records carry only:
pattern.id
pattern.headline
pattern.remediation
pattern.verdict_json (the full marshalled verdict)
pattern.confidence (pod_evicted only)
Operator-facing fields are buried INSIDE pattern.verdict_json (e.g. Regarding.Name, HangingRanks, EvictedPod). Dashboards can't table-aggregate by pod/node/collective without server-side JSON parsing — fragile.
Proposed fix
Promote operator-facing scalar fields to top-level OTLP log-record attributes in appendVerdict / appendNCCLHangVerdict / appendXidCorrelationVerdict:
Each detector already has these values in its verdict struct; just PutStr them onto the log record alongside the existing VerdictAttr* calls. Constant naming: VerdictAttrK8sPodName etc. — extend the existing taxonomy in patterndetector.go:25-44.
Acceptance
LogQL queries on {cluster=~"...", pattern_id="14"} | json reach the scalar attrs at top level (no | line_format JSON parse).
Problem
PR #264 (Grafana dashboard) review found that 4 of 7 dashboard panels render empty against current
patterndetectorprocessoroutput. Verdict log records carry only:pattern.idpattern.headlinepattern.remediationpattern.verdict_json(the full marshalled verdict)pattern.confidence(pod_evicted only)Operator-facing fields are buried INSIDE
pattern.verdict_json(e.g.Regarding.Name,HangingRanks,EvictedPod). Dashboards can't table-aggregate by pod/node/collective without server-side JSON parsing — fragile.Proposed fix
Promote operator-facing scalar fields to top-level OTLP log-record attributes in
appendVerdict/appendNCCLHangVerdict/appendXidCorrelationVerdict:k8s.pod.name,k8s.pod.namespace,k8s.node.name,k8s.event.reasonnccl.fr.pg_id,nccl.fr.collective_seq_id,nccl.fr.hanging_ranks_countkernelevents.xid,k8s.node.name,k8s.pod.name,k8s.pod.namespaceEach detector already has these values in its verdict struct; just
PutStrthem onto the log record alongside the existingVerdictAttr*calls. Constant naming:VerdictAttrK8sPodNameetc. — extend the existing taxonomy inpatterndetector.go:25-44.Acceptance
{cluster=~"...", pattern_id="14"} | jsonreach the scalar attrs at top level (no| line_formatJSON parse).pattern.verdict_jsonREMAINS — it's the canonical full payload for advanced operators.Related