系统指标插件
系统指标插件为 InfluxDB 3 提供了全面的系统监控功能,从宿主系统收集 CPU、内存、磁盘和网络指标。监控详细的性能洞察,包括每个核心的 CPU 统计信息、内存使用情况细分、磁盘 I/O 性能和网络接口统计信息。提供可配置的指标收集功能,具有强大的错误处理和重试逻辑,以实现可靠的监控。
配置
必需参数
无必需参数 - 所有系统指标默认收集,并使用合理的默认值。
系统监控参数
| 参数 | 类型 | 默认 | 描述 |
|---|---|---|---|
hostname | string | localhost | 用于系统标识的标签,所有指标都将以此主机名进行标记。 |
include_cpu | boolean | true | 包含全面的 CPU 指标收集(总体和每个核心的统计信息)。 |
include_memory | boolean | true | 包含内存指标收集(RAM 使用情况、交换空间统计信息、页面错误)。 |
include_disk | boolean | true | 包含磁盘指标收集(分区使用情况、I/O 统计信息、性能)。 |
include_network | boolean | true | 包含网络指标收集(接口统计信息和错误计数)。 |
max_retries | integer | 3 | 故障时的最大重试次数,具有优雅的错误处理。 |
TOML 配置
| 参数 | 类型 | 默认 | 描述 |
|---|---|---|---|
config_file_path | string | none | 相对于 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 配置文件”部分。
安装步骤
启用处理引擎来启动 InfluxDB 3 核心(
--plugin-dir /path/to/plugins)安装必需的 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。
关键操作
- 从参数解析配置。
- 根据配置收集 CPU、内存、磁盘和网络指标。
- 使用适当的错误处理和重试逻辑将指标写入 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)。 - 禁用不必要的指标类型。
- 减少监控的磁盘分区数量。
问题:未收集到数据。
解决方案:
- 检查触发器是否处于活动状态。
influxdb3 query --database _internal "SELECT * FROM system.processing_engine_logs WHERE trigger_name = 'your_trigger_name'" - 验证系统权限是否允许访问系统指标。
- 检查 psutil 包是否已正确安装。
调试技巧
检查最近的指标收集情况。:
# 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'"监控插件日志。:
influxdb3 query \ --database _internal \ "SELECT * FROM system.processing_engine_logs WHERE trigger_name = 'system_metrics_trigger' ORDER BY time DESC LIMIT 10"手动测试指标收集。:
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 Core 和本文档提供反馈和错误报告。要获得支持,请使用以下资源
具有年度合同或支持合同的客户可以 联系 InfluxData 支持。