Linux Monitoring
SkyWalking leverages Prometheus node-exporter to collect metrics data from the VMs and leverages OpenTelemetry Collector to transfer the metrics to
OpenTelemetry receiver and into the Meter System.
VM entity as a Service in OAP and on the Layer: OS_LINUX.
SkyWalking also provides InfluxDB Telegraf to receive VMs’ metrics data by Telegraf receiver.
The telegraf receiver plugin receiver, process and convert the metrics, then it send converted metrics to Meter System.
VM entity as a Service in OAP and on the Layer: OS_LINUX.
Data flow
For OpenTelemetry receiver:
- The Prometheus node-exporter collects metrics data from the VMs.
- The OpenTelemetry Collector fetches metrics from node-exporter via Prometheus Receiver and pushes metrics to the SkyWalking OAP Server via OpenTelemetry gRPC exporter.
- The SkyWalking OAP Server parses the expression with MAL to filter/calculate/aggregate and store the results. For Telegraf receiver:
- The InfluxDB Telegraf input plugins collects various metrics data from the VMs.
- The cpu, mem, system, disk and diskio input plugins should be set in telegraf.conf file.
- The InfluxDB Telegraf send
JSONformat metrics byHTTPmessages to Telegraf Receiver, then pushes converted metrics to the SkyWalking OAP Server Meter System. - The SkyWalking OAP Server parses the expression with MAL to filter/calculate/aggregate ad store the results.
- The meter_vm_cpu_average_used metrics indicates the average usage of each CPU core for telegraf receiver.
Setup
For OpenTelemetry receiver:
- Setup Prometheus node-exporter.
- Setup OpenTelemetry Collector. This is an example for OpenTelemetry Collector configuration otel-collector-config.yaml.
- Config SkyWalking OpenTelemetry receiver. For Telegraf receiver:
- Setup InfluxDB Telegraf’s
telegraf.conf fileaccording to Telegraf office document. - Setup InfluxDB Telegraf’s
telegraf.conf filespecific rules according to Telegraf receiver document. - Config SkyWalking Telegraf receiver.
Native OpenTelemetry hostmetrics (extended alternative)
SkyWalking can also receive Linux host and process metrics directly from the OpenTelemetry Collector hostmetrics receiver, without Prometheus node-exporter.
- Install OpenTelemetry Collector Contrib
0.158.0on the monitored host. - Use the deployable reference configuration otel-collector-hostmetrics-linux.yaml.
- Set
SW_OAP_GRPC_ADDRESSto the SkyWalking OAP OTLP/gRPC endpoint. Optionally setSW_PROCESS_NAME_REGEXto restrict the process executable names to collect. - Config SkyWalking OpenTelemetry receiver. The default OAP rule set enables both
vmandprocess-hostmetrics-linux.
The Collector normalizes host and process identity, compacts process resource metrics, aligns process datapoint timestamps to the collection window, and pre-aggregates operating-system processes with the same normalized process_name before OTLP export. process-hostmetrics-linux.yaml maps the aggregated metrics to the corresponding SkyWalking process instance.
Supported Metrics
The two OpenTelemetry receiver paths do not expose exactly the same Linux kernel metrics. In particular, OpenTelemetry Collector Contrib 0.158.0 hostmetrics has no host-level metric equivalent to node-exporter’s node_filefd_allocated, which is derived from /proc/sys/fs/file-nr. The per-process process.open_file_descriptors metric has different semantics and is intentionally not used as a substitute. Therefore, meter_vm_filefd_allocated remains available only through the node-exporter path.
Likewise, meter_vm_tcp_alloc, meter_vm_sockets_used, and meter_vm_udp_inuse remain node-exporter-only because hostmetrics system.network.connections does not expose equivalent Linux sockstat counters. meter_vm_tcp_curr_estab and meter_vm_tcp_tw do have compatible hostmetrics equivalents.
| Monitoring Panel | Unit | Metric Name | Description | node-exporter | OTel hostmetrics | Telegraf |
|---|---|---|---|---|---|---|
| CPU Usage | % | meter_vm_cpu_total_percentage |
Total CPU usage across all logical CPUs | Yes | Yes | Yes |
| CPU Cores | count | meter_vm_cpu_cores_num |
Number of logical CPUs | — | Yes | — |
| Normalized CPU Usage | % | meter_vm_cpu_norm_percentage |
CPU usage normalized by the number of logical CPUs | — | Yes | — |
| CPU Average Used | % | meter_vm_cpu_average_used |
CPU usage by mode/state | Yes | Yes | Yes |
| CPU Load | meter_vm_cpu_load1meter_vm_cpu_load5meter_vm_cpu_load15 |
CPU 1m / 5m / 15m average load | Yes | Yes | Yes | |
| Memory RAM Usage | MB | meter_vm_memory_used |
Total RAM usage | Yes | Yes | Yes |
| Memory RAM | MB | meter_vm_memory_totalmeter_vm_memory_availablemeter_vm_memory_usedmeter_vm_memory_buff_cache |
RAM Total / Available / Used / Buff-Cache | Yes | Yes | Yes |
| Memory Swap Usage | % | meter_vm_memory_swap_percentage |
Percentage of swap memory in use | Yes | Yes | Yes |
| Memory Swap | MB | meter_vm_memory_swap_freemeter_vm_memory_swap_total |
Swap Free / Total | Yes | Yes | Yes |
| File System Mountpoint Usage | % | meter_vm_filesystem_percentage |
File-system usage at each mount point | Yes | Yes | Yes |
| Disk R/W | KB/s | meter_vm_disk_readmeter_vm_disk_written |
Disk read and write throughput | Yes | Yes | Yes |
| Network Bandwidth Usage | KB/s | meter_vm_network_receivemeter_vm_network_transmit |
Network receive and transmit throughput | Yes | Yes | Yes |
| TCP Established / Close-Wait | count | meter_vm_tcp_curr_estab |
TCP connections in ESTABLISHED or CLOSE-WAIT state | Yes | Yes | Yes |
| TCP Time Wait | count | meter_vm_tcp_tw |
TCP connections in TIME-WAIT state | Yes | Yes | Yes |
| TCP Allocated | count | meter_vm_tcp_alloc |
Allocated TCP sockets | Yes | No | Yes |
| Sockets Used | count | meter_vm_sockets_used |
Kernel sockets currently in use | Yes | No | Yes |
| UDP In Use | count | meter_vm_udp_inuse |
UDP sockets currently in use | Yes | No | Yes |
| Filefd Allocated | count | meter_vm_filefd_allocated |
Host-level allocated file descriptors from Linux /proc/sys/fs/file-nr |
Yes | No | — |
Customizing
You can customize your own metrics/expression/dashboard panel.
The metrics definition and expression rules are found in /config/otel-rules/vm.yaml and /config/telegraf-rules/vm.yaml.
The dashboard panel confirmations ship from the SkyWalking Horizon UI bundle (apache/skywalking-horizon-ui); the OAP backend no longer hosts UI dashboard JSONs.
Blog
For more details, see the blog article SkyWalking 8.4 provides infrastructure monitoring.