阶段九:企业级监控中间件之Zabbix高级

自动化批量监控

我们要监控的服务器数量很大的情况下,如何批量操作:

因为创建监控主机和添加模板都需要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

注意事项:

配置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

注意事项:

配置并启用自动发现规则

数据采集 =》自动发现

确认自动发现到主机

监测 =》自动发现

配置动作实现自动监控

告警 =》 动作 =》 发现动作 =》 点击 "Auto discovery. Linux servers."

确认动作更新并启用

验证最终效果

确认时间同步, 需要耐心等待一段时间。(可能几分钟到十几分钟)

最终效果如下:

问题: agent2上的"登录用户数"这个监控项的图形上没有数据, 为什么? 如何解决?

答:因为登录用户数,需要在zabbix_agentd.conf中添加key

小结:

① 什么是自动发现?所谓的自动发现就是Zabbix Server主动发现安装了Zabbix Agent节点 => 网段

② 自动发现实施步骤

第一步:数据采集菜单 => 自动发现 => 设置自动发现网段信息192.168.88.1-254

第二步:配置动作 =》 告警 =》 动作 =》 发现动作(找到了这台机器,对它做啥)

第三步:返回,监测菜单 =》 主机 =》 可以发现新主机信息

批量操作

把大量的服务器实现了自动监控后,后续还可能会做一些相关的批量操作,如:

数据采集 =》 主机,如下图所示:

说明:

模板导出导入

辛苦配置好的模板或主机,如果被误删除了怎么办? 或者我想搭建多个zabbix服务器,那么又要辛苦再配置一遍?

解决方法就是把配置的模板或主机导出成.yaml/.xml/.json格式文件,主要有两大好处:

数据采集 =》 模板:

Zabbix代理

Zabbix proxy应用场景

参考: https://www.zabbix.com/documentation/current/manual/distributed_monitoring/proxies

应用场景1: 跨内外网监控

当zabbix server与被监控机器不在同一个机房时,跨公网监控会很麻烦, 也会带来安全隐患

应用场景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/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、配置示例时,请以飞书源文档和实际环境执行结果为准。