OS类型插件说明
cpu
功能说明
统计cpu信息,每次采集都为每个vcpu,以及总cpu维度分别生成消息。
原始数据来源:/proc/loadavg、/proc/stat等。
参数配置
插件默认为CPU0、CPU1、...、CPU-ALL分别生成消息。用户可根据需要配置_filter_cpu_id项,进行消息筛选。如果用户只需要总维度的CPU统计信息,则可配置参数_filter_cpu_id为CPU-ALL。
消息样例及含义说明
{ "plugin_id": "cpu", "metric": { "node": "host-10-33-0-188", #单位: | 类型:string | 说明:主机名,消息来源标识 "timestamp": 1482161028000, #单位: | 类型:long long | 说明:UTC时间戳 "cpu_id": "CPU1", #单位: | 类型:string | 说明:cpu编号(CPU-ALL:系统整体维度) "guest": "0.0", #单位:% | 类型:double | 说明:访客控制cpu时间占有率 "guest_nice": "0.0", #单位:% | 类型:double | 说明:低优先级访客控制cpu时间占有率 "idle": "100.0", #单位:% | 类型:double | 说明:空闲(不包含IO等待)时间占有率 "iowait": "0.0", #单位:% | 类型:double | 说明:等待IO响应的时间占有率 "irq": "0.0", #单位:% | 类型:double | 说明:处理硬件中断的时间占有率 "ldavg15m": "0.05", #单位: | 类型:double | 说明:近15分钟内平均负载 "ldavg1m": "0.01", #单位: | 类型:double | 说明:近1分钟内平均负载 "ldavg5m": "0.03", #单位: | 类型:double | 说明:近5分钟内平均负载 "nice": "0.0", #单位:% | 类型:double | 说明:低优先级用户态时间占有率 "softirq": "0.0", #单位:% | 类型:double | 说明:处理软件中断的时间占有率 "steal": "0.0", #单位:% | 类型:double | 说明:花在虚拟系统上的时间占有率 "system": "0.0", #单位:% | 类型:double | 说明:系统态时间占有率 "user": "0.0", #单位:% | 类型:double | 说明:用户态时间占有率 "util": "0.0", #单位:% | 类型:double | 说明:cpu占有率(1-idle) "vcpu_num": "48" #单位: | 类型:double | 说明:vcpu数量 } }
diskio
功能说明
统计磁盘IO信息,每次采集将针对每个磁盘分别生成一条消息。
插件先从/proc/partitions获取全部物理磁盘及逻辑分区的名字、主次设备号。然后根据得到的磁盘名单,从/proc/diskstats提取每个物理磁盘或逻辑分区的读写数据,并进一步进行计算得到IO数据。
参数配置
配置样例:
_filter_disk_id:xvda,^1,^2 #筛选关键字
show_extra:true #是否按照磁盘分区生成多条消息
其中带“^”前缀的为反向筛选关键字(1、2),其余为正向筛选关键字(xvda),每条消息在最终生成之前,插件会先执行一次正向筛选(若disk_id的值包含xvda,则保留这条消息;反之则删掉。若没有配置正向筛选关键字,则跳过这步筛选,保留消息。)若该条消息得以保留,插件会继续执行一次反向筛选(若disk_id的值包含1或2当中的任一字段,则删掉这条消息;反之则保留。若没有配置反向筛选关键字,则跳过这步筛选,保留消息。)
show_extra为true时表示按照磁盘分区生成多条消息。
假设某台服务器执行cat /proc/partitions命令结果如图1所示,共7行数据,按照“_filter_disk_id:xvda,^1,^2”配置正反向过滤后,仅生成第1行xvda对应的消息。
消息样例及含义说明
{ "plugin_id": "diskio", "metric": { "node": "host-10-33-0-188", #单位: | 类型:string | 说明:主机名,消息来源标识 "timestamp": 1482161028000, #单位: | 类型:long long | 说明:UTC时间戳 "avgqu_sz": "0.0000", #单位: | 类型:double | 说明:平均I/O队列长度 "avgrq_sz": "0.0000", #单位:扇区| 类型:double | 说明:平均每次设备I/O操作的数据大小 "await": "0.0000", #单位:ms | 类型:double | 说明:平均每次设备I/O操作的等待时间 "disk_id": "xvda", #单位: | 类型:string | 说明:物理磁盘号/逻辑分区号 "r_await": "0.0000", #单位:ms | 类型:double | 说明:平均每次读请求等待时间 "rkbps": "0.0000", #单位:kB/s | 类型:double | 说明:读操作的kbps数, 单位为KByte/s "rps": "0.0000", #单位:次/s | 类型:double | 说明:每秒完成的读I/O设备次数 "rrqmps": "0.0000", #单位:次/s | 类型:double | 说明:每秒进行merge的读操作数目 "svctm": "0.0000", #单位:ms | 类型:double | 说明:平均每次设备I/O操作的服务时间 "tps": "0.0000", #单位:次/s | 类型:double | 说明:每秒完成的读写I/O设备总次数 "util": "0.0", #单位:% | 类型:double | 说明:磁盘IO利用率 "w_await": "0.0000", #单位:ms | 类型:double | 说明:平均每次写请求等待时间 "wkbps": "0.0000", #单位:kB/s | 类型:double | 说明:写操作的kbps数, 单位为KByte/s "wps": "0.0000", #单位:次/s | 类型:double | 说明:每秒完成的写I/O设备次数 "wrqmps": "0.0000" #单位:次/s | 类型:double | 说明:每秒进行merge的写操作数目 } }
fs
功能说明
统计文件系统使用情况,采集数据内容和df -lh命令一致。
参数配置
配置样例:“_filter_mounted_name:^/shm,/dev,/opt”,其中带"^"前缀的为反向筛选关键字(/shm),其余为正向筛选关键字(/dev、/opt),每条消息在最终生成之前,插件会先执行一次正向筛选(若mounted_name的值包含/dev或/opt任一字段,则保留这条消息;反之则删掉。若没有配置正向筛选关键字,则跳过这步筛选,保留消息。)若该条消息得以保留,插件会继续执行一次反向筛选(若mounted_name的值包含/shm字段,则删掉这条消息;反之则保留。若没有配置反向筛选关键字,则跳过这步筛选,保留消息。)
假设某台服务器执行df -lh命令结果如图2所示,共4行数据,按照_filter_mounted_name:^/shm,/dev,/opt”配置正反向过滤后,仅生成第2、4行对应的消息。/dev/shm由于包含/shm,对应的消息将被剔除。
消息样例及含义说明
{ "plugin_id": "fs", "metric": { "node": "host-10-33-0-188", #单位: | 类型:string | 说明:主机名,消息来源标识 "timestamp": 1482161028000, #单位: | 类型:long long | 说明:UTC时间戳 "fs_name": "/dev/mapper/vg1-lv1", #单位: | 类型:string | 说明:文件系统(= df命令的Filesystem列) "free": " 8707.9", #单位:mb | 类型:double | 说明:分区可用空间大小(= df命令的Avail列) "total": " 90710.0", #单位:mb | 类型:double | 说明:分区总大小(= df命令的Size列) "usage": "90.0", #单位:% | 类型:double | 说明:分区使用率(= df命令的Use%列) "used": " 80988.4", #单位:mb | 类型:double | 说明:分区已使用大小(= df命令的Used列) "mounted_name":"/opt", #单位: | 类型:string | 说明:分区挂载点(= df命令的Mounted on列) "index_node_use_util": " 3.00000 " #单位:% | 类型:double | 说明:inode使用率(= df -i命令的IUse%列) }
mem
功能说明
采集全系统有关的内存信息。
原始数据来源:/proc/meminfo、/proc/vmstat
参数配置
不需配置。
消息样例及含义说明
{ "plugin_id": "mem", "metric": { "node": "host-10-33-0-188", #单位: | 类型:string | 说明:主机名,消息来源标识 "timestamp": 1482161028000, #单位: | 类型:long | 说明:UTC时间戳 "active": "6476724", #单位:kB | 类型:int | 说明:活跃内存 "buffers": "1776864", #单位:kB | 类型:int | 说明:buffers缓存 "cached": "8662036", #单位:kB | 类型:int | 说明:cached缓存 "dirty": "152", #单位:kB | 类型:int | 说明:等待写回磁盘的内存 "inactive": "4966164", #单位:kB | 类型:int | 说明:不活跃内存 "mem_free": "3964160", #单位:kB | 类型:int | 说明:可用内存 "mem_free_in_buf_cache": "14403060", #单位:kB | 类型:int | 说明:实际可用内存(+buffers+cached) "mem_free_size": "15072556", #单位:kB | 类型:int | 说明:"MemFree + Cached + Buffers + SReclaimable + Swapcached + Nfs_unstable - Shmem" "mem_total": "16311792", #单位:kB | 类型:int | 说明:全部内存 "mem_used": "12347632", #单位:kB | 类型:int | 说明:已用内存 "mem_used_ex_buf_cache": "1908732", #单位:kB | 类型:int | 说明:实际内存占用(-buffers-cached) "mem_used_size": "1239236", #单位:kB | 类型:int | 说明:mem_total - mem_free_size "mem_util": "7.6", #单位:% | 类型:double | 说明:mem_used_size / mem_total "swap_cached": "2632", #单位:kB | 类型:int | 说明:交换内存被缓存的大小 "swap_free": "4151180", #单位:kB | 类型:int | 说明:当前未使用的交换空间数 "swap_total": "4192252", #单位:kB | 类型:int | 说明:可用的交换空间总数 "swap_util": "3", #单位:% | 类型:double | 说明:交换空间占用率 "writeback": "0", #单位:kB | 类型:int | 说明:正在写回磁盘的内存 "pgfault": "4123", #单位: | 类型:int | 说明:本周期page fault数 "pgin": "0", #单位: | 类型:int | 说明:本周期page in数 "pgmajfault": "0", #单位: | 类型:int | 说明:本周期major page fault数 "pgout": "0" #单位: | 类型:int | 说明:本周期page out数 }}
net
功能说明
采集网络IO信息,默认采集的目标网卡与本机ifconfig命令显示的网卡列表一致,仅采集ifconfig显示UP状态的网卡。
原始数据来源:/proc/net/dev
参数配置
通过_filter_nic_name配置,根据nic_name指标,对消息进行筛选,决定最终生成的哪些网卡的消息。
_filter_nic_name的配置比较特殊,只有当nic_name值以配置关键字串开头时,才会保留这条消息,而其他插件的消息筛选机制为包含即保留。如某台机器ifconfig列出的网卡名有eth0、eth1、veth1、lo。如果配置“_filter_nic_name:eth”,则剔除veth1和lo的消息,保留eth0、eth1的消息。
{ "plugin_id": "net", "metric": { "node": "host-10-33-0-188", #单位: | 类型:string | 说明:主机名,消息来源标识 "timestamp": 1482161028000, #单位: | 类型:long long | 说明:UTC时间戳 "collps": "0.0000", #单位:次/s | 类型:double | 说明:检测到发送冲突频率 "nic_name": "enp2s0f0", #单位: | 类型:string | 说明:网卡名,与ifconfig列表一致 "rxcmpps": "0.0000", #单位:包/s | 类型:double | 说明:接收压缩报速率 "rxdropps": "0.0000", #单位:包/s | 类型:double | 说明:接收丢报速率 "rxdroprate": "0.0", #单位:% | 类型:double | 说明:接收丢报率 "rxerrps": "0.0000", #单位:次/s | 类型:double | 说明:接收错误频率 "rxfifops": "0.0000", #单位:次/s | 类型:double | 说明:接收FIFO缓存错误频率 "rxframps": "0.0000", #单位:次/s | 类型:double | 说明:接收帧错误频率 "rxkbps": "0.0000", #单位:kB/s | 类型:double | 说明:接收的kbps数,单位为KByte/s, 转换为kbps需乘以8 "rxmcstps": "0.0000", #单位:次/s | 类型:double | 说明:接收多播频率 "rxpckps": "0.0000", #单位:包/s | 类型:double | 说明:接收报文速率 "rxutil": "0.0", #单位:% | 类型:double | 说明:接收带宽利用率 "txcarrps": "0.0000", #单位:次/s | 类型:double | 说明:传输介质故障频率 "txcmpps": "0.0000", #单位:包/s | 类型:double | 说明:发送压缩报速率 "txdropps": "0.0000", #单位:包/s | 类型:double | 说明:发送丢报数速率 "txdroprate": "0.0", #单位:% | 类型:double | 说明:发送丢报率 "txerrps": "0.0000", #单位:次/s | 类型:double | 说明:发送错频率 "txfifops": "0.0000", #单位:次/s | 类型:double | 说明:发送FIFO缓存错误频率 "txkbps": "0.0000", #单位:kB/s | 类型:double | 说明:发送的kbps数,单位为KByte/s, 转换为kbps需乘以8 "txpckps": "0.0000", #单位:包/s | 类型:double | 说明:发送报文速率 "txutil": "0.0", #单位:% | 类型:double | 说明:发送带宽利用率 "running": "1" #单位:% | 类型:double | 说明:网卡运行状态监测,如果为1表示ifconfig该网卡状态RUNNING,如果为-1表示ifconfig该网卡状态非RUNNING }
osinfo
功能说明
osinfo插件采集操作系统相关信息。
使用该插件要求/etc/nsswitch.conf文件有读权限,且其中hosts的解释项不能使用dns,即cat /etc/nsswitch.conf | grep "^hosts:" | grep dns命令返回应为空。"running"/"sleeping"/"stopped"/"zombie",全部进程数 total与top命令输出的结果一致;最大文件打开数max_opens、最大进程数max_procs与ulimit -u、ulimit -n命令输出一致;本机当前打开的句柄数open_files与lsof|wc –l命令输出一致。open_files的获取每180秒只采集并上报一次,对于那些没有采集open_files的周期,该指标不出现在消息中。
原始数据来源:/proc/stat
参数配置
不需配置。
消息样例及含义说明
{ "plugin_id": "osinfo", "metric": { "node": " host-10-33-0-188", #单位: | 类型:string | 说明:主机名,消息来源标识 "timestamp": 1482161028000, #单位: | 类型:long | 说明:UTC时间戳 "ctx": "245480", #单位: | 类型:int | 说明:本周期上下文切换次数 "procs": "1032", #单位: | 类型:int | 说明:采集周期内新增的任务总数 "blocked": "0", #单位: | 类型:int | 说明:当前被阻塞的任务数 "running": "0", #单位: | 类型:int | 说明:当前R状态的进程数(top: running) "sleeping": "882", #单位: | 类型:int | 说明:当前D状态的进程数(top: sleeping) "stopped": "1", #单位: | 类型:int | 说明:当前T状态的进程数(top: stopped) "zombie": "1" #单位: | 类型:int | 说明:当前Z状态的进程数(top: zombie) "procs_total": "884", #单位: | 类型:int | 说明:当前总进程数(top: Tasks) "max_opens": "1024", #单位: | 类型:int | 说明:执行ulimit -n结果 "max_procs": "2059087", #单位: | 类型:int | 说明:执行ulimit -u结果 "open_files": "2059087", #单位: | 类型:int | 说明:本机当前打开的句柄数 } }
snmp
功能说明
周期采集机器上TCP及UDP连接相关数据,每次采集发送一条消息。
原始数据来自:/proc/net/snmp
参数配置
不需配置。
消息样例及含义说明
{ "plugin_id": "snmp", "metric": { "node": "host-10-33-0-188", #单位: | 类型:string | 说明:主机名,消息来源标识 "timestamp": 1482161028000, #单位: | 类型:long long | 说明:UTC时间戳 "tcp_curr_estab": "19", #单位: | 类型: double | 说明:当前处于ESTABLISHED/CLOSE_WAIT状态的TCP连接数 "tcp_in_segs_ps": "327.6371", #单位:包/s| 类型:double | 说明:tcp收包速率 "tcp_out_segs_ps": "672.2037", #单位:包/s| 类型:double | 说明:tcp发包速率 "tcp_retrans_rate_ps": "15.0", #单位:% | 类型: double | 说明:tcp重传率 "udp_in_datagrams_ps": "0.0000", #单位:包/s| 类型:double | 说明:udp收包速率 "udp_out_datagrams_ps": "0.0000", #单位:包/s| 类型:double | 说明:udp发包速率 "active_conn": "0.0000", #单位:次/s| 类型:double | 说明:单位时间tcp连接主动连接发起次数 "passive_conn": "0.0000" #单位:次/s| 类型:double | 说明:单位时间tcp被动建立连接次数 } }
gpu
功能说明
采集GPU信息,每次采集都为每个GPU,以及总GPU维度分别生成消息,并上报给HCW。
执行nvidia-smi命令,分别获取每个GPU的GPU-Util、Bus-Id、mem_used、mem_total、mem_util信息,并整合总GPU信息上报给HCW。
参数配置
不需要配置。
消息样例及含义说明
{ "plugin_id":"gpu", #单位: | 类型:string | 说明:插件名 "metric":{ "node": "bj-xen-pdc-241-202", #单位: | 类型:string | 说明:主机名,消息来源标识 "timestamp": "1518078026000", #单位: | 类型:string | 说明:字符类型时间戳 "_id":"GPU-0", #单位: | 类型:string | 说明:GPU编号,总GPU编号为GPU-ALL "_name":"Tesla P100-PCIE", #单位: | 类型:string | 说明:GPU型号 "bus_id":"0000:04:00.0", #单位: | 类型:string | 说明:GPU的Bus-Id "util":"61", #单位: | 类型:string | 说明:GPU使用率 "mem_used":"1385", #单位: | 类型:string | 说明:GPU已使用显存 "mem_total":"16276", #单位: | 类型:string | 说明:GPU显存总量 "mem_util":"8.50" #单位: | 类型:string | 说明:GPU显存使用率 } }
verify_os
功能说明
检测主机名是否有变更,并将检测结果返回HCW。
插件在HCW_Agent启动时,会将主机名存入HCW_Agent/temp/hostname.cache中,插件每个采集周期,会获取当前的主机名并与HCW_Agent/temp/hostname.cache中的主机名对比,若一致,返回0;不一致,返回1。
参数配置
不需要配置。
消息样例及含义说明
{ "plugin_id":"verify_os", #单位: | 类型:string | 说明:插件名 "metric":{ "node": " host-10-33-0-188", #单位: | 类型:string | 说明:主机名,消息来源标识 "timestamp": "1518078026000", #单位: | 类型:string | 说明:字符类型时间戳 "hostname":"1", #单位: | 类型:string | 说明:主机名对比结果,相同为0,不同为1 } }