和监控nginx一样,寻找合适的脚本,不过,脚本并不是那么容易就可以找得到的! 要么自己手动去写,要么自己找到的拿来修改,都是需要花费代价的!
zabbix3.0 server已自带mysql的模板了,只需配置好agent客户端,然后在web端给主机增加模板就行了。
Zabbix_agent客户端操作:
安装zabbix_agent,配置监控远程主机,有MySQL的客户端
https://blog.csdn.net/w1206507055/article/details/125261714?spm=1001.2014.3001.5502
mysql> grant all on *.* to zabbix@'localhost' identified by "123456";
mysql> flush privileges;
cp模版到/usr/local/zabbix/etc/zabbix_agentd.conf.d/
[root@mysql-01 ~]# cp /root/zabbix-4.2.6/conf/zabbix_agentd/userparameter_mysql.conf /usr/local/zabbix/etc/zabbix_agentd.conf.d/
[root@mysql-01 ~]#vim /usr/local/zabbix/etc/zabbix_agentd.conf
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/ #启用引用此目录文件
在zabbix_agent服务目录下创建.my.cnf 连接文件
[root@mysql-01 ~]# vim /usr/local/zabbix/etc/.my.cnf
#Zabbix Agent
[mysql]
host=localhost
user=zabbix
password=123456
socket=/usr/local/mysql/mysql.sock
[mysqladmin]
host=localhost
user=zabbix
password=123456
socket=/usr/local/mysql/mysql.sock
然后查看 userparameter_mysql.conf 文件,看到类似 HOME=/var/lib/zabbix 的路径设置,把路径全都替换为 /usr/local/zabbix/etc/,也就是上面的.my.cnf文件所在的目录路径。
[root@mysql-01 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
将HOME=/var/lib/zabbix 全部改成 HOME=/usr/local/zabbix/etc/
一共是3处要替换
:%s-/var/lib/zabbix-/usr/local/zabbix/etc/
重启zabbix_agentd
[root@mysql-01 ~]# systemctl restart zabbix_agentd
接着在zabbix_server服务端进行命令行测试
[root@zabbix_server ~]# zabbix_get -s 192.168.10.6 -p 10050 -k "mysql.status[Uptime]"
sh: mysql: command not found
解决方法:
在userparameter_mysql.conf中关于mysql命令前面添加绝对路径,然后在重启zabbix_agentd服务。先which mysql 把路径添加到mysql前面
[root@zabbix_server ~]# zabbix_get -s 192.168.10.6 -p 10050 -k "mysql.status[Uptime]"
如果出现类似这一串key的数字,就说明配置ok,服务端能监控到客户端的mysql数据了!
成功啦,之后在监控界面增加主机对应的MySQL模板就ok了。
登录zabbix监控界面,在“配置”-“模板”里可以看到自带的mysql监控模板
在相应主机监控配置里添加mysql的监控模版(zabbix自带的)即可。
【1】监控mysql的带宽:在zabbix前端可以实时查看mysql发送接收的字节数。其中bytes received表示从所有客户端接收到的字节数,bytes sent表示发送给所有客户端的字节数。
【2】监控mysql的操作状态:在zabbix前端可以实时查看各种SQL语句每秒钟的操作次数。
Zabbix监控服务端、客户端都已经部署完成,被监控主机已经添加,Zabiix监控运行正常。
在Zabbix服务端设置邮件报警,当被监控主机宕机或者达到触发器预设值时,会自动发送报警邮件到指定邮箱。
邮件服务可以使用系统自带的邮件服务来发送邮件或者使用其他邮件服务调用第三方邮件来发送警告邮件
安装mailx
[root@zabbix_server ~]# yum -y install mailx
编辑mailx的配置文件
[root@zabbix_server ~]#vim /etc/mail.rc
在最末尾添加如下信息
set [email protected] #写个邮箱
set smtp=smtp.qq.com
set smtp-auth-password=xxxxx #你的密码 注意:此为qq邮箱设置的客户端授权码,授权码是用于登录第三方邮件客户端的专用密码。 #不知道授权码百度一下
set smtp-auth=login
不管你使用的是163/126邮箱还是qq邮箱,你都必须开通pop3服务,而且163/126/qq邮箱还要求使用第三方客户端发送邮件时必须使用授权码验证。
测试邮件
[root@zabbix ~]# echo "zabbix test mail" |mailx -s "zabbix" [email protected]
编写脚本
[root@zabbix ~]# cd /usr/local/zabbix/share/zabbix/alertscripts/
[root@zabbix alertscripts]# vim sendmail.sh
#!/bin/bash
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mailx -s "${subject}" $1 >>/tmp/sendmail.log 2>&1
授权:
[root@zabbix alertscripts]# touch /tmp/sendmail.log
[root@zabbix alertscripts]# chmod 777 /tmp/sendmail.log
[root@zabbix alertscripts]# chown zabbix:zabbix sendmail.sh
[root@zabbix alertscripts]# chmod +x sendmail.sh
修改主配置文件,让服务读取到这个脚本:
[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_server.conf
添加一行:
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
测试发送脚本
/usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh [email protected] "测试邮件标题" "测试邮件内容"
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
很多人安装zabbix 3.0之后,写的脚本一直发信不成功,手动执行时可以的。
这是因为zabbix3.0之后,可以自定义参数了。所以不写参数,它是不会传参数的。
在2.x版本不存在这个问题,默认会传3个参数。
设置动作
新建动作:Action-Email
操作
说明:
默认操作步骤持续时间:重新发送报警的时间
操作细节:重复发几次,1-0次就是按照默认的时间重复发送
步骤持续时间:重发的时间,0为使用默认的时间
发送到用户群组:发送给哪个组(组里的用户都可以收到,前提是用户配置了media type的参数)
发送到用户:发送给那个用户
仅送到;使用那个media type来发送
这里可以配置升级报警,就是1-3次报警发给谁,4-6报警发给谁,间隔多长时间,就是在添加几个,用户或者组不一样,发送的media type也可以不一样。
恢复操作
关闭 zabbix 客户端服务 zabbix_agentd
[root@mysql-01 ~]# /etc/init.d/zabbix_agentd stop
延迟比较大,大概要5分钟左右
可以在日志看送达状态: