自定义监控进程
创建脚本目录在/目录下,将目录所属更改为zabbix,给脚本执行权限
[root@xiaoxiong ~]# mkdir /scripts
[root@xiaoxiong scripts]# touch check_process.sh
[root@xiaoxiong scripts]# cat check_process.sh
#!/bin/bash
process=$(ps -ef|grep -Ev "grep|$0"|grep -c $1)
if [ $process -gt 0 ];then
echo "0"
else
echo "1"
fi
改客户端配置文件
[root@xiaoxiong ~]# vim /usr/local/etc/zabbix_agentd.conf
[root@xiaoxiong ~]# tail /usr/local/etc/zabbix_agentd.conf
### Option: TLSPSKFile
# Full pathname of a file containing the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKFile=
UnsafeUserParameters=1 ##允许脚本中出现特殊字符
UserParameter=check_process[*],/bin/bash /scripts/check_process.sh $1
在后面加入最后两行内容
重启zabbix_agent服务
在服务端手动测试
[root@zabbix ~]# zabbix_get -s 192.168.28.130 -k check_process[mysql]
1
配置网页界面
配置监控项
- 配置-主机(hanyuce)-监控项
键值为check_process[你想要检测的服务]
配置触发器
在客户端杀死进程,可以看到会报错
监控进程
在目录/scripts下面创建脚本
给脚本执行权限
[root@xiaoxiong scripts]# vim log.py
[root@xiaoxiong scripts]# cat log.py
#!/usr/bin/env python3
import sys
import re
def prePos(seekfile):
global curpos
try:
cf = open(seekfile)
except IOError:
curpos = 0
return curpos
except FileNotFoundError:
curpos = 0
return curpos
else:
try:
curpos = int(cf.readline().strip())
except ValueError:
curpos = 0
cf.close()
return curpos
cf.close()
return curpos
def lastPos(filename):
with open(filename) as lfile:
if lfile.readline():
lfile.seek(0,2)
else:
return 0
lastPos = lfile.tell()
return lastPos
def getSeekFile():
try:
seekfile = sys.argv[2]
except IndexError:
seekfile = '/tmp/logseek'
return seekfile
def getKey():
try:
tagKey = str(sys.argv[3])
except IndexError:
tagKey = 'Error'
return tagKey
def getResult(filename,seekfile,tagkey):
destPos = prePos(seekfile)
curPos = lastPos(filename)
if curPos < destPos:
curpos = 0
try:
f = open(filename)
except IOError:
print('Could not open file: %s' % filename)
except FileNotFoundError:
print('Could not open file: %s' % filename)
else:
f.seek(destPos)
while curPos != 0 and f.tell() < curPos:
rresult = f.readline().strip()
global result
if re.search(tagkey, rresult):
result = 1
break
else:
result = 0
with open(seekfile,'w') as sf:
sf.write(str(curPos))
finally:
f.close()
return result
if __name__ == "__main__":
result = 0
curpos = 0
tagkey = getKey()
seekfile = getSeekFile()
result = getResult(sys.argv[1],seekfile,tagkey)
print(result)
改客户端配置文件
[root@xiaoxiong ~]# tail /usr/local/etc/zabbix_agentd.conf
# Default:
# TLSPSKFile=
UnsafeUserParameters=1
UserParameter=check_process[*],/bin/bash /scripts/check_process.sh $1
UserParameter=swap.sh,/bin/bash /scripts/swap.sh
UserParameter=check_log[*],/usr/bin/python /scripts/log.py $1 $2 $3
加入最后一行的内容 $1为想要监控的日志,$2为想要将监控到的结果放的位置,$3为需要监控的字符
重启zabbix_agent服务
在服务端手动测试
[root@zabbix ~]# zabbix_get -s 192.168.28.130 -k check_log['/opt/xixi','/tmp/log.error','error']
0
配置网页界面
配置监控项
- 配置-主机(hanyuce)-监控项
配置触发器
在/opt/xixi(监控的文件)里面加入error(监控的字符)可以看到会报错
监控mysql主从服务
在/scripts目录下面创建脚本
[root@xiaoxiong scripts]# vim check_zhucong.sh
[root@xiaoxiong scripts]# cat check_zhucong.sh
#!/bin/bash
zhucong=$(mysql -uroot -p123456 -e 'show slave status \G' 2>/dev/null|egrep 'Slave_IO_Running:|Slave_SQL_Running:'|awk '{print $NF}'|grep 'Yes'|wc -l)
if [ $zhucong -eq 2 ];then
echo '0'
else
echo '1'
fi
在配置文件最后一行加入
[root@xiaoxiong ~]# vim /usr/local/etc/zabbix_agentd.conf
[root@xiaoxiong ~]# tail /usr/local/etc/zabbix_agentd.conf
# Default:
# TLSPSKFile=
UnsafeUserParameters=1
UserParameter=check_zhucong,/bin/bash /scripts/check_zhucong.sh
check_zhucong(为键值) /scripts/check_zhucong.sh(为脚本目录)
在web页面配置监控项
- 配置-主机-hanyuce(主机名)-监控项
添加触发器
- 配置-主机-hanyuce(主机名)-触发器
检测
-监测-最新数据-图形
选择最近500个值,可以看到能监控到主从复制是否成功
监控mysql主从服务是否有延迟
在/scripts目录下面创建脚本
[root@xiaoxiong scripts]# vim check_yanchi.sh
[root@xiaoxiong scripts]# cat check_yanchi.sh
#!/bin/bash
num=$(mysql -uroot -p123456 -e 'show slave status \G;' 2>/dev/null |grep Behind |awk '{print $NF}')
if [ $num -ne 0 ];then
echo "1"
else
echo "0"
fi
在配置文件最后一行加入
[root@xiaoxiong ~]# vim /usr/local/etc/zabbix_agentd.conf
[root@xiaoxiong ~]# tail /usr/local/etc/zabbix_agentd.conf
# Default:
# TLSPSKFile=
UnsafeUserParameters=1
UserParameter=check_yanchi,/bin/bash /scripts/check_yanchi.sh
在web页面配置监控项
- 配置-主机-hanyuce(主机名)-监控项
添加触发器
- 配置-主机-hanyuce(主机名)-触发器
检测
可以看到能检测到是否产生延迟,当值为1时则是产生延迟,会报错