【发布时间】:2017-11-05 22:31:06
【问题描述】:
我有一个 Dockerized Zabbix 服务器 (3.4) 连接到带有 Mariadb 的 CentOS 7 主机。
这个很好用:
# zabbix_get -s <ipOfRemoteHost> -p 10050 -k mysql.version
mysql Ver 15.1 Distrib 5.5.56-MariaDB, for Linux (x86_64) using readline 5.1
这个没有:
# zabbix_get -s <ipOfRemoteHost> -p 10050 -k mysql.ping
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)'
Check that mysqld is running and that the socket: '/var/lib/mysql/mysql.sock' exists!
来自/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf:
UserParameter=mysql.version,mysql -V
UserParameter=mysql.ping,HOME=/etc/zabbix mysqladmin ping | grep -c alive
当将 host=localhost 更改为 host=127.0.0.1 时,它确实读取了 HOME 目录中的 .my.cnf 我得到:
# zabbix_get -s <ipOfRemoteHost> -p 10050 -k mysql.ping
mysqladmin: connect to server at '127.0.0.1' failed
error: 'Can't connect to MySQL server on '127.0.0.1' (13)'
Check that mysqld is running on 127.0.0.1 and that the port is 3306.
You can check this by doing 'telnet 127.0.0.1 3306'
也尝试在命令中直接添加用户名和密码,但结果相同:
UserParameter=mysql.ping,mysqladmin -uroot --password="mypassword" ping | grep -c alive
在主机上运行该命令可以正常工作:
mysqladmin -uroot --password="mypassword" ping | grep -c alive
1
代理本身似乎运行良好:
$ sudo -u zabbix zabbix_agentd -t mysql.ping
mysql.ping [t|1]
套接字可用:
# ls -l /var/lib/mysql/mysql.sock
srwxrwxrwx. 1 mysql mysql 0 Nov 5 18:01 /var/lib/mysql/mysql.sock
流程详情:
# ps -ef | grep mysqld
mysql 3218 1 0 18:01 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql 3488 3218 99 18:01 ? 06:08:26 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
systemd+ 6547 6530 0 Oct31 ? 00:06:15 mysqld --character-set-server=utf8 --collation-server=utf8_bin
有什么建议吗?
注意:不要认为它是相关的,但以防万一,在主机上我还有一个 Dockerized mysql 在端口 3307 上运行
【问题讨论】: