1
自动化监控是不需要手动添加机器,自动完成机器的添加、关联模板和启用主机。自动化监控有两种策略:自动发现和自动注册。
自动化策略 | 共同点 | 区别 |
---|---|---|
自动发现 | 自动添加主机并关联模板 | 服务端主动 使用简单,效率较低 zabbix服务端压力大 |
自动注册 | 自动添加主机并关联模板 | 客户端主动 配置稍微繁琐,高并发效率高 zabbix服务端压力小 |
当机器比较多的时候,如果用自动发现的策略会导致服务端压力很大,所以建议使用自动注册的策略。先使用ansible配置好客户端环境,然后在web页面配置即可
Auto Discovery
需要先完成zabbix客户端部署
安装zabbix-agent客户端
1 | yum install -y zabbix-agent2 |
编辑zabbix-agent客户端 配置文件
1 | vim /etc/zabbix/zabbix_agent2.conf # 编辑zabbix客户端配置文件,配置以下内容 |
启动zabbix-agent客户端,并设置自启
1 | systemctl enable zabbix-agent2 |
配置自动发现规则
配置添加主机动作
进入zabbix监控的web界面,点击侧边栏的配置>动作,点击左上角触发器动作,改为发现动作。
点击右上角创建动作,或者点击已有动作进行修改。
配置动作,设置动作名称以及条件
配置操作,设置动作的具体操作
稍等一段时间,会发现主机数量增加(web页面侧边栏 > 监测 > 主机)
Auto Registration
配置客户端
安装zabbix-agent客户端
1 | yum install -y zabbix-agent2 |
编辑zabbix-agent客户端 配置文件
1 | vim /etc/zabbix/zabbix_agent2.conf # 编辑zabbix客户端配置文件,配置以下内容 |
启动zabbix-agent客户端,并设置自启
1 | systemctl enable zabbix-agent2 |
配置自动注册动作
进入zabbix监控的web界面,点击侧边栏的配置>动作,点击左上角触发器动作,改为自动注册动作。
点击右上角创建动作,或者点击已有动作进行修改。
配置动作,设置动作名称以及条件
配置操作,设置动作的具体操作
稍等一段时间,会发现主机数量增加(web页面侧边栏 > 监测 > 主机)
除了添加主机的方式分为主动和被动以外,获取监控项数据的方式也分为主动和被动。
被动 | 主动 | |
---|---|---|
特点 | 服务端向客户端索取数据 | 客户端主动向服务端提供数据 |
性能 | 服务端性能压力大 | 对服务端要求不高 |
配置 | 默认是被动模式:Server=服务端IP | zabbix客户端配置文件增加:ServerActive=服务端IP |
生产应用 | 不推荐 | 推荐使用主动模式 |
主动模式的配置步骤:
配置客户端
安装zabbix-agent2客户端,修改配置文件
1 | yum install -y zabbix-agent2 |
修改监控项
找到模板中的监控项,或者某个主机的监控项,把类型为Zabbix客户端
的监控项,批量更新为Zabbix客户端(主动式)
类型。
上面说的自动发现
和自动注册
是自动添加主机的策略。
在传统思路中,监控项是写死的,比如几张网卡eth0、eth1等,如果想要自动查找出主机中新增加或者减少的网卡,再进行监控,传统思路是没办法实现的,可以通过lld来实现
低级自动发现(Low Level Discovery),是指在监控项的层面,希望zabbix自动添加一些动态的监控项,比如网卡、磁盘、磁盘分区等。
低级自动发现适合用于监控那些有规律又有一定差异的监控对象,比如服务的多个端口,磁盘分区、网卡等
zabbix内置了一些自动发现规则,
进入zabbix监控的web界面,点击侧边栏的配置>主机,可以看到主机自带了一些自动发现的规则
点击自动发现,可以看到自动发现规则清单
点击旁边的监控项原型,可以查看每个自动发现规则会获取哪些监控项
点击蓝色的自动发现规则名称,可以查看具体的规则信息
自动发现的本质是利用键值,比如net.if.discovery
在服务端中测试
1 | zabbix_get -s lb01 -k net.if.discovery | jq # 获取键值,json格式用jq工具处理 |
以获取nc
的多端口为例,先使用nc
工具生成几个进程占用不同的端口在后台运行。
创建lld规则
编写取出端口号的命令,并把多个端口的内容生成符合zabbix自动发现规则的格式,以下面的格式为例
1 | ss -tunlp | grep -w nc # 查询nc进程占用的端口号,输出以下内容 |
根据此次需求,编写脚本
1 | vim /server/scripts/net.port.discovery.sh |
在zabbix客户端的配置文件中写入自定义键值
1 | vim /etc/zabbix/zabbix_agent2.d/xxx.conf |
在服务端进行测试
1 | zabbix_get -s 192.168.110.135 -k net.port.discovery # 如果没获取到想要的数据,也可能是zabbix用户没有root执行权限导致的 |
在web页面操作
配置>主机>点击对应主机的自动发现>创建发现规则,填写相关信息,点击添加即可。
根据自动发现的端口,创建监控项原型
比如要添加一个端口是否存在的监控项原型,可以直接使用内置的键值net.tcp.port[<ip>,port]
,直接在自动发现规则里面添加监控项原型
<ip>
表示这个参数可以忽略,但是后面的逗号不能忽略
port
这个参数替换为{#PORTNAME}
如果要添加一个自定义的监控项原型,跟上面的过程类似,不过键值要自己创建,简单的值用一条命令,复杂的值就创建脚本,然后写在客户端的键值配置文件里,并测试可以获取到值。
根据自动发现的端口,创建触发器原型
跟自定义监控类似,不再赘述
根据自动发现的端口,创建图形原型
跟自定义监控类似,不再赘述