zabbix自定义监控项
# 1. 检测网络丢包
监控阿里云---IDC之间专线网络
在zabbix安装路径下,编写脚本:
[jyapp@iz2ze2xim85w29e3cr1m78z zabbix]$ cat pingloss_ip.sh
#!/bin/bash
iplist="/etc/zabbix/pingloss.list"
line=`cat $iplist | grep -v "^$" | wc -l`
echo -e "{"
echo -e "\t\"data\":["
for ((num=1;num<=$line-1;num++))
do
agentip=`cat $iplist | grep -v "^$" | sed -n "$num"p | awk '{printf \$1}'`
agentdescription=`cat $iplist | grep -v "^$" | sed -n "$num"p | awk '{printf \$2}'`
echo -e "\t\t{"
echo -e "\t\t\t\"{#CHECKIP}\":\"$agentip\",\"{#DESCRIPTION}\":\"$agentdescription\"},"
done
agentip=`cat $iplist | grep -v "^$" | sed -n "$line"p | awk '{printf \$1}'`
agentdescription=`cat $iplist | grep -v "^$" | sed -n "$line"p | awk '{printf \$2}'`
echo -e "\t\t{"
echo -e "\t\t\t\"{#CHECKIP}\":\"$agentip\",\"{#DESCRIPTION}\":\"$agentdescription\"}]}"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
创建地址列表文件
[jyapp@iz2ze2xim85w29e3cr1m78z zabbix]$ cat pingloss.list
10.50.200.254 10.50.200.254-DMZ生产-ping-丢包
10.50.208.254 10.50.208.254-DMZ生产-ping-丢包
10.50.190.254 10.50.190.254-业务生产地址段#1-ping-丢包
1
2
3
4
2
3
4
创建zabbix自定义key和UserParameter参数
[jyapp@iz2ze2xim85w29e3cr1m78z zabbix_agentd.d]$ cat userparameter_pingloss.conf
UserParameter=pingloss_discovery,/bin/bash /etc/zabbix/pingloss_ip.sh
1
2
2
# 2. 监控服务状态
背景:通过post方式curl服务地址进行监控,由于是函数计算,需要按时间段curl,周一至周日,7:00-23:00
在zabbix安装路径下,编写脚本:
[root@iz2ze2xim85w29e3cr1m78z zabbix]# cat curl_HKFC.sh
#!/bin/bash
req=`curl -X POST \
http://xxxx.com/carmodel/api/carInfo/queryBaseCarInfoList \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'Postman-Token: a583-64cd28039b64' \
-d '{"frameNo": "LGBH12E00FY3"}' -s`
respcode="\"respCode\":\"00000\""
if [[ $req =~ $respcode ]]
then
echo 0
else
echo 1
fi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
创建zabbix自定义key和UserParameter参数
[root@iz2ze2xim85w29e3cr1m78z zabbix_agentd.d]# cat userparameter_curlHKFC.conf
UserParameter=curl_HKFC,/bin/bash /etc/zabbix/curl_HKFC.sh
1
2
2
在zabbix页面上操作
- 1)添加该主机
- 2)在该zabbix_agent主机下创建监控项,键值为curl_HKFC,时间间隔60s,周一至周日,7:00-23:00
- 3)在该zabbix_agent主机下创建触发器,表达式为{10.150.191.114:curl_HKFC.last()}<>0
- 4)可在 最新数据 中查看图形
# 3. 监控vpn是否掉线
背景:微服务通过vpn拨号到第三方,vpn本身不太稳定,启动时有5个进程,掉线时只有2个进程,使用监控进程方式不太好,采用ping第三方内网地址方式。
在zabbix安装路径下,编写脚本:
[jyapp@iZ2zeesrytvyn9ddan6v5jZ scripts]$ cat check_vpn.sh
#!/bin/bash
time=$(date +%Y%m%d-%H%M)
password=uE3^oA5*hY5^cS5^
for ((i=1;i<=3;i++))
do
ping -c 5 zxpt.baihangcredit.com &>/dev/null
[ $? -ne 0 ] && let FailCount+=1;
done
if [ -z $FailCount ];
then
FailCount=0
echo "0"
echo "$time 检测vpn正常" >> /usr/local/zabbix_agent/scripts/check_vpn.log
fi
if [ $FailCount -eq 3 ];
then
echo "1"
easyconn login -d orgv-t.baihangcredit.com:4433 -u xiangqianjinfu -p${password} &>/dev/null
if [ $? -eq 0 ];
then
# echo "0"
echo "$time 检测vpn掉线,重启成功" >> /usr/local/zabbix_agent/scripts/check_vpn.log
else
# echo "1"
echo "$time 检测vpn掉线,重启失败" >> /usr/local/zabbix_agent/scripts/check_vpn.log
fi
fi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
创建zabbix自定义key和UserParameter参数
UserParameter=check_vpn,/bin/bash /usr/local/zabbix_agent/scripts/check_vpn.sh
1
在zabbix页面上操作
- 1)添加该主机
- 2)在该zabbix_agent主机下创建监控项,键值为check_vpn
- 3)在该zabbix_agent主机下创建触发器,表达式为{10.150.191.192_cspbaihang:check_vpn.last()}<>0
- 4)可在 最新数据 中查看图形
# 4. 远程增量拉取ftp文件,并推送到远程服务器
#!/bin/bash
#用途:远程增量拉取ftp服务器上的数据报送日志文件,使用rsync推送到大数据服务器
#远程ftp主机信息
HOST=172.23.0.21
PORT=990
USER=xxx
PASSWORD=xxx
lcd=/home/baihang_log
rcd=/creditdatafile/log/interface
#脚本执行时间
exec_time=`date +%Y-%m-%d_%H:%M:%S`
echo -e "\n\033[31m脚本执行时间为: ${exec_time},发送文件如下:\033[0m" >> get_file.log
#登录ftp服务器增量拉取文件
lftp -u ${USER},${PASSWORD} sftp://${HOST}:${PORT} <<EOF
mirror -e -n -v $rcd $lcd
bye
EOF
#rsync使用ssh协议增量推送到大数据服务器(已配置免密登录)
rsync -av --delete -e 'ssh -p 10022' /home/baihang_log/ jyapp@10.50.192.147:/opt/apps/bdc/datareport-baihang-api/feedback >> get_file.log
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 5.zabbix批量添加Ping节点主机的监控
在172.19.101.57主机的/etc/zabbix/zabbix_agentd.conf配置文件追加一行自定义key
UserParameter=pingloss_discovery,/bin/bash /etc/zabbix/scripts/ping.sh
1
ping.sh脚本如下:
[root@JY1PBSZXMNT01 scripts]# cat ping.sh
#!/bin/bash
#copyright by liuhhailong in 2018-11-23
iplist="/etc/zabbix/scripts/ip_list"
line=`cat $iplist | grep -v "^$" | wc -l`
echo -e "{"
echo -e "\t\"data\":["
for ((num=1;num<=$line-1;num++))
do
agentip=`cat $iplist | grep -v "^$" | sed -n "$num"p | awk '{printf \$1}'`
agentdescription=`cat $iplist | grep -v "^$" | sed -n "$num"p | awk '{printf \$2}'`
echo -e "\t\t{"
echo -e "\t\t\t\"{#CHECKIP}\":\"$agentip\",\"{#DESCRIPTION}\":\"$agentdescription\"},"
done
agentip=`cat $iplist | grep -v "^$" | sed -n "$line"p | awk '{printf \$1}'`
agentdescription=`cat $iplist | grep -v "^$" | sed -n "$line"p | awk '{printf \$2}'`
echo -e "\t\t{"
echo -e "\t\t\t\"{#CHECKIP}\":\"$agentip\",\"{#DESCRIPTION}\":\"$agentdescription\"}]}"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
维护的列表,地址在/etc/zabbix/scripts/ip_list
在zabbix页面上创建模板
- 在自定义发现里添加自定义规则,键值为pingloss_discovery
- 配置监控项原型,名称为{#DESCRIPTION},键值为icmpping[{#CHECKIP},6,1000,68,500],信息类型浮点数
总结:合理利用了自动发现功能,利用自定义脚本输出json格式,通过宏变量,最终让zabbix拿取到了列表中的两个值,从而去批量实现监控PING主机节点的功能
上次更新: 2022/10/08, 16:35:41