zabbix基础4——自定义监控案例

一、监控进程

  • 示例:监控客户端上的httpd服务进程,当进程书少于1时,说明服务已经挂掉,需要及时处理。

1.客户端开启自定义监控功能。

vim  /usr/local/etc/zabbix_agentd.conf
UnsafeUserParameters=1       //设置为1,说明已开启功能。
UserParameter=<key>,<shell command>    //配置监控指标key,是和web中的监控项配置key对应的,shell comand是取出监控的指标,可以指定脚本来取。

2.客户端创建脚本目录和脚本文件

//写脚本。当进程数=0时,代表服务有问题,返回1;当进程数不等于0时,代表服务进程存在,是正常的返回0。
cat /opt/scripts/check_process.sh
#!/bin/bash
count=$(ps -ef|grep -Ev "grep|$0"|grep $1|wc -l)
if [ $count -eq 0 ];then
    echo '1'
else
    echo '0'
fi

//脚本添加执行权限。
chmod +x /opt/scripts/check_process.sh

//修改脚本属主属组。
chown -R zabbix.zabbix /opt/scripts/check_process.sh

3.测试脚本能否正常检测。
在这里插入图片描述

4.客户端配置文件定义key。

vim /usr/local/etc/zabbix_agentd.conf

//check_process为自定义名称,需要与web页面的监控项一一对应。
//[*]表示传入的参数key,需要监控的key,也是脚本里取出来的值。
//后面指定监控脚本,$1表示传入的参数服务,在web页面进行定义传入。当需要监控多个进程时,则添加$2、$3...即可,在web页面里配置时需要使用逗号隔开。
UserParameter=check_process[*],/bin/bash /scripts/check_process.sh $1  

5.重启客户端服务。

pkill zabbix
zabbix_agentd

6.服务端测试脚本是否能正常检测。

//服务端命令检测。
zabbix_get -s 192.168.130.161 -k check_process[httpd]

在这里插入图片描述
7.配置zabbix监控项。
在这里插入图片描述
在这里插入图片描述
8.添加触发器。
在这里插入图片描述
在这里插入图片描述
9.客户端关闭httpd服务,触发规则,验证结果。

systemctl stop httpd

在这里插入图片描述

二、监控日志

1.客户端开启自定义监控功能。

vim  /usr/local/etc/zabbix_agentd.conf
UnsafeUserParameters=1       //设置为1,说明已开启功能。

2.编写监控日志的python脚本,客户都安需要有python环境。

#!/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)

在这里插入图片描述
3.客户端配置文件添加脚本监控配置。

vim /usr/local/etc/zabbix_agentd.conf

UserParameter=check_log[*],/usr/bin/python /opt/scripts/log.py $1 $2 $3

4.重启客户端agentd服务。

pkill zabbix
zabbix_agentd

5.错误日志设置权限,使zabbix用户能够对该文件进行读、执行。

setfacl -m u:zabbix:rx /var/log/httpd

在这里插入图片描述
6.服务端验证脚本是否能正常监控。

//客户端追加错误参数
echo 'failed' >> /var/log/httpd/error_log

//服务端测试。1表示有错误,0表示正常。
//括号内容为:第一个为监控哪个文件;第二个为自定义记录错误日志中的具体位置文件存放路径;第三个参数为定义一个关键字。
zabbix_get -s 192.168.130.161 -k check_log[/var/log/httpd/error_log,/tmp/position,failed]   

//测试产生的错误日志记录位置文件,此时记录到4003行。
cat /tmp/position 
4003

7.创建监控项。
在这里插入图片描述
8.添加触发器。
在这里插入图片描述
9.客户端追加关键词触发告警,验证效果。

echo 'error' >> /var/log/httpd/error_log 

在这里插入图片描述

三、监控mysql主从

环境说明:

环境IP要安装的应用
zabbix服务端192.168.130.160lamp架构
zabbix server
zabbix agent
mysql从
zabbix客户端
192.168.130.161mariadb*
abbix_agentd
mysql主192.168.130.162mariadb*

