客户端操作开启自定义监控
[root@zabbix-agent ~]# cd /usr/local/etc/
[root@zabbix-agent etc]# ls
zabbix_agentd.conf zabbix_server.conf
zabbix_agentd.conf.d zabbix_server.conf.d
[root@zabbix-agent etc]# vi zabbix_agentd.conf
# Mandatory: no
# Range: 0-1
# Default:
UnsafeUserParameters=1 #此处取消注释修改值为1
UserParameter=check_process[*],/bin/bash /scropts/check_process.sh $1 #加到文章最底部。
[root@zabbix-agent etc]# mkdir /scropts/ #创建一个目录
[root@zabbix-agent etc]# cd /scropts/
[root@zabbix-agent scropts]# vim check_process.sh #写一个脚本
#!/bin/bash
count=$(ps -ef | grep -Ev "grep|$0" | grep -c $1) #过滤脚本自身
if [ $count -eq 0 ];then #当count等于0时打印1,
echo '1'
else
echo '0' #没有问题打印0
fi
[root@zabbix-agent scropts]# chmod +x check_process.sh #增加自行权限
[root@zabbix-agent scropts]# ll
总用量 4
-rwxr-xr-x 1 root root 125 7月 10 23:15 check_process.sh
[root@zabbix-agent scropts]# pkill zabbix #杀进程
[root@zabbix-agent scropts]# zabbix_agentd
[root@zabbix-agent scropts]# systemctl start mariadb.service #启动数据库
[root@zabbix-agent scropts]# ss -antl #有端口号了
State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 128 0.0.0.0:10050 0.0.0.0:*
LISTEN 0 80 0.0.0.0:3306 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
测试服务端
root@zabbix-server ~]# zabbix_get -s 192.168.6.132 -k check_process[mysqld] 0 [root@zabbix-server ~]# zabbix_get -s 192.168.6.132 -k check_process[zabbix] 0 [root@zabbix-agent scropts]# systemctl stop mariadb.service [root@zabbix-agent scropts]# ss -atnl State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess LISTEN 0 128 0.0.0.0:10050 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 128 [::]:22 [::]:*

添加监控项,保存,更新。

添加触发器

取到值了,
[root@zabbix-agent scropts]# systemctl stop mariadb.service # 停掉服务测试 [root@zabbix-agent scropts]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess LISTEN 0 128 0.0.0.0:10050 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 128 [::]:22 [::]:*

收到邮件!
自定义监控日志
[root@zabbix-agent scropts]# vi log.py
[root@zabbix-agent scropts]# 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@zabbix-agent scropts]# ls
check_process.sh log.py
[root@zabbix-agent scropts]# chmod +x log.py #添加权限
[root@zabbix-agent scropts]# ll
总用量 8
-rwxr-xr-x 1 root root 125 7月 10 23:15 check_process.sh
-rwxr-xr-x 1 root root 1854 7月 11 00:13 log.py
[root@zabbix-agent scropts]# setfacl -m u:zabbix:rx /var/log/mariadb/mariadb.log # 让zabbix用户对这个日志有读和执行的权限
[root@zabbix-agent scropts]# ll /var/log/mariadb/
总用量 8
-rw-rwx---+ 1 mysql mysql 6983 7月 11 00:03 mariadb.log
[root@zabbix-agent scropts]# getfacl /var/log/mariadb/mariadb.log # 查看
getfacl: Removing leading '/' from absolute path names
# file: var/log/mariadb/mariadb.log
# owner: mysql
# group: mysql
user::rw-
user:zabbix:r-x
group::rw-
mask::rwx
other::---
测试脚本
[root@zabbix-agent scropts]# yum -y install python3 [root@zabbix-agent scropts]# python3 log.py /var/log/mariadb/mariadb.log 0 [root@zabbix-agent scropts]# echo 'Error' >> /var/log/mariadb/mariadb.log [root@zabbix-agent scropts]# python3 log.py /var/log/mariadb/mariadb.log 1 [root@zabbix-agent scropts]# cat /tmp/logseek 6989[root@zabbix-agent scropts]# echo 'Error' >> /var/log/mariadriadb.log [root@zabbix-agent scropts]# python3 log.py /var/log/mariadb/mariadb.log 1 [root@zabbix-agent scropts]# cat /tmp/logseek 6995[root@zabbix-agent scropts]# [root@zabbix-agent scropts]# rm -rf /tmp/logseek
# 测试脚本。
配置zabbix_agentd.conf文件
[root@zabbix-agent scropts]# vi /usr/local/etc/zabbix_agentd.conf UserParameter=check_logs[*],/usr/bin/python3 /scropts/log.py $1$2 $3 #添加到最后 [root@zabbix-agent scropts]# pkill zabbix # 啥进程 [root@zabbix-agent scropts]# zabbix_agentd [root@zabbix-agent scropts]# systemctl start mariadb [root@zabbix-agent scropts]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess LISTEN 0 128 0.0.0.0:10050 0.0.0.0:* LISTEN 0 80 0.0.0.0:3306 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 128 [::]:22 [::]:*
手动添加监控项

添加触发器

手动促发测试
原创文章,作者:506227337,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/273549.html