
# 常用监控插件说明
#### 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   
![](https://support.huaweicloud.com/usermanual-wiseeye/zh-cn_image_0000002143150814.png)
**消息样例及含义说明**
```
{
    "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命令一致。
![](https://support.huaweicloud.com/usermanual-wiseeye/public_sys-resources/note_3.0-zh-cn.png)
- 当主机上的分区名称为/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   
![](https://support.huaweicloud.com/usermanual-wiseeye/zh-cn_image_0000002178508217.png)
**消息样例及含义说明**
```
{
         "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对应的安装路径，可配置单个或多个，以","做分隔符。
![](https://support.huaweicloud.com/usermanual-wiseeye/zh-cn_image_0000002143308830.png)![](https://support.huaweicloud.com/usermanual-wiseeye/zh-cn_image_0000002178389865.png)
tomcat_install_path #可以识别绝对路径以及环境变量。
如果采用环境变量来传递Tomcat安装路径，要求在\~/.bashrc中添加export命令进行配置，如下图：
![](https://support.huaweicloud.com/usermanual-wiseeye/zh-cn_image_0000002143308834.png)
在配置生效后，可通过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，同时需要配置本机的hostname和ip映射到/etc/hosts下，会检测配置的host映射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/monitor/disk.sh # 脚本执行路径或者采集文件路径。
_filter_key_id：/opt/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/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/alarm/hispace/\*.dat
该配置为绝对路径，可以配置变量，并且能够把识别到的环境变量展开，可以配置通配符（\*.），并将识别到的路径展开，可以配置多个路径，按逗号分隔。如果使用了环境变量，要求在\~/.bashrc中添加export命令进行配置。如export ALARM_HOME=/opt/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 | 枚举      | AppStage站点（采集不校验站点，但告警会校验，填错后告警页面不会展示对应告警）。                                                                                                             |
| 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.wisecloudservices","service_id":"com.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     | 设置的次数必须大于0。                                                                                                                                                                                                                                                 |
| number_of_match_period  | 匹配周期数     | 是      | long   | NA     | 与matches和key_word组合使用，设置的周期数必须大于0。                                                                                                                                                                                                                          |
| number_of_nodata_period | 无数据上报的周期数 | 否      | long   | NA     | 单独使用，与matches和key_word无关联，设置的周期数必须大于0。                                                                                                                                                                                                                      |
| 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个周期内无数据上报则清除告警。
```
