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

news2024/9/20 22:32:07

文章目录

  • 一、监控进程
  • 二、监控日志
  • 三、监控mysql主从
  • 四、监控mysql延迟

一、监控进程

  • 示例:监控客户端上的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.验证结果。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/729509.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YApi-高效、易用、功能强大的可视化接口管理平台——(一)使用 Docker 本地部署

Docker 本地部署 YApi 安装 Docker安装设置 USTC 镜像启动 Docker Docker 安装 MongoDBDocker 安装 YApi登录 YApi 本内容以虚拟机【系统&#xff1a;Centos7】为例&#xff0c;云服务器步骤相同。使用Docker 的方式搭建 YApi&#xff0c;拉取 MongoDB 镜像和 YApi 镜像即可。 …

SpringBoot学习——追根溯源servlet是啥,tomcat是啥,maven是啥 springBoot项目初步,maven构建,打包 测试

目录 引出追根溯源&#xff0c;过渡衔接servlet是啥&#xff1f;tomcat是啥&#xff1f; 前后端开发的模式1.开发模式&#xff1a;JavaWeb&#xff1a;MVC模型2.Web&#xff1a;Vue&#xff0c;MVVC模型3.后端相关3.1 同步与异步3.2 Controller层3.3 Service层&#xff1a;要加…

【C语言基础】函数(2)

在函数&#xff08;1&#xff09;中我们已经讲过了函数的定义&#xff0c;形参与实参&#xff0c;函数的调用&#xff0c;局部变量与栈内存 接下来还有几个要强调的函数相关知识。 一、静态函数 静态函数是在函数声明前加上关键字 static 的函数。静态函数在C语言中具有以…

让计算机讲话

std ::cout是什么&#xff1f; 首先 std是命名空间后面会讲。STD&#xff08;standard标准&#xff09; cout和printf就呢让计算机说话 最早的使用打印机&#xff0c; std::cout相当于调用了一个特殊的函数。 后面需要加<<隔开。 知道最基本的知识就OK了 c的风格 函数…

API接口在软件开发中扮演着重要的角色

随着互联网的快速发展&#xff0c;API&#xff08;Application Programming Interface&#xff09;接口在软件开发中扮演着重要的角色。调试API接口是确保系统正常运行的关键步骤之一。本文将介绍如何选择适合的方法进行API接口调试&#xff0c;以确保开发过程的高效进行和应用…

20.光敏传感器

1.光敏传感器介绍&#xff1a; 光敏二极管(光敏电阻),作为光敏传感器&#xff1b;光敏二极管也称光电二极管&#xff1b;光敏二极管与半导体二极管在结构上类似&#xff0c;其管芯是一个具有光敏特征的PN结&#xff0c;具有单向导电性&#xff0c;因此工作时需要加上反向电压。…

【ECharts系列】ECharts 鼠标悬停线格式化

问题描述&#xff1a; 折线图有很多数据&#xff0c;鼠标悬停时&#xff0c;针对X轴&#xff0c;Y轴数据进行格式化&#xff0c;例如X的时间戳&#xff0c;格式化为时分秒&#xff0c;Y轴保留两位小时 希望效果图&#xff1a; 方案1&#xff1a; 在这个示例中&#xff0c;X轴依…

指针进阶(二)

目录 函数指针数组 指向函数指针数组的指针 回调函数 回调函数模拟实现qsort&#xff08;快速排序&#xff09; 整型数组的排序 结构题排序 按年龄排序 按名字排序 模拟实现qsort函数&#xff08;冒泡排序&#xff09; 函数指针数组 数组是一个存放相同类型数据的存储空…

【Linux】gcc/g++的使用 自动化构建工具make/makefile的使用

一.gcc的使用 在学习C语言时&#xff0c;我们了解了预处理阶段要做的事&#xff1a;->预处理 这其中会经历两个阶段&#xff1a;编译和链接 而编译又分为三个阶段&#xff1a;预编译&#xff0c;编译&#xff0c;汇编 通过不同的选项&#xff0c;可以让gcc停在以上相应的阶段…

ArcGis Pro如何通过C#进行插件开发?

文章目录 0.引言1.开发工具准备2.VS&#xff08;C#&#xff09;创建ArcGIS Pro模块加载项3.编译并使用ArcGis Pro插件 0.引言 ArcGIS Pro插件&#xff08;Add-ins&#xff09;可以让用户更加容易的自定义和扩展ArcGIS Pro应用程序&#xff0c;它创建一系列自定义工具提供了一个…

