- Replaced actions/upload-artifact with Gitea API release creation in build-miner-binary.yml - Added separate steps for uploading binary, package, and checksums to Gitea release - Added StructuredFormatter class for JSON log output in aitbc_logging.py - Added structured logging support with log_context() context manager and LogContext class - Added structured parameter to setup_logger() and configure_logging()
261 lines
6.3 KiB
JSON
261 lines
6.3 KiB
JSON
{
|
|
"dashboard": {
|
|
"title": "AITBC System Dashboard",
|
|
"tags": ["aitbc", "blockchain", "ai"],
|
|
"timezone": "browser",
|
|
"schemaVersion": 16,
|
|
"version": 0,
|
|
"refresh": "10s",
|
|
"panels": [
|
|
{
|
|
"id": 1,
|
|
"title": "Block Processing Duration",
|
|
"type": "graph",
|
|
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 0},
|
|
"targets": [
|
|
{
|
|
"expr": "histogram_quantile(0.95, rate(block_processing_duration_seconds_bucket[5m]))",
|
|
"legendFormat": "95th percentile",
|
|
"refId": "A"
|
|
},
|
|
{
|
|
"expr": "histogram_quantile(0.50, rate(block_processing_duration_seconds_bucket[5m]))",
|
|
"legendFormat": "50th percentile",
|
|
"refId": "B"
|
|
}
|
|
],
|
|
"yaxes": [
|
|
{
|
|
"format": "s",
|
|
"label": "Duration"
|
|
},
|
|
{
|
|
"format": "short"
|
|
}
|
|
],
|
|
"xaxis": {
|
|
"mode": "time",
|
|
"name": "Time",
|
|
"show": true
|
|
}
|
|
},
|
|
{
|
|
"id": 2,
|
|
"title": "Block Height",
|
|
"type": "graph",
|
|
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 0},
|
|
"targets": [
|
|
{
|
|
"expr": "block_height",
|
|
"legendFormat": "Block Height",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"yaxes": [
|
|
{
|
|
"format": "short",
|
|
"label": "Block Number"
|
|
},
|
|
{
|
|
"format": "short"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": 3,
|
|
"title": "Job Processing Duration",
|
|
"type": "graph",
|
|
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 8},
|
|
"targets": [
|
|
{
|
|
"expr": "histogram_quantile(0.95, rate(job_processing_duration_seconds_bucket[5m]))",
|
|
"legendFormat": "95th percentile",
|
|
"refId": "A"
|
|
},
|
|
{
|
|
"expr": "histogram_quantile(0.50, rate(job_processing_duration_seconds_bucket[5m]))",
|
|
"legendFormat": "50th percentile",
|
|
"refId": "B"
|
|
}
|
|
],
|
|
"yaxes": [
|
|
{
|
|
"format": "s",
|
|
"label": "Duration"
|
|
},
|
|
{
|
|
"format": "short"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": 4,
|
|
"title": "Jobs in Queue",
|
|
"type": "graph",
|
|
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 8},
|
|
"targets": [
|
|
{
|
|
"expr": "jobs_in_queue",
|
|
"legendFormat": "Queued Jobs",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"yaxes": [
|
|
{
|
|
"format": "short",
|
|
"label": "Job Count"
|
|
},
|
|
{
|
|
"format": "short"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": 5,
|
|
"title": "HTTP Request Duration",
|
|
"type": "graph",
|
|
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 16},
|
|
"targets": [
|
|
{
|
|
"expr": "histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))",
|
|
"legendFormat": "95th percentile",
|
|
"refId": "A"
|
|
},
|
|
{
|
|
"expr": "histogram_quantile(0.50, rate(http_request_duration_seconds_bucket[5m]))",
|
|
"legendFormat": "50th percentile",
|
|
"refId": "B"
|
|
}
|
|
],
|
|
"yaxes": [
|
|
{
|
|
"format": "s",
|
|
"label": "Duration"
|
|
},
|
|
{
|
|
"format": "short"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": 6,
|
|
"title": "HTTP Requests by Status",
|
|
"type": "graph",
|
|
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 16},
|
|
"targets": [
|
|
{
|
|
"expr": "rate(http_requests_total[5m])",
|
|
"legendFormat": "{{method}} {{endpoint}} {{status}}",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"yaxes": [
|
|
{
|
|
"format": "reqps",
|
|
"label": "Requests/sec"
|
|
},
|
|
{
|
|
"format": "short"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": 7,
|
|
"title": "Job Success Rate",
|
|
"type": "stat",
|
|
"gridPos": {"h": 4, "w": 6, "x": 0, "y": 24},
|
|
"targets": [
|
|
{
|
|
"expr": "rate(jobs_total{status=\"completed\"}[5m]) / rate(jobs_total[5m]) * 100",
|
|
"legendFormat": "Success Rate",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"orientation": "auto"
|
|
},
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "percent",
|
|
"min": 0,
|
|
"max": 100
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": 8,
|
|
"title": "Job Failure Rate",
|
|
"type": "stat",
|
|
"gridPos": {"h": 4, "w": 6, "x": 6, "y": 24},
|
|
"targets": [
|
|
{
|
|
"expr": "rate(jobs_total{status=\"failed\"}[5m]) / rate(jobs_total[5m]) * 100",
|
|
"legendFormat": "Failure Rate",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"orientation": "auto"
|
|
},
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "percent",
|
|
"min": 0,
|
|
"max": 100
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": 9,
|
|
"title": "Service Uptime",
|
|
"type": "stat",
|
|
"gridPos": {"h": 4, "w": 6, "x": 12, "y": 24},
|
|
"targets": [
|
|
{
|
|
"expr": "service_uptime_seconds",
|
|
"legendFormat": "Uptime",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"orientation": "auto"
|
|
},
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "s"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": 10,
|
|
"title": "Service Restarts",
|
|
"type": "stat",
|
|
"gridPos": {"h": 4, "w": 6, "x": 18, "y": 24},
|
|
"targets": [
|
|
{
|
|
"expr": "service_restart_count",
|
|
"legendFormat": "Restarts",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"orientation": "auto"
|
|
},
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "short"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|