常用监控插件说明
cpu
插件类型
OS
功能说明
统计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
插件类型
OS
功能说明
统计磁盘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
插件类型
OS
功能说明
统计主机文件系统使用情况,采集数据内容和df -lh命令一致。
- 当主机上的分区名称为/dev或/dev/shm时,无法采集该分区的数据。
- 当主机上的分区名称包含/media/或/mnt/时,无法采集该分区的数据
参数配置
配置样例:“_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
插件类型
OS
功能说明
采集全系统有关的内存信息。
原始数据来源:/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
插件类型
OS
功能说明
采集网络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
插件类型
OS
功能说明
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": "2059087", #单位: | 类型:int | 说明:执行ulimit -n结果 "max_procs": "1024", #单位: | 类型:int | 说明:执行ulimit -u结果 "open_files": "2059087", #单位: | 类型:int | 说明:本机当前打开的句柄数 } }
snmp
插件类型
OS
功能说明
周期采集机器上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
插件类型
OS
功能说明
采集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
插件类型
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 } }
tomcat
插件类型
APP
功能说明
针对机器上运行的多个Tomcat进程,周期采集其运行数据。
插件运行后,将首先在“agent框架lib/tomcat/”路径下生成TomcatJmx_fat.jar,后续每次执行时,都会通过该jar包使用JMX接口采集tomcat进程相关信息。每次采集结束,每个tomcat进程分别生成一条消息,http_port可作为区分标志。
参数配置
用户在使用该插件进行采集之前,需要先手动修改tomcat安装目录下bin/catalina.sh,在文件中添加以下字段以支持JMX采集功能:
CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=58880 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
用户还需要为插件配置当前本机运行中的Tomcat对应的安装路径,可配置单个或多个,以”,”做分隔符。
tomcat_install_path #可以识别绝对路径以及环境变量。
如果采用环境变量来传递Tomcat安装路径,要求在~/.bashrc中添加export命令进行配置,如下图:
在配置生效后,可通过source ~/.bashrc或重启机器,再启动agent进行数据采集。
消息样例及含义说明
{ "plugin_id":"tomcat", "metric":{ "node": " host-10-33-0-188", #单位: | 类型:string | 说明:主机名,消息来源标识 "timestamp": 1482161028000, #单位: | 类型:long long | 说明:UTC时间戳 "request_count":"0", #单位: | 类型:double | 说明:采集间隔内新增请求数 "request_errors_count":"0", #单位: | 类型:double | 说明:采集间隔内新增错误请求数 "thread_total":"47", #单位: | 类型:double | 说明:累计线程数 "http_port_id":"8080", #单位: | 类型:double | 说明:tomcat对外提供服务的端口号 } }
tcp
插件类型
APP
功能说明
检测本机或者指定主机端口是否可连通,并将结果返回HCW。
参数配置
配置样例:
_filter_ip_id:xxx.0.0.1 # 检测IP,检测本机指定端口是否可达,配置值为127.0.0.1,检测指定主机端口是否可达,配置值为指定主机IP;当检测本机端口是否可达时,会检测127.0.0.1+端口和本机公网IP+端口是否可达,若有一项可达则表明本机端口可达。
_filter_port_id:80 # 检测端口。
TCP为多实例插件,即TCP插件可以配置多组参数,但需要每组参数均不相同。
消息样例及含义说明
{ "plugin_id":"tcp", #单位: | 类型:string | 说明:插件名 "metric":[{ "node": " host-10-33-0-188", #单位: | 类型:string | 说明:主机名,消息来源标识 "timestamp": "1518078026000", #单位: | 类型:string | 说明:字符类型时间戳 "port_status":"1", #单位: | 类型:string | 说明:端口状态,端口可达值为1,不可达值为0 "ip_id":"xxx.0.0.1", #单位: | 类型:string | 说明:检测IP "port_id":"80", #单位: | 类型:string | 说明:检测端口 }] }
redis
插件类型
APP
功能说明
检测redis数据库信息,并将检测结果上报至HCW。
参数配置
配置样例:
_filter_port_id:6379 # redis端口
password:123456,123457 # redis密码,可配置多个密码。redis插件会先从/opt/zabbix/bin/redis_stats.sh中获取redis密码,若获取或校验失败,会去读取配置参数中的password中的密码列表。
redis为多实例插件,即redis插件可以配置多组参数,但需要每组参数均不相同。
消息样例及含义说明
{ "plugin_id": "redis", #单位: | 类型:string | 说明:插件名 "metric": [ { "node": " host-10-22-0-170", #单位: | 类型:string | 说明:主机名,消息来源标识 "timestamp": "1518078026000", #单位: | 类型:string | 说明:字符类型时间戳 "port_id": "80", #单位: | 类型:string | 说明:redis端口 "port_status": "1", #单位: | 类型:string | 说明:端口状态,端口可达值为1,不可达值为0 "cpuload": "10", #单位: | 类型:string | 说明:redis进程CPU占用率 "used_memory": "2403776 ", #单位: | 类型:string | 说明:Redis分配器分配的内存总量 "mem_fragmentation_ratio": "5.60", #单位: | 类型:string | 说明:used_memory_rss和used_memory之间的比率 "used_memory_peak": "4352360", #单位: | 类型:string | 说明:Redis内存消耗峰值 "keyspace_hits": "47343", #单位: | 类型:string | 说明:命中key的次数 "keyspace_misses": "1437", #单位: | 类型:string | 说明:未命中key的次数 "connected_clients": "1", #单位: | 类型:string | 说明:连接的客户端数量 "evicted_keys": "0", #单位: | 类型:string | 说明:运行以来删除过的key的数量 "blocked_clients": "0", #单位: | 类型:string | 说明:正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量 "rejected_connections": "0", #单位: | 类型:string | 说明:因为最大客户端数量限制而被拒绝的连接请求数量 "used_memory_rss": "13471744", #单位: | 类型:string | 说明:Redis分配的内存总量(包括内存碎片) "loading": "0", #单位: | 类型:string | 说明:是否正在载入持久化文件,0为否,1为是 "rdb_bgsave_in_progress": "0", #单位: | 类型:string | 说明:后台进行中的 save 操作的数量 "rdb_last_bgsave_status": "1", #单位: | 类型:string | 说明:最后一次创建RDB文件的结果,0为失败,1为成功 "rdb_last_bgsave_time_sec": "1", #单位: | 类型:string | 说明:最后一次创建RDB文件耗费的秒数 "instantaneous_ops_per_sec": "0", #单位: | 类型:string | 说明:服务器每秒中执行的命令数量 "expired_keys": "1281", #单位: | 类型:string | 说明:过期而被自动删除的数据库键数量 "latest_fork_usec": "0", #单位: | 类型:string | 说明:最近一次fork()操作耗费的时间 "client_biggest_input_buf": "0", #单位: | 类型:string | 说明:当前连接的客户端中,最大的输入缓存 "client_longest_output_list": "0", #单位: | 类型:string | 说明:当前的客户端连接中,最长的输出列表 "keyspace_hits_ratio": "80" #单位: | 类型:string | 说明:keyspace_hits与keyspace_hits + keyspace_misses的比率 } ] }
file_regexp
插件类型
APP
功能说明
逐行读取指定路径文件,将内容按分界符分解为指标名称和指标值,并按照过滤条件过滤,将过滤后的指标数据上报给HCW。
参数配置
配置样例:
path:/tmp/sds_zabbix.result # 采集文件路径。
delimiter # 分隔符。
_filter_key_word:.*_cassandra # 指标值关键字, 支持正则, 为空则直接上报所有指标信息,非空则只上报匹配关键字的指标数据。
_filter_value_word:ok* # 指标值匹配关键字,支持正则,为空则不进行二次匹配,直接上报指标数据,非空则 匹配成功为1,匹配失败为0。
file_regexp为多实例插件,即file_regexp插件可以配置多组参数,但需要每组参数均不相同。
消息样例及含义说明
{ "plugin_id":"file_regexp", #单位: | 类型:string | 说明:插件名 "metric":[{ "node": " host-10-22-0-170", #单位: | 类型:string | 说明:主机名,消息来源标识 "timestamp": "1518078026000", #单位: | 类型:string | 说明:字符类型时间戳 "name_id":"zj23_cassandra", #单位: | 类型:string | 说明:分隔后的指标名称(标签数据) "value_id":"ok", #单位: | 类型:string | 说明:分割后的指标值(标签数据) "value":"1", #单位: | 类型:string | 说明:指标上报值 }] }
scriptcollet
插件类型
APP
功能说明
执行脚本命令或者读取指定文件内容,并将结果上报给HCW。
参数配置
配置样例:
type:script # 采集方式,可选填 script(采集脚本)或者 path(采集文件)。
ex_path:/opt/huawei/monitor/disk.sh # 脚本执行路径或者采集文件路径。
_filter_key_id:/opt/huawei/monitor/disk.sh # 多实例插件的key,此参数是为了支持多实例插件上报使用,只需要保证多个实例中该值均不同,建议与ex_path值保持一致。
scriptcollect为多实例插件,即scriptcollect插件可以配置多组参数,但需要每组参数均不相同。
消息样例及含义说明
{ "plugin_id":"scriptcollect", #单位: | 类型:string | 说明:插件名 "metric":[{ "node": " host-10-22-0-170", #单位: | 类型:string | 说明:主机名,消息来源标识 "timestamp": "1518078026000", #单位: | 类型:string | 说明:字符类型时间戳 "key_id":"/opt/huawei/monitor/disk.sh", #单位: | 类型:string | 说明:对应模板配置的key值 "collect_value":"80", #单位: | 类型:string | 说明:执行脚本命令或者读取指定文件内容上报的值 }] }
file_check
插件类型
APP
功能说明
查看文件是否存在以及查看文件的大小,以Byte为单位,将结果上报到HCW。
参数配置
配置样例:
path:/tmp/error_*.log #路径为绝对路径,支持通配符。
消息样例及含义说明
{ "plugin_id":"file_check", #单位: | 类型:string | 说明:插件名 "metric":[{ "node": " host-10-22-0-170", #单位: | 类型:string | 说明:主机名,消息来源标识 "timestamp": "1518078026000", #单位: | 类型:string | 说明:字符类型时间戳 "exists":"1", #单位: | 类型:string | 说明:文件是否存在,1表示存在,0表示不存在 "size":"80", #单位:Byte | 类型:string | 说明:表示文件大小 }] }
alarmmonitor
插件类型
ALARM
功能说明
周期性执行脚本,将指定文件中的业务告警数据,上报给HCW监控系统。
插件按行上报业务文件中的监控告警数据,告警上报的数据会根据id、application_id、service_id、level和source_tag信息生成一个唯一标识,该标识为告警的指纹信息,监控服务会依据指纹信息进行告警的判重,同时也会作为告警清除的标识。
参数配置
collect_file_path #为插件配置业务文件采集路径,如${ALARM_HOME}/*.dat,/opt/huawei/alarm/hispace/*.dat
该配置为绝对路径,可以配置变量,并且能够把识别到的环境变量展开,可以配置通配符(*.),并将识别到的路径展开,可以配置多个路径,按逗号分隔。如果使用了环境变量,要求在~/.bashrc中添加export命令进行配置。如export ALARM_HOME=/opt/huawei/alarm,在配置生效后,可通过source ~/.bashrc或重启机器,再启动agent进行数据采集。
数据模型定义
业务写入告警文件时,为Json格式字符串。具体格式如下表,其中字段长度等限制建议遵循表格规定,否则可能会导致未定义行为,告警可能失败。
业务文件中的数据需要按照监控系统的要求定义,一个json体为一条数据,内容需要写在一行中,且文件的json体中间或者结尾不能有空行,且字段长度等限制建议遵循表格规定,才能准确上报到监控系统中并生成告警,数据定义要求如表1所示。
字段ID |
字段名 |
必填 |
类型 |
范围 |
备注 |
---|---|---|---|---|---|
id |
告警定义ID |
是 |
String |
1~128 |
告警ID,由数字、字母、下划线组成。 |
name |
告警名称 |
是 |
String |
1~128 |
固定格式,能明确表示告警的类型等信息。 |
level |
告警级别 |
是 |
String |
枚举 |
致命critical、严重major、一般minor、提示notice。 不区分大小写。 |
site |
站点 |
是 |
String |
枚举 |
中国区站点为cn_product_cbu,(采集不校验站点,但告警会校验,填错后告警页面不会展示对应告警)。 |
tenant_id |
租户ID |
是 |
String |
动态枚举 |
用于标识告警通知发给哪个租户的运维人员,可在“租户管理 > 我的租户”页面查看。 |
application_id |
产品ID |
是 |
String |
动态枚举 |
用于标识告警通知发给哪个产品的运维人员,可在“租户管理 > 我的租户”页面查看。 |
service_id |
服务ID |
是 |
String |
动态枚举 |
用于标识告警通知发给哪个服务的运维人员,可在“租户管理 > 我的租户”页面查看。 |
env_id |
环境ID |
否 |
String |
NA |
IaC 3.0环境ID,可在部署服务的“环境管理 > 服务环境管理 > 环境详情”页面查看。 |
source_tag |
告警来源 |
是 |
String |
1~255 |
唯一标识告警产生来源,比如(主机名|容器名|应用名|进程名|数据库实例名)等。 |
op_type |
告警操作类型 |
是 |
String |
枚举 |
产生告警firing、清除告警resolved。 |
details |
告警详情 |
是 |
String |
0~2048 |
建议格式如下(不强制约束):短信内容不包含此字段。 告警详情: 告警原因: 修复建议: |
clear_type |
清除类型 |
是 |
String |
枚举 |
固定写为ADAC,无具体逻辑含义。 |
start_timestamp |
告警开始时间 |
是 |
Long |
NA |
中国区用本地时间上报。 |
end_timestamp |
告警结束时间 |
是 |
Long |
NA |
中国区用本地时间上报。产生告警时填0,恢复时才填写实际的值。 |
receive |
告警接收人 |
否 |
String |
0~1024 |
告警接收人推荐使用告警的值班配置。 |
{"id":"251ea857-e38e","name":"report_workload_install_record_failed","level":"major","site":"cn_product_cbu","tenant_id":"T006","application_id":"com.huawei.wisecloudservices","service_id":"com.huawei.wiseclo udesourceservice","source_tag":"host-10-22-0-36","op_type":"firing","details":"update install record failed","clear_type":"ADAC","start_timestamp":1700648960000,"end_timestamp":0,"receive":"xx8000000"}
logalarm
插件类型
ALARM
功能说明
监控指定日志文件,配置日志匹配关键字,并按照配置参数的要求,生成告警并上报到HCW。
参数配置
collect_file_path #定义日志采集配置,按照以下字段,使用json格式数据单行填入。
字段ID |
字段名 |
必填 |
类型 |
范围 |
备注 |
---|---|---|---|---|---|
id |
告警定义ID |
是 |
String |
1~128 |
告警ID,由数字、字母、下划线组成。 |
alarm_name |
告警名称 |
是 |
String |
1~128 |
支持配置变量{{$log_info}},上报告警时会替换成匹配到的最后一条ERROR日志;支持配置变量{{$all_matching_log}},上报告警时会替换成匹配到的所有ERROR日志,当alarm_name配置了变量{{$all_matching_log}}时,若产生告警且后续周期又匹配到了告警,新匹配到的告警会在原告警ID的基础上,产生一个新的告警,并上报到监控系统,告警清除时会清除当前告警和后续产生的告警;当alarm_name配置为空时,会读取文件中的所有内容,逐行检测并上报告警。 |
alarm_level |
告警级别 |
是 |
String |
枚举 |
致命critical、严重major、一般minor、提示notice。 不区分大小写。 |
key_word |
日志匹配关键字 |
是 |
String |
NA |
日志匹配关键字,支持正则表达式。 |
match_file |
日志文件绝对路径 |
是 |
String |
NA |
支持变量、通配符,配置多个地址时需要使用逗号分隔。 |
matches |
最大匹配次数 |
是 |
long |
NA |
- |
number_of_match_period |
匹配周期数 |
是 |
long |
NA |
与matches和key_word组合使用。 |
number_of_nodata_period |
无数据上报的周期数 |
否 |
long |
NA |
单独使用,与matches和key_word无关联。 |
description |
告警详情 |
是 |
String |
NA |
进一步丰富告警信息。 |
参数配置样例
[{"id":"alert20240627","alarm_name":"test20240627","alarm_level":"major","key_word":"usr/bin/sudo","match_file":"/var/log/messages","matches":2,"number_of_match_period":"30","number_of_nodata_period":"10","description":"test20240627"}] # 30个周期内匹配2次以上,则产生告警;30个周期内匹配2次或者2次以下,则清除告警。 # 10个周期内有数据则产生告警,10个周期内无数据上报则清除告警。