自定义监控mysql进程以及日志
2022/7/12 2:21:31
本文主要是介绍自定义监控mysql进程以及日志,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
客户端操作开启自定义监控
[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 [::]:*
手动添加监控项
添加触发器
手动促发测试
这篇关于自定义监控mysql进程以及日志的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20部署MySQL集群入门:一步一步搭建你的数据库集群
- 2024-11-19部署MySQL集群学习:入门教程
- 2024-11-19如何部署MySQL集群:新手入门教程
- 2024-11-19Mysql安装教程:新手必看的详细安装指南
- 2024-11-18Mysql安装入门:新手必读指南
- 2024-11-18MySQL事务MVCC原理入门详解
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-15MySQL教程:初学者必备的MySQL数据库入门指南
- 2024-11-15MySQL教程:初学者必看的MySQL入门指南