Zabbix Agent2配置MySQL TLS连接无效,会话名取值求助
Zabbix Agent2 MySQL TLS连接配置问题解决
问题回顾
使用「MySQL by zabbix agent 2」模板配置TLS连接时遇到两个问题:
- 在
{$MYSQL.DSN}中设置tcp://mariadb.fqdn.de:3306/?tls=skip-verify无效果 - 不清楚
/etc/zabbix/zabbix_agent2.d/plugins.d/mysql.conf中Plugins.Mysql.Sessions.*.TLSConnect的会话名格式,修改主机名后配置对应会话名仍无法触发TLS连接,查询performance_schema.threads显示仅为TCP/IP连接
核心问题点
会话名不是主机名,而是对应Zabbix主机宏{$MYSQL.CONN}的值;若未手动设置该宏,插件默认使用Default作为会话名。这是导致配置无效的关键原因。
解决步骤
1. 确认会话名
- 若已设置主机宏
{$MYSQL.CONN},会话名就是该宏的值 - 若未设置,默认会话名为
Default
2. 配置TLS连接(两种方法可选)
方法一:通过{$MYSQL.DSN}宏正确配置
之前的DSN参数格式不符合Zabbix Agent2使用的Go SQL驱动规范,正确格式示例:
tcp://mariadb.fqdn.de:3306?tls=required&tls_skip_verify=1
或针对MariaDB的标准SSL参数格式:
tcp://mariadb.fqdn.de:3306?ssl-mode=REQUIRED&ssl-verify-server-cert=0
说明:
tls=required强制启用TLS连接,tls_skip_verify=1跳过证书验证(按需使用)
方法二:通过插件配置文件设置
- 先在Zabbix主机宏中设置
{$MYSQL.CONN}=MariadbProd(替换为你想要的会话名) - 编辑
/etc/zabbix/zabbix_agent2.d/plugins.d/mysql.conf,添加:
Plugins.Mysql.Sessions.MariadbProd.TLSConnect=required Plugins.Mysql.Sessions.MariadbProd.TLSSkipVerify=1 # 按需开启跳过验证
- 重启Zabbix Agent2:
systemctl restart zabbix-agent2
3. 验证TLS连接状态
- 使用Zabbix Agent2自带命令测试连通性:
zabbix_agent2 -t mysql.ping[{$MYSQL.DSN},{$MYSQL.USER},{$MYSQL.PASSWORD}]
- 在MySQL/MariaDB端执行查询,确认SSL连接状态:
SELECT id, user, host, ssl_cipher, ssl_version FROM information_schema.processlist WHERE user = 'zbx_monitor';
若ssl_cipher字段不为空,说明TLS连接已生效。
额外检查项
确保MySQL/MariaDB端已开启TLS支持,执行以下命令验证:
SHOW VARIABLES LIKE '%ssl%';
确认have_ssl的值为YES。
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

