Skip to content

Instantly share code, notes, and snippets.

@pwright
Created December 10, 2025 15:47
Show Gist options
  • Select an option

  • Save pwright/0cab492ab25d6e6457562047ba42d0b9 to your computer and use it in GitHub Desktop.

Select an option

Save pwright/0cab492ab25d6e6457562047ba42d0b9 to your computer and use it in GitHub Desktop.
{
"id": "kubernetes-observability",
"title": "Observability in Kubernetes",
"abstract": "End users and operators need fast answers about service health, performance, and failures. In Kubernetes this is delivered via dashboards, explorers, and alerting that sit on top of signal stores (metrics, logs, traces). These stores are fed by collection and processing pipelines (agents, collectors, aggregators) that rely on Kubernetes primitives and underlying infrastructure (compute, storage, networking).",
"categories": [
{
"id": "experience",
"title": "User Experience",
"items": [
{
"id": "service-health-dashboards",
"name": "Service Health Dashboards",
"deps": [
"metrics-store",
"query-service"
]
},
{
"id": "alerting-rules",
"name": "Alerting & Notifications",
"deps": [
"alert-manager",
"metrics-store"
]
},
{
"id": "trace-explorer",
"name": "Trace Explorer",
"deps": [
"trace-store",
"query-service"
]
},
{
"id": "log-explorer",
"name": "Log Explorer",
"deps": [
"log-store",
"query-service"
]
}
]
},
{
"id": "signals",
"title": "Signal Sources",
"items": [
{
"id": "app-metrics",
"name": "Application Metrics",
"deps": [
"app-instrumentation-sdks"
]
},
{
"id": "app-logs",
"name": "Application Logs",
"deps": [
"app-instrumentation-sdks"
]
},
{
"id": "distributed-traces",
"name": "Distributed Traces",
"deps": [
"app-instrumentation-sdks"
]
},
{
"id": "k8s-events",
"name": "Kubernetes Events",
"deps": [
"kube-apiserver"
]
},
{
"id": "app-instrumentation-sdks",
"name": "App Instrumentation SDKs",
"deps": []
}
]
},
{
"id": "collection",
"title": "Collection & Processing",
"items": [
{
"id": "otel-collectors",
"name": "OpenTelemetry Collectors",
"deps": [
"app-metrics",
"distributed-traces",
"ingress-gateway",
"node-agent"
]
},
{
"id": "log-collectors",
"name": "Log Collectors/Shippers",
"deps": [
"app-logs",
"container-runtime-logs",
"node-agent"
]
},
{
"id": "metrics-aggregator",
"name": "Metrics Aggregator",
"deps": [
"otel-collectors"
]
},
{
"id": "sampling-controller",
"name": "Sampling & Tail-Based Policies",
"deps": [
"otel-collectors"
]
}
]
},
{
"id": "platform",
"title": "Observability Platform Services",
"items": [
{
"id": "metrics-store",
"name": "Metrics Store / TSDB",
"deps": [
"block-storage",
"compute-nodes"
]
},
{
"id": "log-store",
"name": "Log Store",
"deps": [
"object-storage",
"compute-nodes"
]
},
{
"id": "trace-store",
"name": "Trace Store",
"deps": [
"object-storage",
"compute-nodes"
]
},
{
"id": "query-service",
"name": "Query & API Service",
"deps": [
"compute-nodes",
"networking"
]
},
{
"id": "alert-manager",
"name": "Alert Manager",
"deps": [
"compute-nodes",
"networking"
]
}
]
},
{
"id": "k8s-platform",
"title": "Kubernetes Platform",
"items": [
{
"id": "node-agent",
"name": "Node Agent (DaemonSet)",
"deps": [
"compute-nodes"
]
},
{
"id": "ingress-gateway",
"name": "Ingress / Gateway",
"deps": [
"networking",
"compute-nodes"
]
},
{
"id": "kube-apiserver",
"name": "Kubernetes API Server",
"deps": [
"compute-nodes",
"networking",
"secrets-management"
]
},
{
"id": "container-runtime-logs",
"name": "Container Runtime Logs",
"deps": [
"compute-nodes"
]
},
{
"id": "rbac",
"name": "RBAC & Service Accounts",
"deps": [
"secrets-management"
]
}
]
},
{
"id": "infrastructure",
"title": "Infrastructure",
"items": [
{
"id": "compute-nodes",
"name": "Compute Nodes",
"deps": []
},
{
"id": "object-storage",
"name": "Object Storage",
"deps": []
},
{
"id": "block-storage",
"name": "Block Storage",
"deps": []
},
{
"id": "networking",
"name": "Cluster & Edge Networking",
"deps": []
},
{
"id": "secrets-management",
"name": "Secrets Management",
"deps": []
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment