文档文档

系统指标插件

系统指标插件为 InfluxDB 3 提供了全面的系统监控功能,从宿主系统收集 CPU、内存、磁盘和网络指标。监控详细的性能洞察,包括每个核心的 CPU 统计信息、内存使用情况细分、磁盘 I/O 性能和网络接口统计信息。提供可配置的指标收集功能,具有强大的错误处理和重试逻辑,以实现可靠的监控。

配置

必需参数

无必需参数 - 所有系统指标默认收集,并使用合理的默认值。

系统监控参数

参数类型默认描述
hostnamestringlocalhost用于系统标识的标签,所有指标都将以此主机名进行标记。
include_cpubooleantrue包含全面的 CPU 指标收集(总体和每个核心的统计信息)。
include_memorybooleantrue包含内存指标收集(RAM 使用情况、交换空间统计信息、页面错误)。
include_diskbooleantrue包含磁盘指标收集(分区使用情况、I/O 统计信息、性能)。
include_networkbooleantrue包含网络指标收集(接口统计信息和错误计数)。
max_retriesinteger3故障时的最大重试次数,具有优雅的错误处理。

TOML 配置

参数类型默认描述
config_file_pathstringnone相对于 PLUGIN_DIR 的 TOML 配置文件路径 (TOML 配置必需)

要使用 TOML 配置文件,请设置 PLUGIN_DIR 环境变量并在触发器参数中指定 config_file_path 这与启动 InfluxDB 3 时的 --plugin-dir 标志是附加的。

示例 TOML 配置

system_metrics_config_scheduler.toml

有关使用 TOML 配置文件,请参阅 influxdb3_plugins /README.md 中的“使用 TOML 配置文件”部分。

安装步骤

  1. 启用处理引擎来启动 InfluxDB 3 核心(--plugin-dir /path/to/plugins

  2. 安装必需的 Python 包

    • psutil(用于系统指标收集)
    influxdb3 install package psutil

触发器设置

基本计划触发器

每 30 秒监控一次系统性能。

influxdb3 create trigger \
  --database system_monitoring \
  --plugin-filename gh:influxdata/system_metrics/system_metrics.py \
  --trigger-spec "every:30s" \
  system_metrics_trigger

自定义配置

使用自定义主机名监控特定指标。

influxdb3 create trigger \
  --database system_monitoring \
  --plugin-filename gh:influxdata/system_metrics/system_metrics.py \
  --trigger-spec "every:30s" \
  --trigger-arguments hostname=web-server-01,include_disk=false,max_retries=5 \
  system_metrics_custom_trigger

示例用法

示例 1:Web 服务器监控

每 15 秒监控一次 Web 服务器性能,包含网络统计信息。

# Create trigger for web server monitoring
influxdb3 create trigger \
  --database web_monitoring \
  --plugin-filename gh:influxdata/system_metrics/system_metrics.py \
  --trigger-spec "every:15s" \
  --trigger-arguments hostname=web-server-01,include_network=true \
  web_server_metrics

# Query recent CPU metrics
influxdb3 query \
  --database web_monitoring \
  "SELECT * FROM system_cpu WHERE time >= now() - interval '5 minutes' LIMIT 5"

预期输出

+---------------+-------+------+--------+------+--------+-------+-------+-----------+------------------+
| host          | cpu   | user | system | idle | iowait | nice  | load1 | load5     | time             |
+---------------+-------+------+--------+------+--------+-------+-------+-----------+------------------+
| web-server-01 | total | 12.5 | 5.3    | 81.2 | 0.8    | 0.0   | 0.85  | 0.92      | 2024-01-15 10:00 |
| web-server-01 | total | 13.1 | 5.5    | 80.4 | 0.7    | 0.0   | 0.87  | 0.93      | 2024-01-15 10:01 |
| web-server-01 | total | 11.8 | 5.1    | 82.0 | 0.9    | 0.0   | 0.83  | 0.91      | 2024-01-15 10:02 |
+---------------+-------+------+--------+------+--------+-------+-------+-----------+------------------+

示例 2:数据库服务器监控

重点关注数据库服务器的 CPU 和磁盘指标。

# Create trigger for database server
influxdb3 create trigger \
  --database db_monitoring \
  --plugin-filename gh:influxdata/system_metrics/system_metrics.py \
  --trigger-spec "every:30s" \
  --trigger-arguments hostname=db-primary,include_disk=true,include_cpu=true,include_network=false \
  database_metrics

# Query disk usage
influxdb3 query \
  --database db_monitoring \
  "SELECT * FROM system_disk_usage WHERE host = 'db-primary'"

示例 3:高频监控

每 10 秒收集一次所有指标,并具有更高的重试容忍度。

# Create high-frequency monitoring trigger
influxdb3 create trigger \
  --database system_monitoring \
  --plugin-filename gh:influxdata/system_metrics/system_metrics.py \
  --trigger-spec "every:10s" \
  --trigger-arguments hostname=critical-server,max_retries=10 \
  high_freq_metrics

代码概述

文件

  • system_metrics.py:包含系统指标收集逻辑的主插件代码。
  • system_metrics_config_scheduler.toml:用于计划触发器的示例 TOML 配置文件。

日志记录

日志存储在 _internal 数据库(或创建触发器的数据库)的 system.processing_engine_logs 表中。要查看日志

influxdb3 query --database _internal "SELECT * FROM system.processing_engine_logs WHERE trigger_name = 'your_trigger_name'"

日志列

  • event_time:日志事件的时间戳
  • trigger_name:生成日志的触发器名称
  • log_level:严重性级别(INFO、WARN、ERROR)
  • log_text:描述操作或错误的邮件

主函数

process_scheduled_call(influxdb3_local, call_time, args)

计划触发器的主要入口点。根据配置收集系统指标,并将其写入 InfluxDB。

关键操作

  1. 从参数解析配置。
  2. 根据配置收集 CPU、内存、磁盘和网络指标。
  3. 使用适当的错误处理和重试逻辑将指标写入 InfluxDB。

collect_cpu_metrics(influxdb3_local, hostname)

收集 CPU 利用率和性能指标,包括每个核心的统计信息和系统负载平均值。

collect_memory_metrics(influxdb3_local, hostname)

收集内存使用统计信息,包括 RAM、交换空间和页面错误信息。

collect_disk_metrics(influxdb3_local, hostname)

收集所有已挂载分区的磁盘使用情况和 I/O 统计信息。

collect_network_metrics(influxdb3_local, hostname)

收集网络接口统计信息,包括传输的字节数和错误计数。

测量和字段

system_cpu

总体 CPU 统计信息和指标。

  • 标签host, cpu=total
  • 字段user, system, idle, iowait, nice, irq, softirq, steal, guest, guest_nice, frequency_current, frequency_min, frequency_max, ctx_switches, interrupts, soft_interrupts, syscalls, load1, load5, load15

system_cpu_cores

每个核心的 CPU 统计信息。

  • 标签host, core(核心编号)
  • 字段usage, user, system, idle, iowait, nice, irq, softirq, steal, guest, guest_nice, frequency_current, frequency_min, frequency_max

system_memory

系统内存统计信息。

  • 标签host
  • 字段total, available, used, free, active, inactive, buffers, cached, shared, slab, percent

system_swap

交换空间内存统计信息。

  • 标签host
  • 字段total, used, free, percent, sin, sout

system_memory_faults

内存页面错误信息(可用时)。

  • 标签host
  • 字段page_faults, major_faults, minor_faults, rss, vms, dirty, uss, pss

system_disk_usage

磁盘分区使用情况。

  • 标签host, device, mountpoint, fstype
  • 字段total, used, free, percent

system_disk_io

磁盘 I/O 统计信息。

  • 标签host, device
  • 字段reads, writes, read_bytes, write_bytes, read_time, write_time, busy_time, read_merged_count, write_merged_count

system_disk_performance

计算出的磁盘性能指标。

  • 标签host, device
  • 字段read_bytes_per_sec, write_bytes_per_sec, read_iops, write_iops, avg_read_latency_ms, avg_write_latency_ms, util_percent

system_network

网络接口统计信息。

  • 标签host, interface
  • 字段bytes_sent, bytes_recv, packets_sent, packets_recv, errin, errout, dropin, dropout

故障排除

常见问题

问题:磁盘 I/O 指标权限错误。

某些磁盘 I/O 指标可能需要提升的权限。

解决方案:即使某些指标需要提升的权限,插件也会继续收集其他指标。如果磁盘 I/O 指标至关重要,请考虑以适当的权限运行 InfluxDB 3。

问题:缺少 psutil 库。

ERROR: No module named 'psutil'

解决方案:安装 psutil 包。

influxdb3 install package psutil

问题:插件导致 CPU 使用率过高。

如果插件导致 CPU 使用率过高,请考虑:

  • 增加触发器间隔(例如,从 every:10s 更改为 every:30s)。
  • 禁用不必要的指标类型。
  • 减少监控的磁盘分区数量。

问题:未收集到数据。

解决方案:

  1. 检查触发器是否处于活动状态。
    influxdb3 query --database _internal "SELECT * FROM system.processing_engine_logs WHERE trigger_name = 'your_trigger_name'"
  2. 验证系统权限是否允许访问系统指标。
  3. 检查 psutil 包是否已正确安装。

调试技巧

  1. 检查最近的指标收集情况。:

    # List all system metric measurements
    influxdb3 query \
      --database system_monitoring \
      "SHOW MEASUREMENTS WHERE measurement =~ /^system_/"
    
    # Check recent CPU metrics
    influxdb3 query \
      --database system_monitoring \
      "SELECT COUNT(*) FROM system_cpu WHERE time >= now() - interval '1 hour'"
  2. 监控插件日志。:

    influxdb3 query \
      --database _internal \
      "SELECT * FROM system.processing_engine_logs WHERE trigger_name = 'system_metrics_trigger' ORDER BY time DESC LIMIT 10"
  3. 手动测试指标收集。:

    influxdb3 test schedule_plugin \
      --database system_monitoring \
      --schedule "0 0 * * * ?" \
      system_metrics.py

性能注意事项

  • 该插件使用 psutil 库高效地收集全面的系统指标。
  • 指标收集已优化,可最大限度地减少系统开销。
  • 错误处理和重试逻辑可确保可靠运行。
  • 可配置的指标类型允许仅关注相关指标。

报告问题

有关插件问题,请参阅插件存储库的 issues 页面

查找 InfluxDB 3 Core 的支持

加入 InfluxDB Discord 服务器 是获取 InfluxDB 3 Core 和 InfluxDB 3 Enterprise 支持的最佳途径。对于其他 InfluxDB 版本,请参阅 支持和反馈 选项。


此页面是否有帮助?

感谢您的反馈!


InfluxDB 3.8 新特性

InfluxDB 3.8 和 InfluxDB 3 Explorer 1.6 的主要增强功能。

查看博客文章

InfluxDB 3.8 现已适用于 Core 和 Enterprise 版本,同时发布了 InfluxDB 3 Explorer UI 的 1.6 版本。本次发布着重于操作成熟度,以及如何更轻松地部署、管理和可靠地运行 InfluxDB。

更多信息,请查看

InfluxDB Docker 的 latest 标签将指向 InfluxDB 3 Core

在 **2026 年 2 月 3 日**,InfluxDB Docker 镜像的 latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。

如果使用 Docker 来安装和运行 InfluxDB,latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。例如,如果使用 Docker 运行 InfluxDB v2,请将 latest 版本标签替换为 Docker pull 命令中的特定版本标签 — 例如

docker pull influxdb:2