ISO文件boot、dvd、minimal的区别

在centos的下载中&#xff0c;有分为boot、dvd、minimal的iso文件&#xff0c;那么他们之间有什么区别呢&#xff1f; boot.iso 这个版本大小不会超过1G ,只有最基本的启动引导等内容&#xff0c;各类包均需从线上下载&#xff0c;需要快速安装且有可靠网络的前提下&#xff0c…

linux中的数据库

目录 1.安装MySQL 2.创建数据库 3.删除数据库 4.查询创建数据库的语句 5使用数据库的语句 6.查询当前默认的数据库 7.查询使用的编码方式和校验规则 8.创建表的语句 9.表的物理存储结构 10.表的数据类型 11.总结 引言&#xff1a; 数据库是现代应用开发中不可或缺的组…

获取视频 RTMP 推流web播放

工作需要研究下市面上显示实时视频方案。这里介绍下RTMP协议。 需求获取USB摄像头&#xff0c;手机谁摄像头。显示到web网页上。 一、 采集摄像头 这个使用opencvSharp来采集&#xff1a; nuget: var task Task.Run(() >{var capture new VideoCapture(0);VideoCaptur…

PHP实战开发25-电商网站系统缓存设计方案系统讲述

文章目录 一、前言-缓存的作用1.1 提高性能1.2 减轻服务端压力1.3 减少网络流量1.4 改善用户体验1.5 支持离线访问1.6 降低数据传输成本 二、浏览器缓存2.1 强缓存2.2 协商缓存 三、CDN 缓存3.1 使用CDN缓存的好处3.1.1 加速网站加载时间3.1.2 节省服务器带宽3.1.3 提高可用性和…

快速计算多项式相乘系数 FFT快速傅里叶变换

快速计算多项式相乘系数 FFT快速傅里叶变换 快速傅里叶变换(FFT)——有史以来最巧妙的算法&#xff1f; 正常求两个多项式乘积 A ( x ) ∑ i 0 n A i x i , B ( x ) ∑ i 0 n B i x i C ( x ) ∑ i 0 n ∑ j 0 n A i B j x i j A(x)\sum_{i0}^{n}{A_ix^i},B(x)\sum_{…

Java多线程基础-11:工厂模式及代码案例之线程池

在Java中&#xff0c;xx池的概念是很常见的&#xff0c;比如之前遇到过的常量池、数据库连接池等等。 线程池是一种常用的多线程处理方式&#xff0c;它可以重复利用已创建的线程&#xff0c;从而减少线程的创建和销毁开销&#xff0c;并提高程序的性能。 通俗来说&#xff…

【Windows】Redis集群部署

集群是如何进行工作的 Redis采用哈希槽来处理数据与节点之间的映射关系&#xff0c;一个集群共有16384 个哈希槽&#xff0c;每个key通过 CRC16算法计算出一个16bit的值&#xff0c;再对16384取模&#xff0c;得到对应的哈希槽&#xff0c;集群通过维护哈希槽与节点的关系来得…

flutter聊天界面-Text富文本表情emoji、url、号码展示

flutter聊天界面-Text富文本表情emoji、url、号码展示 Text富文本表情emoji展示&#xff0c;主要通过实现Text.rich展示文本、emoji、自定义表情、URL等 一、Text及TextSpan Text用于显示简单样式文本 TextSpan它代表文本的一个“片段”&#xff0c;不同“片段”可按照不同的…

Verilog学习笔记2:反相器

代码&#xff1a; //反相器 timescale 1ns/10ps module inv( A,y); input A; output y; assign y~A; endmodule //testbench module inv_tb;reg A; wire YY;inv inv(.A(A),.y(YY));initial beginA<0;#10 A<1;#10 A<0; #10 A<1;#10 A<0; #10 A<1;#10 A<0;…

从小白到大神之路之学习运维第54天--------ELK日志收集分析

第三阶段基础 时 间&#xff1a;2023年7月6日 地 点&#xff1a;2304教室 授课人&#xff1a;李凤海 参加人&#xff1a;全班人员 内 容&#xff1a; ELK技术堆栈 目录 服务器设置&#xff1a; 部署elasticsearch集群&#xff1a; 配置elasticsearch集群&#xff…