首页
Search
1
v2ray异常错误之二
3,310 阅读
2
linux时区设置
2,698 阅读
3
DB2常用操作
2,173 阅读
4
websphere修改jvm内存xmx和xms
1,929 阅读
5
nfs客户端文件属主为nobody的现象
1,552 阅读
技术
生活
运动
游戏
电影
登录
Search
标签搜索
docker
linux
troubleshooting
nginx
secure
truenas
mysql
windows
python
esxi
docker swarm
oracle
zabbix
tomcat
blog
dsm
群晖
rpa
freenas
db
yuc
累计撰写
291
篇文章
累计收到
0
条评论
首页
栏目
技术
生活
运动
游戏
电影
页面
搜索到
8
篇与
的结果
2024-08-06
zabbix之zabbix trapper监控
背景和特点 在一些无需 zabbix 主动监控,但是想统一纳入 zabbix 告警的场景下,zabbix的常用监控项明显不符合我们的需求,比如我的需求如下: 我们本身已经实现了 jvm 的内存 oom 监控,而 zabbix 的本身 jvm 监控扩展数据虽然是较多,但是配置麻烦,且没有 oom 这部分的监控告警,而我们就是想及时收到 oom 告警,并且想统一纳入 zabbix 监控告警,那么应该如何对接呢? 首先我不想全部更换为 zabbix 自带的 jvm 模板,缺点有这些:配置麻烦、无法实现需求、需要定时检测、创建自定义监控项、指定命令和返回内容,同样我也不想再通过自定义监控项然后使用脚本来定时获取,这也有前面部分的劣势,那么有什么方案呢? 方案研究 首先我想到的方法是能否使用 zabbix 自带的 api 直接发送一个告警内容,然后使得 zabbix 能够处理、通知,但查看了文档,发现 api 多是做一些管理上的内容、或者获取数据,想写入数据,甚至在没有主机、监控项的前提下写入告警通知完全没有找到可行的方案. 于是我开始寄托于常规的自定义监控项,但数据通过 zabbix_sender 来主动推送,但测试发现仍然较为麻烦,需要zabbix agent配置监控项,以及还有监控间隔时间的问题。因为实际上没有通过 zabbix agent主动发送、或者zabbix server 主动获取,间隔时间这块理论上是存在问题的,到最后不了了之 在一筹莫展之际了解到了 zabbix trapper 类型的监控项,了解到它是在 sender 上,原话是: # 要将监控数据直接推送给Zabbix server 或 proxy,必须将监控项类型配置为trapper https://www.zabbix.com/documentation/current/zh/manual/concepts/sender 这种似乎完全符合我们的需求,仅主动推送数据,无需 zabbix agent、zabbix server 介入 并且此监控项的另一个好处是 监控项的 key 直接在web定义就好了,无需在 agent 中设置,这样也是最简单的方案了,最后在设置好之后,我们通过 sender 来主动推送了一次数据,在此 主机 的最新数据中成功更新 工具的参数使用方法: # -z 接 zabbix server # -s 接 agent 配置文件中的主机名 # -k 接 定义的监控项,在web配置即可,无需agent配置文件中处理 # -o 接内容 ./zabbix_sender -z 192.168.3.30 -p 10051 -s host-192.168.10.120 -k custom.jvm_oom -o 1 最后在测试数据更新无问题后,我们再制作一个触发器,当值符合后即告警推送 基于OOM告警的示例 需要考虑的是,容器环境下N多个容器需要做 OOM 告警,但是zabbix主要是对接机器的,容器肯定是比机器多,那么如何规划呢?所以我考虑的是只选择一台机器做监控项,然后告警的时候取不同容器名来区分问题,实际配置大致如下 容器方面,需要加入名称作为环境变量,以OOM的时候,触发脚本可以拿到容器名发送给 zabbix zabbix_server 使用采集器的监控项,数据类型为字符串 客户端使用 zabbix_sender 推送数据,故障数据格式 SERVICENAME_DATE_1,恢复数据格式 SERVICENAME_DATE_0 接下来是触发器配置 触发器名称为 OOM-find {ITEM.VALUE} 这样多个可以标志不同的容器环境 触发器表达式为: right(last(/Template OS Linux by OOM/monitor[OOM]),1)=1,取最右边的值为 1,则表示有问题 问题事件生成模式 选择 多重,这样不同名称的容器会生成不同的问题,否则跟CPU、内存告警一样,如果一直超过90%,那么只会有第一个告警 触发器恢复较为复杂,理论如下:OOM告警后,恢复途径有几个,一是重启tomcat,然后在这时候自动给 zabbix 再发一个恢复(需要判断是否OOM过),二是手动上 zabbix 关闭问题,三是其他触发关闭 (与方法一类似),但明显前面两个都比较麻烦。所以考虑使用其他办法触发,于是选择在发送告警等待60秒后再给zabbix发送恢复(根本的需求是收到告警,而不关心zabbix上显示) 恢复配置: 时间成功迭代 选择 恢复表达式 恢复表达式内容: `right(last(/Template OS Linux by OOM/monitor[OOM]),1)=0` 事件成功关闭 选择 所有问题如果标签值匹配 接下来就是恢复的第二个问题,如何恢复给定的容器,如果 con1,con2 都告警了,那么会有两条记录,想要恢复触发只关闭相关的问题,需要使用到标记 在 7 选择 所有问题如何标签值匹配后,需要填入一个标签值,也就是字段名,例如:name 然后在触发器的右边栏添加一个触发器标签,名称填入 name,值使用正则过滤出容器名,如果按照我上面的数据格式,则是 `{ITEM.VALUE}.regsub("(.*)_(.*)_(.*)",\1)`,表示匹配三段下划线然后拿到第一段的内容 在配置 10 以后,测试触发、恢复数据,应该没问题了 标签到底是如何生效的呢? 通过观察,触发问题的时候就会根据标签拿到值,当恢复数据到达的时候,同样也会拿到值,如果两个值匹配,那么就会恢复值相同的全部问题
2024年08月06日
7 阅读
0 评论
0 点赞
2024-07-05
zabbix web显示的权限问题以及后台日志数据库连接问题
问题现象 zabbix在升级到某个版本后前台页面一直不太正常,dashboard 中经常会提示 permission denied ,但不是持续显示,而是一阵一阵的出现 看浏览器请求,有时候 systeminfo 这个请求可以返回正常的内容,有时候只有样式,但是没有数据,且 message 内容是 permission denied,应该可以确定是没有获取到数据导致的 排查分析 没有获取到数据,一般有如下可能: nginx、php 进程问题,调用 php 或者 php 执行脚本或代码存在权限问题 数据库问题,最终 php 代码需要在库中查询数据,但其实有时候查不到 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 的问题和解决方法极少。最后还是通过持续的观察和抓住所有可能的异常问题才确定了原因 所以解决问题还是要耐心,不能没有类似参考的例子就放弃解决,问题总是根据不同环境出现不同的现象,要善于持续的追踪、了解、分析问题。
2024年07月05日
2 阅读
0 评论
0 点赞
2023-07-21
zabbix主动模式和被动模式配置
0x0 配置区别 被动模式 agent 配置参考如下: LogFile=/tmp/zabbix_agentd.log Server=192.168.3.xxx ServerActive=192.168.3.xxx Hostname=192.168.10.xxx Timeout=30 配置比较简单,其中 ServerActive 应该是可以不用设置的,再就是 Timeout 参数官方推荐是不能太大的,因为被动模式下,所有数据由服务端获取,而拉取数据的线程是有限的,那么超时时间太大可能会影响所有机器的数据获取,但是如果设置太小,可能会出现自定义脚本运行时间太长,而服务端已经等待超时 被动模式 web 配置参考如下: 在 web 上选择添加机器,接口部分填入正确的 agent ip和端口,之后选择模板即可 主动模式 agent 配置参考如下: LogFile=/tmp/zabbix_agentd.log StartAgents=0 Server=xxx ServerActive=xxx:10055 Hostname=xxx Timeout=30 主动模式设置 StartAgents 为 0 ,表示关闭被动模式,然后设置 ServerActive 的ip或者主机名,如果服务端端口不是默认的10051,那么需要带上端口号 主动模式 web 配置参考如下: 在 web 上添加机器,接口部分可以随意填,主机名一定要跟 agent 中配置文件对应,再就是模板选择带 active 的
2023年07月21日
6 阅读
0 评论
0 点赞
2023-03-31
zabbix图形显示中文乱码
0x0 中文显示问题 zabbix web提供的默认字体如果图形内有中文会显示方框 需要修改默认提供的字体: 字体文件路径 zabbix/assets/fonts,可以添加一个微软雅黑进去,需要字体是ttf格式,使用ttc无法显示内容 修改图形内使用的字体,修改配置文件 zabbix/include/defines.ini.inc.php,搜索默认字体DejaVuSans,替换未msyh就行了 PS 有些情况下使用 微软雅黑、宋体 等都没法正常显示中文,可以选择使用 楷体(simkai) 此问题可能的原因为: 客户端浏览器不支持字体 zabbix服务端不支持字体 客户端系统不支持字体
2023年03月31日
612 阅读
0 评论
0 点赞
2023-03-31
zabbix监控esxi主机
0x0 测试直接使用vcenter sdk-url,用户,密码,无法监控成功(因为esxi机器不多暂时不研究),采用监控每台esxi主机的,每台esxi机器都需要填入 sdk-url,UUID,用户,密码 1.关于virtual machine的监控 2.关于esxi主机hypervisor的监控
2023年03月31日
6 阅读
0 评论
0 点赞
1
2