Zabbix之MySQL监控

1.linux-node2节点安装数据库

[[email protected] ~]# yum install -y mariadb-server
[[email protected] ~]# systemctl start mariadb
[[email protected] ~]# netstat -tulnp |grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      41299/mysqld

2.Zabbix添加数据库主机监控

被动模式对Hostname没要求,但主动模式必须与主机Hostname一致。
"Configuration"-->"Host"(填入主机信息)-->"Templates"(链接MySQL模板)
如图:

创建成功后,可以查看到MySQL相应的监控信息,数据库的增改删查,如图:

命令行进行查看获取的信息:
[[email protected] ~]# zabbix_get -s linux-node2 -k mysql.status[Com_begin]
0
[[email protected] ~]# zabbix_get -s linux-node2 -k mysql.status[Slow_queries]
0
数据库模板监控配置主要来自linux-node2节点:/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf 的配置
[[email protected] ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf 

# For all the following commands HOME should be set to the directory that has .my.cnf file with password information.

# Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert].
# Key syntax is mysql.status[variable].
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -N | awk '{print $$2}'    #mysql的状态获取

# Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data].
# Key syntax is mysql.size[<database>,<table>,<type>].
# Database may be a database name or "all". Default is "all".
# Table may be a table name or "all". Default is "all".
# Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".
# Database is mandatory if a table is specified. Type may be specified always.
# Returns value in bytes.
# 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table
UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix mysql -N'

UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive    #mysql的存活获取
UserParameter=mysql.version,mysql -V    #mysql的版本获取

3.带密码对MySQL监控

以上对数据库的监控,都是没有密码直接获取值,这是不合理的,那么需要如何添加密码进行获取监控数据呢?

(1)先对数据库进行授权和密码,通过zabbix用户进行获取数据,此处的授权由于试验,就授权了全部权限,正式生产时不能这样设置。

[[email protected] ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 711
Server version: 5.5.56-MariaDB MariaDB Server

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

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

MariaDB [(none)]> grant all on *.* to [email protected] identified by "zabbix";
Query OK, 0 rows affected (0.00 sec)

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

MariaDB [(none)]> quit;
Bye

(2)修改监控配置,添加用户名密码
[[email protected] ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf 

UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -uzabbix -pzabbix -N | awk '{print $$2}'
UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix mysql -N'
UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping -uzabbix -pzabbix | grep -c alive
UserParameter=mysql.version,mysql -V

[[email protected] ~]# systemctl restart zabbix-agent

修改完毕后,我们可以看到在Item项都显示Not supported,如图:

此时修改一下zabbix对无效监控项的刷新时间,默认是600s,我们改为30s。修改完成后就会变成enabled

"Administration"-->"General"-->右上角选择"other"-->"Refresh unsupported items (in sec)"改为30

4.灵活使用宏变量(Macrros)进行传参配置用户名密码监控

如图:在主机中配置变量

(1)修改配置文件:
[[email protected] ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf 
UserParameter=mysql.status[*],echo "show global status where Variable_name='$3';" | HOME=/var/lib/zabbix mysql -u$1 -p$2 -N | awk '{print $$2}'
UserParameter=mysql.ping[*],HOME=/var/lib/zabbix mysqladmin -u$1 -p$2 ping| grep -c alive
[[email protected] ~]# systemctl restart zabbix-agent

此时,如果未传入用户名密码访问是被拒绝的:
[[email protected] ~]# zabbix_get -s linux-node2 -k mysql.status[Slow_queries]
Enter password: ERROR 1045 (28000): Access denied for user 'Slow_queries'@'localhost' (using password: YES)
[[email protected] ~]# zabbix_get -s linux-node2 -k mysql.status[zabbix,zabbix,Slow_queries]
0
(2)修改模板,模板中的变量值可以不设置,因为在连接模板时进行修改变量,此时会自动覆盖在模板设置的变量值:

(3)修改模板中的Item:增加传参的变量{$USER},{PASSWD}

时间: 2024-10-12 22:41:09

Zabbix之MySQL监控的相关文章

Zabbix 的 MySQL 监控客户端配置

Zabbix监控的方式有四个大方向: 1,Zabbix Agent类型 2,SNMP类型 3,JMX类型 4,IMPI类型 用的多的基本上就两种,Agent类型 和 SNMP类型. Agent类型的item是使用部署在服务端的Agent来获取数据,可以分为主动和被动模式. SNMP是监控服务器以外设备的非常好的方式,比如可以监控网络设备,打印机等,只要是有SNMP功能的,zabbix都可以监控. 今天我们要说的MySQL监控是基于Agent类型的监控. 我们来看看服务端的默认模板: item 有

ZABBIX 之 MYSQL监控

1 ,安装php yum install php php-mysql 2,指定mysql.sock文件 vim /etc/php.ini mysql_default_socket=/data/mysql/3306/var/run/mysql.sock mysqli_default_socket=/data/mysql/3306/var/run/mysql.sock 3, 安装percona plugin wget https://www.percona.com/downloads/percona

zabbix percona mysql 监控

yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm yum install percona-zabbix-templates php php-mysql 3. [[email protected] ~]# rpm  -ql  percona-zabbix-templates /var/lib/zabbix/percona /var/li

Zabbix Windos mysql 监控脚本

说明:判断mysql主进程是否关闭,如果关闭则返回0 创建文件:MySQL-ping.vbs Set objFS = CreateObject("Scripting.FileSystemObject") Set objArgs = WScript.Arguments str1 = getCommandOutput("C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqladmin -uroot -pqaz123wsx ping&qu

Zabbix 3.0 监控MySQL

Mysql监控  zabbix自带了一个监控mysql的模板,但是真正监控mysql的并不是zabbix自带的模板.而是percona公司的一个监控mysql模板  percona官网: www.percona.com Percona组成介绍 1.php脚本    用来数据采集 2.shell脚本  用来调用采集信息 3.zabbix配置文件 4.zabbix模板文件 安装文档:https://www.percona.com/doc/percona-monitoring-plugins/LATE

利用Zabbix ODBC monitoring监控MySQL

利用Zabbix ODBC monitoring监控MySQL 1. 创建群组ODBC Templates 2. 创建Template SQL Server和Template MySQL 3. 在Zabbbix上安装unixODBC shell> yum -y install unixODBC unixODBC-devel 4. 在Zabbix上安装对应数据库的unixODBC驱动 unixODBC有一个支持的数据库和驱动列表: http://www.unixodbc.org/drivers.h

zabbix实现mysql数据库的监控(三)

上面一章“zabbix实现mysql数据库的监控(二)”使用MPM来监控mysql,但是遇到安装问题始终解决不了,这里改用percona-monitoring-plugins进行zabbxi上监控mysql数据库了. percona-monitoring-plugins的详细介绍请见:https://www.percona.com/software/mysql-tools/percona-monitoring-plugins 一.环境准备 php开发环境搭建 下载percona-monitori

zabbix实现mysql数据库的监控(四)

前面介绍的内容都是用第三方开发好的插件进行mysql监控的,可能有些我们关心的监控内容并不在其中,这时一种常用的方法就是定义我们自己的脚本并将它整合到zabbix中,从而在原有监控的基础上进行有力的补充.下面通过使用脚本来监控主从复制状态并进行报警通知. 先来介绍zabbix中几个常用的术语: 主机(host): 要监控的网络设备,可由ip或DNS名称指定. 主机组(host group): 主机的逻辑容器,可以包含主机和模板,但同一个组内的主机和模版不能互相链接,主机组通常在组用户或用户组指派

Zabbix 3.0 监控MySQL [六]

Zabbix 3.0 监控MySQL [六] 2016年10月9日18:25:29 zabbix 笔者QQ:381493251 博客地址:www.abcdocker.com 微信公众号:abcdocker Abcdocker交流群:454666672 如果遇到什么问题可以进群询问,我们是一个乐于帮助的集体! Mysql监控 zabbix自带了一个监控mysql的模板,但是真正监控mysql的并不是zabbix自带的模板.而是percona公司的一个监控mysql模板 percona官网: www