查看原文
其他

Zabbix 自动发现规则如何使用过滤器等应用技能三则 | 运维进阶

twt社区 twt企业IT社区 2024-02-18
【摘要】本文包括三篇Zabbix应用技能分享:Zabbix 通过 API 监控 k8s;Zabbix自动发现规则如何使用过滤器;Zabbix_server 高可用之文件同步

【作者】许远,任职于广州九一乐维信息科技有限公司;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”


长按二维码关注公众号

*本公众号所发布内容仅代表作者观点,不代表社区立场

继续滑动看下一个

Zabbix 自动发现规则如何使用过滤器等应用技能三则 | 运维进阶

向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存