Evidence before action
Capture useful logs, metrics, events and system state before restarting, deleting or changing configuration.
DevOps • SRE • Production Support
Troubleshoot common DevOps and production problems using practical commands, evidence-first investigation and structured incident workflows across Linux, Kubernetes, Docker, Jenkins, Terraform, networking and monitoring.
Search by symptom, technology, command or production problem.
topFind processes consuming CPU in real time.
ps aux --sort=-%cpu | headShow the highest CPU-consuming processes.
uptimeCheck system load averages and system pressure.
pidstat 1Monitor CPU usage by process over time.
free -hCheck total, used and available memory.
ps aux --sort=-%mem | headFind processes consuming the most memory.
vmstat 1Inspect memory, processes, paging and CPU activity.
dmesg | grep -i oomLook for out-of-memory killer events.
df -hFind filesystems that are running out of space.
df -iCheck inode consumption.
du -xh / | sort -h | tail -20Find large directories and files.
journalctl --disk-usageCheck how much disk space systemd journals use.
systemctl status nginxCheck the current service state and recent errors.
journalctl -u nginx -n 100Read recent logs for the service.
systemctl cat nginxInspect the service unit configuration.
systemctl daemon-reloadReload systemd after changing unit files.
ss -lntpList listening TCP ports and owning processes.
ss -lntupList listening TCP and UDP ports.
lsof -i :8080Find the process using port 8080.
fuser -v 8080/tcpIdentify processes using a TCP port.
ssh -vvv user@serverEnable verbose SSH debugging.
nc -vz server 22Check whether TCP port 22 is reachable.
systemctl status sshCheck the SSH server service.
ss -lntp | grep :22Verify that SSH is listening.
dig example.comInspect DNS resolution details.
dig +short example.comReturn a concise DNS answer.
nslookup example.comPerform a basic DNS lookup.
cat /etc/resolv.confCheck configured DNS resolvers on Linux.
ping -c 4 8.8.8.8Check basic IP connectivity.
curl -I https://example.comCheck HTTP connectivity and response headers.
traceroute example.comInspect the network path toward a destination.
ip routeInspect the local routing table.
docker ps -aCheck running and stopped containers.
docker logs <container>Read container application logs.
docker inspect <container>Inspect container configuration and state.
docker statsCheck container CPU and memory usage.
docker imagesList locally available images.
docker history <image>Inspect image layers.
docker image inspect <image>Inspect image metadata and configuration.
docker system dfCheck Docker disk consumption.
kubectl get podsIdentify pods that are repeatedly restarting.
kubectl describe pod <pod>Inspect events, container state and configuration.
kubectl logs <pod> --previousRead logs from the previous crashed container.
kubectl get events --sort-by=.lastTimestampReview recent Kubernetes events.
kubectl describe pod <pod>Check image pull errors and related events.
kubectl get secretCheck whether image pull secrets exist.
kubectl get pod <pod> -o yamlInspect the pod image and imagePullSecrets configuration.
kubectl get events --sort-by=.lastTimestampFind registry authentication or image errors.
kubectl get pods -o wideCheck where pending pods are scheduled or waiting.
kubectl describe pod <pod>Inspect scheduler events and resource constraints.
kubectl get nodesCheck available cluster nodes.
kubectl describe node <node>Inspect node capacity, conditions and taints.
kubectl get svcCheck service configuration and ports.
kubectl get endpoints <service>Verify that the service has backend endpoints.
kubectl get pods --show-labelsCompare pod labels with the service selector.
kubectl describe svc <service>Inspect service selectors, ports and endpoints.
kubectl get nodesIdentify nodes reporting NotReady.
kubectl describe node <node>Inspect node conditions and recent events.
kubectl get pods -A -o wideCheck workloads running on affected nodes.
kubectl get events -A --sort-by=.lastTimestampReview cluster-wide events.
docker logs <jenkins-container>Inspect Jenkins container logs when Jenkins runs in Docker.
java -versionVerify the Java runtime used by Jenkins.
df -hCheck whether disk exhaustion is affecting builds.
free -hCheck available memory on the Jenkins host.
terraform state listList resources tracked in Terraform state.
terraform state show <resource>Inspect a resource stored in state.
terraform planCompare configuration against current state and infrastructure.
terraform refreshRefresh state from infrastructure when supported by the workflow.
curl http://localhost:9090/-/healthyCheck Prometheus health.
curl http://localhost:9090/api/v1/targetsInspect target states through the Prometheus API.
curl http://target:9100/metricsCheck whether an exporter endpoint responds.
promtool check config prometheus.ymlValidate Prometheus configuration.
dateRecord the current time when beginning incident investigation.
uptimeCheck host uptime and system load.
df -hCheck for disk exhaustion.
free -hCheck memory pressure.
ss -lntupInspect listening network services.
journalctl -p err -n 100Review recent high-priority system errors.
Production Troubleshooting Method
Production troubleshooting is more than finding a command that returns an error. First establish the symptom and impact, then collect evidence, isolate the failure domain, apply a controlled remediation and verify the result.
Define exactly what is failing, when it started and which users, services or hosts are affected.
Determine whether the problem affects one process, host, pod, service, region or the wider platform.
Review deployments, configuration changes, infrastructure updates, patches and scheduled jobs.
Use logs, metrics, events, process state, network checks and configuration inspection.
Connect the observed evidence to a likely failure domain before changing the environment.
Choose the smallest safe remediation and understand its expected impact before execution.
Confirm service health, application behaviour, error rates and dependent systems after the change.
Document the root cause, improve monitoring or automation and capture the permanent corrective action.
SRE Mindset
Good incident investigation reduces uncertainty before making changes to a live system.
Capture useful logs, metrics, events and system state before restarting, deleting or changing configuration.
A restart may restore service without explaining why the application failed. Treat recovery and root-cause analysis as separate steps.
Deployment, configuration, infrastructure and dependency changes are important signals during incident investigation.
Controlled changes make it easier to determine which action affected the system and reduce troubleshooting noise.
Explore
Start with the technology closest to the problem and work through the relevant checks.
Investigate pods, scheduling, services, images, nodes, events and cluster failures.
Troubleshooting reference
Troubleshoot CPU, memory, disk, services, ports, SSH and operating-system problems.
Troubleshooting reference
Investigate containers, images, logs, resources, runtime state and startup failures.
Troubleshooting reference
Investigate CI/CD build failures, Java compatibility, agents, workspace and host resources.
Troubleshooting reference
Investigate state, plans, infrastructure drift and infrastructure deployment problems.
Troubleshooting reference
Trace DNS, ports, routes, connectivity, SSH and HTTP communication problems.
Troubleshooting reference
Investigate Prometheus health, targets, exporters and monitoring signal failures.
Troubleshooting reference
Follow an evidence-first workflow for incidents affecting applications and infrastructure.
Troubleshooting reference
Common Production Problems
Use these problem areas to quickly locate commands and investigation checks relevant to an incident.
Check container logs, previous logs, events, probes, configuration and resource limits.
Find troubleshooting commands →Investigate scheduling constraints, resources, taints, node availability and events.
Find troubleshooting commands →Find full filesystems, large directories, inode exhaustion and journal usage.
Find troubleshooting commands →Identify CPU-heavy processes, system load and application behaviour.
Find troubleshooting commands →Inspect container state, logs, images, configuration, ports and runtime resources.
Find troubleshooting commands →Check build output, Java, workspace, disk, memory and the build environment.
Find troubleshooting commands →Inspect state and plan output and investigate drift without making uncontrolled changes.
Find troubleshooting commands →Check listeners, processes, firewall rules, routes, DNS and network connectivity.
Find troubleshooting commands →Evidence Collection
Before changing a production system, capture enough information to understand the failure and preserve useful evidence for later root cause analysis.
Application, system, container and platform logs around the failure window.
CPU, memory, disk, latency, throughput, errors and saturation signals.
Kubernetes events, deployment events, alerts and infrastructure changes.
Deployments, configuration updates, patches, releases and scheduled jobs.
Restarting a service, deleting a pod, increasing resources or rolling back a deployment may restore availability, but those actions can also remove evidence. Capture the relevant state first whenever the incident allows it.
Command Reference
Searchable commands grouped by the production problems they help investigate. Use the commands to collect evidence and narrow the failure domain before applying remediation.
topFind processes consuming CPU in real time.
ps aux --sort=-%cpu | headShow the highest CPU-consuming processes.
uptimeCheck system load averages and system pressure.
pidstat 1Monitor CPU usage by process over time.
free -hCheck total, used and available memory.
ps aux --sort=-%mem | headFind processes consuming the most memory.
vmstat 1Inspect memory, processes, paging and CPU activity.
dmesg | grep -i oomLook for out-of-memory killer events.
df -hFind filesystems that are running out of space.
df -iCheck inode consumption.
du -xh / | sort -h | tail -20Find large directories and files.
journalctl --disk-usageCheck how much disk space systemd journals use.
systemctl status nginxCheck the current service state and recent errors.
journalctl -u nginx -n 100Read recent logs for the service.
systemctl cat nginxInspect the service unit configuration.
systemctl daemon-reloadReload systemd after changing unit files.
ss -lntpList listening TCP ports and owning processes.
ss -lntupList listening TCP and UDP ports.
lsof -i :8080Find the process using port 8080.
fuser -v 8080/tcpIdentify processes using a TCP port.
ssh -vvv user@serverEnable verbose SSH debugging.
nc -vz server 22Check whether TCP port 22 is reachable.
systemctl status sshCheck the SSH server service.
ss -lntp | grep :22Verify that SSH is listening.
dig example.comInspect DNS resolution details.
dig +short example.comReturn a concise DNS answer.
nslookup example.comPerform a basic DNS lookup.
cat /etc/resolv.confCheck configured DNS resolvers on Linux.
ping -c 4 8.8.8.8Check basic IP connectivity.
curl -I https://example.comCheck HTTP connectivity and response headers.
traceroute example.comInspect the network path toward a destination.
ip routeInspect the local routing table.
docker ps -aCheck running and stopped containers.
docker logs <container>Read container application logs.
docker inspect <container>Inspect container configuration and state.
docker statsCheck container CPU and memory usage.
docker imagesList locally available images.
docker history <image>Inspect image layers.
docker image inspect <image>Inspect image metadata and configuration.
docker system dfCheck Docker disk consumption.
kubectl get podsIdentify pods that are repeatedly restarting.
kubectl describe pod <pod>Inspect events, container state and configuration.
kubectl logs <pod> --previousRead logs from the previous crashed container.
kubectl get events --sort-by=.lastTimestampReview recent Kubernetes events.
kubectl describe pod <pod>Check image pull errors and related events.
kubectl get secretCheck whether image pull secrets exist.
kubectl get pod <pod> -o yamlInspect the pod image and imagePullSecrets configuration.
kubectl get events --sort-by=.lastTimestampFind registry authentication or image errors.
kubectl get pods -o wideCheck where pending pods are scheduled or waiting.
kubectl describe pod <pod>Inspect scheduler events and resource constraints.
kubectl get nodesCheck available cluster nodes.
kubectl describe node <node>Inspect node capacity, conditions and taints.
kubectl get svcCheck service configuration and ports.
kubectl get endpoints <service>Verify that the service has backend endpoints.
kubectl get pods --show-labelsCompare pod labels with the service selector.
kubectl describe svc <service>Inspect service selectors, ports and endpoints.
kubectl get nodesIdentify nodes reporting NotReady.
kubectl describe node <node>Inspect node conditions and recent events.
kubectl get pods -A -o wideCheck workloads running on affected nodes.
kubectl get events -A --sort-by=.lastTimestampReview cluster-wide events.
docker logs <jenkins-container>Inspect Jenkins container logs when Jenkins runs in Docker.
java -versionVerify the Java runtime used by Jenkins.
df -hCheck whether disk exhaustion is affecting builds.
free -hCheck available memory on the Jenkins host.
terraform state listList resources tracked in Terraform state.
terraform state show <resource>Inspect a resource stored in state.
terraform planCompare configuration against current state and infrastructure.
terraform refreshRefresh state from infrastructure when supported by the workflow.
curl http://localhost:9090/-/healthyCheck Prometheus health.
curl http://localhost:9090/api/v1/targetsInspect target states through the Prometheus API.
curl http://target:9100/metricsCheck whether an exporter endpoint responds.
promtool check config prometheus.ymlValidate Prometheus configuration.
dateRecord the current time when beginning incident investigation.
uptimeCheck host uptime and system load.
df -hCheck for disk exhaustion.
free -hCheck memory pressure.
ss -lntupInspect listening network services.
journalctl -p err -n 100Review recent high-priority system errors.
Troubleshooting Guide
Start by confirming the symptom and impact, check recent changes, collect logs and metrics, isolate the failure domain, apply a controlled remediation and verify that the service has recovered.
Check CPU, load average, memory, disk usage, I/O, processes and network activity. Then correlate those signals with application logs and recent changes.
Start with pod status, describe the pod, inspect current and previous container logs, review Kubernetes events and then investigate configuration, probes, resources, scheduling and dependencies.
Troubleshooting focuses on identifying and resolving the immediate failure. Root cause analysis goes further by establishing why the failure occurred and what permanent corrective or preventive actions are required.
Explore the DevOps command references for Kubernetes, Linux, Docker, AWS, Terraform, Ansible, Jenkins and more.
Explore DevOps Commands →