Docs > Getting Started > Getting Started with Kubernetes
Getting Started with Kubernetes Monitoring
Overview
This guide introduces AppStatus Kubernetes and covers:
- Deploy AppStatus Agent as DaemonSet for cluster-wide monitoring
- Track pods, nodes, deployments, and services in real-time
- Monitor CPU, memory, and storage resource utilization
- Alert on pod restarts, node issues, and deployment failures
- Namespace and label-based filtering for organized monitoring
- Integration with Kubernetes API for comprehensive visibility
What are AppStatus Kubernetes?
Kubernetes monitoring provides comprehensive visibility into your container orchestration platform. The AppStatus Agent deployed as a DaemonSet collects metrics from all nodes, pods, and services in your cluster, streaming real-time data to AppStatus for analysis and alerting.
Monitor cluster health, pod status, node resource utilization, and deployment metrics with intelligent alerting. Track pod restarts, node capacity, and service availability to ensure your Kubernetes workloads are running optimally.
Key capabilities:
- DaemonSet deployment for automatic node coverage
- Pod and node status monitoring with health checks
- CPU, memory, and storage resource tracking
- Deployment and replica set monitoring
- Namespace and label-based filtering
- Alert on pod restarts and node issues
- Integration with Kubernetes API for comprehensive data
- Real-time metrics streaming with minimal overhead
Service Workflows
Each workflow maps to real AppStatus features and API endpoints used in the main app.
Agent Deployment
Deploy the AppStatus Agent as a DaemonSet to monitor all nodes in your Kubernetes cluster.
- Create a namespace for monitoring (e.g., monitoring).
- Create a ConfigMap with agent configuration.
- Create a Secret with workspace API key.
- Deploy the DaemonSet with proper RBAC permissions.
- Verify pods are running on all nodes.
Troubleshooting
Agent pods not starting
Check RBAC permissions. Verify the ServiceAccount has proper ClusterRoleBinding. Review pod logs for connection errors to AppStatus endpoint.
No metrics appearing
Ensure the Agent is successfully connecting to AppStatus. Check the WORKSPACE_API_KEY is correct. Verify network connectivity from cluster to agent.appstatus.io.
High resource usage
Adjust collection intervals in agent configuration. Reduce the number of monitored namespaces. Consider resource limits on the Agent pods.
Missing pod data
Verify RBAC permissions include pods resource. Check if the Agent is running on all nodes. Review namespace filtering configuration.
Operational Guidance
- Monitor pod restarts as early indicators of application issues.
- Track node resource utilization for capacity planning.
- Use labels and annotations for organized monitoring.
- Set up alerts for critical namespace and deployment health.
Step-by-Step Setup
AppStatus monitors Kubernetes clusters using a small agent deployed as a DaemonSet — one pod on every node. The agent reads cluster state (nodes, pods, deployments, events, restart counts) through the Kubernetes API with read-only RBAC and streams it back to AppStatus. The Helm chart sets up everything for you — the namespace, the ServiceAccount, the ClusterRole, the Secret and the DaemonSet — in one command.
Before you start
- A Kubernetes cluster (any flavour: EKS, GKE, AKS, kind, k3s)
- kubectl and Helm 3 installed locally
- cluster-admin (or equivalent) permission to create RBAC the first time
- 1
Register the cluster in AppStatus
Open Agents → + Add agent → Kubernetes. Enter a friendly cluster name (e.g. "prod-eu-west") and the cloud region. Click "Generate API key" — copy the key, it is only shown once.
WhereSidebar → Agents → + Add agent → Kubernetes - 2
Copy the Helm install command
The wizard generates the exact Helm command for your cluster, with the API key already filled in. Copy it to clipboard.
WhereWizard → Helm install command → Copy - 3
Run the Helm command on a machine with cluster access
Open a terminal where kubectl already points at the right cluster (kubectl config current-context shows which one). Paste and run the Helm command. It creates the namespace, RBAC, Secret and DaemonSet in one shot.
WhereLocal terminal → paste Helm command → Enter - 4
Wait ~60 seconds for pods to start
Run `kubectl -n appstatus get pods` — you should see one agent pod per node, all in Running state. If a pod is stuck in Pending or CrashLoopBackOff, see the troubleshooting section on this page.
WhereLocal terminal → kubectl -n appstatus get pods - 5
Verify the cluster in AppStatus
Back in the UI, refresh the Agents page. Your cluster appears with a green status dot, and the Kubernetes section in the sidebar now shows node count, pod count and namespace breakdown.
WhereSidebar → Agents → your cluster → Kubernetes tab - 6
Set up Kubernetes-specific alerts
Open Alerts → Rules and create a rule scoped to the cluster. Common conditions: pod restart rate > 3 in 5 min, node not ready > 2 min, deployment unavailable replicas > 0. Attach your usual on-call channels.
WhereAlerts → Rules → + New rule → Scope: Kubernetes cluster - 7
(Optional) Limit to specific namespaces
If you do not want cluster-wide read access — e.g. multi-tenant clusters where some namespaces should not be visible — re-install the chart with --set namespacesIncluded={namespace1,namespace2}. The agent then only watches those namespaces.
WhereLocal terminal → helm upgrade with --set namespacesIncluded
Configuration Options
Every option you can set, what each choice means, and what to pick. Use this as a reference while you fill in the form.
Helm install options
These are passed via --set on the helm install command. Override only what you need.
| Field | Options | What it does | Recommended |
|---|---|---|---|
| global.apiKey | The key from the wizard | Authenticates the agent with AppStatus. | Always required — paste from the wizard. |
| global.clusterName | Free text | Display name for this cluster in the AppStatus UI. | Match your internal naming (e.g. prod-eu-west). |
| global.region | us-east-1, eu-west-1, etc. | Used to group clusters by region in the dashboard. | Match your cloud provider region. |
| global.lowDataMode | true / false | Reduces telemetry frequency to save bandwidth and storage quota. | false in production; true for cost-sensitive staging clusters. |
| pollIntervalSeconds | 30 / 60 / 120 / 300 | How often the agent polls the Kubernetes API for state. | 60s (default) — balances freshness and API load. |
| namespace | Any string | The namespace the agent itself runs in. | "appstatus" (default) — easy to find. |
| namespacesIncluded | List of namespaces | If set, the agent only watches these namespaces (instead of cluster-wide). | Leave empty for full visibility; set for multi-tenant or compliance reasons. |
| resources.requests | CPU and memory requests | How much CPU/memory the agent asks for. Defaults: 50m CPU, 64Mi RAM. | Defaults are fine for clusters under 200 nodes; double for larger. |
What the agent watches
| Field | Options | What it does | Recommended |
|---|---|---|---|
| Nodes | Read-only | Node count, conditions (Ready/NotReady), CPU/memory pressure. | Always on (cannot be disabled). |
| Pods | Read-only | Pod state (Running/Pending/Failed/CrashLoopBackOff), restart counts. | Always on. |
| Deployments | Read-only | Desired vs available replicas; unavailable count. | Always on. |
| StatefulSets | Read-only | Same as deployments but for stateful workloads. | Always on. |
| DaemonSets | Read-only | Desired vs available DaemonSet pods per node. | Always on. |
| Events | Read-only | Recent cluster events — useful for noticing OOM kills, image pull failures, scheduling problems. | Always on. |
| Namespaces | Read-only | List of namespaces and their resource counts. | Always on. |
Feature Reference
Every feature, where to find it in the app, and what it does. Use this when you know what you want to do but not where it lives.
| Feature | Where in app | Description |
|---|---|---|
| Register cluster | Sidebar → Agents → + Add agent → Kubernetes | Generates a cluster-scoped API key. |
| Helm install | Wizard → Helm install command | One command installs namespace, RBAC, ConfigMap, Secret, DaemonSet. |
| DaemonSet (one pod per node) | kubectl -n appstatus get pods | Collects node-local metrics, kubelet stats and pod state on every node. |
| Cluster overview | Sidebar → Kubernetes (after install) | Node count, pod count, namespace breakdown, restart counts. |
| Pod restart alerts | Alerts → Rules → Condition: pod_restart_rate | Page on-call when pod restarts cross a threshold in a time window. |
| Node-not-ready alerts | Alerts → Rules → Condition: node_not_ready | Alert when any node enters NotReady state longer than N minutes. |
| Namespace filter | Helm upgrade --set namespacesIncluded | Restrict the agent to specific namespaces instead of cluster-wide read. |
| Multi-cluster | Run the install per cluster | Group clusters by environment in the dashboard; streamed independently. |
| Uninstall | helm uninstall appstatus-k8s -n appstatus | Removes DaemonSet, RBAC, Secret, ConfigMap and namespace. |
Next Steps
Continue building your monitoring stack:
