笺注:
被监控主机的Agent的安装可参考 Zabbix使用Agent监控CentOS6/Redhat6
这是在 LNMP一键安装包(lamp_CentOS6.9) 的基础上进行的。
被监控主机在命令行中输出MySQL的版本信息:( 使用数据库管理员root@localhost )
[root@zabbix_client ~]# mysql -u"root" -p"888" -h"localhost" -e "select version()"
Warning: Using a password on the command line interface can be insecure.
+------------+
| 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}'
Warning: Using a password on the command line interface can be insecure.
5.6.29
[root@zabbix_client ~]#
[root@zabbix_client ~]# mysql -u"root" -p"888" -sN -e "select version()" |awk -F- '{print $1}'
Warning: Using a password on the command line interface can be insecure.
5.6.29
[root@zabbix_client ~]#
[root@zabbix_client ~]# mysql -u"root" -p"888" -sN -e "show variables like '%max_connections%';" |awk '{print $2}'
Warning: Using a password on the command line interface can be insecure.
500
[root@zabbix_client ~]#
备注:
这个Warning在mysql5.6.6版本及以上都有的;限制在命令行输入密码。
这个Warning会让Zabbix无法获取到值。
被监控主机再授权数据库用户zhuohua@localhost(数据库用户可以不要密码的),只能本地登录,对所有的库有完全控制的权限:
[root@zabbix_client ~]# mysql -u"root" -p"888" -e "grant all on *.* to zhuohua@localhost;flush privileges;"
Warning: Using a password on the command line interface can be insecure.
[root@zabbix_client ~]#
查看本地数据库用户zhuohua@localhost的权限:
[root@zabbix_client ~]# mysql -u"root" -p"888" -e "show grants for zhuohua@localhost;"
Warning: Using a password on the command line interface can be insecure.
+------------------------------------------------------+
| Grants for zhuohua@localhost |
+------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'zhuohua'@'localhost' |
+------------------------------------------------------+
[root@zabbix_client ~]#
使用没有密码的MySQL用户,就没有上面那个Warning了:
[root@zabbix_client ~]# mysql -u"zhuohua" -sN -e "select version()" |awk -F- '{print $1}'
5.6.29
[root@zabbix_client ~]#
测试输出的结果跟自定义的结果是否相符:
[root@zabbix_client ~]# mysql -u"zhuohua" -sN -e "select version()" |awk -F- '{print $1}' |grep -c "5.6.29"
1
[root@zabbix_client ~]#
[root@zabbix_client ~]# mysql -u"zhuohua" -sN -e "select version()" |awk -F- '{print $1}' |grep -c "5.6.88"
0
[root@zabbix_client ~]#
返回值: 1相符;0不相符。
查看MySQL的最大连接数:
[root@zabbix_client ~]# mysql -u"zhuohua" -sN -e "show variables like '%max_connections%';" |awk '{print $2}'
500
[root@zabbix_client ~]#
测试输出的结果跟自定义的结果是否相符:
[root@zabbix_client ~]# mysql -u"zhuohua" -sN -e "show variables like '%max_connections%';" |awk '{print $2}' |grep -c 500
1
[root@zabbix_client ~]#
[root@zabbix_client ~]# mysql -u"zhuohua" -sN -e "show variables like '%max_connections%';" |awk '{print $2}' |grep -c 88
0
[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 | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
+----------+-----------------------------------------------------------------+
[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'"
8
[root@zabbix_client ~]#
[root@zabbix_client ~]# mysql -u"zhuohua" -sN -e "Select Chinese from db1.Table1 where Name = 'Python';"
8.8
[root@zabbix_client ~]#
[root@zabbix_client ~]# mysql -u"zhuohua" -P"3306" -h"localhost" -sN -e "Select Chinese from db1.Table1 where Name = '李大杰'"
-8.8
[root@zabbix_client ~]#
#######
修改被监控主机的Agent配置文件:
[root@zabbix_client ~]# vi /etc/zabbix/zabbix_agentd.conf
# UnsafeUserParameters=0
修改为:(启用该功能)
UnsafeUserParameters=1
接着插入代码:
UserParameter=max_connections,mysql -u"zhuohua" -sN -e "show variables like '%max_connections%';" |awk '{print $2}'
UserParameter=Command_1,mysql -u"zhuohua" -sN -e "Select Chinese from db1.Table1 where Name = 'Zhuohua'"
UserParameter=Command_2,mysql -u"zhuohua" -sN -e "Select Chinese from db1.Table1 where Name = 'Python';"
UserParameter=Command_3,/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
-8.8
[root@zabbix_client ~]#
设置脚本权限:
[root@zabbix_client ~]# chmod a+x /script/xx.sh
[root@zabbix_client ~]#
备注:这相当于在被监控主机上进行本地监控,所以被监控主机无需打开防火墙的TCP 3306端口。
##############
##############
在Zabbix服务器测试,验证能否获取被监控主机(192.168.168.130)的键值:
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k max_connections
500
[root@centos8 ~]#
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k Command_1
8
[root@centos8 ~]#
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k Command_2
8.8
[root@centos8 ~]#
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k Command_3
-8.8
[root@centos8 ~]#
##################Zabbix添加被监控主机:
配置》主机》创建主机:(主机名称无需与被监控主机的真实主机名一致;群组可以随便选)
注释:
使用agent代理程序的接口。
使用 TCP 10050 端口。
主机MySQL_1添加成功:(主机可以不用模板的)
在主机MySQL_1中创建监控项:
名称: MySQL max_connections
键值: max_connections
信息类型: 数字(无正负)
备注:其他地方保持默认,点击底下的“添加”按键。
在主机MySQL_1中创建监控项:
名称: MySQL Command_1
键值: Command_1
信息类型: 浮点数
备注:其他地方保持默认,点击底下的“添加”按键。
在主机MySQL_1中创建监控项:
名称: MySQL Command_2
键值: Command_2
信息类型: 浮点数
备注:其他地方保持默认,点击底下的“添加”按键。
在主机MySQL_1中创建监控项:
名称: MySQL Command_3
键值: Command_3
信息类型: 浮点数
备注:其他地方保持默认,点击底下的“添加”按键。
######
给监控项“MySQL max_connections”创建图形:
监控项:
给监控项“MySQL Command_1”创建图形:
监控项:
给监控项“MySQL Command_2”创建图形:
监控项:
给监控项“MySQL Command_3”创建图形:
监控项:
查看图形:
监测》图形:
######
给主机MySQL_1的监控项“MySQL max_connections”创建一个触发器:(返回值大于1000就告警)
自定义名称: MySQL max_connections is bigger than 1000
严重性: 一般严重
插入表达式:( 监控项 MySQL_1: MySQL max_connections )
自动生成的表达式:(触发器的表达式要用到监控项中的键值)
{MySQL_1:max_connections.last()}>1000
本页拖下去:
主机MySQL_1的图形“MySQL max_connections image”会自动发生改变:
#####
修改被监控主机的MySQL的最大连接数:( 没有代码就插入,要在[mysqld]下面 )
[root@zabbix_client ~]# vi /etc/my.cnf
[mysqld]
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}'
1001
[root@localhost ~]#
在Zabbix服务器远程测试:
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k max_connections
1001
[root@centos8 ~]#
当监控项“MySQL max_connections”的返回值大于1000时,仪表板会如下图显示:(显示对应触发器的名称)
MySQL max_connections is bigger than 1000
再次查看主机MySQL_1的图形“MySQL max_connections image”:
############
############
在主机MySQL_1的监控项中更改“单位”:
单位: !个
备注:其他地方保持默认,点击底下的“更新”按键。
再次查看主机MySQL_1的图形“MySQL max_connections image”:
相关文章:
使用SQLyog远程管理MySQL
MySQL5.6使用mysql_config_editor
MySQL的最大连接数/最大可打开表数/最大可打开文件数
Zabbix使用模板监控Linux下的MySQL
Zabbix创建模板监控Windows下的MariaDB
Zabbix调用Python3脚本监控Linux下的MySQL
Zabbix5.0.12_调用Shell脚本监控Linux下的MySQL |