Skip to content

System Metrics ​

Probestyx collects a comprehensive set of system metrics out-of-the-box. This page documents all available system metrics.

Enabling System Metrics ​

Add metrics to your config.yaml:

yaml
system:
  enabled: true
  metrics:
    - cpu_usage_percent
    - ram_usage_percent
    - disk_usage_percent

CPU Metrics ​

cpu_usage_percent ​

Overall CPU utilization across all cores.

  • Type: Float
  • Unit: Percentage (0-100)
  • Example: 45.2
  • Use case: Monitor overall CPU load
yaml
metrics:
  - cpu_usage_percent

cpu_usage_per_core ​

CPU utilization for each core individually.

  • Type: Array of floats
  • Unit: Percentage per core (0-100)
  • Example: [42.1, 38.5, 51.3, 44.7]
  • Use case: Identify if specific cores are bottlenecked
yaml
metrics:
  - cpu_usage_per_core

cpu_count ​

Number of logical CPU cores (includes hyperthreading).

  • Type: Integer
  • Unit: Count
  • Example: 8
  • Use case: Normalize CPU metrics, capacity planning
yaml
metrics:
  - cpu_count

cpu_count_physical ​

Number of physical CPU cores (excludes hyperthreading).

  • Type: Integer
  • Unit: Count
  • Example: 4
  • Use case: Understanding actual hardware capacity
yaml
metrics:
  - cpu_count_physical

cpu_load_1min ​

System load average over 1 minute.

  • Type: Float
  • Unit: Load
  • Example: 2.5
  • Use case: Short-term load monitoring
  • Note: Values > cpu_count indicate overload
yaml
metrics:
  - cpu_load_1min

cpu_load_5min ​

System load average over 5 minutes.

  • Type: Float
  • Unit: Load
  • Example: 1.8
  • Use case: Medium-term load trends
yaml
metrics:
  - cpu_load_5min

cpu_load_15min ​

System load average over 15 minutes.

  • Type: Float
  • Unit: Load
  • Example: 1.2
  • Use case: Long-term load trends, baseline monitoring
yaml
metrics:
  - cpu_load_15min

Memory Metrics ​

ram_usage_percent ​

RAM utilization as a percentage of total memory.

  • Type: Float
  • Unit: Percentage (0-100)
  • Example: 67.8
  • Use case: Monitor memory pressure
yaml
metrics:
  - ram_usage_percent

available_ram_mb ​

Amount of RAM available for applications.

  • Type: Float
  • Unit: Megabytes
  • Example: 8192.5
  • Use case: Check if system has free memory
yaml
metrics:
  - available_ram_mb

total_ram_mb ​

Total installed RAM.

  • Type: Float
  • Unit: Megabytes
  • Example: 16384.0
  • Use case: Capacity planning, normalization
yaml
metrics:
  - total_ram_mb

ram_cached_mb ​

RAM used for file system cache.

  • Type: Float
  • Unit: Megabytes
  • Example: 4096.2
  • Use case: Understanding memory usage breakdown
yaml
metrics:
  - ram_cached_mb

ram_buffers_mb ​

RAM used for buffers.

  • Type: Float
  • Unit: Megabytes
  • Example: 512.8
  • Use case: Low-level memory analysis
yaml
metrics:
  - ram_buffers_mb

swap_usage_percent ​

Swap space utilization.

  • Type: Float
  • Unit: Percentage (0-100)
  • Example: 15.3
  • Use case: Detect memory pressure (high swap = problem)
yaml
metrics:
  - swap_usage_percent

swap_total_mb ​

Total swap space configured.

  • Type: Float
  • Unit: Megabytes
  • Example: 8192.0
  • Use case: Capacity planning
yaml
metrics:
  - swap_total_mb

swap_used_mb ​

Amount of swap currently in use.

  • Type: Float
  • Unit: Megabytes
  • Example: 1024.5
  • Use case: Monitor swap usage trends
yaml
metrics:
  - swap_used_mb

Disk Metrics ​

disk_usage_percent ​

Disk space utilization for the root filesystem.

  • Type: Float
  • Unit: Percentage (0-100)
  • Example: 52.3
  • Use case: Monitor disk space, trigger cleanup
yaml
metrics:
  - disk_usage_percent

