更新时间:2024-12-17 GMT+08:00
分享

常用监控插件说明

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对应的消息。

图1 示例1

消息样例及含义说明

{
    "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,对应的消息将被剔除。

图2 示例2

消息样例及含义说明

{
         "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所示。

表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个周期内无数据上报则清除告警。

相关文档