blog.zhuohua.store's Archiver

admin 发表于 2020-3-29 21:04

Zabbix自定义监控Linux下的MySQL

笺注:
被监控主机的Agent的安装可参考 [url=http://blog.zhuohua.store/viewthread.php?tid=271&extra=page%3D1]Zabbix使用Agent监控CentOS6/Redhat6[/url]
这是在 [url=http://blog.zhuohua.store/viewthread.php?tid=80&extra=page%3D1]LNMP一键安装包(lamp_CentOS6.9)[/url] 的基础上进行的。


被监控主机在命令行中输出MySQL的版本信息:( 使用数据库管理员root@localhost )
[root@zabbix_client ~]# mysql -u"root" -p"888" -h"localhost" -e "select version()"
[color=Red]Warning: Using a password on the command line interface can be insecure.[/color]
+------------+
| version()  |
+------------+
| 5.6.29-log |
+------------+
[root@zabbix_client ~]#

注释:
-h"localhost" 是可以省略的;


只显示指定的值:
[root@zabbix_client ~]# mysql -u"root" -p"888" -e "select version()" |tail -1 |awk -F- '{print $1}'
[color=Red]Warning: Using a password on the command line interface can be insecure.[/color]
5.6.29
[root@zabbix_client ~]#

[root@zabbix_client ~]# mysql -u"root" -p"888" [color=DarkRed]-sN[/color] -e "select version()" |awk -F- '{print $1}'
[color=Red]Warning: Using a password on the command line interface can be insecure.[/color]
5.6.29
[root@zabbix_client ~]#

[root@zabbix_client ~]# mysql -u"root" -p"888" [color=DarkRed]-sN[/color] -e "show variables like '%max_connections%';" |awk '{print $2}'
[color=Red]Warning: Using a password on the command line interface can be insecure.[/color]
500
[root@zabbix_client ~]#

备注:
这个[color=Red]Warning[/color]在mysql5.6.6版本及以上都有的;限制在命令行输入密码。
这个[color=Red]Warning[/color]会让Zabbix无法获取到值。



被监控主机再授权数据库用户zhuohua@localhost(数据库用户可以不要密码的),只能本地登录,对所有的库有完全控制的权限:
[root@zabbix_client ~]# mysql -u"root" -p"888" -e "grant all on *.* to zhuohua@localhost;flush privileges;"
[color=Red]Warning: Using a password on the command line interface can be insecure.[/color]
[root@zabbix_client ~]#


查看本地数据库用户zhuohua@localhost的权限:
[root@zabbix_client ~]# mysql -u"root" -p"888" -e "show grants for zhuohua@localhost;"
[color=Red]Warning: Using a password on the command line interface can be insecure.[/color]
+------------------------------------------------------+
| Grants for zhuohua@localhost                         |
+------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'zhuohua'@'localhost' |
+------------------------------------------------------+
[root@zabbix_client ~]#



使用没有密码的MySQL用户,就没有上面那个[color=Red]Warning[/color]了:
[root@zabbix_client ~]# mysql -u"zhuohua" -sN -e "select version()" |awk -F- '{print $1}'
[color=Purple]5.6.29[/color]
[root@zabbix_client ~]#


测试输出的结果跟自定义的结果是否相符:
[root@zabbix_client ~]# mysql -u"zhuohua" -sN -e "select version()" |awk -F- '{print $1}' |grep -c "[color=Blue]5.6.29[/color]"
[color=Purple]1[/color]
[root@zabbix_client ~]#

[root@zabbix_client ~]# mysql -u"zhuohua" -sN -e "select version()" |awk -F- '{print $1}' |grep -c "[color=Blue]5.6.88[/color]"
[color=Purple]0[/color]
[root@zabbix_client ~]#

返回值: 1相符;0不相符。



查看MySQL的最大连接数:
[root@zabbix_client ~]# mysql -u"zhuohua" -sN -e "show variables like '%max_connections%';" |awk '{print $2}'
[color=Purple]500[/color]
[root@zabbix_client ~]#


测试输出的结果跟自定义的结果是否相符:
[root@zabbix_client ~]# mysql -u"zhuohua" -sN -e "show variables like '%max_connections%';" |awk '{print $2}' |grep -c [color=Blue]500[/color]
[color=Purple]1[/color]
[root@zabbix_client ~]#

[root@zabbix_client ~]# mysql -u"zhuohua" -sN -e "show variables like '%max_connections%';" |awk '{print $2}' |grep -c [color=Blue]88[/color]
[color=Purple]0[/color]
[root@zabbix_client ~]#

返回值: 1相符;0不相符。





######

创建一个库db1:
[root@zabbix_client ~]# mysql -u"zhuohua" -e "Create database db1;"
[root@zabbix_client ~]#


[root@zabbix_client ~]# mysql -u"zhuohua" -e "Show create database db1;"
+----------+-----------------------------------------------------------------+
| Database | Create Database                                                 |
+----------+-----------------------------------------------------------------+
| db1      | [color=Purple]CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8mb4 */[/color] |
+----------+-----------------------------------------------------------------+
[root@zabbix_client ~]#

注释:库db1的字符集为 utf8mb4_general_ci



在库db1中创建表:
[root@zabbix_client ~]# mysql -u"zhuohua" -e "use db1;Create table Table1(Name varchar(20),Chinese float);"
[root@zabbix_client ~]#


在库db1中插入测试的数据:
[root@zabbix_client ~]# mysql -u"zhuohua" -e "Use db1;INSERT into Table1(Name,Chinese) values ('Zhuohua',8);"
[root@zabbix_client ~]#

[root@zabbix_client ~]# mysql -u"zhuohua" -e "Use db1;INSERT into Table1(Name,Chinese) values ('Python',8.8);"
[root@zabbix_client ~]#

[root@zabbix_client ~]# mysql -u"zhuohua" -e "Use db1;INSERT into Table1(Name,Chinese) values ('李大杰',-8.8);"
[root@zabbix_client ~]#



输出SQL语句执行后的返回值:
[root@zabbix_client ~]# mysql -u"zhuohua" -sN -e "Select Chinese from db1.Table1 where Name = 'Zhuohua'"
[color=Purple]8[/color]
[root@zabbix_client ~]#

[root@zabbix_client ~]# mysql -u"zhuohua" -sN -e "Select Chinese from db1.Table1 where Name = 'Python';"
[color=Purple]8.8[/color]
[root@zabbix_client ~]#

[root@zabbix_client ~]# mysql -u"zhuohua" -P"3306" -h"localhost" -sN -e "Select Chinese from db1.Table1 where Name = '李大杰'"
[color=Purple]-8.8[/color]
[root@zabbix_client ~]#



#######

修改被监控主机的Agent配置文件:
[root@zabbix_client ~]# vi /etc/zabbix/zabbix_agentd.conf

# UnsafeUserParameters=0
修改为:(启用该功能)
UnsafeUserParameters=[color=Blue]1[/color]

接着插入代码:
UserParameter=[color=DarkRed]max_connections[/color],mysql -u"zhuohua" -sN -e "show variables like '%max_connections%';" |awk '{print $2}'

UserParameter=[color=DarkRed]Command_1[/color],mysql -u"zhuohua" -sN -e "Select Chinese from db1.Table1 where Name = 'Zhuohua'"

UserParameter=[color=DarkRed]Command_2[/color],mysql -u"zhuohua" -sN -e "Select Chinese from db1.Table1 where Name = 'Python';"

UserParameter=[color=DarkRed]Command_3[/color],/bin/bash /script/xx.sh


保存好配置文件后,重启zabbix-agent:
[root@zabbix_client ~]# service zabbix-agent restart
Shutting down Zabbix agent: [确定]
Starting Zabbix agent: [确定]


使用Shell脚本输出SQL语句执行后的返回值:
[root@zabbix_client ~]# cat /script/xx.sh
#!/bin/bash
mysql -u"zhuohua" -sN -e "Select Chinese from db1.Table1 where Name = '李大杰'"

脚本运行的结果:
[root@zabbix_client ~]# bash /script/xx.sh
[color=Purple]-8.8[/color]
[root@zabbix_client ~]#

设置脚本权限:
[root@zabbix_client ~]# chmod a+x /script/xx.sh
[root@zabbix_client ~]#


[size=4]备注:这相当于在被监控主机上进行本地监控,所以被监控主机无需打开防火墙的TCP 3306端口。[/size]





##############
##############

在Zabbix服务器测试,验证能否获取被监控主机(192.168.168.130)的键值:

[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k [color=DarkRed]max_connections[/color]
[color=Purple]500[/color]
[root@centos8 ~]#

[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k [color=DarkRed]Command_1[/color]
[color=Purple]8[/color]
[root@centos8 ~]#

[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k [color=DarkRed]Command_2[/color]
[color=Purple]8.8[/color]
[root@centos8 ~]#

[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k [color=DarkRed]Command_3[/color]
[color=Purple]-8.8[/color]
[root@centos8 ~]#



##################Zabbix添加被监控主机:

配置》主机》创建主机:(主机名称无需与被监控主机的真实主机名一致;群组可以随便选)
[attach]20705[/attach]
注释:
使用agent代理程序的接口。
使用 TCP 10050 端口。


主机MySQL_1添加成功:(主机可以不用模板的)
[attach]20706[/attach]



在主机MySQL_1中创建监控项:
名称: MySQL max_connections
键值: [color=DarkRed]max_connections[/color]
信息类型: [color=Blue]数字(无正负)[/color]
[attach]20707[/attach]
备注:其他地方保持默认,点击底下的“添加”按键。



在主机MySQL_1中创建监控项:
名称: MySQL Command_1
键值: [color=DarkRed]Command_1[/color]
信息类型: [color=Blue]浮点数[/color]
[attach]20708[/attach]
备注:其他地方保持默认,点击底下的“添加”按键。



在主机MySQL_1中创建监控项:
名称: MySQL Command_2
键值: [color=DarkRed]Command_2[/color]
信息类型: [color=Blue]浮点数[/color]
[attach]20709[/attach]
备注:其他地方保持默认,点击底下的“添加”按键。



在主机MySQL_1中创建监控项:
名称: MySQL Command_3
键值: [color=DarkRed]Command_3[/color]
信息类型: [color=Blue]浮点数[/color]
[attach]20710[/attach]
备注:其他地方保持默认,点击底下的“添加”按键。



######

给监控项“MySQL max_connections”创建图形:
[attach]20711[/attach]
监控项:
[attach]20712[/attach]



给监控项“MySQL Command_1”创建图形:
[attach]20713[/attach]
监控项:
[attach]20714[/attach]



给监控项“MySQL Command_2”创建图形:
[attach]20715[/attach]
监控项:
[attach]20716[/attach]



给监控项“MySQL Command_3”创建图形:
[attach]20717[/attach]
监控项:
[attach]20718[/attach]



查看图形:

监测》图形:
[attach]20719[/attach]

[attach]20720[/attach]

[attach]20721[/attach]



[attach]20722[/attach]

[attach]20723[/attach]

[attach]20724[/attach]



[attach]20725[/attach]

[attach]20726[/attach]

[attach]20727[/attach]



[attach]20728[/attach]

[attach]20729[/attach]

[attach]20730[/attach]



######

给主机MySQL_1的监控项“MySQL max_connections”创建一个触发器:(返回值大于1000就告警)

自定义名称: MySQL max_connections is bigger than 1000
严重性: 一般严重
[attach]20731[/attach]

插入表达式:( 监控项  [color=Blue]MySQL_1: MySQL max_connections[/color] )
[attach]20732[/attach]

自动生成的表达式:(触发器的表达式要用到监控项中的键值)
{MySQL_1:[color=DarkRed]max_connections[/color].last()}>1000
[attach]20733[/attach]

本页拖下去:
[attach]20734[/attach]



主机MySQL_1的图形“MySQL max_connections image”会自动发生改变:
[attach]20735[/attach]

[attach]20736[/attach]

[attach]20737[/attach]



#####

修改被监控主机的MySQL的最大连接数:( 没有代码就插入,要在[color=DarkRed][mysqld][/color]下面 )
[root@zabbix_client ~]# vi /etc/my.cnf
[color=DarkRed][mysqld][/color]
max_connections = 500
改为
max_connections = 1001


保存好配置文件后,重启MySQL服务:
[root@zabbix_client ~]# service mysql restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
[root@zabbix_client ~]#



被监控主机本地测试:
[root@localhost ~]# mysql -u"zhuohua" -sN -e "show variables like '%max_connections%';" |awk '{print $2}'
[color=Purple]1001[/color]
[root@localhost ~]#


在Zabbix服务器远程测试:
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k [color=DarkRed]max_connections[/color]
[color=Purple]1001[/color]
[root@centos8 ~]#



当监控项“MySQL max_connections”的返回值大于1000时,仪表板会如下图显示:(显示对应触发器的名称)
[color=Blue]MySQL max_connections is bigger than 1000[/color]
[attach]20738[/attach]

[attach]20739[/attach]



再次查看主机MySQL_1的图形“MySQL max_connections image”:
[attach]20740[/attach]

[attach]20741[/attach]

[attach]20742[/attach]



############
############

在主机MySQL_1的监控项中更改“单位”:
单位: [color=Blue]!个[/color]
[attach]20743[/attach]
备注:其他地方保持默认,点击底下的“更新”按键。


再次查看主机MySQL_1的图形“MySQL max_connections image”:
[attach]20744[/attach]

[attach]20745[/attach]

[attach]20746[/attach]





相关文章:
[url=http://blog.zhuohua.store/viewthread.php?tid=230&extra=page%3D1]使用SQLyog远程管理MySQL[/url]
[url=http://blog.zhuohua.store/viewthread.php?tid=338&page=1&extra=#pid413]MySQL5.6使用mysql_config_editor[/url]

[url=http://blog.zhuohua.store/viewthread.php?tid=397&page=1&extra=#pid825]MySQL的最大连接数/最大可打开表数/最大可打开文件数[/url]

[url=http://blog.zhuohua.store/viewthread.php?tid=332&page=1&extra=#pid407]Zabbix使用模板监控Linux下的MySQL[/url]
[url=http://blog.zhuohua.store/viewthread.php?tid=336&extra=page%3D1]Zabbix创建模板监控Windows下的MariaDB[/url]

[url=http://blog.zhuohua.store/viewthread.php?tid=363&page=1&extra=#pid440]Zabbix调用Python3脚本监控Linux下的MySQL[/url]
[url=http://blog.zhuohua.store/viewthread.php?tid=520&extra=page%3D1]Zabbix5.0.12_调用Shell脚本监控Linux下的MySQL[/url]

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.