阶段九:企业级监控中间件之Zabbix高级
自动化批量监控
我们要监控的服务器数量很大的情况下,如何批量操作:
- 系统使用cobbler批量安装
- zabbix-agent安装与配置可以使用cobbler的postscript脚本实现,或者使用ansible来实现
- 监控主机元素: 监控项,图形,触发器等,统一使用模板
因为创建监控主机和添加模板都需要web界面操作,如何自动批量做?
答案: 自动发现或自动注册。
自动发现或自动注册
自动发现: 由Zabbix Server开启发现进程,每隔一段时间扫描网络中符合条件的主机。
自动注册: 与自动发现相反,由Zabbix agent去找Server注册。
所以大家看到,和前面提过的主动监控与被动监控的概念很类似。
自动发现案例:
前面早就准备了一台web02,一直还没使用,这里就尝试自动发现这台web02,并通过动作将其创建为监控主机并添加模板。
web02上安装zabbix-agent
[root@agent2 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/alma/9/x86_64/zabbix-release-7.0-2.el9.noarch.rpm
[root@agent2 ~]# mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.bak
[root@agent2 ~]# dnf install zabbix-agent -y注意事项:
- 修改配置前先备份原文件,尤其是 SSH、Nginx、数据库和 Kubernetes 生产配置。
配置agent端并启动服务
配置/etc/zabbix/zabbix_agentd.conf配置文件,配置结果如下:
[root@agent2 ~]# egrep -vn '^#|^$' /etc/zabbix/zabbix_agentd.conf
13:PidFile=/var/run/zabbix/zabbix_agentd.pid
32:LogFile=/var/log/zabbix/zabbix_agentd.log
43:LogFileSize=0
117:Server=192.168.88.145
171:ServerActive=192.168.88.145
182:Hostname=web02
333:Include=/etc/zabbix/zabbix_agentd.d/*.conf
[root@agent2 ~]# systemctl start zabbix-agent
[root@agent2 ~]# systemctl enable zabbix-agent
[root@agent2 ~]# netstat -pantul | grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 40171/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 40171/zabbix_agentd注意事项:
- 修改配置前先备份原文件,尤其是 SSH、Nginx、数据库和 Kubernetes 生产配置。
配置并启用自动发现规则
数据采集 =》自动发现
确认自动发现到主机
监测 =》自动发现
配置动作实现自动监控
告警 =》 动作 =》 发现动作 =》 点击 "Auto discovery. Linux servers."
确认动作更新并启用
验证最终效果
确认时间同步, 需要耐心等待一段时间。(可能几分钟到十几分钟)
最终效果如下:
问题: agent2上的"登录用户数"这个监控项的图形上没有数据, 为什么? 如何解决?
答:因为登录用户数,需要在zabbix_agentd.conf中添加key
小结:
① 什么是自动发现?所谓的自动发现就是Zabbix Server主动发现安装了Zabbix Agent节点 => 网段
② 自动发现实施步骤
第一步:数据采集菜单 => 自动发现 => 设置自动发现网段信息192.168.88.1-254
第二步:配置动作 =》 告警 =》 动作 =》 发现动作(找到了这台机器,对它做啥)
第三步:返回,监测菜单 =》 主机 =》 可以发现新主机信息
批量操作
把大量的服务器实现了自动监控后,后续还可能会做一些相关的批量操作,如:
- 批量启用主机
- 批量禁用主机
- 批量删除主机
数据采集 =》 主机,如下图所示:
说明:
- 因为我们建议使用模板来管理监控,所以批量更新功能也可以直接更新模板即可
- 导出功能在当前版本经测试只能导出单个主机的配置信息为
.yaml/.xml/.json格式文件
模板导出导入
辛苦配置好的模板或主机,如果被误删除了怎么办? 或者我想搭建多个zabbix服务器,那么又要辛苦再配置一遍?
解决方法就是把配置的模板或主机导出成.yaml/.xml/.json格式文件,主要有两大好处:
- 备份(防止误删除)
- 迁移(导出后, 导入到另一个服务器)
数据采集 =》 模板:
Zabbix代理
Zabbix proxy应用场景
参考: https://www.zabbix.com/documentation/current/manual/distributed_monitoring/proxies
应用场景1: 跨内外网监控
当zabbix server与被监控机器不在同一个机房时,跨公网监控会很麻烦, 也会带来安全隐患
- 比如有防火墙的情况,需要防火墙开放的端口增多
- 像mysql数据库这类应用是不适合直接被公网连接的
应用场景2: 分布式监控
当监控机主机特别多,甚至分散在不同的地域机房。这个时候zabbix server压力很大,所以可以通过增加zabbix proxy来代理收集每个机房里的主机信息,再统一给zabbix server
Zabbix proxy案例
环境准备:
1. 新增一台全新环境的服务器做proxy,修改主机名
[root@proxy ~]# hostnamectl set-hostname proxy在代理服务器位置,主机名称特别重要,一定要明确是proxy还是proxy.itcast.cn
1. 四台服务器全部重新绑定主机名
cat >/etc/hosts<<EOF
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.88.201 server
192.168.88.202 agent1
192.168.88.203 agent2
192.168.88.204 proxy
EOF
cat /etc/hosts命令作用:
- 读取并输出
>/etc/hosts<<EOF的内容;使用>重定向时,输出会写入目标文件。
- 读取并输出
/etc/hosts的内容;使用>重定向时,输出会写入目标文件。
执行结果:
- 成功后会输出指定文件内容;文件不存在或权限不足时会报错。
关键参数:
注意事项:
注意:如果/etc/yum.repos.d目录存在epel.repo文件,必须通过记事本打开,把enabled=1参数设置为enabled=0,然后在安装!
**关键参数:**
**注意事项:**
关键参数:
注意事项:
这4台都可以被proxy监控,也可以被server监控。本实验我选择以下方案:
所以==proxy,web01,web01这3台都做如下操作==:
13:PidFile=/var/run/zabbix/zabbix_agentd.pid 32:LogFile=/var/log/zabbix/zabbix_agentd.log 43:LogFileSize=0 333:Include=/etc/zabbix/zabbix_agentd.d/*.conf 361:UserParameter=loginusers,who | wc -l # 自定义监控项
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.88.146
ServerActive=192.168.88.146
Hostname=proxy
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UserParameter=loginusers,who | wc -l注意事项:
看到web01和web02有问题,目前是正常现象
一共有4种模式:
agent被动表示server或proxy去找agent拿数据。
**注意事项:**
注意事项:
本文由飞书云文档同步生成。涉及命令、SQL、配置示例时,请以飞书源文档和实际环境执行结果为准。