一、监控平台介绍
常见的开源监控软件有cacti、nagios、zabbix、smokeping、open-falcon等
cacti、smokeping偏向于基础监控,图形漂亮
catcti、nagios、zabbix服务端监控,需要php环境支持,其中cacti、zabbix需要mysql作为数据存储;nagios不需要存储历史数据,注重服务或者监控项的状态;zabbix会获取服务或者监控项目的数据,并把它记录到数据库。
open-falcon是小米公司开发的。
二、zabbix监控介绍
zabbix是一个基于web界面的提供分布式系统监控的企业级开源解决方案,zabbix能监控各种网络参数。
zabbix监控组件主要有三大部分组成:zabbix server端、zabbix agent客户端、zabbix proxy。zabbix server端包括web GUI、数据库、zabbix server。
Zabbix监控流程:
Agent安装在被监控的主机上,Agent负责定期收集客户端本地各项数据,并发送到Zabbix server端,Zabbix server端收到数据,将数据存储到数据库中,用户基于Zabbix Web可以看到数据在前端显示的图像。
zabbix监控部署,5个常见的程序:
zabbix_server:服务端守护进程,其中,zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy的数据最终提交给zabbix_server。
zabbix_agentd:客户端守护进程,负责收集客户端数据,比如cpu负载、内存、磁盘使用情况等
zabbix_get:zabbix数据获取工具,单独使用的命令,通常在server端或proxy端执行获取远程客户端信息的命令
zabbix_sender:zabbix数据发送工具,用于发送数据给server端或proxy端,通常用于耗时比较长的检查,很多检查非常耗时,导致zabbix超时,于是需要在脚本中执行完毕之后,使用sender主动提交数据
zabbix_proxy:zabbix分布式代理守护进程,分布式监控架构需要部署zabbix_proxy
三、安装zabbix
安装zabbix可以使用yum安装,也可以源码包编译安装。
服务端的安装和客户端的安装略为不同。服务端安装需要lamp或lnmp环境。
1、zabbix server端安装
zabbix服务端安装,需要lamp或lnmp环境。
实验环境:RHEL7.5,ip:192.168.10.205
LNMP:nginx:1.14.0,mariadb:10.3.7,php:7.2.6,lnmp搭建过程省略。
zabbix:3.4.11 默认端口:server端:10051 客户端:10050
1、安装依赖包
[root@node5 ~]# yum install gcc curl curl-devel libcurl-devel pcre-devel net-snmp-devel net-snmp -y
2、下载zabbix
这里使用最新版的zabbix3.4.11
[root@node5 ~]# curl -O https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.4.11/zabbix-3.4.11.tar.gz
3、创建zabbix用户
[root@localhost ~]# useradd -r -s /sbin/nologin zabbix
4、解压编译安装zabbix
[root@node5 ~]#tar xf zabbix-3.4.11
[root@node5 ~]# cd zabbix-3.4.11
[root@node5 zabbix-3.4.11]#
[root@node5 zabbix-3.4.11]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
[root@node5 zabbix-3.4.11]# make && make install
编译的时候加上了 --enable-agent选项,表示安装客户端。也就是说安装服务端的同时,安装客户端。也就是可以监控其他客户端,也可以监控自己。
5、配置zabbix数据库
创建zabbix数据库,数据库名称为:zabbix,用户名:zabbix,密码:123456
创建数据库:
[root@node5 ~]# /usr/local/mysql/bin/mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.7-MariaDB Source distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all on zabbix.* to zabbix@localhost identified by '123456';
MariaDB [(none)]> grant all on zabbix.* to zabbix@127.0.0.1 identified by '123456';
MariaDB [(none)]> flush privileges;
导入数据:
zabbix源码包解压后的database/mysql/目录中有zabbix的模版数据,导入即可。
[root@node5 ~]# cd zabbix-3.4.11/database/mysql/
[root@node5 mysql]# mysql -uzabbix -p123456 zabbix < schema.sql
[root@node5 mysql]# mysql -uzabbix -p123456 zabbix < images.sql
[root@node5 mysql]# mysql -uzabbix -p123456 zabbix < data.sql
6、zabbix server和agent服务文件配置。
在zabbix源码包解压后的目录中的misc/init.d/fedora/core/目录下有zabbix_agentd、zabbix_server两个文件,这两个文件就是zabbix服务端、客户端的服务文件。
[root@node5 ~]# cd zabbix-3.4.11
[root@node5 zabbix-3.4.11]#
[root@node5 zabbix-3.4.11]# ls misc/init.d/fedora/core/
zabbix_agentd zabbix_server
zabbix_agentd、zabbix_server就是服务端和客户端的服务文件,复制到/etc/rc.d/init.d/目录中。分别设置可执行权限并添加到系统服务管理中。
[root@node5 zabbix-3.4.11]# cp misc/init.d/fedora/core/* /etc/rc.d/init.d/
[root@node5 zabbix-3.4.11]# chmod +x /etc/rc.d/init.d/zabbix_server
[root@node5 zabbix-3.4.11]# chmod +x /etc/rc.d/init.d/zabbix_agentd
[root@node5 zabbix-3.4.11]# chkconfig --add /etc/rc.d/init.d/zabbix_agentd
[root@node5 zabbix-3.4.11]# chkconfig --add /etc/rc.d/init.d/zabbix_server
[root@node5 zabbix-3.4.11]#
修改zabbix_agentd、zabbix_server文件的BASEDIR:
[root@node5 ~]# vim /etc/rc.d/init.d/zabbix_server
BASEDIR=/usr/local/zabbix/
[root@node5 ~]# vim /etc/rc.d/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix/
BASEDIR就是zabbx的安装目录。
7、配置zabbix_server.conf、zabbix_agentd.conf
[root@node5 ~]# cd /usr/local/zabbix/
[root@node5 zabbix]# vim etc/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456
DBPort=3306
[root@node5 zabbix]# vim etc/zabbix_agentd.conf
Server=192.168.10.205
ServerActive=192.168.10.205
Hostname=192.168.10.205
8、复制zabbix的Web应用程序到网站目录中。
[root@node5 ~]# cd zabbix-3.4.11
[root@node5 zabbix-3.4.11]# cp -r frontends/php/* /htdocs/zabbix/
[root@node5 zabbix-3.4.11]# chown -R nginx.nginx /htdocs/
[root@node5 zabbix-3.4.11]#
9、启动zabbix服务
[root@node5 ~]# systemctl start zabbix_server zabbix_agentd
10、临时清空防火墙规则、临时关闭selinux
[root@node5 ~]# setenforce 0
[root@node5 ~]# iptables -F
要想永久关闭selinux则修改:/etc/selinux/config配置文件,改为SELINUX=disabled,然后重启机子。
2、zabbix agentd端安装
这里在2台机子上安装zabbix客户端
ip:192.168.10.206
ip:192.168.10.200
所有要被监控的主机都执行一下操作即可。
1、安装依赖包
[root@node3 ~]# yum install gcc curl curl-devel libcurl-devel pcre-devel net-snmp-devel net-snmp -y
2、下载zabbix
这里使用最新版的zabbix3.4.11
[root@node3 ~]# curl -O https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.4.11/zabbix-3.4.11.tar.gz
3、创建zabbix用户
[root@node3 ~]# useradd -r -s /sbin/nologin zabbix
4、解压编译安装zabbix
[root@node3 ~]# tar xf zabbix-3.4.11.tar.gz
[root@node3 ~]# cd zabbix-3.4.11
[root@node3 zabbix-3.4.11]# ./configure --prefix=/usr/local/zabbix --enable-agent
[root@node3 zabbix-3.4.11]# make && make install
5、配置zabbix_agentd.conf配置文件
[root@node3 zabbix-3.4.11]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=192.168.10.205
ServerActive=192.168.10.205
Hostname=192.168.10.200
参数解释:
Server:server端口的ip,被动模式
ServerActive:zabbix主动监控server的ip,主动模式
Hostname:本机的主机名,可以直接写本机的ip,要跟server端添加监控时的hostname一致
6、复制zabbix_agentd启动脚本到/etc/rc.d/init.d/目录中。
复制zabbix_agentd启动脚本到/etc/rc.d/init.d/目录中
[root@node3 zabbix-3.4.11]# cp misc/init.d/fedora/core/zabbix_agentd /etc/rc.d/init.d/
修改服务脚本中的BASEDIR
[root@node3 zabbix-3.4.11]# vim /etc/rc.d/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix
添加可执行权限,添加到系统服务
[root@node3 zabbix-3.4.11]# chmod +x /etc/rc.d/init.d/zabbix_agentd
[root@node3 zabbix-3.4.11]# chkconfig --add zabbix_agentd
启动zabbix_agentd服务
[root@node3 zabbix-3.4.11]# systemctl start zabbix_agentd
7、清空防火墙规则
[root@node3 ~]# iptables -F
需要注意的是,这里清空防火墙规则,并没有执行service iptables save命令去保存规则。
3、安装zabbix
zabbix服务端安装配置完成后,浏览器打开服务端的地址:192.168.10.205,如下图所示:
点击下一步,进入安装环境监测界面:
检查每一项都显示OK即可。然后点击下一步:
数据库设置:
Database type:MySQL
Database host:localhost
Database port:0或者3306,mysql数据库默认端口是3306
Database name:zabbix
User:zabbix
Password:123456
根据实际情况设置好之后,点击下一步:
Name:可以根据需要自定义,其他的选择保持默认即可,点击下一步:
点击下一步:
这个是因为网站目录权限问题,设为777权限
[root@node1 ~]# chmod -R 777 /htdocs/zabbix/
[root@node1 ~]#
我的网站目录是:/htdocs/zabbix/
刷新浏览器即可:
点击完成即可。
zabbix登录界面:用户名:Admin,密码:zabbix
登录成功后,如下图所示:
至此,zabbix安装成功。
四、重置Admin密码
如果忘记了Admin的密码怎么办?Zabbix服务端使用数据库的root用户登录数据库修改了。
[root@node1 ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 253
Server version: 10.3.7-MariaDB Source distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> update zabbix.users set passwd=md5('123456') where alias='Admin';
Query OK, 1 row affected (0.020 sec)
Rows matched: 1 Changed: 1 Warnings: 0
MariaDB [(none)]> flush privileges;
五、主动和被动模式
主动或被动是相对客户端而言。
- 被动模式:服务端会主动连接客户端获取监控项目数据,客户端被动地接收连接,并把监控信息传递给服务端
- 主动模式:客户端会主动把监控数据汇报给服务端,服务端只负责接收即可。
- 当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力。
- 服务端有公网ip,客户端只有内网ip,但却能连外网,这种场景适合主动模式。
主动模式:在agentd配置文件中定义:ServerActive=服务端ip
被动模式:在agentd配置文件中定义:Server=服务端ip
六、添加监控主机
前面已经搭建好zabbix服务端和客户端了。现在在zabbix服务端的web界面添加被监控的主机。
1、创建Host groups、host
登录zabbix server的web界面后,点击:Configuration -->Host groups -->create host groups
假设组名为:my_zabbix_test。其他不用设置,点击添加即可。
登录zabbix server的web界面后,点击:Configuration --> Hosts --> create host
主机名:192.168.10.200
visible name:可以不设置,192.168.10.200的主机名是node3
Groups In groups:选择前面自定义的组,也就是my_zabbix_test
Agent interfaces:192.168.10.200
端口默认是:10050
其他选项暂时不用设置。
点击 add即可。
本次实验有192.168.205、192.168.10.206、192.168.10.200三台被监控的主机。把这3台主机添加进入。
添加完成,如下所示:
最底下个那个是默认的。
七、自定义模版
点击:Configuration -->Templates-->create host template,添加模版
模版名为:my_template
Group in groups:Templates
其他的不用设置,点击Add即可。
新建的这个模版为空的,选择其他的模版,比如Template OS Linux模版,选择一些监控项
勾选一些监控项,比如:
根据实际勾选一些监控项,然后点击Copy
选择自定义的模版,点击copy即可
这就是复制某些功能的操作。下面先删除已复制的,恢复原状。使用另外的方法设置。
点击my_tmeplate-->Linked templates,然后点击select,选择需要的模版,再点击Add,最后更新即可。如下图:
最终如下图:
点击Update即可。
如上图,有很多功能了。如果想删除某项,则会报错,因为这里连接到别的模版的。
要想删除某项,则:
有两项:Unlink、Unlink and clear。如果点击Unlink and clear则全部都清除了,所以要点击Unlick,更新即可:
先删除items,点击items,
将需要保留的选项的勾去掉。
最后点击,Delete
接下来删除Applications,点击Applications
勾选items为0的选项,点击delete删除。
其他的可以根据需要保留或删除。
OK,模版设置成功。当然你也可以不删除任何的功能选项。
八、解决图形的乱码
被监控的主机有3台:
每台机子都使用刚才设置的自定义模版:my_template
点击每台主机的Name-->Templates-->select,选择my_template,然后点击add、update即可,如下:
将界面调回中文:Administration-->Users,点击Admin:
语言选择:中文,点击更新,刷新浏览器即可:
图形显示乱码了,显示成小框框。
zabbix字体库中没有中文,从windows中拷贝一个过来即可。
zabbix定义字体的配置文件为:zabbix网站目录中的include/defines.inc.php。我这里的网站目录是/htdocs/zabbix,所以配置文件为:/htdocs/zabbix/include/defines.inc.php
[root@node1 ~]# vim /htdocs/zabbix/include/defines.inc.php
define('ZBX_FONTPATH', realpath('fonts')); // where to search for font (GD > 2.0.18)
字体设置参数:
define('ZBX_FONTPATH', realpath('fonts')); // where to search for font (GD > 2.0.18)
字体放在fonts目录。也就是zabbix网站目录的fonts目录下:
[root@node1 ~]# ls /htdocs/zabbix/fonts/
DejaVuSans.ttf
[root@node1 ~]#
默认情况只有一种字体,但不支持中文。
Windows中:C:\Windows\Fonts里面的就是字体:
随便复制一个字体到Windows桌面,然后上传到zabbix网站目录中的fonts目录里:
[root@node1 fonts]# ls
DejaVuSans.ttf STKAITI.TTF
[root@node1 fonts]# pwd
/htdocs/zabbix/fonts
[root@node1 fonts]#
把默认的DejaVuSans.ttf备份,然后把上传的STKAITI.TTF重命名为DejaVuSans.ttf
[root@node1 fonts]# mv DejaVuSans.ttf DejaVuSans.ttf.BAK
[root@node1 fonts]# mv STKAITI.TTF DejaVuSans.ttf
[root@node1 fonts]#
然后刷新浏览器即可:
OK,图形中的中文显示正常了。
如果想添加其他图形:
点击配置-->主机-->在需要添加图形的主机上点击图形-->创建图形
根据需要添加图形:
九、自动发现
zabbix可以利用discovery模块,实现自动发现主机、自动将主机添加到主机组、自动加载模版、自动创建项目、自动创建监控图像。具体操作如下:
(1)依次选择:配置-->自动发现-->创建发现规则。创建客户端发现规则。如下图所示:
参数解释:
Name(名称):规则名称,自定义名称
Discovery by proxy(由agent代理发现):通过代理搜索
IP range(ip范围):zabbix_server搜索区域的IP范围
Update interval(更新间隔):更新的间隔
Checks(检查):检测方式,如果用ping方式去发现主机,则zabbix_server需要安装fping。此处使用agent方式发现。使用zabbix agentd方式的时候,要使用key,这里key为:system.uname。也可以在zabbix_agentd配置文件中自定义key。
Device uniqueness criteria(设备唯一性标准):以IP地址作为被发现主机的标识
设置好检查之后,点”添加“,检查添加完成后,勾选”已启用“,最后点底部的“添加”
自定义key
在所有的agentd端编辑zabbix_agentd.conf文件,定义key。
定义key语法:
UserParameter=<key>,<shell command> 比如: UserParameter=get.os.type,head /etc/redhat-release
(2)创建发现Action
zabbix发现规则创建后,被发现的IP主机不会自动添加至zabbix监控列表,必须添加发现动作。设置如下:
依次选择:配置-->动作-->事件源(自动发现)-->创建动作。如下图:
设置好新的触发条件主机ip后,点击”添加“,然后点击”操作“:
点击”新的“:
根据实际需要添加”操作“,上图中添加了两个操作。最后点击”添加“即可,设置完成如下图:
(3)查看监控主机
设置好之后。依次点击:监测中-->自动发现,这样就可以查看到发现到的主机。如下图:
192.168.10.207主机是新添加的。
十、定义监控项目
需求:监控某台web的80端口连接数,并出图
步骤:
1、zabbix服务端(监控中心)创建监控项目
在被监控的主机上编写脚本,名称假设为:estab.sh
比如,被监控的主机是:192.168.10.200(node3)已开启80端口,脚本内容如下:
[root@node3 ~]# mkdir /myscript
[root@node3 ~]# chmod -R 777 /myscript
[root@node3 ~]# cd /myscript/
[root@node3 myscript]# vim estab.sh
#!/bin/bash
#
#获取80端口的并发连接数
netstat -ant | grep ':80' | grep -ci established
[root@node3 myscript]# chmod +x estab.sh
[root@node3 myscript]# ll
total 4
-rwxr-xr-x. 1 root root 16 Jul 15 23:40 estab.sh
[root@node3 myscript]#
编辑zabbix agent配置文件,添加以下内容:
UnsafeUserParameters=1 :表示自定义脚本,0为不使用自定义脚本
UserParameter=my.estab.count[*],/myscript/estab.sh :自定义监控项的key为:my.estab.count,后面的[*]里面写脚本的参数,如果没有参数则可以省略,脚本:/myscript/estab.sh,用绝对路径。
在agent配置文件中添加上面两行内容:
[root@node3 myscript]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
....
UnsafeUserParameters=1
UserParameter=my.estab.count[*],/myscript/estab.sh
....
重启zabbix_agentd服务:
[root@node3 myscript]# systemctl restart zabbix_agentd
[root@node3 myscript]#
到服务端验证一下自定义的key是否可用:
[root@node1 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.10.200 -p 10050 -k 'my.estab.count'
0
[root@node1 ~]#
结果是0,因为没有访问80端口。
参数解释:
-s:被监控的ip
-p:端口,agentd服务的默认端口是10050
-k:自定义的key
2、针对该项目以图形展现
zabbix服务端添加该监控项目,因为是监控node3,所以点击node3的监控项:
再点击”创建监控项“
进入监控项设置:
添加名称和键值,其他保持默认即可。
创建图形:
设置图形:
名称:自定义
监控项:点击”添加“,选择监控项“监控80端口并发连接数”,点击“选择”
最后点击“添加”即可。预览一下:
没有访问80端口,所以图形没数据。
3、创建触发器
点击“触发器”,点击“创建触发器”:
名称:自定义,选择警告,添加添加:如下图:
点击“插入”,最后保存退出即可。
十一、邮件告警
1、使用163或QQ邮箱发告警邮件。这里使用163邮箱。登陆163邮箱,开启POP3、IMAP、SMTP服务,开启并设置授权码。
2、到zabbix监控中心(web界面)设置报警媒介
默认有3个报警媒介。我们这里新建一个,点击创建“媒介类型”:
名称:自定义
类型:选择”脚本“
脚本名称:mail.py,自定义
参数:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}
点击:添加”即可
3、服务端编写发邮件脚本
脚本名称:mail.py,脚本放在:/myscript目录中
[root@node1 ~]# mkdir /myscript
[root@node1 ~]# vim /myscript/mail.py
#!/usr/bin/env python
#-*- coding:UTF-8 -*-
import os,sys
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from subprocess import *
def sed163mail(username,password,mailfrom,mailto,subject,content):
gserver = 'smtp.163.com'
gport = 25
try:
msg = MIMEText(unicode(content).encode('utf-8'))
msg['from'] = mailfrom
msg['to'] = mailto
msg['Reply-To'] = mailfrom
msg['Subject'] = subject
smtp = smtplib.SMTP(gserver,gport)
smtp.set_debuglevel(0)
smtp.ehlo()
smtp.login(username,password)
smtp.sendmail(mailfrom,mailto,msg.as_string())
smtp.close()
except Exception,err:
print "Send mail failed. Error:%s" % err
def main():
to=sys.argv[1]
subject=sys.argv[2]
content=sys.argv[3]
send163mail('邮箱账号','授权码','邮箱账号',to,subject,content)
if __name__ == "__mail__":
main()
使用Python脚本做邮件测试,没成功。
下面演示非脚本设置发邮件:
1、安装sendmail发送邮件工具。
[root@node1 ~]# yum install -y mailx sendmail
2、配置mail
编辑配置文件:/etc/mail.rc,添加内容如下:
set sendcharsets=iso-8859-1,utf-8
set from="exm@163.com" :根据实际填写发邮件的邮箱地址
set smtp="smtp.163.com" :这里使用163邮箱
set smtp-auth-user="exm@163.com" :根据实际填写发邮件的邮箱地址
set smtp-auth-password="123456" :发邮件的邮箱授权码
set smtp-auth=login
3、设置zabbix媒介类型
点击管理-->报警媒介类型-->创建媒体类型
参数解释:
名称:自定义一个名称
类型:选择电子邮件
SMTP 服务器:这里使用163的邮箱,所以是smtp.163.com
SMTP helo:邮箱地址,要跟前面中/etc/mail.rc 文件中设置的保持一致
SMTP 电邮:邮箱地址,要跟前面中/etc/mail.rc 文件中设置的保持一致
认证:选择用户名和密码认证
用户名称:发邮件的邮箱地址
密码:登录邮箱的密码。现在的163邮箱安全系数比较高,因此这个密码并不是你登录邮箱的真正密码,而是授权码。**授权码怎么得到,后面有介绍。
已启用:要勾上。
4、配置接收报警的邮箱
点击:管理-->用户-->Admin-->报警媒介-->添加:
参数解释:
类型:选择前面创建的报警媒介,也就是:163电子邮件
收件人:添加收件人的邮箱
其他的保持默认即可
5、添加报警触发器。
依次选择:配置-->动作-->事件源(触发器)-->创建动作:
根据实际情况设置。上图中设置了2个动作。
下面设置操作,点击”操作“:
标题:故障: {TRIGGER.STATUS},服务器:{HOST.NAME} 发生{TRIGGER.NAME}故障
消息内容:
告警主机:{HOST.NAME}
主机ip: {HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME} :{ITEM.VALUE}
当前状态:{TRIGGER.STATUS} :{ITEM.VALUE1}
事件ID:{EVENT.ID}
设置恢复:
标题:恢复: {TRIGGER.STATUS},服务器:{HOST.NAME} {TRIGGER.NAME}已恢复
消息内容:
告警主机:{HOST.NAME}
主机ip: {HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME} :{ITEM.VALUE}
当前状态:{TRIGGER.STATUS} :{ITEM.VALUE1}
事件ID:{EVENT.ID}
操作:点击新的
点击添加
设置完成之后:
十二、测试告警
停止几台机子的zabbix_agentd服务,过两分钟。就可以收到邮件
十三、监控mysql主从
主:192.168.10.205
从:192.168.10.200
主从搭建过程省略。
主:
MariaDB [(none)]> flush tables with read lock;
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> show master status;
+--------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------+----------+--------------+------------------+
| node1.000012 | 22189 | zabbix | |
+--------------+----------+--------------+------------------+
1 row in set (0.000 sec)
MariaDB [(none)]>
从:
MariaDB [(none)]> stop slave;
Query OK, 0 rows affected, 1 warning (0.000 sec)
MariaDB [(none)]> change master to master_host='192.168.10.205',master_user='repl',master_password='123456',master_log_file='node1.000012',master_log_pos=22189;
Query OK, 0 rows affected (0.015 sec)
MariaDB [(none)]> start slave
-> ;
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]>
1、在192.168.10.200上创建监控脚本:
[root@node3 ~]# mkdir /zabbix_sh
[root@node3 ~]# chmod 777 /zabbix_sh/
[root@node3 ~]# vim /zabbix_sh/mysql_ab_check.sh
#!/bin/bash
/usr/local/mysql/bin/mysql -uroot -e "show slave status\G" | grep -E "Slave_IO_Running|Slave_SQL_Running" | awk '{print $2}' | grep -ci yes
[root@node3 ~]# chmod +x /zabbix_sh/mysql_ab_check.sh
2、在zabbix_agentd.conf配置文件中添加:
UnsafeUserParameters=1
UserParameter=mysql.replication,sh /zabbix_sh/mysql_ab_check.sh
3、测试一下这个自定义的key是否可用
[root@node1 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.10.200 -k mysql.replication
2
[root@node1 ~]#
返回的是2,所以mysql主从配置成功。
4、zabbix 监控平台中添加监控项
先把主库解锁:
MariaDB [(none)]> unlock tables;
Query OK, 0 rows affected (0.005 sec)
MariaDB [(none)]>
添加监控项:
选择192.168.10.200主机,添加item:
如图:
图像设置:
创建触发器:
测试,停止从:
MariaDB [(none)]> stop slave;
过几分钟: