Files
Claude-Code-Monitor/deployments/monitoring/coralogix/dashboards.yaml
T
nntrivi2001 57dc91585d feat: Claude Code Monitor — lanes, pipelines and a merged workspace
Internal SmartGift build of a Claude Code monitoring dashboard.

Lanes: a durable unit of parallel agent work, one per working directory,
tracked across session restarts. Managed lanes are git worktrees the
dashboard provisions and can reset or remove behind a three-check destroy
guard and a counted preflight; adopted lanes are directories you already
own and are never destroyable.

Pipelines: a lane moves through pipeline stages. A stage the agent declares
with evidence renders green; a stage inferred from the tool-event stream
renders dashed amber and never counts as done. Detection is forward-only
within a 30-minute window, and never writes the declared stage.

Workspace: one page at /run with a lane grid, the selected lane's pipeline,
and a full Claude console behind a disclosure.
2026-07-30 14:39:03 +07:00

246 lines
8.8 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ─────────────────────────────────────────────────────────────────────────────
# Coralogix Custom Dashboard Agent Monitor
#
# Import via Coralogix UI: Dashboards → Custom Dashboards → Import
# Or via API:
# curl -X POST "https://api.coralogix.com/api/v1/external/grafana/api/dashboards/db" \
# -H "Authorization: Bearer $CORALOGIX_API_KEY" \
# -H "Content-Type: application/json" \
# -d @dashboards.yaml
#
# This dashboard mirrors the Grafana dashboard (../grafana/dashboards/) while
# leveraging Coralogix-native features: DataPrime queries, log correlation,
# distributed tracing waterfall, and Apdex scoring.
# ─────────────────────────────────────────────────────────────────────────────
dashboard:
name: "Agent Monitor Operations"
description: "Claude Code Agent Monitor: real-time operations, SLOs, and infrastructure health"
folder: "Agent Monitor"
tags:
- agent-monitor
- operations
- sre
# ── Row 1: Overview ──────────────────────────────────────────────────────
rows:
- name: "Overview"
panels:
- title: "Active Sessions"
type: line-chart
query:
type: metrics
promql: 'agent_monitor_active_sessions'
legend: "{{namespace}}"
span: 4
- title: "Request Rate (req/s)"
type: line-chart
query:
type: metrics
promql: 'sum(rate(http_requests_total{job="agent-monitor"}[5m]))'
legend: "Requests/sec"
span: 4
- title: "WebSocket Connections"
type: line-chart
query:
type: metrics
promql: 'websocket_connections_active{job="agent-monitor"}'
legend: "{{pod}}"
span: 4
# ── Row 2: HTTP Performance ────────────────────────────────────────────
- name: "HTTP Performance"
panels:
- title: "Latency Distribution (P50 / P95 / P99)"
type: line-chart
query:
type: metrics
promql: |
histogram_quantile(0.50, sum(rate(http_request_duration_seconds_bucket{job="agent-monitor"}[5m])) by (le))
histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket{job="agent-monitor"}[5m])) by (le))
histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket{job="agent-monitor"}[5m])) by (le))
span: 6
- title: "Error Rate (%)"
type: line-chart
query:
type: metrics
promql: |
sum(rate(http_requests_total{job="agent-monitor", status=~"5.."}[5m]))
/
sum(rate(http_requests_total{job="agent-monitor"}[5m])) * 100
legend: "5xx %"
thresholds:
- value: 1
color: yellow
- value: 5
color: red
span: 3
- title: "Status Code Distribution"
type: bar-chart
query:
type: metrics
promql: 'sum by (status) (increase(http_requests_total{job="agent-monitor"}[1h]))'
span: 3
# ── Row 3: Logs (DataPrime) ────────────────────────────────────────────
- name: "Application Logs"
panels:
- title: "Error Logs"
type: dataprime
query: |
source logs
| filter $d.cx.application.name == 'agent-monitor'
| filter $d.severity == 'ERROR' || $d.severity == 'FATAL'
| select $m.timestamp, $d.k8s.pod.name, $d.message
| order by $m.timestamp desc
| limit 100
span: 6
- title: "Log Volume by Severity"
type: bar-chart
query:
type: dataprime
expression: |
source logs
| filter $d.cx.application.name == 'agent-monitor'
| count_group_by $d.severity as count
span: 3
- title: "Hook Event Throughput"
type: line-chart
query:
type: dataprime
expression: |
source logs
| filter $d.cx.application.name == 'agent-monitor'
| filter $d.message matches 'hook.*event'
| count_per_time 1m as throughput
span: 3
# ── Row 4: Infrastructure ──────────────────────────────────────────────
- name: "Infrastructure"
panels:
- title: "CPU Usage (%)"
type: line-chart
query:
type: metrics
promql: |
rate(container_cpu_usage_seconds_total{
namespace=~"agent-monitor.*",
container="agent-monitor"
}[5m]) * 100
legend: "{{pod}}"
span: 4
- title: "Memory Usage (MiB)"
type: line-chart
query:
type: metrics
promql: |
container_memory_working_set_bytes{
namespace=~"agent-monitor.*",
container="agent-monitor"
} / 1024 / 1024
legend: "{{pod}}"
span: 4
- title: "Pod Status"
type: gauge
query:
type: metrics
promql: |
count by (phase) (
kube_pod_status_phase{namespace=~"agent-monitor.*"}
)
span: 4
# ── Row 5: Database & Storage ──────────────────────────────────────────
- name: "Database & Storage"
panels:
- title: "SQLite Query Duration (ms)"
type: line-chart
query:
type: metrics
promql: 'sqlite_query_duration_seconds{job="agent-monitor"} * 1000'
span: 4
- title: "PV Usage (%)"
type: gauge
query:
type: metrics
promql: |
(kubelet_volume_stats_used_bytes{namespace=~"agent-monitor.*"}
/ kubelet_volume_stats_capacity_bytes{namespace=~"agent-monitor.*"}) * 100
thresholds:
- value: 70
color: yellow
- value: 90
color: red
span: 4
- title: "Network I/O (bytes/s)"
type: line-chart
query:
type: metrics
promql: |
sum by (pod) (rate(container_network_receive_bytes_total{namespace=~"agent-monitor.*"}[5m]))
sum by (pod) (rate(container_network_transmit_bytes_total{namespace=~"agent-monitor.*"}[5m]))
span: 4
# ── Row 6: SLO Tracking ────────────────────────────────────────────────
- name: "SLO Tracking"
panels:
- title: "Availability SLO (99.9% target)"
type: gauge
query:
type: metrics
promql: |
(1 - sum(rate(http_requests_total{job="agent-monitor", status=~"5.."}[30d]))
/ sum(rate(http_requests_total{job="agent-monitor"}[30d]))) * 100
thresholds:
- value: 99.9
color: green
- value: 99.5
color: yellow
- value: 99.0
color: red
span: 4
- title: "Latency SLO (P95 < 500ms)"
type: gauge
query:
type: metrics
promql: |
histogram_quantile(0.95,
sum(rate(http_request_duration_seconds_bucket{job="agent-monitor"}[30d])) by (le)
) * 1000
thresholds:
- value: 300
color: green
- value: 500
color: yellow
- value: 1000
color: red
span: 4
- title: "Error Budget Remaining"
type: gauge
query:
type: metrics
promql: |
(0.001 - sum(rate(http_requests_total{job="agent-monitor", status=~"5.."}[30d]))
/ sum(rate(http_requests_total{job="agent-monitor"}[30d])))
/ 0.001 * 100
thresholds:
- value: 50
color: green
- value: 25
color: yellow
- value: 0
color: red
span: 4