1. Library
  2. Monitoring Concepts
  3. Types

Updated 10 hours ago

Your application runs on something.

Servers. Networks. Disks. Memory. The invisible foundation that your code assumes will be there. Infrastructure monitoring is how you see that foundation—how you know whether it's solid or crumbling before your application discovers the hard way.

The Ground Beneath Your Code

A perfectly written application running on a server with failing disks is still a failing application. The code doesn't know the difference between its own bugs and the ground shaking beneath it.

This is the fundamental problem: when your application slows down, you don't know why. Is it your code? A database query? Or is the disk dying? Is the network dropping packets? Is some other process stealing CPU cycles?

Infrastructure monitoring answers these questions. It separates "my code is broken" from "something beneath my code is broken." Without it, you're debugging in the dark.

What You're Actually Monitoring

Infrastructure has layers, and problems at any layer propagate upward.

Compute is whether you have enough processing power. CPU utilization tells part of the story, but the more revealing metric is load average—how many processes are waiting for their turn. A load average of 8 on a 4-core system means processes are queuing. They're waiting. Your users are waiting.

The subtler signal is I/O wait time: the CPU sitting idle because it's waiting for disk or network. High I/O wait looks like CPU headroom on a dashboard but feels like slowness to users.

Memory determines whether your applications have room to work. When physical RAM fills, the operating system starts swapping to disk. Suddenly memory access that took nanoseconds takes milliseconds—a million times slower. The application doesn't crash; it just becomes unusable.

Memory problems sneak up on you. Usage grows gradually, often over days or weeks, until one day you cross the threshold and everything degrades at once.

Storage is where data lives and where I/O bottlenecks hide. A full disk doesn't just prevent new writes—it crashes applications, stops logging (hiding evidence of what went wrong), and can corrupt data.

But disk space is the obvious metric. The subtle one is I/O latency: how long reads and writes take. A disk handling 200 operations per second with 5ms latency is healthy. The same disk at 200 ops with 50ms latency is drowning. Your database queries are waiting in line.

Network connects everything. Packet loss of even 1% can devastate application performance because TCP retransmits lost packets, adding latency and reducing throughput. A saturated network link doesn't announce itself—it just makes everything slower in ways that look like application problems.

Virtual and Cloud Infrastructure

Virtualization adds layers of indirection that create new failure modes.

In a virtualized environment, your server might be waiting for CPU even when the guest OS shows CPU available. This is "steal time"—the hypervisor giving your allocated CPU to someone else. Your application slows down, but from inside the VM, nothing looks wrong.

Cloud infrastructure introduces resource limits and quotas. Hit your API rate limit, exhaust your allocated IOPS, or exceed your network bandwidth cap, and you're throttled. These limits are invisible until you hit them.

Cloud also means instances can disappear. Spot instances terminate with two minutes notice. Availability zones fail. The infrastructure your application runs on is fundamentally less permanent than physical hardware—which means monitoring instance lifecycle and availability becomes essential.

Containers Add Complexity

Containers share the host operating system kernel. This efficiency creates attribution challenges: when the host is overloaded, which container is responsible?

Container monitoring must track resources per container—CPU, memory, network, disk I/O—while also monitoring the orchestration layer. Kubernetes introduces its own concerns: pod scheduling, node health, resource requests versus limits, and cluster-wide resource pressure.

Containers also restart frequently by design. A container that restarts once after a deployment is normal. A container restarting every few minutes is crashing. The line between "working as intended" and "in a crash loop" requires watching patterns over time.

Hardware Fails Slowly, Then All at Once

Physical infrastructure gives warning signs before it fails catastrophically.

Disks report SMART data—reallocated sectors, pending sectors, read error rates. These numbers creep upward as drives age. A drive with zero reallocated sectors last month and fifty today is telling you something. Listen.

Temperature sensors track thermal health. CPUs throttle when they overheat, trading performance for survival. Rising temperatures might indicate failed fans, blocked airflow, or increasing load.

Power supplies degrade. Redundant power supplies mask failures—you won't notice one failed supply until the second one fails and the server goes dark. Monitoring both supplies lets you replace the failed one before that happens.

RAID arrays lose redundancy silently. A single failed disk in a RAID-5 array doesn't stop anything—the array keeps running in degraded mode. But now one more failure means data loss. You need to know about degraded arrays immediately, not when the second disk fails.

Seeing the Whole Picture

Infrastructure problems rarely announce themselves directly. They manifest as symptoms in applications.

A storage I/O bottleneck might appear as slow database queries. A network issue might look like timeout errors. Memory pressure might cause garbage collection pauses that look like application hangs.

The value of infrastructure monitoring is correlation. When application latency spikes at the same moment disk I/O latency spikes, you've found your cause. Without infrastructure visibility, you'd be profiling application code, searching for a bug that doesn't exist.

This is why you monitor "everything"—not because every metric matters equally, but because you don't know in advance which metric will explain the next incident.

Alerting Before Impact

Infrastructure alerts should trigger before problems affect applications.

Alert when disk usage hits 80%, not 95%. At 80%, you have time to clean up or provision more space. At 95%, you're racing the clock.

Better still, alert on trajectory. If disk usage grows 5GB daily and you have 50GB free, you have about ten days. Alert now, not when you're out of space.

Some conditions demand immediate alerts: failed redundant power supplies, degraded RAID arrays, instances terminated unexpectedly. These reduce your safety margin. You need to restore redundancy before the next failure.

Other conditions need threshold-based alerts with dampening. Brief CPU spikes are normal. Sustained high CPU for fifteen minutes suggests a real problem. Brief network latency spikes happen. Elevated latency for an hour means something changed.

The Foundation You Can Finally See

Infrastructure monitoring transforms the invisible into the visible.

Without it, the infrastructure is a black box. Problems appear as application symptoms, and you troubleshoot from the wrong end. With it, you see the foundation your code stands on. You know when the ground is solid and when it's starting to shake.

The goal isn't to watch every metric constantly. The goal is to have the data when you need it—to answer "is it my code or is it the infrastructure?" in minutes instead of hours.

Your application runs on something. Now you can see what.

Was this page helpful?

😔
🤨
😃