categraf中MySQL插件对localhostt兼容存在问题

Viewed 89

mysql服务中用户host 可以是localhost ,但是现在address中填写locahost:3306后,依然无法连接。
当主机填写为localhost时mysql会采用 unix domain socket连接
当主机填写为127.0.0.1时mysql会采用tcp方式连接

经过查看源码发现 dsn 默认只支持tcp模式

修改相关逻辑后
PR:https://github.com/flashcatcloud/categraf/compare/main...leeworker:categraf:mysql_localhost?expand=1

1 Answers

1,你上面贴的链接不是PR,是生成PR之前的预览链接,这个链接下面有个create pull request 按钮,点击之后才会创建 PR
2,我看了你的改动,大体逻辑没问题,不过引入了一个新的配置 socket 字段,有些冗余。可以只使用 address 一个字段,不需要另外的 socket 字段。

逻辑这样搞:

直接把 socket 路径写到 address 字段,比如 address="/var/run/mysql.sock"。代码里判断 address 的内容是否以 .sock 结尾,如果是,就使用unix socket拼接dsn,如果不是,就使用tcp的方式拼接dsn