zabbix web显示的权限问题以及后台日志数据库连接问题
侧边栏壁纸
博主昵称
yuc

  • 累计撰写 291 篇文章
  • 累计收到 0 条评论

zabbix web显示的权限问题以及后台日志数据库连接问题

yuc
yuc
2024-07-05 / 最后修改: 2024-07-05 02:14 / 0 评论 / 2 阅读 / 正在检测是否收录...
问题现象

zabbix在升级到某个版本后前台页面一直不太正常,dashboard 中经常会提示 permission denied ,但不是持续显示,而是一阵一阵的出现

看浏览器请求,有时候 systeminfo 这个请求可以返回正常的内容,有时候只有样式,但是没有数据,且 message 内容是 permission denied,应该可以确定是没有获取到数据导致的

排查分析

没有获取到数据,一般有如下可能:

  1. nginx、php 进程问题,调用 php 或者 php 执行脚本或代码存在权限问题
  2. 数据库问题,最终 php 代码需要在库中查询数据,但其实有时候查不到
  3. zabbix产品bug

于是我检查了 nginx, php 的配置,均没有发现任何问题,并且 nginx 的日志基本上都是正常响应,而后我怀疑是php脚本权限问题(或者php执行脚本的用户),所以我直接给了 .php 文件 755 的权限,这样所有用户都不会有执行权限问题了,但是问题仍然没有解决

比较怪异的是,重启 zabbix server 可以保持一段时间的正常显示,大概是十几到二十多个小时,之后又会间断性异常

持续排查

在第一次未果后,我计划尽量减少 zabbix server 端的日志,并且持续观察输出,避免有任何异常被错过,功夫不负有心人,终于发现了这些奇怪的日志:

 19030:20240628:134313.575 [Z3005] query failed: [4031] The client was disconnected by the server because of inactivity. See wait_timeout and interactive_timeout for configuring this behavior. [select u.userid,u.roleid,u.username,r.type from sessions s,users u,role r where s.userid=u.userid and s.sessionid='d938c03d7d2e857296543a4ec4d78547' and s.status=0 and u.roleid=r.roleid]
 19042:20240628:134709.563 [Z3005] query failed: [4031] The client was disconnected by the server because of inactivity. See wait_timeout and interactive_timeout for configuring this behavior. [select u.userid,u.roleid,u.username,r.type from sessions s,users u,role r where s.userid=u.userid and s.sessionid='ce79c6b9df0683d051e2ee318a55d54d' and s.status=0 and u.roleid=r.roleid]
 19013:20240628:134809.545 [Z3005] query failed: [4031] The client was disconnected by the server because of inactivity. See wait_timeout and interactive_timeout for configuring this behavior. [select u.userid,u.roleid,u.username,r.type from sessions s,users u,role r where s.userid=u.userid and s.sessionid='ce79c6b9df0683d051e2ee318a55d54d' and s.status=0 and u.roleid=r.roleid]

这个日志初次看起来似乎也跟权限问题挨不上边,都是一些会话中断的问题。不过如果细细想来,如果zabbix连接数据库的会话被异常中断,那么是否可能导致代码无法查询出来数据并且提示权限不足呢? 这完全是有可能的

所以我根据上面的错误进行了检索,发现了可能的如下问题:

https://support.zabbix.com/browse/ZBX-23145

这个帖子上面的问题并不与我们完全一致,但是错误的内容可能是相似的,都是数据库连接中断并且无法重连,而且在对话中有一个重点:

Error 4031 ER_CLIENT_INTERACTION_TIMEOUT

这个基本上就是我们的日志错误内容,根据连接可以进入到mysql的异常说明中:

https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html#error_er_client_interaction_timeout

结合起来可以初步断定是这个问题

解决方法

这个问题是特定 zabbix server 版本 与 mysql 版本碰撞在一起的问题,升级任意一个组件都可以解决。在升级到最新版后经过多天的观察,问题不再出现

思考

这个问题一开始确实很奇怪,完全无法确定是哪里的问题,也无法调试代码来判断是哪里返回的异常,最重要的是中间升级2-3个版本也没有解决,查找zabbix permission denied 的问题和解决方法极少。最后还是通过持续的观察和抓住所有可能的异常问题才确定了原因

所以解决问题还是要耐心,不能没有类似参考的例子就放弃解决,问题总是根据不同环境出现不同的现象,要善于持续的追踪、了解、分析问题。

0

评论

博主关闭了当前页面的评论