Zabbix 之监控 mysql 5.6+ 版本

2016年9月7日

数据库版本 为 Mysql 5.7.14

近期新装了一台机器 对他进行zabbix监控,一切按照之前的操作 到 mysql监控部分,发现原来的脚本获取不到 mysql 端口了 :
原来 mysql 5.6 以后 默认的 bind_address 没有做设置  ,  看个人需求 这里测试设为 bind_address = 0.0.0.0

./discovery_mysql.sh    此脚本前面的zabbix监控mysql的文章中有不做说明

OK  得到 需要的数据了

  1. {
  2. "data":[
  3. {
  4. "{#MYSQLPORT}":"3306"},
  5. {
  6. "{#MYSQLPORT}":"3307"}
  7. ]
  8. }

再然后  看看获取的数据

[root@monitoring shell]# zabbix_get -s 127.0.0.1 -k mysql_stats[3306,Key_reads]

  1. mysql: [Warning] Using a password on the command line interface can be insecure.
  2. 3

mysql: [Warning] Using a password on the command line interface can be insecure.   这什么鬼!!!!

原来 mysql 5.6 及以上版本增加了密码安全策略,之前版本可以使用的命令行里加上密码就会强制报错
这个错并不影响使用 连接mysql 以及dump  , 但是对于一些监控获取数据就有影响了 , 尽管依然可以得到数据,可是却多了一行报错的信息, 这样数据的格式就有问题了。看了一些文档 说是在 my.cnf 中加上用户 密码 ,尝试N次  , 根本就不行  。

不好好查查  mysql 5.7 版本的使用真不行哇 , 比起mysql 5.5 很多用法发生了改变  , 5.6 以后想要 不出现这个错 使用  mysql_config_editor

mysql_config_editor

该工具可以创建一个"login-path",用户可以直接通过login-path来登录mysql。
实质上,它存储一个身份认证信息到一个叫做.mylogin.cnf的的登录文件中。

并且,该工具至少在mysql5.6.6以上的版本才可用。

创建一个login-path:

  1. shell> mysql_config_editor set --login-path=test --user=root --password --host=localhost
  2. Enter password:

命令解释:

--login-path是设置访问的名字,我设置的local;

--host是指定允许访问的host地址,这个地址是你grant的时候配置的;

--user是用户名,也是grant时候配置的;

-p是指定密码,同样是grant配置。

创建好后,.mylogin.cnf将保存在用户的家目录下,此处我用的是RHEL6,即/home/op下。
该文件是不可读的,它类似于选项组,包含单个身份的验证信息。

在登录mysql时,可以指定创建的login-path名,然后直接进入:

shell> mysql --login-path=test-login

  1. Welcome to the MySQL monitor. Commands end with ; or \g.
  2. Your MySQL connection id is 4
  3. Server version: 5.6.26-log Source distribution

但是如果有人能够拿到该文件,通过一些方式,是可以将其破解并获取你的密码。

login-path只能被创建用户使用(OS层面)。

如果想看.mylogin.cnf里写了什么,可以使用:

shell> mysql_config_editor print --all

  1. [test_login]
  2. user = root
  3. password = *****
  4. [test]
  5. user = root
  6. password = *****
  7. host = localhost

当然想只看某一个则可写作

shell> mysql_config_editor print --login-path=test

  1. [test]
  2. user = root
  3. password = *****
  4. host = localhost

若要删除.mylogin.cnf,则可以使用

  1. shell> mysql_config_editor remove --login-path=test

 

其他参数选项:

Format Description Introduced
--all Print all login paths
--debug[=debug_options] Write a debugging log
--help Display help message and exit
--host=host_name Host to write to login file
--login-path=name Login path name
--password Solicit password to write to login file
--port=port_num TCP/IP port number to write to login file 5.6.11
--socket=path The Unix socket file name to write to login file 5.6.11
--user=user_name User name to write to login file
--verbose Verbose mode
--version Display version information and exit
--warn Warn and solicit confirmation for overwriting login path

测试 --login-path

[root@monitoring shell]# mysql  --login-path=test
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.14-log MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql>

 

上面就配置好了mysql安全模式访问

zabbix agentd配置

下面介绍zabbix客户端配置文件里key的情况

  1. cat /etc/zabbix/zabbix_agentd.d/auto_mysql.conf
  2. UserParameter=zabbix_low_discovery[*],/bin/bash /etc/zabbix/shell/mysql_low_discovery.sh $1
  3. UserParameter=mysql_stats[*],mysql -h localhost -P $1 -uzabbix -p'8i58kdeey2mQ' -e "show global status"|grep "\<$2\>"|cut -f2

修改为

  1. UserParameter=zabbix_low_discovery[*],/bin/bash /etc/zabbix/shell/mysql_low_discovery.sh $1
  2. UserParameter=mysql_stats[*],mysql --login-path=local -P $1 -e "show global status"|grep "\<$2\>"|cut -f2

然后配置sudo,在/etc/sudoers里添加

zabbix ALL=(root) NOPASSWD:/usr/bin/mysql

其中/usr/bin/mysql是mysql程序地址,可以根据你自身情况修改。

完成后重启zabbix agentd

[root@monitoring ~]# service zabbix-agent restart
Shutting down Zabbix agent: [ OK ]
Starting Zabbix agent: [ OK ][root@monitoring ~]# zabbix_get -s 127.0.0.1 -k mysql_stats[3306,Key_reads]
3

没有评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注