available_disk_gb ​

Available disk space on root filesystem.

  • Type: Float
  • Unit: Gigabytes
  • Example: 128.5
  • Use case: Check remaining capacity
yaml
metrics:
  - available_disk_gb

total_disk_gb ​

Total disk capacity of root filesystem.

  • Type: Float
  • Unit: Gigabytes
  • Example: 256.0
  • Use case: Capacity planning
yaml
metrics:
  - total_disk_gb

inode_usage_percent ​

Percentage of inodes used on root filesystem.

  • Type: Float
  • Unit: Percentage (0-100)
  • Example: 12.5
  • Use case: Detect filesystem limits (many small files)
yaml
metrics:
  - inode_usage_percent

disk_read_bytes ​

Cumulative bytes read from disk since boot.

  • Type: Integer
  • Unit: Bytes
  • Example: 1073741824000
  • Use case: Calculate read rates over time
yaml
metrics:
  - disk_read_bytes

disk_write_bytes ​

Cumulative bytes written to disk since boot.

  • Type: Integer
  • Unit: Bytes
  • Example: 536870912000
  • Use case: Calculate write rates over time
yaml
metrics:
  - disk_write_bytes

disk_read_bytes_per_sec ​

Current disk read rate.

  • Type: Float
  • Unit: Bytes per second
  • Example: 1048576.0
  • Use case: Monitor disk I/O performance
yaml
metrics:
  - disk_read_bytes_per_sec

disk_write_bytes_per_sec ​

Current disk write rate.

  • Type: Float
  • Unit: Bytes per second
  • Example: 524288.0
  • Use case: Monitor disk I/O performance
yaml
metrics:
  - disk_write_bytes_per_sec

disk_read_count ​

Cumulative read operations since boot.

  • Type: Integer
  • Unit: Count
  • Example: 1500000
  • Use case: Calculate IOPS over time
yaml
metrics:
  - disk_read_count

disk_write_count ​

Cumulative write operations since boot.

  • Type: Integer
  • Unit: Count
  • Example: 800000
  • Use case: Calculate IOPS over time
yaml
metrics:
  - disk_write_count

Network Metrics ​

network_bytes_sent ​

Cumulative bytes sent across all interfaces since boot.

  • Type: Integer
  • Unit: Bytes
  • Example: 10737418240
  • Use case: Calculate send rates over time
yaml
metrics:
  - network_bytes_sent

network_bytes_recv ​

Cumulative bytes received across all interfaces since boot.

  • Type: Integer
  • Unit: Bytes
  • Example: 21474836480
  • Use case: Calculate receive rates over time
yaml
metrics:
  - network_bytes_recv

network_bytes_sent_per_sec ​

Current network send rate.

  • Type: Float
  • Unit: Bytes per second
  • Example: 102400.0
  • Use case: Monitor bandwidth usage
yaml
metrics:
  - network_bytes_sent_per_sec

network_bytes_recv_per_sec ​

Current network receive rate.

  • Type: Float
  • Unit: Bytes per second
  • Example: 204800.0
  • Use case: Monitor bandwidth usage
yaml
metrics:
  - network_bytes_recv_per_sec

network_packets_sent ​

Cumulative packets sent across all interfaces.

  • Type: Integer
  • Unit: Count
  • Example: 5000000
  • Use case: Calculate packet rates
yaml
metrics:
  - network_packets_sent

network_packets_recv ​

Cumulative packets received across all interfaces.

  • Type: Integer
  • Unit: Count
  • Example: 7500000
  • Use case: Calculate packet rates
yaml
metrics:
  - network_packets_recv

network_errors_in ​

Cumulative inbound network errors.

  • Type: Integer
  • Unit: Count
  • Example: 12
  • Use case: Monitor network health
yaml
metrics:
  - network_errors_in

network_errors_out ​

Cumulative outbound network errors.

  • Type: Integer
  • Unit: Count
  • Example: 5
  • Use case: Monitor network health
yaml
metrics:
  - network_errors_out

active_connections ​

Number of active TCP connections.

  • Type: Integer
  • Unit: Count
  • Example: 42
  • Use case: Monitor connection usage, detect connection leaks
yaml
metrics:
  - active_connections

System Information ​

system_uptime_seconds ​

