返回列表 发帖

Zabbix使用模板监控Windows下的MariaDB

笺注:
被监控主机的Agent的安装可参考 Zabbix使用Agent监控Windows2008R2
MariaDB的安装可参考 Windows2008R2_UPUPW搭建WordPress+Discuz!7.2


被监控主机配置MariaDB数据库:( 使用数据库管理员root@localhost )
d:
cd UPUPW_AP5.6\MariaDB\bin
mysql -u"root" -p"888"
图片1.png
2022-8-28 13:23

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


查看当前登录的数据库用户:
MariaDB [(none)]> Select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

MariaDB [(none)]>


被监控主机查看自己的MariaDB版本:
MariaDB [(none)]> Select version();
+----------------+
| version()      |
+----------------+
| 10.1.8-MariaDB |
+----------------+
1 row in set (0.00 sec)

MariaDB [(none)]>



再授权数据库用户zbx_monitor@localhost(密码168),只能本地登录,对所有的库有完全控制的权限:
MariaDB [(none)]> grant all on *.* to zbx_monitor@localhost identified by '168';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]>


查看本地数据库用户zbx_monitor@localhost的权限:
MariaDB [(none)]> show grants for zbx_monitor@localhost;
+-------------------------------------------------------------------------------
----------------------------------------------+
| Grants for zbx_monitor@localhost
                                              |
+-------------------------------------------------------------------------------
----------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'zbx_monitor'@'localhost' IDENTIFIED BY PASSWORD '*242E46A1E8D30FE06F7CE37B55BFC25BA981D70C' |
+-------------------------------------------------------------------------------
----------------------------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]>


查看所有数据库用户及其主机信息:
MariaDB [(none)]> select user,host from mysql.user;
+-------------+-----------+
| user        | host      |
+-------------+-----------+
| root        | localhost |
| zbx_monitor | localhost |
+-------------+-----------+
2 rows in set (0.00 sec)

MariaDB [(none)]>



使用本地数据库用户zbx_monitor@localhost登录MySQL数据库:

在CMD命令行中显示当前路径:
D:\UPUPW_AP5.6\MariaDB\bin>echo %cd%
D:\UPUPW_AP5.6\MariaDB\bin

D:\UPUPW_AP5.6\MariaDB\bin>
D:\UPUPW_AP5.6\MariaDB\bin>mysql -u"zbx_monitor" -p"168" -h"localhost"
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.1.8-MariaDB mariadb.org binary distribution

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

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


查看当前登录的数据库用户:
MariaDB [(none)]> Select user();
+-----------------------+
| user()                |
+-----------------------+
| zbx_monitor@localhost |
+-----------------------+
1 row in set (0.00 sec)

MariaDB [(none)]>



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

修改被监控主机的Agent配置文件:
C:\Program Files\Zabbix Agent\zabbix_agentd.conf
图片2.png
2022-8-28 13:25

修改为:
UnsafeUserParameters=1

接着插入:
  1. UserParameter=mysql.ping[*],d:\UPUPW_AP5.6\MariaDB\bin\mysqladmin -u"zbx_monitor" -p"168" -h"$1" -P"$2" ping
  2. UserParameter=mysql.get_status_variables[*], d:\UPUPW_AP5.6\MariaDB\bin\mysql -u"zbx_monitor" -p"168" -h"$1" -P"$2" -sNX -e "show global status"
  3. UserParameter=mysql.version[*],d:\UPUPW_AP5.6\MariaDB\bin\mysqladmin -u"zbx_monitor" -p"168" -s -h"$1" -P"$2" version
  4. UserParameter=mysql.db.discovery[*],d:\UPUPW_AP5.6\MariaDB\bin\mysql -u"zbx_monitor" -p"168" -h"$1" -P"$2" -sN -e "show databases"
  5. UserParameter=mysql.dbsize[*],d:\UPUPW_AP5.6\MariaDB\bin\mysql -u"zbx_monitor" -p"168" -h"$1" -P"$2" -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
  6. UserParameter=mysql.replication.discovery[*],d:\UPUPW_AP5.6\MariaDB\bin\mysql -u"zbx_monitor" -p"168" -h"$1" -P"$2" -sNX -e "show slave status"
  7. UserParameter=mysql.slave_status[*],d:\UPUPW_AP5.6\MariaDB\bin\mysql -u"zbx_monitor" -p"168" -h"$1" -P"$2" -sNX -e "show slave status"
复制代码


如下图:
图片3.png
2022-8-28 13:26



保存好配置文件后,重启Zabbix Agent服务:
图片4.png
2022-8-28 13:26




#######

在被监控主机上使用CMD命令行进行本地测试:

使用命令mysqladmin检测MariaDB服务有没有在运行中:(在运行时)
D:\UPUPW_AP5.6\MariaDB\bin>mysqladmin -u"zbx_monitor" -p"168" ping
mysqld is alive

