zabbix5.0.4 配置自动发现Actuator 1.x监控接口
目录
1、环境准备
2、导入模板
2.1创建模板
3、zabbix客户端设置
4、代码
5、监控效果图
1、环境准备
1、centos7.5
2、zabbix 5.0.4
3、python 2.7 + requests模块
4、shell脚本
2、导入模板
模板下载:https://download.csdn.net/download/Hu_wen/19541753
该模板适用于 zabbix5.0以上的版本,若低于5.0请根据以下操作创建模板
2.1创建模板
1. 新建模板-自定义命名为:Template Actuator 1 by huwj
2. 新建自动发现规则
自定义名称为:获取Actuator接口地址
键值为: check.api.url
应用集:app_jvm
更新间隔:30m
3. 触发器根据现场情况,自行配置

3. 新建监控项
监控项名称:{#API_NAME}-JVM守护线程数 键值:check.api1.metrics[{#API_URL},threads.daemon]
监控项名称:{#API_NAME}-JVM峰值线程数 键值:check.api1.metrics[{#API_URL},threads.peak]
监控项名称:{#API_NAME}-健康状态 键值:check.api1.health[{#API_HURL}] 设置进程-替换 UP 对应 1 ; DOWN 对应 2
监控项名称:{#API_NAME}-处理器核数 键值:check.api1.metrics[{#API_URL},processors]
监控项名称:{#API_NAME}-实例运行时间 键值:check.api1.metrics[{#API_URL},instance.uptime] 单位 s
监控项名称:{#API_NAME}-应用堆初始内存 键值:check.api1.metrics[{#API_URL},heap.init] 单位 B ;设置进程-自定义倍数 1024
监控项名称:{#API_NAME}-应用平均负载 键值:check.api1.metrics[{#API_URL},systemload.average]
监控项名称:{#API_NAME}-应用当前空闲内存 键值:check.api1.metrics[{#API_URL},mem.free] 单位 B ; 设置进程-自定义倍数 1024
监控项名称:{#API_NAME}-应用总内存 键值:check.api1.metrics[{#API_URL},mem] 单位 B ; 设置进程-自定义倍数 1024
监控项名称:{#API_NAME}-当前可用堆内存 键值:check.api1.metrics[{#API_URL},heap.committed] 单位 B ; 设置进程-自定义倍数 1024
监控项名称:{#API_NAME}-当前已用堆内存 键值:check.api1.metrics[{#API_URL},heap.used] 单位 B ; 设置进程-自定义倍数 1024

3、zabbix客户端设置
1、将配置文件 check_status.conf 文件上传至 /etc/zabbix/zabbix-agent.d/ 目录下
2、将脚本 actuator_1.py actuator_h_1.py find_actuator_api.sh 上传至 /opt/scripts/java/ 目录下
3、mysql 数据库新建表
CREATE TABLE `T_checkUrl` (`ID` int(4) NOT NULL AUTO_INCREMENT,`WEB_NAME` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL, --名称`URL` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL, --参数请求地址`H_URL` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL, --健康状态访问地址`del` int(4) DEFAULT '0', --是否删除状态 0 否 1 是`type` int(4) DEFAULT '1', --地址类型,0 web 1 apiPRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
4、重启zabbix-agent客户端
注:后续要监控的地址,只需往该表插入数据即可。
4、代码
find_actuator_api.sh
该脚本需修改对应的数据库帐号、密码、IP等信息
#!/bin/bash
# license:GPL
# date:2021.01.07
# author by huwjMYSQL_USER='root'
MYSQL_PWD='123456'
MYSQL_HOST='localhost'
MYSQL_PORT='3306'
MYSQL_DB='zabbix'
MYSQL_CONN="/usr/bin/mysql -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT} ${MYSQL_DB}"
JOB_NAME="SELECT WEB_NAME,URL,H_URL FROM T_checkUrl WHERE del=0 and type=1;"
result=`${MYSQL_CONN} -e "$JOB_NAME" 2>/dev/null|awk 'NR!=1 { print }'`
n=0
list=()
for x in $resultdolist[$n]=\"$x\"n=`expr $n + 1`done
length=${#list[@]}
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i<$length;i++))
doprintf '\n\t\t{'printf "\"{#API_NAME}\":${list[$i]}"printf ','printf "\"{#API_URL}\":${list[$i+1]}"printf ','printf "\"{#API_HURL}\":${list[$i+2]}"printf "}"if [ $i -lt $[$length-3] ];thenprintf ','fii=$i+2
done
printf "\n\t]\n"
printf "}\n"
actuator_1.py
#coding=utf-8
#!/usr/bin/env python
# Author by huwj create time: 2021-02-24
import requests
import json
import sysdef send_to_api(pushURL, modul):try:pushURL = pushURL + modulr = requests.get(pushURL, timeout=30)response = json.loads(r.text)status = response[modul]print(status)except Exception,e:print('1500')if __name__ == "__main__":send_to_api(sys.argv[1],sys.argv[2])
actuator_h_1.py
#coding=utf-8
#!/usr/bin/env python
# Author by huwj create time: 2021-02-24
import requests
import json
import sysdef send_to_api(pushURL):try:r = requests.get(pushURL, timeout=30)response = json.loads(r.text)status = response["status"]print(status)except Exception,e:print("DOWN")if __name__ == "__main__":send_to_api(sys.argv[1])
5、监控效果图


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
