笺注:这是在 LNMP一键安装包(lnmpa_CentOS6.9) 的基础上进行的。
被监控主机的数据库管理员root@localhost使用密码验证登录MySQL:
mysql -u"root" -p"888"
查看当前登录的数据库用户:
mysql> Select user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
mysql>
被监控主机查看自己的数据库版本:
mysql> Select version();
+------------+
| version() |
+------------+
| 5.7.11-log |
+------------+
1 row in set (0.00 sec)
显示所有的库:
mysql> Show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.43 sec)
mysql>
注释:以上四个库是MySQL5.7默认就有的。
再授权数据库用户zhuohua@localhost(密码886),只能本地登录,对库mysql有完全控制的权限:
mysql> grant all on mysql.* to zhuohua@localhost identified by '886';
Query OK, 0 rows affected, 1 warning (0.10 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)
mysql>
查看本地数据库用户zhuohua@localhost的权限:
mysql> Show grants for zhuohua@localhost;
+------------------------------------------------------------+
| Grants for zhuohua@localhost |
+------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'zhuohua'@'localhost' |
| GRANT ALL PRIVILEGES ON `mysql`.* TO 'zhuohua'@'localhost' |
+------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql>
查看所有数据库用户及其主机信息:
select user,host from mysql.user;
查看MySQL的最大连接数:
show variables like '%max_connections%';
查看MySQL当前打开的连接数:
show status like 'threads_connected';
查看MySQL当前处于激活状态的连接数:
show status like 'threads_running';
查看单个库(mysql)的大小:(以MB为单位)
mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from information_schema.TABLES where table_schema = 'mysql';
+--------+
| data |
+--------+
| 2.21MB |
+--------+
1 row in set (0.50 sec)
mysql>
查看单个库(mysql)的大小:(以字节为单位)
mysql> select concat(sum(DATA_LENGTH)) as data from information_schema.TABLES where table_schema = 'mysql';
+---------+
| data |
+---------+
| 2312172 |
+---------+
1 row in set (0.01 sec)
mysql>
查看当前数据库的用户数量:(库mysql的表user里面包含了数据库中所有用户的信息)
mysql> select count(*) from mysql.user;
+----------+
| count(*) |
+----------+
| 3 |
+----------+
1 row in set (0.00 sec)
mysql>
############
被监控主机上安装第三方库(PyMySQL),可参考:Python3脚本管理Linux下的MySQL
查看PyMySQL的版本:
[root@zabbix_client ~]# pip3 freeze
PyMySQL==0.10.1
[root@zabbix_client ~]#
注释:PyMySQL可以管理MySQL,也可以管理MariaDB
######
在被监控主机上创建Python3脚本:(输出MySQL的最大连接数)
[root@zabbix_client ~]# cat /usr/local/xx.py
#coding=utf-8
import pymysql
def db_connect():
#打开数据库连接;本地连接(localhost)、用户名、密码、其中一个库(mysql)的名称、端口号、字符集:
db=pymysql.connect("localhost", "zhuohua", "886", "mysql",3306,charset="utf8")
cursor=db.cursor()
cursor.execute("show variables like '%max_connections%'") #执行SQL语句
Results=cursor.fetchone()
#print (Results) # ('max_connections', '500')
#print (type(Results)) # <class 'tuple'>
#print (Results[1]) # 500
#print (type(Results[1])) # <class 'str'>
Key_1 = int(Results[1])
print (Key_1)
#print (type(Key_1)) # <class 'int'>
db.close()
def main():
try:
db_connect()
except Exception as e:
print(e)
if __name__ == "__main__":
main()
设置脚本权限:
[root@zabbix_client ~]# chmod a+x /usr/local/xx.py
[root@zabbix_client ~]#
脚本运行的结果:
[root@zabbix_client ~]# python3 /usr/local/xx.py
500
[root@zabbix_client ~]#
######
在被监控主机上创建Python3脚本:(输出MySQL当前处于激活状态的连接数)
[root@zabbix_client ~]# cat /usr/local/yy.py
#coding=utf-8
import pymysql
def db_connect():
db=pymysql.connect("localhost", "zhuohua", "886", "mysql",3306,charset="utf8")
cursor=db.cursor()
cursor.execute("show status like 'threads_running'") #执行SQL语句
Results=cursor.fetchone()
#print (Results) # ('Threads_running', '1')
#print (type(Results)) # <class 'tuple'>
#print (Results[1]) # 1
#print (type(Results[1])) # <class 'str'>
Key_1 = int(Results[1])
print (Key_1)
#print (type(Key_1)) # <class 'int'>
db.close()
def main():
try:
db_connect()
except Exception as e:
print(e)
if __name__ == "__main__":
main()
设置脚本权限:
[root@zabbix_client ~]# chmod a+x /usr/local/yy.py
[root@zabbix_client ~]#
脚本运行的结果:
[root@zabbix_client ~]# python3 /usr/local/yy.py
1
[root@zabbix_client ~]#
######
在被监控主机上创建Python3脚本:(输出当前数据库的用户数量)
[root@zabbix_client ~]# cat /usr/local/zz.py
#coding=utf-8
import pymysql
def db_connect():
db=pymysql.connect("localhost", "zhuohua", "886", "mysql",3306,charset="utf8")
cursor=db.cursor()
SQL_1 = "select count(*) from user;" #SQL语句
cursor.execute(SQL_1) #执行SQL语句
Results=cursor.fetchone()
#print (Results) # (3,)
#print (type(Results)) # <class 'tuple'>
print (Results[0])
#print (type(Results[0])) # <class 'int'>
db.close()
def main():
try:
db_connect()
except Exception as e:
print(e)
if __name__ == "__main__":
main()
设置脚本权限:
[root@zabbix_client ~]# chmod a+x /usr/local/zz.py
[root@zabbix_client ~]#
脚本运行的结果:
[root@zabbix_client ~]# python3 /usr/local/zz.py
3
[root@zabbix_client ~]#
######
在被监控主机上创建Python3脚本:(输出单个库(mysql)的大小,以字节为单位)
[root@zabbix_client ~]# cat /usr/local/kk.py
#coding=utf-8
import pymysql
def db_connect():
db=pymysql.connect("localhost", "zhuohua", "886", "mysql",3306,charset="utf8")
cursor=db.cursor()
SQL_1 = "select concat(sum(DATA_LENGTH)) as data from information_schema.TABLES where table_schema = 'mysql';"
cursor.execute(SQL_1) #执行SQL语句
Results=cursor.fetchone()
#print (Results) # (b'2312172',)
#print (type(Results)) # <class 'tuple'>
#print (Results[0]) # b'2312172'
#print (type(Results[0])) # <class 'bytes'>
Key_1 = int(Results[0])
print (Key_1)
#print (type(Key_1)) # <class 'int'>
db.close()
def main():
try:
db_connect()
except Exception as e:
print(e)
if __name__ == "__main__":
main()
设置脚本权限:
[root@zabbix_client ~]# chmod a+x /usr/local/kk.py
[root@zabbix_client ~]#
脚本运行的结果:
[root@zabbix_client ~]# python3 /usr/local/kk.py
2312172
[root@zabbix_client ~]#
###############
被监控主机的Agent的安装可参考 Zabbix使用Agent监控CentOS6/Redhat6
修改被监控主机的Agent配置文件:
[root@zabbix_client ~]# vi /etc/zabbix/zabbix_agentd.conf
# UnsafeUserParameters=0
修改为:(启用该功能)
UnsafeUserParameters=1
插入:
UserParameter=command_1,/usr/bin/python3 /usr/local/xx.py
UserParameter=command_2,/usr/bin/python3 /usr/local/yy.py
UserParameter=command_3,/usr/bin/python3 /usr/local/zz.py
UserParameter=command_4,/usr/bin/python3 /usr/local/kk.py
如下图:
保存好配置文件后,重启zabbix-agent:
[root@zabbix_client ~]# service zabbix-agent restart
Shutting down Zabbix agent: [确定]
Starting Zabbix agent: [确定]
[root@zabbix_client ~]#
备注:这相当于在被监控主机上进行本地监控,所以被监控主机无需打开防火墙的TCP 3306端口。
######
在Zabbix服务器测试,验证能否获取被监控主机(192.168.168.130)的键值:
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -p10050 -k "command_1"
500
[root@centos8 ~]#
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -p10050 -k command_2
1
[root@centos8 ~]#
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k "command_3"
3
[root@centos8 ~]#
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k command_4
2312172
[root@centos8 ~]#
##################Zabbix添加被监控主机:
配置》主机》创建主机:(主机名称无需与被监控主机的真实主机名一致;群组可以随便选;IP地址那里要输入被监控主机的IP地址;端口为10050)
注释:
使用agent代理程序的接口。
使用 TCP 10050 端口。
主机MySQL5.7_Server_01添加成功:(主机可以不用模板的)
给“MySQL的最大连接数”创建监控项:
自定义名称: MySQL command_1
键值: command_1
信息类型: 数字(无正负)
单位: !个
备注:其他地方保持默认,点击底下的“添加”按键。
给“MySQL当前处于激活状态的连接数”创建监控项:
自定义名称: MySQL command_2
键值: command_2
信息类型: 数字(无正负)
单位: !个
备注:其他地方保持默认,点击底下的“添加”按键。
给“当前数据库的用户数量”创建监控项:
自定义名称: MySQL command_3
键值: command_3
信息类型: 浮点数
单位: !个
备注:其他地方保持默认,点击底下的“添加”按键。
给“单个库(mysql)的大小”创建监控项:
自定义名称: MySQL command_4
键值: command_4
信息类型: 数字(无正负)
单位: B
备注:
使用单位“B”时,结果在单位换算时会每超过1024就除以1024,保留两位小数,是四舍五入;
######
给监控项“MySQL command_1”创建图形:
监控项:
给监控项“MySQL command_2”创建图形:
监控项:
给监控项“MySQL command_3”创建图形:
监控项:
给监控项“MySQL command_4”创建图形:
监控项:
######
查看图形:
监测》图形:
############
############
修改被监控主机的MySQL的最大连接数:( 没有代码就插入,要在[mysqld]下面 )
[root@zabbix_client ~]# vi /etc/my.cnf
[mysqld]
max_connections = 500
改为
max_connections = 1000
保存好配置文件后,重启MySQL服务:
[root@zabbix_client ~]# service mysql restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
[root@zabbix_client ~]#
再次,在被监控主机上查看MySQL的最大连接数:
Show variables like '%max_connections%';
再次,在Zabbix服务器上远程测试:
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k command_1
1000
[root@centos8 ~]#
再次,查看图形“MySQL Command_1 image”:
注释:图形中的数据线是从右往左延伸的。
相关文章:
MySQL的最大连接数/最大可打开表数/最大可打开文件数
Zabbix自定义监控Linux下的MySQL
Zabbix调用Python3脚本监控MySQL主从同步状态
Zabbix调用Python3脚本监控Linux下的MariaDB
Zabbix调用Python3脚本监控MSSQL
Zabbix调用Python3脚本监控Linux下的Oracle(一)
Zabbix使用模板监控Linux下的MySQL
Zabbix创建模板监控Windows下的MariaDB
Zabbix5.0.12_调用Python3脚本监控Linux下的MySQL |