D:\UPUPW_AP5.6\MariaDB\bin>



使用命令mysqladmin查看MariaDB的版本信息等等:
D:\UPUPW_AP5.6\MariaDB\bin>mysqladmin -u"zbx_monitor" -p"168" -s version
mysqladmin  Ver 9.1 Distrib 10.1.8-MariaDB, for Win32 on AMD64
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Server version          10.1.8-MariaDB
Protocol version        10
Connection              localhost via TCP/IP
TCP port                3306
Uptime:                 1 hour 2 min 20 sec

Threads: 1  Questions: 348  Slow queries: 0  Opens: 116  Flush tables: 1  Open tables: 127  Queries per second avg: 0.093

D:\UPUPW_AP5.6\MariaDB\bin>

注释:这里可以看到目前MariaDB服务运行了1小时2分20秒;



使用命令mysql显示MariaDB里的全部库:
D:\UPUPW_AP5.6\MariaDB\bin>mysql -u"zbx_monitor" -p"168" -sN -e "Show databases"
discuz
information_schema
mysql
performance_schema
test


C:\Users\Administrator>


数据库用户有权限的话,都可以使用这些命令:
D:\UPUPW_AP5.6\MariaDB\bin>mysql -u"root" -p"888" -sN -e "Show databases"
discuz
information_schema
mysql
performance_schema
test



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



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

在Zabbix服务器测试,验证能否获取被监控主机(192.168.168.129)的键值:
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.129 -k net.tcp.listen[10050]
1
[root@centos8 ~]#


检测远程MariaDB服务有没有在运行中:(在运行时;MariaDB服务的默认端口为TCP 3306;无需在被监控主机的防火墙打开TCP 3306端口)
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.129 -k net.tcp.listen[3306]
1
[root@centos8 ~]#


检测远程MariaDB服务有没有在运行中:(没有运行时)
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.129 -k net.tcp.listen[3306]
0
[root@centos8 ~]#


输出远程MariaDB里的全部库:
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.129 -k mysql.db.discovery["localhost","3306"]
discuz
information_schema
mysql
performance_schema
test

[root@centos8 ~]#





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

配置》主机》创建主机  (主机名称无需与被监控主机的真实主机名一致;群组可以随便选;IP地址那里要输入被监控主机的IP地址;端口为10050)
图片5.png
2022-8-28 13:29

注释:
使用agent代理程序的接口。
使用 TCP 10050 端口。


主机添加成功:
图片6.png
2022-8-28 13:29



给主机添加模板:( Template DB MySQL  )
图片7.png
2022-8-28 13:30



模板添加成功:
图片8.png
2022-8-28 13:30




查看主机MariaDB_1继承模板的宏:
图片9.png
2022-8-28 13:31


图片10.png
2022-8-28 13:31




模板Template DB MySQL自带的自动发现规则:
图片11.png
2022-8-28 13:31


图片12.png
2022-8-28 13:32




###

查看模板Template DB MySQL自带图形:(要等一段时间才会出现)

监测》图形:

图片13.png
2022-8-28 13:32


图片14.png
2022-8-28 13:32


图片15.png
2022-8-28 13:32




图片16.png
2022-8-28 13:33


图片17.png
2022-8-28 13:33


图片18.png
2022-8-28 13:33




图片19.png
2022-8-28 13:33


图片20.png
2022-8-28 13:33


图片21.png
2022-8-28 13:34




图片22.png
2022-8-28 13:34


图片23.png
2022-8-28 13:34


图片24.png
2022-8-28 13:34




图片25.png
2022-8-28 13:34


图片26.png
2022-8-28 13:35


图片27.png
2022-8-28 13:35




图片28.png
2022-8-28 13:35


图片29.png
2022-8-28 13:35


图片30.png
2022-8-28 13:36




######

模板Template DB MySQL自带的触发器:
名称: MySQL: Server has aborted connections (over {$MYSQL.ABORTED_CONN.MAX.WARN} for 5m)
表达式: {MariaDB_1:mysql.aborted_connects.rate.min(5m)}>{$MYSQL.ABORTED_CONN.MAX.WARN}
图片31.png
2022-8-28 13:36

注释: {$MYSQL.ABORTED_CONN.MAX.WARN} 是宏,继承于模板Template DB MySQL,默认值为 3



######

模板Template DB MySQL自带的监控MariaDB服务状态的监控项:
名称: Availability: MySQL status
键值: mysql.ping["{$MYSQL.HOST}","{$MYSQL.PORT}"]
图片32.png
2022-8-28 13:37



在Zabbix服务器测试,检测远程MariaDB服务有没有在运行中:(在运行时;MariaDB服务的默认端口为TCP 3306;无需在被监控主机的防火墙打开TCP 3306端口)
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.129 -k mysql.ping["localhost","3306"]
mysqld is alive
[root@centos8 ~]#


