Zabbix 自动发现规则如何使用过滤器等应用技能三则 | 运维进阶
【作者】许远,任职于广州九一乐维信息科技有限公司;Zabbix大叔_乐维
Zabbix 通过 API 监控 k8s
作者:广州九一乐维运维工程师 许远
监控方式:python+zabbix _sender
原理:python的request库,请求k8s的api地址,对数据处理。
第一步:获取k8s的api地址
查看K8S的api地址的命令如下( 最好在K 8s 集群的master上执行这条命令 ,因为如果在node节点上执行该命令有可能会获取旧的api地址)
第二步:K8S集群的Master主机生成一个token用来认证,请求数据api数据
生成令牌命令如下(在K 8S 的Master主机执行命令)
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
把token的值保存在本地的一个文件即可,后期需要把token值添加到脚本中。
模板脚本下载地址:
链接:https://pan.baidu.com/s/1zIBudV8pI4peaQ21_sgPMg
提取码:gt8i
第三步:上传脚本并修改脚本
cd /usr/local/zabbix/share/zabbix/exter nalscripts 目录下创建一个命名k 8s 的目录,把get _k8s.py 脚本放到此目录
需要修改脚本三个地方
上传外部检查get _k8s 脚本到/usr/local/zabbix/share/zabbix/exter nalscript 目录
第四步创建主机并且套用脚本
注意:主机名称必须是k 8s _master,否则无法获取数据。(因为数据是通过zabbix_sender发送到该主机)
第五步,手动触发脚本
选中该监控项。点击立即检查
数据效果
Zabbix通过api获取k8s结果成功
Zabbix自动发现规则如何使用过滤器
作者:广州九一乐维运维工程师 许远
最近在做监控设备时,老是会有端口down掉的告警,一查数据发现,端口本来一直就是down的,关了之后,过段时间又继续发告警;还有领导反馈监控项那么多为啥那么多没有数据的,然后又blablabla解释了一大堆。所以,就想到了使用过滤器,添加正则表达式给这些没啥实际意义的监控项去掉,记录下来供大家参考。具体操作请以实际情况为准。
过滤器,顾名思义是指过滤掉不需要的监控项,比如端口没有数据的、状态一直是down的、虚拟端口等;在自动发现规则使用过滤器就对我们的监控需求很有帮助。
下面以网络设备的端口的状态、虚拟端口为例,浅谈一下如何使用过滤器帮助我们达到监控效果,也可以在其他有自动发现规则的模板使用,过滤前可以先观察实际情况的数据,然后再使用过滤器。
1、过滤掉虚拟端口(Virtual Interface)
如下图所示的,Vlanif(VirtualLocalAreaNetworkIterface)这些端口,一般是设备的逻辑端口,在物理上并不存在的,类似的还有virtual interface、Vinterface等名称的,都属于虚拟端口。监控这些虚拟的端口没有实际意义,可以适当的过滤。
过滤方法:在自动发现规则添加正则表达式 ^Vlanif,然后点 现在检查 等待重新自动发现即可过滤此类监控项。
2、不发现状态关闭或者未知的端口
通常端口的状态有三个值映射,也就是 0 Unknow、1On 、2 Down,当然每种型号的设备可能会有所区别,需要根据实际的设备OID查询。我们一般会把端口的状态是Down的情况创建触发器,但假如端口一直是 Off的,然后一直发告警信息,这就不符合实际监控需求,应该是有up转down才送告警。因此需要在自动发现时,过滤状态为Down的端口。
打开端口状态的监控项,复制oid到自动发现规则
在过滤器添加正则表达式,过滤掉状态为2(Down)的端口
然后加到自动发现规则里面,更新后,点击现在检查,等规则重新发现数据后,就会过滤掉状态为Down的端口了。
当然,这个是一个一个模板的添加修改的,在模板较多时,不方便,可以在 配置 – 一般 – 正则表达式,创建全局的表达式,然后在自动发现规则引用即可以。
示例:
引用方式:点击添加表达式,输入宏,使用 @Network interfaces for discovery 即可。
关于正则表达式的使用,可以参考一些教程。
Zabbix_server 高可用之文件同步
场景模拟:
某知名企业搭建了一套zabbix_server的高可用环境,然后通过虚拟ip(192.168.1.1)来访问真实的zabbix_server(主节点:192.168.1.2)。当zabbix_server主节点发生异常后,虚拟ip就会映射到zabbix_server(备节点:192.168.1.3)上。这时候他们做了一个高可用的切换过程。但是切换高可用后,zabbix备节点界面出现了主机无法获取数据的告警,经排查,是因为zabbix_server(主节点)上的一些自定义键值文件和自定义脚本,还有外部检查文件没有添加到zabbix_server的(备节点),所以即使切换后,zabbix_server可以访问,但是由于备节点上缺失自定义脚本的相关文件,导致zabbix备节点无法获取部分主机的数据。
部署过程:
第一步:在zabbix_server(主节点)和zabbix_server(备节点)上安装rsync服务
yum install rsync
启动rsync –daemon启动服务
Rsync --daemon
用ss –ntl查看rsync服务,默认端口为873
接着在主zabbix和备zabbix上编辑/etc/rc.local文件,把rsync服务设置为开机启动
在rc.local中加入/usr/bin/rsync –daemon
接下来要到备节点zabbix上配置
echo “test:test”> /etc/rsync.password&&chmod 600 /etc/rsync.password
创建rsync的password文件并更改权限。
接着配置/etc/rsyncd.conf的配置文件
uid和gid为nobody,即使说进行同步或者备份的用户为任何用户和任何组
然后[extend_data]和[data]为一个认证模块名,即一个认证模块名,代表同步一个目录,上面配置为同步两个目录
Read only=no
允许可读写
Auth users =test
认证的用户是test
Secrets file=/etc/rsync.password
密码文件存放的地址
备zabbix节点配置完成
下面开始主zabbix节点配置
在主节点zabbix上,创建一个用户test。要和备节点上的auth users对应。
接着创建一个密码文件。
echo “test”> /etc/rsync.password&&chmod 600 /etc/rsync.password
此时就可以在主节点zabbix上实现同步
rsync -avzP /usr/local/zabbix/ test@192.168.1.3::data --password-file=/etc/rsync.password
/usr/local/zabbix为需要同步的目录。test是用来同步备份的账号,192.168.1.3是备zabbix节点的ip,data是备节点上认证模块的名字
同步成功。
上面的同步方式不会删除文件。比如在主节点zabbix同步目录下删除了1.html文件,那么备节点zabbix仍然会存在1.html文件。如果要做到主zabbix删除了文件,备节点也要删除文件,必须添加-delete参数。
如有任何问题,可点击文末阅读原文,到社区原文下评论交流
觉得本文有用,请转发、点赞或点击“在看”,让更多同行看到
资料/文章推荐:
欢迎关注社区 "zabbix"技术主题 ,将会不断更新优质资料、文章。地址:
https://www.talkwithtrend.com/Topic/9739
下载 twt 社区客户端 APP
长按识别二维码即可下载
或到应用商店搜索“twt”
*本公众号所发布内容仅代表作者观点,不代表社区立场