[zabbix/Session terminated, re-login, please]

4 篇文章 0 订阅
2 篇文章 0 订阅

现公司监控用的是zabbix,数据库采用的也是它的老搭档MySQL主从同步,一台主在服务,另一台做备,只读,看起来很正常,一切进展很顺利。

因为服务器比较多,历史记录,图形数据保存较大,导致某周末的一天在服务的主zabbix的磁盘打满了。。。。!!!

  1. 导致线上zabbix直接不可用
  2. 从无法读取主binlog日志文件,直接报错1236错误代码
  3. 迅速清理一下不需要的文件,让生产环境服务器正常运行。

既然是磁盘不够了,不可能再去扩容,应该从清除历史记录以及缩减表空间那里去下手,我相信读这篇文章的你,遇到的问题肯定也是和我的操作一样导致的:

  • 启用备,将主服务关闭,停止主从,缩减表空间
  • 备上线,主数据库缩减,锁库,备份导出
  • 主再次上线,备导入新的数据,进行从新主从同步
  • -

当我启用备的时候,发现了一个致命的鬼问题:

这里写图片描述
提示我会话终端从新登陆,我每一次重复反复的登录都是这样,而且错误账号密码是登陆不上的,我用的正式超级管理员登录上出现的问题

查了一些文档,大概是这个意思

如果你获取不到session,那么会提示你让你重新登录
这时候登录上的是游客访问模式 guest
他没有任何权限,而且数据库中sessions表中userid字段为2
正是因为它为2 代表游客模式,会将你的用户改为guest
`
这里写图片描述
这些session 是我最近登录出现的,userid全部是2 代表是游客模式
导致了现在后端zabbix数据可以采集的到,但是你前端没法展示,因为你是游客模式
试着更改userid为1,发现不行
查询超级管理员id发现并不是2
这里写图片描述
好了,说了这么多,我是没找到解决办法,在我眼里这应该是个bug,或者哪里丢失数据。

为了尽快上线,不能再拖了,找到了临时解决办法:

至少目前翻过很多帖子并没有找到类似这个问题的解决办法
公司采用的是vpn方式连接zabbix,做了iptables限制,因此这个方法确实可行。毕竟是临时做备、

修改前端php配置文件找到验证user以及session那一步骤,注释判断user

vi /data/zabbix/include/classes/api/service/CUser.php 

1187 $userInfo = DBfetch(DBselect(
1188    'SELECT u.userid,u.autologout,s.lastaccess'.
1189   ' FROM sessions s,users u'.
1190   ' WHERE s.sessionid='.zbx_dbstr($sessionid).
1191   ' AND s.status='.ZBX_SESSION_ACTIVE.
1192   ' AND s.userid=u.userid'. #注释这一行,不让它验证
1193   ' AND (s.lastaccess+u.autologout>'.$time.' OR         u.autologout=0)'
1194         ));

再次访问,是没有问题的,但是这个弊端非常危险:

如果你是公网访问,而且你还没有防火墙限制,你会发现你更改完之后,任意账号密码,随便输入都可以进入你的zabbix!至少我找不到目前这个问题的解决办法,眼下就是尽快处理一下我的主服务,缩短数据表,更改前一定要做访问限制!!!

感谢这篇文章,让我明白他的处理逻辑:
https://www.cnblogs.com/JaSonS-toy/p/4939805.html

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值