检测远程MariaDB服务有没有在运行中:(没有运行时)
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.129 -k mysql.ping["localhost","3306"]
d:\UPUPW_AP5.6\MariaDB\bin\mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to MySQL server on 'localhost' (10061 "Unknown error")'
Check that mysqld is running on localhost and that the port is 3306.
You can check this by doing 'telnet localhost 3306'

[root@centos8 ~]#

注释:
键值的格式要改变一下,不要使用变量;
这相当于在被监控主机上进行本地监控,所以应该使用"localhost"



模板Template DB MySQL自带的监控MariaDB服务状态的触发器:
名称: MySQL: Service is down
表达式: {MariaDB_1:mysql.ping["{$MYSQL.HOST}","{$MYSQL.PORT}"].last()}=0
图片33.png
2022-8-28 13:38

注释:触发器的表达式要用到监控项中的键值。



假如被监控主机的MariaDB服务没有在运行了,仪表板会如下图显示:(显示对应触发器的名称)
MySQL: Service is down
图片34.png
2022-8-28 13:39


图片35.png
2022-8-28 13:39






######

模板Template DB MySQL自带的监控MariaDB服务运行时长的监控项:
名称: Info: Uptime
键值: mysql.uptime
图片36.png
2022-8-28 13:40




模板Template DB MySQL自带的监控MariaDB服务运行时长的触发器:
名称: MySQL: Service has been restarted (uptime < 10m)
表达式: {MariaDB_1:mysql.uptime.last()}<10m
图片37.png
2022-8-28 13:40

注释:触发器的表达式要用到监控项中的键值。



假如被监控主机的MariaDB服务重启了,仪表板会如下图显示:(显示对应触发器的名称)
图片38.png
2022-8-28 13:40


图片39.png
2022-8-28 13:41


注释:这告警10分钟后自动消失。





######

模板Template DB MySQL有自动检查MariaDB各个库的大小的监控项:
监控项名称: Info: Size of database mysql
键值: mysql.dbsize["{$MYSQL.HOST}","{$MYSQL.PORT}","mysql"]
图片40.png
2022-8-28 13:41



在Zabbix服务器上可以使用命令行获取到库“mysql”的大小:(返回值以字节为单位)
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.129 -k mysql.dbsize["localhost","3306","mysql"]
683113
[root@centos8 ~]#



######

监控项名称: Info: Size of database discuz
键值: mysql.dbsize["{$MYSQL.HOST}","{$MYSQL.PORT}","discuz"]
图片41.png
2022-8-28 13:42



在Zabbix服务器上可以使用命令行获取到库“discuz”的大小:(返回值以字节为单位)
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.129 -k mysql.dbsize["localhost","3306","discuz"]
393115
[root@centos8 ~]#





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

当被监控主机的MariaDB服务的端口改为TCP 3307后,
在Zabbix服务器测试,检测远程MariaDB服务有没有在运行中:(在运行时;无需在被监控主机的防火墙打开TCP 3307端口)
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.129 -k mysql.ping["localhost","3307"]
mysqld is alive
[root@centos8 ~]#

[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.129 -k net.tcp.listen[3307]
1
[root@centos8 ~]#

[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.129 -k net.tcp.listen[3306]
0
[root@centos8 ~]#



输出远程MariaDB里的全部库:
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.129 -k mysql.db.discovery["localhost","3306"]
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061 "Unknown error")
[root@centos8 ~]#


[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.129 -k mysql.db.discovery["localhost","3307"]
discuz
information_schema
mysql
performance_schema
test

[root@centos8 ~]#



######

在Zabbix服务器上编写Shell脚本进行监控:
[root@centos8 ~]# mkdir -p /script
[root@centos8 ~]#

[root@centos8 ~]# cat /script/xx.sh
#!/bin/bash
Key_1=`/usr/local/zabbix/bin/zabbix_get -s 192.168.168.129 -k mysql.dbsize["localhost","3307","discuz"]`

echo $Key_1

Key_2=$(expr $Key_1 / 1024)

echo "----------"
echo $Key_2 "KB"


脚本运行的结果:
[root@centos8 ~]# bash /script/xx.sh
393115
----------
383 KB

[root@centos8 ~]#

备注:相除后,整数部分是多少,就是多少,不是四舍五入!



######

必须要更改被监控主机的宏:
图片42.png
2022-8-28 13:44






相关文章:
Zabbix创建模板监控Windows下的MariaDB
Python3脚本管理Windows下的MariaDB

Zabbix使用模板监控Linux下的MariaDB

Zabbix使用模板监控Windows下的MySQL
Zabbix使用模板监控Linux下的MySQL

返回列表