简述

在生产环境中,有一台mysql的备份服务器,上面运行着三个数据库实例的从库,也在做日志的同步工作,为了实现对该备份服务器的监控,当出现从库实例不为3或者日志同步进程不为3的时候,产生告警通知,生产使用的是zabbix监控。就想着自己写一个监控的item,通过定时取值,然后设置触发器,当有告警的时候进行通知。

在设计的时候就没有想到什么比较厉害的方法,只是通过ps查看进程的方式,获取mysqld_safe的数量,因为运行了三个从库实例,自己写的多实例启动脚本,在脚本中就是通过该命令启动的数据库,所以在做的时候就是过滤这个关键字。

对于日志的同步,也是用的这种方式进行统计的。

过程

1.编写监控命令

在设计的时候,选择使用ps命令,过滤的命令和结果如下:

[root@mysqlbackup opt]# ps -ef|grep mysqld_safe|grep -v grep|wc -l
3
[root@mysqlbackup opt]# ps -ef|grep mysqlbinlog|grep -v grep|wc -l
3

上面就是直接过滤关键字,而获取到值,因为需求很简单,只有当着两个值,不为3的时候,就说明出现了mysql的同步异常,这个时候就需要发送告警通知给管理员来进行处理了。所以这两条命令就可以了。

为了写的高端一点,选择的是写脚本的方式,因为过滤的命令格式都是一样的,只有关键字是不同的,所以写个脚本case一下。脚本如下:

[root@mysqlbackup opt]# cat instance_count.sh
#/bin/bash
# monitor mysql instance and binlog instance
function instance_count(){
NAME=$1
# /bin/ps -ef|grep $NAME|grep -v grep|wc -l
case $NAME in
1)
/bin/ps -ef|grep mysqld_safe|grep -v grep|wc -l
;;
2)
/bin/ps -ef|grep mysqlbinlog|grep -v grep|wc -l
;;
*)
echo "Usage $0 {mysql|mysqlbinlog}"
esac
} main(){
instance_count $1
} main $1

实际上就是通过参数的形式,将要获取的值传入,然后返回,可以通过本地执行的方式,获取这些值。获取mysql实例数是参数1,获取mysqlbinlog日志同步的实例数是参数2,输入其他参数,直接报错。

2.编写item_key

基于之前的脚本,在zabbix-agentd.d目录下,编写一个conf文件,用来定义key,调用刚才创建的脚本进行传参。

[root@mysqlbackup opt]# cat /etc/zabbix/zabbix_agentd.d/mysql.conf
#UserParameter=mysql.MysqlInstanceCount,ps -ef|grep mysqld_safe |grep -v grep|wc -l
#UserParameter=mysql.MysqlbinlogCount,ps -ef|grep mysqlbinlog |grep -v grep|wc -l
UserParameter=instance.count[*],/opt/instance_count.sh $1

脚本编写完成之后,需要重启zabbix-agent才能生效。

3.获取item

在zabbix-server上通过zabbix_get命令。获取指定的值。

[root@Zabbix-server zabbix]# zabbix_get -s 10.2.86.120 -p 10050 -k instance.count[2]
3
[root@Zabbix-server zabbix]# zabbix_get -s 10.2.86.120 -p 10050 -k instance.count[1]
3

在zabbix-server上能够通过命令成功获取这些值,表明该item已经可以使用,下面就可以开始在web页面上进行配置了。

4.item配置

在这里我选择的是创建一个模板,然后在模板中创建一个应用application,然后再创建两个item,name分别为MySQLInstanceCount和MySQLBinlogCount,对应的key值分别为instance.count[1]和instance.count[2],至于取数周期和保留期,可以选择默认,也可以适当调整。

配置完成后,就可以在最新数据中,获取这两个值。

5.触发器配置trigger

为了实现告警短信的通知,选择配置两个触发器,当出现值不为3的时候,就触发告警,开始选择用的是last方法,意思就是获取该item的最近的一个值。当该值不为3的时候,则产生告警,编辑的表达式如下所示:

{mysql:instance.count[1].last()}<>3

后来考虑到误报,或者是短时间的异常告警,所以修改了表达式,选择的是count,当最近的5次采集中,不为3的采集大于2次时,就产生告警。这样也就减少了告警的频次。

{mysql:instance.count[1].count(#5,3,ne,0)}>2

Zabbix 监控触发器设置的更多相关文章

  1. Zabbix监控交换机设置

    说明: Zabbix监控服务端已经配置完成,现在要使用Zabbix对交换机进行监控. 具体操作: 以下操作在被监控的交换机上进行,这里以Cisco交换机为例. 一.登录到Cisco交换机,开启snmp ...

  2. zabbix监控报警设置

    前提:已经安装好了zabbix server和zabbix agent 下面的方式不适合诸如用qq邮箱作为mail服务器,毫无疑问,zabbix支持自定义的邮件发送脚本,今天时间有限,改天在写!   ...

  3. 使用Zabbix监控mysql的主从同步

    Zabbix 监控触发器设置 简述 在生产环境中,有一台mysql的备份服务器,上面运行着三个数据库实例的从库,也在做日志的同步工作,为了实现对该备份服务器的监控,当出现从库实例不为3或者日志同步进程 ...

  4. Zabbix触发器和监控项设置时间范围

    目录 一.实际业务场景 业务问题 解决办法 二.Zabbix触发器和监控项与用户预警设置时间范围配置流程 一.触发器设置时间范围 二.监控项设置时间范围 三.用户报警设置启用时间 一.实际业务场景 业 ...

  5. Zabbix 配置监控 & 触发器

    Zabbix 自定义监控 zabbix-agent 获取数据,然后定义,交给 zabbix-server 端 Zabbix 配置监控项 监控的内容 # 监控服务器登录用户的数量 [root@web01 ...

  6. Zabbix监控Linux主机设置

          说明: Zabbix监控服务端已经配置完成,现在要使用Zabbix对Linux主机进行监控. 具体操作: 以下操作在被监控的Linux主机进行,这里以CentOS 6.x系统为例. 一.配 ...

  7. CentOS7下搭建zabbix监控(四)——Zabbix报警设置

    CentOS7下搭建zabbix监控(一)——Zabbix监控端配置 CentOS7下搭建zabbix监控(二)——Zabbix被监控端配置 CentOS7下搭建zabbix监控(三)——Zabbix ...

  8. Zabbix 监控 Nginx(四)

    简介: 如何使用 Zabbix 监控 Nginx 状态 ? 1.获取 Nginx 状态( HTTP Stub Status ) [root@localhost ~]# /apps/product/ng ...

  9. Zabbix 监控 Nginx 状态

    简介: 如何使用 Zabbix 监控 Nginx 状态 ? 1.获取 Nginx 状态( HTTP Stub Status ) shell > /usr/local/nginx/sbin/ngi ...

随机推荐

  1. css3修改浏览器scroll默认样式

    最近公司的新项目.前端样式采用的蚂蚁金服的antDesign. 比较喜欢antDesign.BootStrap一类简约大方的前端样式库. 但是在页面布局上.包括一些选择框.默认的scroll样式简直丑 ...

  2. 关于图片适配不同尺寸的image View(实战)

    分享人:广州华软 佐罗 一. 前言 在前端开发过程中,设计稿中往往只提供一张图片,但是app内需要用到的尺寸各种各样. 同时图片不仅是信息的直接表达,也会为网站起到美观点缀的作用,图片的变形.过分裁切 ...

  3. Webpack4教程 - 第二部分,使用loader处理scss,图片以及转换JS

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://wanago.io/2018/07/16/webpack-4-course-par ...

  4. PowerShell 官方下载地址

    PowerShell 官方下载地址 Powershell 目前在 GitHub 维护, 所以下载地址为 https://github.com/PowerShell/PowerShell/release ...

  5. 运行SSIS包的六种方式

    注意: 1~5都需要SSIS安装在对应的机器上. 一.直接在Data Tool里运行 右键选择要运行的包,然后直接选择运行包 二.使用SQL Server的Job作业 可以选择:a. File Sys ...

  6. U盘启动盘安装Windows10操作系统详解

    没有装过系统的同学,总以为装系统很神秘?是专业技术人员干的事情.今天我们来看看怎么借助常用的U盘装上全新的win10系统. 准备材料: 软件软碟通,可上官网下载:https://cn.ultraiso ...

  7. Ubuntu 16.04 安装Google 浏览器

    Ubuntu安装好后,自带Firefox浏览器,有时我们需要再安装几个浏览器,那么Google Chrome,就是首选, 安装如下: 下载浏览器安装包, 下载链接:https://dl.google. ...

  8. vmware 14 新安装centos7 没法联网

    vmware14 刚安装好centos7后,想下载安装一些软件发现无法联网,于是就百度了一下.下面 记录下解决方法. 1 确报主机能上网. 2 设置虚拟机网络适配器 3 设置虚拟机网卡 4 修改cen ...

  9. HelloHibernate的创建过程

    文章提纲 安装与配置 开发小结 建立项目 配置项目 创建代码 执行项目 安装与配置 JDK的安装:建议使用JRE 1.8以上: SQL Server 2000的安装:建议SQL Server 2000 ...

  10. linux 软链接的创建、删除和更新

    大家都知道,有的时候,我们为了省下空间,都会使用链接的方式来进行引用操作.同样的,在系统级别也有.在Windows系列中,我们称其为快捷方式,在Linux中我们称其为链接(基本上都差不多了,其中可能有 ...