Finer04's Blog
首页
乱写一通
脑洞破文
随便谈谈
当前播放.page
Zabbix 常用配置笔记
Finer04
April 13, 2020
4472 字
文章目录
每天上班的时候刚有新任务需要搭个节点或者实现某个需求之时,总会忘记这玩意怎么搞来着,搞到明明之前做过的东西还得百度一次才会,没用啊没用啊,还是自己写个归纳好一点,免得以后一个一个翻了。 ## Zabbix-Agent/Proxy 开不了服务 先关掉 SELinux ,不然无法启动,命令如下。 #临时关闭 setenforce 0 #永久关闭 vi /etc/selinux/config SELINUX=disable #查看情况,如果输出结果为 0 则关闭成功 getenfoce 但如果关闭了 SELinux 也无法解决问题,请检查配置文件有无问题(当初我删了个注释就无法启动服务,很烦)。 ## 配置相关 ### 主动式监控 Zabbix 默认用被动式监控,即 Server 向各个地方的 Agent 请求数据,Agent 再发给 Server,这样做初期没什么问题,但一旦业务量开始多起来就很消耗 Server 的网络资源,为了节省网络资源,主动式监控才是我们的选择 先修改 `/etc/zabbix/zabbix_agentd.conf` ,更改以下内容 StartAgents=0 ServerActive=[ServerIP] 监控项也要改,可以先把被动模板克隆出来,把所有监控项选中,在点击 `批量更新` 后,将类型全改成主动式才可以。  当然,如果自己要添加监控项,也要改成主动式才能生效。(注:更改主动式后,`ZBX` 的图标会变成红色,因为绿色状态是被动式监控,要验证是否能获得数据请看最新数据)  ### 加快 proxy 的同步配置速度 在简单检查的监控项,只能在 Server 或 Proxy 端工作,而不能在 Agent 端工作。但如果做分布式节点的话,主要还是交给 Proxy 处理简单检查的监控项。但有时候我们配置好了相关规则,过了半个小时才出图或结果,原因是 proxy 获取 server 的配置数据的等待时间太长了(注:不是说网络问题,而是 proxy 每次获取数据都有时间间隔,默认1小时获取一次)。 我们只需修改 Proxy 的获取数据时间间隔,就能加快同步速度了。 | 参数名称 | 必须? | 范围 | 默认值 | 描述信息 | | :-------------- | :------- | :------- | :----- | :----------------------------------------------------------- | | ConfigFrequency | 否 | 1-604800 | 3600 | 每隔多少秒 proxy 从 Zabbix server 获取配置数据。 该参数只有主动 proxy才会使用,proxy 工作模式由参数 ProxyMode 决定。 | [root@localhost ~]# cat /etc/zabbix/zabbix_proxy.conf | grep ConfigFr ### Option: ConfigFrequency ConfigFrequency=600 重启服务即生效 ## 监控项方面 ### 自定义监控项 自定义监控项可以使用自己写的脚本获取数值,首先要先修改 `/etc/zabbix/zabbix_agentd.conf` ,更改以下内容 EnableRemoteCommands=1 Include=/etc/zabbix/zabbix_agentd.d/*.conf 我不会在配置文件中设置自定义监控项,太麻烦了,我在 `/etc/zabbix/zabbix_agentd.d/` 目录随便弄个配置文件就行了 [root@localhost ~]# cat /etc/zabbix/zabbix_agentd.d/user.conf UserParameter=dnscheck,/home/ping.sh #如果需要传递参数的话,要这样。 UserParameter=nscheck[*],/home/ns.sh $1 重启 Agent 服务,在 Zabbix 的监控项使用这个键值就行了。关于键值与自定义监控项更多内容请查阅官方手册 [^1] [^1]: [Zabbix Documentation 4.0 - 用户自定义参数 中文](https://www.zabbix.com/documentation/4.0/zh/manual/config/items/userparameters) ### 监控 1 分钟之内的 CPU 负载 Zabbix 本身自带对 CPU 负载的监控,但那个太儿戏了,是监测每一个线程的负载,而不是全部线程的负载情况,需要修改 `Processor load (1 min average per core)`,将键值改成 `system.cpu.load[all,avg1]` ## 常用宏 以下内容摘自官方文档 [^2],先把经常会用到的宏列出来 | MACRO | 作用 | |-----|----| | {HOST.IP} | 显示监控主机的 IP 地址 | | {HOST.NAME} | 显示监控主机的主机名称 | | $1 | 在触发器中显示当前监控项的值 | | {ITEM.VALUE} | 同上 | [^2]: [Zabbix Documentation 4.0 宏使用场景](https://www.zabbix.com/documentation/4.0/zh/manual/appendix/macros/supported_by_location) ## SNMP 自动发现交换机相关监控项 Zabbix 的交换机模板的自动发现只有网络接口(Network Interfaces)发现,其他就只能靠自己发挥了,不过大概原理也很简单,先轮询交换机所有接口的索引号,再基于索引号找该接口的速率(ifSpeed)/错误包(ifErrors) 等 OID 信息。如果我要弄一个自动发现接口收发光的话,大概步骤就跟上面差不多。 ### 发现规律 查阅交换机厂商官方文档找到相关的 MIB 信息(毕竟深入一些的 OID 是厂商私有),使用 SNMPWALK 跑一遍。这里我找的是华三(H3C)交换机的 SNMP OID,现在 snmpwalk 跑一下这个 OID 前缀试试。 snmwalk -v 2c -c public IP地址 1.3.6.1.4.1.25506.2.70.1.1.1.12  查询完毕后,可以看到,OID 最后一个数值就是接口的索引号(图就不放了,请自己walk一遍 `IF-MIB::ifDescr`),也就是说 zabbix 只需要探测到接口的索引号再加到这个收发光 OID 最后就可以获得数据了。 ### 创建规则 规则如图所示 - 名称:随意 - 类型:SNMPv2 客户端 - 键值:ifDescrRR(如果直接使用 ifDescr 会与接口发现规则冲突,不重名即可) - SNMP OID:discovery[{#SNMPVALUE},IF-MIB::ifDescr] (跟接口发现一样,目的只是找索引号) - 团队名:请查询自己的交换机  还有一步,`{#SNMPVALUE}` 本身是一个宏,在这里起一个过滤器的作用,规则填好后,点击 `过滤器` 标签页。根据需求,收发光只需要发现万兆口即可,千兆口和百兆口基本都是电口为主(SFP 插槽另外再算),所以我们只需要找万兆口的名称即可。当然如果想所有物理端口也能找到就改成 Ethernet,要发现逻辑接口就 {Vlanif|Eth-trunk}。  ### 配置自动发现监控项原型 发光和收光不可能用一个监控项就能输出两个,只能一分二。那就先配置监控项吧。 - 名称: - Rx - {#SNMPVALUE} 的收光 - Tx - {#SNMPVALUE} 的发光 - 该宏会自动补充接口的名称 - 类型:SNMP v2 客户端 - 键值: - 收光:`1.3.6.1.4.1.25506.2.70.1.1.1.12.{#SNMPINDEX}` - 发光:`1.3.6.1.4.1.25506.2.70.1.1.1.9.{#SNMPINDEX}` - SNMP community:public - 信息类型:浮点数 (真实的光衰不可能是整数) - 自定义倍数:0.01 (看上面的 snmpwalk 的截图,获取的数据都是整数,实际上没有加上小数点)  ### 结果 怎么加模板或者开启自动发现我就不说了,在 Proxy 接收到来自 Server 的配置信息后就会开始工作。 (图就不放了,公司业务的 Zabbix 不好发出来。) ## 待补全 真的待补全,我还有一堆笔记还没归纳好,会持续更新
Zabbix
评论已关闭
▲ Top
评论已关闭