Time since system boot.

  • Type: Integer
  • Unit: Seconds
  • Example: 86400
  • Use case: Track system restarts, uptime monitoring
yaml
metrics:
  - system_uptime_seconds

boot_time_unix ​

System boot time as Unix timestamp.

  • Type: Integer
  • Unit: Unix timestamp
  • Example: 1704067200
  • Use case: Calculate uptime, track reboots
yaml
metrics:
  - boot_time_unix

os_platform ​

Operating system platform.

  • Type: String
  • Example: "linux", "darwin", "windows"
  • Use case: System inventory, OS-specific logic
yaml
metrics:
  - os_platform

os_version ​

Operating system version.

  • Type: String
  • Example: "Ubuntu 22.04.3 LTS"
  • Use case: System inventory, version tracking
yaml
metrics:
  - os_version

hostname ​

System hostname.

  • Type: String
  • Example: "web-server-01"
  • Use case: Identify which server metrics come from
yaml
metrics:
  - hostname

kernel_version ​

Kernel version string.

  • Type: String
  • Example: "5.15.0-91-generic"
  • Use case: System inventory, compatibility checking
yaml
metrics:
  - kernel_version

process_count ​

Number of running processes.

  • Type: Integer
  • Unit: Count
  • Example: 156
  • Use case: Monitor system load, detect process leaks
yaml
metrics:
  - process_count

Common Metric Combinations ​

Basic Monitoring ​

Essential metrics for general server monitoring:

yaml
system:
  enabled: true
  metrics:
    - cpu_usage_percent
    - ram_usage_percent
    - disk_usage_percent
    - network_bytes_sent_per_sec
    - network_bytes_recv_per_sec
    - system_uptime_seconds

Performance Monitoring ​

Detailed metrics for performance analysis:

yaml
system:
  enabled: true
  metrics:
    - cpu_usage_percent
    - cpu_usage_per_core
    - cpu_load_1min
    - cpu_load_5min
    - ram_usage_percent
    - available_ram_mb
    - disk_read_bytes_per_sec
    - disk_write_bytes_per_sec
    - network_bytes_sent_per_sec
    - network_bytes_recv_per_sec

Capacity Planning ​

Metrics for capacity and resource planning:

yaml
system:
  enabled: true
  metrics:
    - cpu_count
    - total_ram_mb
    - total_disk_gb
    - available_disk_gb
    - disk_usage_percent
    - ram_usage_percent

Troubleshooting ​

Metrics useful for diagnosing issues:

yaml
system:
  enabled: true
  metrics:
    - cpu_usage_percent
    - cpu_load_1min
    - ram_usage_percent
    - swap_usage_percent
    - disk_usage_percent
    - inode_usage_percent
    - network_errors_in
    - network_errors_out
    - active_connections
    - process_count

Minimal Footprint ​

Only the most essential metrics:

yaml
system:
  enabled: true
  metrics:
    - cpu_usage_percent
    - ram_usage_percent
    - disk_usage_percent

Understanding Metric Values ​

CPU Load ​

CPU load averages represent the number of processes waiting for CPU time:

  • Load < CPU count: System is healthy
  • Load = CPU count: System is at capacity
  • Load > CPU count: System is overloaded

Example with 4 cores:

  • Load of 2.0: Good (50% capacity)
  • Load of 4.0: At capacity
  • Load of 8.0: Overloaded (2x capacity)

Memory Usage ​

High memory usage isn't always bad (caching), but watch for:

  • High RAM usage + high swap: Memory pressure
  • Rapidly growing memory: Potential leak
  • Low available RAM: May need more memory

Disk I/O ​

Rate metrics show current activity:

  • Spikes are normal
  • Sustained high rates may indicate bottleneck
  • Compare with application workload

Network ​

  • Monitor trends over time
  • High error counts indicate problems
  • Correlate with application traffic patterns

Platform Differences ​

Some metrics behave differently across platforms:

MetricLinuxmacOSWindows
cpu_load_*✅ Full support✅ Full support⚠️ Limited
ram_buffers_mb✅ Available❌ Not applicable❌ Not applicable
inode_usage_percent✅ Available✅ Available❌ Not applicable
All other metrics✅ Full support✅ Full support✅ Full support

Next Steps ​

Released under the MIT License.