1.提前主备mysql主从,监控mysql从主机,参考文章。需要保证登录数据库没有告警密码暴露问题,若是采用我的脚本安装,则需修改mysql客户端的主配置文件,添加用户和密码即可解决。

//添加如下三行。
vim /etc/my.conf
[client]
user = root
password = citms

2.mysql从机安装zabbix_agentd端。

//安装依赖包.
yum -y install net-snmp-devel libevent-devel make gcc gcc-c++ pcre*

//准备安装包,并解压。
tar xf zabbix-5.2.7.tar.gz 
cd zabbix-5.2.7

//创建zabbix用户。
useradd -r -M -s /sbin/nologin zabbix

//源码编译。
./configure --enable-agent
make install

//编辑配置文件,指定服务端地址和本机标识。
vim /usr/local/etc/zabbix_agentd.conf
Server=192.168.130.160     //改成服务端IP地址 被动模式
ServerActive=192.168.130.160   //改成服务端IP地址 主动模式
Hostname=redis_1       //改成标识本机的代号,用于添加主机

//开启服务,关闭防火墙。
zabbix_agentd
systemctl  stop firewalld
systemctl  disable firewalld
setenforce 0

3.zabbix客户端编写监控脚本。

vim /opt/scripts/mysql_msstatus.sh
#!/bin/bash
yes_count=$(mysql -e 'show slave status\G'|grep -E 'IO_Running:|SQL_Running:'|grep -c 'Yes')
if [ $yes_count -ne 2 ];then
    echo '1'
else
    echo '0'
fi

//添加执行权限,修改属主属组。
chmod +x /opt/scripts/mysql_msstatus.sh
chown -R zabbix.zabbix /opt/scripts

4.zabbix客户端开启自定义监控功能,指定监控脚本。

vim /usr/local/etc/zabbix_agentd.conf
UnsafeUserParameters=1    //取消注释,并将0改为1
UserParameter=show_master_slave_status,/bin/bash /opt/scripts/mysql_msstatus.sh 

5.重启zabbix客户端。

pkill zabbix
zabbix_agentd

6.zabbix服务端测试监控脚本是否能正常监控。
在这里插入图片描述
在这里插入图片描述
7.配置zabbix网页,修改主机模板。
在这里插入图片描述
8.添加监控项。
在这里插入图片描述
9.添加监控项。
在这里插入图片描述

10.停止mysql主服务,验证效果。

service mysqld stop

在这里插入图片描述

四、监控mysql延迟

  • mysql延迟时正常的,但若延迟数越来越大说明就有问题,此时就需要排查问题了。
  • mysql延迟是在mysql主从基础上来玩的,所以如下的基本配置都是基于上文mysql主从来实现的。

1.提前配置好mysql主从,并在从机上配置zabbix_agent。

2.zabbix客户端编写监控脚本。

vim /opt/scripts/scripts/mysql_delay.sh
#!/bin/bash
delay=$(mysql -e 'show slave status\G'|grep 'Seconds_Behind_Master'|awk '{print $2}') 
echo $delay

//添加执行权限,修改属主属组。
chmod +x /opt/scripts/scripts/mysql_delay.sh
chown -R zabbix.zabbix /opt/scripts/scripts/mysql_delay.sh

3.zabbix客户端开启自定义监控功能,指定监控脚本。

vim /usr/local/etc/zabbix_agentd.conf
UnsafeUserParameters=1    //取消注释,并将0改为1
UserParameter=show_mysql_delay,/bin/bash /opt/scripts/mysql_delay.sh

4.重启服务。

pkill zabbix
zabbix_agentd

5.zabbix服务端测试监控脚本是否能正常监控到mysql延迟值。

zabbix_get -s 192.168.130.161 -k show_mysql_delay

在这里插入图片描述
6.添加监控项。
在这里插入图片描述
7.添加触发器。这里的触发条件需要根据实际情况修改,等于0只是为了测试效果。
在这里插入图片描述

8.验证结果。
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百慕卿君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值