OpenWRT(23): 使用sar进行系统级状态监控
1 OpenWRT下sar配置
如果要在OpenWRT下使用sar,需要配置打开:
Utilities
->sysstat
2 sar介绍
sar相关工具包括:
工具 | 功能描述 | 使用场景示例 |
---|---|---|
sar | 系统活动报告器,收集/显示系统性能数据 | sar -r 1 3 查看内存使用率 |
sadc | 系统活动数据收集器(sar的后台守护进程) | 自动收集数据到二进制文件 |
sadf | 以多种格式(CSV/XML/JSON等)导出sar收集的数据 | sadf -d sa01 -- -r 导出内存CSV数据 |
sa1 | 调用sadc收集并存储数据 | 通过cron定时运行 |
sa2 | 生成每日摘要报告 | 每日生成汇总报告 |
OpenWRT下的sadc的启动流程如下:
- /etc/init.d/sysstat启动脚本,根据/etc/config/sysstat生成配置文件/etc/sysstat/sysstat。
- /etc/init.d/sysstat启动sadc抓取系统状态信息。
- sadc将抓取的数据存储到/var/log/sa/saxx中。
#!/bin/sh /etc/rc.common # Copyright (C) 2015 OpenWrt.org START=90 STOP=10 USE_PROCD=1 PROG=/usr/lib/sysstat/sadc SYSSTAT_CFG="/etc/sysstat/sysstat" validate_sysstat_section() {--读取/etc/config/sysstat配置信息。 uci_load_validate sysstat sysstat "$1" "$2" \ 'log_history:uinteger' \ 'compressafter:uinteger' \ 'sadc_options:string' \ 'sa_dir:string' \ 'zip:string' \ 'enabled:string' } start_sysstat_instance() { [ "$2" = 0 ] || { echo "validation failed" return 1 } [ -d /var/log/sa] || mkdir -p /var/log/sa--统计信息保存到/var/log/sa中。 { echo "HISTORY=$log_history" echo "COMPRESSAFTER=$compressafter" echo "SADC_OPTIONS=\"$sadc_options\"" echo "SA_DIR=\"$sa_dir\"" echo "ZIP=\"$zip\"" echo "ENABLED=\"$enabled\"" } > $SYSSTAT_CFG--写到/etc/sysstat/sysstat配置文件中。 procd_open_instance procd_set_param command $PROG -S ALL -F -L 1 100 - --每隔1秒,记录100秒的统计信息。 procd_set_param file $SYSSTAT_CFG procd_close_instance } start_service() { validate_sysstat_section sysstat start_sysstat_instance } service_triggers() { procd_add_reload_trigger "sysstat" procd_add_validation validate_sysstat_section }
3 sar使用
sadc(System Activity Data Collector)是 sysstat 工具集的核心数据收集器,负责以二进制格式持续采集并存储系统性能数据。它是sar 报告的基础数据源,通常在后台以守护进程方式运行。
sadc支持的选项包括:
选项 | 参数格式 | 功能描述 | 使用示例 |
---|---|---|---|
-C |
<comment> |
在数据文件中添加注释文本 | sadc -C "Startup_Monitor" outfile |
-D |
无 | 使用本地时间替代 UTC 时间戳 | sadc -D 60 5 datafile |
-F |
无 | 强制创建输出文件(即使没有数据) | sadc -F /tmp/empty_data |
-f |
无 | 从标准输入读取时间戳(cron 调度模式专用) | echo $(date +%s) | sadc -f |
-L |
无 | 启用大文件支持(>2GB 文件) | sadc -L 300 - sa_large |
-V |
无 | 显示版本信息并退出 | sadc -V |
-S |
<subset> |
指定采集的数据子集 可用值: INT , DISK , IPV6 , POWER ,SNMP , XDISK , ALL , XALL |
sadc -S DISK,SNMP 300 2 disk_net.dat |
支持的采样周期和路径:
<interval> |
数字 | 采集间隔时间(秒) | 60 (每60秒采集) |
<count> |
数字 | 采集次数 | 10 (采集10次) |
<outfile> |
文件路径 | 输出文件路径(默认:/var/log/sa/saDD ) |
/var/log/custom_sa |
-S 数据子集选项详解:
子集 | 监控内容 | 适用场景 |
---|---|---|
INT |
中断统计 | 高并发服务诊断 |
DISK |
全局磁盘 I/O(读写总量/IOPS) | 存储性能分析 |
IPV6 |
IPv6 网络协议统计 | IPv6 网络监控 |
POWER |
CPU 频率/功耗统计 | 功耗优化/节能分析 |
SNMP |
IP/TCP/UDP/ICMP 网络层协议统计 | 网络问题排查 |
XDISK |
每设备详细磁盘统计(每个磁盘的独立指标) | 多磁盘系统分析 |
ALL |
基础组合:CPU + 内存 + 全局磁盘 + SNMP | 常规系统监控 |
XALL |
完整组合:ALL + XDISK + INT + IPV6 + POWER | 深度性能分析 |
sar(System Activity Reporter)是 Linux 系统性能监控的核心工具之一,属于 sysstat 工具包。它用于收集、报告和保存系统活动信息,帮助分析 CPU、内存、磁盘 I/O、网络等资源的使用情况。
选项 | 报告名称 | 监控内容 | 示例命令 |
---|---|---|---|
-B |
Paging statistics | 分页统计(缺页/换入换出) | sar -B 1 3 |
-b |
I/O statistics | I/O 和传输速率(TPS/吞吐量) | sar -b 5 10 |
-d |
Block devices | 块设备统计(每磁盘读写) | sar -d -p 1 5 |
-F |
Filesystems | 文件系统统计(挂载点使用率) | sar -F MOUNT 60 |
-H |
Hugepages | 大页内存利用率 | sar -H |
-I |
Interrupts | 中断统计(指定中断或SUM/ALL) | sar -I SUM 2 5 |
-m |
Power management | 电源管理统计(需关键字) | sar -m CPU,FAN 1 1 |
-M |
Power utilization | 完整电源管理(CPU频率/风扇/温度等) | sar -M |
-n |
Network | 网络统计(需关键字) | sar -n DEV 1 5 |
-q |
System load | 系统负载和压力停滞统计 | sar -q LOAD,CPU |
-r |
Memory utilization | 内存利用率(物理+Swap) | sar -r ALL 5 3 |
-S |
Swap utilization | 交换空间利用率 | sar -S |
-u |
CPU utilization | CPU利用率(用户/系统/空闲) | sar -u ALL 1 |
-v |
Kernel tables | 内核表状态(inode/文件句柄) | sar -v |
-W |
Swapping | 交换活动统计 | sar -W |
-w |
Task creation | 任务创建和上下文切换 | sar -w |
-y |
TTY devices | TTY设备活动 | sar -y |
4 sar分析
如下查看CPU占用率和内存利用率:
sar -ur -f /var/log/sadc.data > /var/log/sadc.log
5 kSar可视化分析
联系方式:arnoldlu@qq.com