监控 zabbix server 上的 mysql 服务
其实zabbix监控agent端的mysql数据库原理上很简单,就是你需要在zabbix客户端新建一个用户,这个用户的账号密码存放到
隐藏的文件中,(也是考虑安全性嘛~),服务端通过读取这个配置文件的用户密码去登陆数据库,然后把采集的结果反馈给客户端,
切记我们这里不要给root的权限用户哟~
1.配置mysql
在/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf 文件中指定了 zabbix agent 如何获取 mysql服务的各种信息,并在/var/lib/zabbix 目录中新建“.my.cnf”文件,用以指定 zabbix agent 如何登陆数据库,默认使用的是 zabbix 用户,可以在 zabbix_server.conf 文件中找到密码。
[root@zabbix_server ~]# cd /etc/zabbix/zabbix_agentd.d
[root@zabbix_server zabbix_agentd.d]# ls
userparameter_mysql.conf
[root@zabbix_server zabbix_agentd.d]# cat userparameter_mysql.conf | grep mysql
# 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}'
# 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>].
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
UserParameter=mysql.version,mysql -V
[root@zabbix_server zabbix_agentd.d]# mkdir -p /var/lib/zabbix
[root@zabbix_server ~]# mysql_secure_installation ##添加秘码
[root@zabbix_server ~]# mysql -ppasswd ##测试登陆
MariaDB [(none)]>
[root@zabbix_server ~]# mysqladmin -uroot -ppasswd ping | grep -c alive ##测试获取 mysql服务的信息
1
[root@zabbix_server zabbix]# cd /var/lib/zabbix/
[root@zabbix_server zabbix]# vim .my.cnf
[mysql]
host=localhost
user=root
password=passwd ##这个密码是root用户的登陆密码
socket=/var/lib/mysql/mysql.sock
[mysqladmin]
host=localhost
user=root
password=passwd
socket=/var/lib/mysql/mysql.sock
[root@zabbix_server zabbix]# systemctl restart zabbix-agent.service
[root@zabbix_server el7]# yum install -y zabbix-get-3.2.6-1.el7.x86_64.rpm
[root@zabbix_server ~]# zabbix_get -s 127.0.0.1 -k mysql.version
mysql Ver 15.1 Distrib 5.5.44-MariaDB, for Linux (x86_64) using readline 5.1
[root@zabbix_server ~]# zabbix_get -s 127.0.0.1 -k mysql.ping ##测试获取 mysql服务的信息
如果是监控远程主机的 mysql 服务需要创建 zabbix 用户并授权
MariaDB [(none)]> GRANT USAGE ON . TO ‘zabbix’@’localhost’ IDENTIFIED BY ‘passwd’;
MariaDB [(none)]> FLUSH PRIVILEGES;
点击 配置->主机-> Zabbix server ->模版 ->选择 -> Template App MySQL
点击 配置->主机->Zabbix server 图形 可以看到两个新的监控图形