zabbix自定义监控进程

自定义监控进程

创建脚本目录在/目录下,将目录所属更改为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时则是产生延迟,会报错
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值