目录
引言
Zabbix是一个开源的企业级分布式监控解决方案,能够监控各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。本文将详细介绍Zabbix的自定义监控、自动发现和注册以及代理设置的过程和技巧。
环境准备
类别 | IP地址 | 主机名 | 安装服务 |
zabbix服务端 | 192.168.83.90 | zbx-server | zabbix-server-mysql zabbix-agent centos-release-scl mariadb-server mariadb |
zabbix客户端 | 192.168.83.60 | zabbix-client | zabbix-agent2 |
zabbix代理端 | 192.168.83.20 | zabbix-proxy | zabbix-proxy mariadb-server mariadb |
windows客户端 | 192.168.83.253 | DESKTOP-TO8B1DA | zabbix-agent2 |
一、自定义监控内容
(一)添加监控主机
将agent客户端添加到服务端的监控范围当中
//在 Web 页面中添加 agent 主机
点击左边菜单栏【配置】中的【主机】,点击【创建主机】
【主机名称】设置成 zbx-client #自定义
【可见的名称】设置成 192.168.83.60 #自定义
【群组】选择 Linux server
【Interfaces】的【IP地址】设置成 192.168.83.60
(二)添加自定义监控内容
创建自定义 “key” 意味着在 Zabbix 监控系统中定义一个新的监控项
该监控项将执行特定的 Linux 命令并返回结果作为监控数据
案列:自定义监控客户端服务器登录的人数
需求:限制登录人数不超过 5 个,超过 5 个就发出报警信息
[root@zabbix-client ~]#who |wc -l
2
[root@zabbix-client ~]#vim /etc/zabbix/zabbix_agent2.conf
......
273 Include=/etc/zabbix/zabbix_agent2.d/﹡.conf
#指定zabbix的子目录,该路径下的所有以.conf结尾的文件,都可以识别
......
[root@zabbix-client ~]#cd /etc/zabbix/zabbix_agent2.d/
[root@zabbix-client zabbix_agent2.d]#ls
[root@zabbix-client zabbix_agent2.d]#vim user.conf
[root@zabbix-client zabbix_agent2.d]#cat user.conf
UserParameter=user.login,who|wc -l
[root@zabbix-client zabbix_agent2.d]#systemctl restart zabbix-agent2
---------------------------------------------------------------------------
UserParameter=
#Zabbix Agent配置文件中定义自定义监控项的起始标记,
#用户可以定义Zabbix Agent执行的外部命令或脚本,以收集无法通过标准监控项获取的信息。
#监控项与外部命令或脚本以键值的方式表示,以','进行分割
user.login
#自定义监控项的键名,也就是在Zabbix前端界面配置监控项时会用到的“监控项键值”。
#这个名称可以根据实际监测需求自定义,用于标识这个监控项的用途
who|wc -l
#自定义监控项键名后面的命令,这部分会在Zabbix Agent端执行。这个命令由两部分组成:
who 命令用于列出当前系统中登录的所有用户。
#wc -l 命令用于统计输入行的数量
#整个命令的作用是计算当前有多少行登录用户记录,也就等价于当前登录用户的数量
在服务端测试新建的监控项
[root@zbx-server ~]# zabbix_get -s '192.168.83.60' -p 10050 -k 'user.login'
1
#返回值为1,表示正常使用
(三)自定义监控模板
在 Web 页面创建自定义监控项模板
1.创建模板
点击左边菜单栏【配置】中的【模板】,点击【创建模板】
【模板名称】设置成 Template Login User
【可见的名称】设置成 Template Login User
【群组】选择 Template
【描述】可自定义
点击 【添加】,此时就可在【链接的模板】中搜索到 Template Login User 了
2.创建应用集
点击上方菜单栏【应用集】,点击【创建应用集】
【名称】设置成 Login User
点击 【添加】PS:应用集用于管理监控选项
3.创建监控项
点击上方菜单栏【监控项】,点击【创建监控项】
【名称】设置成users
【键值】设置成 login.user #键值必须要与自定义的监控项配置文件中设置的保持一致
【更新间隔】设置成 10s
【历史数据保留时长】Storage period 30d #保留时间可自定义设置
点击 【添加】
点击添加之前,也可以先进行联通性测试
4.创建触发器
当监控项获取到监控的值后和触发器预设的值进行对比,判断是否报警
点击上方菜单栏【触发器】,点击【创建触发器】
【名称】设置成 users than 3
【严重性】设置成 一般严重
【表达式】点击添加,【监控项】点击选择 users,【功能】选择 last(),【结果】选择 > =3,点击 【插入】
点击 【添加】
5.创建图形
点击上方菜单栏【图形】,点击【创建图形】
【名称】设置成 users
【宽】、【高】可直接采用默认值
【监控项】点击添加勾选相关监控项 users,【功能】选择 最大,其它可保持默认值
点击 【添加】
6.主机与模板关联
将主机与模板关联起来(一个主机可以关联多个模板)
点击左边菜单栏【配置】中的【主机】,点击你要关联的主机
点击上方菜单栏【模板】,【Link new tamplates】搜索 login,选择 Template Login User,点击【更新】
查看图形界面
[root@zabbix-client ~]#who|wc -l
3
#将客户端打开新的终端,使终端数量达到三个或以上,也就是用户登录的数量
再打开一个终端,数据也会同步到监控内容当中
[root@zabbix-client ~]#who|wc -l
4
7.设置邮件报警
此时,告警信息只会在web端进行显示,此时可以通过设置邮件,以邮件的方式,发送给自己的邮箱,及时响应
点击左边菜单栏【管理】中的【报警媒介类型】,点击【创建媒体类型】
【名称】设置成 qq_email
【SMTP服务器】设置成 smtp.qq.com
【SMTP服务器端口】设置成 25
【SMTP HELO】设置成 qq.com
【SMTP电邮】设置成 自己的邮箱地址,例如 1234567890@qq.com
【认证】选择 用户名和密码
【用户名称】设置成 自己的邮箱地址,例如 1234567890@qq.com
【密码】可登录QQ邮箱页面,点击【设置】-->【账户】中的【生成授权码】,通过短信获取授权码
【描述】可自定义
点击上方菜单栏【Message templates】,点击【添加】,【Message type】选择 问题,点击【更新】
点击 【添加】,并测试功能
获取qq邮箱的授权码
创建媒体类型
消息模板选择完毕之后,点击添加
测试邮箱
点击测试
登录邮箱查看
8.添加报警媒介
添加接收报警信息的收件人地址
点击左边菜单栏【User settings】-->【报警媒介】,点击【添加】
【类型】选择 qq_Email
【收件人】设置成 999999999@139.com
【当启用时】设置成 1-7,00:00-24:00
点击 【添加】
再点击 【更新】
9.添加动作
点击左边菜单栏【配置】中的【动作】,选择相对应的动作名称,点击【启用】
10.测试
10.1 添加多个终端
[root@zabbix-client ~]#who|wc -l
6
#打开多个新终端,添加用户
10.2 优化告警信息
将消息模板中的内容更换为以下内容
<b>告警时间:</b> at {EVENT.TIME} on {EVENT.DATE}<br>
<b>告警信息:</b> {EVENT.NAME}<br>
<b>告警主机:</b> {HOST.NAME}<br>
<b>告警状态:</b> {EVENT.SEVERITY}<br>
<b>告警指标:</b> {EVENT.OPDATA}<br>
<b>告警 ID:</b> {EVENT.ID}<br>
-----------------------------------------------------
{}:类似于变量
更换完毕之后点击更新
再次触发告警信息
[root@zabbix-client ~]#who|wc -l
4
[root@zabbix-client ~]#
二、zabbix自动发现
zabbix server 主动的去发现所有的客户端(对于 agent2 是被动模式),然后将客户端的信息登记在服务端上。缺点是如果定义的网段中的主机数量多,zabbix server 登记耗时较久,且压力会较大
(一)环境准备
1.确认服务正常
[root@zabbix-client ~]#systemctl is-active zabbix-agent2.service
active
#确保客户端上的 zabbix-agent2 服务状态正常
2.添加主机信息
在服务端和客户端上配置 hosts 解析
[root@zabbix-client ~]#vim /etc/hosts
[root@zabbix-client ~]#cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.83.60 zabbix-client
192.168.83.90 zbx-server
3.删除客户端
在 web 页面删除原有的客户端主机
(二)配置自动发现
1.添加自动发现
在 web 页面配置自动发现
点击左边菜单栏【配置】中的【自动发现】,点击【创建发现规则】
【名称】设置成 mynetwork
【IP范围】设置成 192.168.83.1-254
【更新间隔】设置成 30s
【检查】点击【添加】,【检查类型】选择 Zabbix 客户端,【端口范围】设置成 10050,【键值】设置成 system.uname
【设备唯一性准则】选择 IP地址
【主机名称】选择 DNS名称
【可见的名称】选择 主机名称
勾选 【已启用】,点击 【更新】点击左边菜单栏【配置】中的【动作】,上方菜单选择 【Discovery actions】
2.发现动作
点击左边菜单栏【配置】中的【动作】,上方菜单选择 【Discovery actions】
勾选 【Auto discovery. Linux servers.】,点击 【启用】
不过时间可能需要等待几十秒
三、zabbix自动注册
对于 agent2 是主动模式
zabbix agent2 会主动上报自己的信息,发给 zabbix server。
缺点是可能因为配置文件配置错误或者网络不通等原因导致 zabbix agent2 可能找不到 zabbix server
(一)环境准备
1. 禁用自动发现
点击左边菜单栏规则,点击 禁用【配置】中的【自动发现】,勾选发现
点击左边菜单栏【配置】中的【主机】,勾选原有的客户端主机,点击 删除
2.修改配置文件
修改 zabbix-agent2 配置文件
[root@zabbix-client ~]#vim /etc/zabbix/zabbix_agent2.conf
......
144 HostnameItem=system.hostname #取消注释
......
[root@zabbix-client ~]#grep -v "^#" /etc/zabbix/zabbix_agent2.conf |grep -v "^$"
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=192.168.83.90
ServerActive=192.168.83.90
Hostname=zabbix-client
HostnameItem=system.hostname
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
(二)配置自动注册
在 Web 页面配置自动注册
点击左边菜单栏【配置】中的【动作】,上方菜单选择 【Autoregistration actions(自动注册动作)】,点击【创建动作】
【名称】设置成 automatic log-on
点击 【添加】,【类型】选择 主机名称,【操作者】选择 包含,【值】设置成 zabbix-client
点击上方菜单栏【操作】,点击【添加】,【操作类型】选择 添加主机,点击 【add】
再点击【添加】,【操作类型】选择 添加到主机群组,【主机群组】选择 Linux servers,点击 【add】
再点击【添加】,【操作类型】选择 与模板关联,【模板】搜索 Linux,选择 Template OS Linux by Zabbix agent,点击 【add】
点击下方的【添加】
(三)查看结果
四、部署 zabbix 代理服务器
部署 Zabbix 代理服务器可以在被监控设备上本地采集监控数据,减轻监控服务器压力,增强安全性,并降低网络负担。即:agent --> proxy --> server。
(一)环境准备
1.关闭防护
systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zabbix-proxy
//在所有机器上添加解析信息
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.83.20 zabbix-proxy
192.168.83.60 zabbix-client
192.168.83.90 zbx-server
2.下载zabbix-proxy
[root@zabbix-proxy ~]#rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
Retrieving https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
warning: /var/tmp/rpm-tmp.dWPoRh: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-release-5.0-1.el7 ################################# [100%]
#获取下载源
[root@zabbix-proxy ~]#cd /etc/yum.repos.d
[root@zabbix-proxy yum.repos.d]#sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
#修改为阿里源
[root@zabbix-proxy yum.repos.d]#yum install -y zabbix-proxy-mysql zabbix-get
#安装zabbix-proxy代理工具,与zabbix-get工具
3.安装数据库
[root@zabbix-proxy~]# yum install -y mariadb-server mariadb
#安装 MariaDB 数据库服务器和客户端工具
[root@zbx-proxy ~]# systemctl enable --now mariad
#设置开机自启并立即启动MariaDB服务
[root@zbx-proxy ~]# mysql_secure_installation # 交互设置密码
#回车、y、输入密码、确认密码(这里设置123)、一直y回车
[root@zabbix-proxy ~]# mysql -u root -p123
MariaDB [(none)]> CREATE DATABASE zabbix_proxy character set utf8 collate utf8_bin;
# 创建了一个名为 "zabbix_proxy" 的数据库,并设置了它的字符集为 utf8,排序规则为 utf8_bin
MariaDB [(none)]> GRANT all ON zabbix_proxy.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
# 授予了名为 "zabbix" 的用户对 "zabbix_proxy" 数据库的全部权限,并使用密码 "zabbix" 进行身份验证
[root@zabbix-proxy ~]# rpm -ql zabbix-proxy-mysql # 查询sql文件的位置
/usr/share/doc/zabbix-proxy-mysql-5.0.42
[root@zabbix-proxy ~]# zcat /usr/share/doc/zabbix-proxy-mysql-5.0.42/schema.sql.gz | mysql -uroot -p123 zabbix_proxy
# 将Zabbix代理程序所需的数据库结构和初始数据导入到了zabbix_proxy数据库中
[root@zabbix-proxy ~]# vim /etc/zabbix/zabbix_proxy.conf # 修改zabbix-proxy配置文件
30 Server=192.168.83.90 # 指定zabbix服务端的IP地址
49 Hostname=zabbix-proxy # 指定当前zabbix代理服务器的主机名
196 DBPassword=zabbix # 指定当前数据库zabbix用户的密码
[root@zabbix-proxy ~]# systemctl start zabbix-proxy # 启动 Zabbix 代理服务
[root@zabbix-proxy ~]# systemctl enable zabbix-proxy # 设置 Zabbix 代理服务开机自启动
4.配置agent代理
在 Web 页面配置 agent 代理
4.1 删除原有信息
配置之前,删除之前的主机信息
点击左边菜单栏【配置】中的【动作】,勾选自动注册规则,点击 禁用
点击左边菜单栏【配置】中的【主机】,勾选原有的客户端主机,点击 删除
4.2 配置代理
点击左边菜单栏【管理】中的【agent代理程序】,点击【创建代理】
【agent代理程序名称】设置为 zabbix-proxy
【系统代理程序模式】选择 主动式
【代理地址】设置为 192.168.83.20
点击 【添加】
5.修改agent端配置文件
配置 agent 使用 proxy
[root@zabbix-client ~]#vim /etc/zabbix/zabbix_agent2.conf
......
80 Server=192.168.83.20 #指向代理端,将注册信息发送到代理端,由代理端发送给服务端
125 ServerActive=192.168.83.20 #指向代理端,将注册信息发送到代理端,由代理端发送给服务端
......
[root@zabbix-client ~]#systemctl restart zabbix-agent2.service #重启服务
6.添加主机
点击左边菜单栏【配置】中的【主机】,点击【创建主机】
【主机名称】设置成 zabbix-client
【可见的名称】设置成 zabbix-client
【群组】选择 Linux server
【Interfaces】的【IP地址】设置成 192.168.83.60
【由agent代理程序监测】选择 zabbix-proxy再点击上方菜单栏【模板】
【Link new tamplates】搜索 Linux ,选择 Template OS Linux by Zabbix agent
点击 【添加】
7.查看结果
在代理端追踪日志信息
查看服务端日志
在web界面查看直接信息主机信息
五、zabbix-snmp监控
设置 Zabbix SNMP 监控是用于通过简单网络管理协议(SNMP)监测网络设备、服务器和网络中的其他设备,以实时监控它们的性能参数和运行状态,以便及时发现和解决问题
(一)安装snmp监控程序
[root@zbx-server ~]# yum install -y net-snmp net-snmp-utils
#服务端安装snmp监控程序
[root@zbx-server ~]# vim /etc/snmp/snmpd.conf #修改配置文件
57 view systemview included .1 #57行添加此信息
# included关键字后面的 .1表示该视图包含的子树;.1代表整个MIB-2树,也就是包含了整个SNMPv2-SMI组织的树
# 这一行的含义是将整个MIB-2树包含在了名为systemview的视图中
[root@zbx-server ~]# systemctl start snmpd
(二)使用snmp命令测试
[root@zbx-server ~]# snmpwalk -v 2c -c public 127.0.0.1 sysname
SNMPv2-MIB::sysName.0 = STRING: zbx-server
-----------------------------------------------------------------------
#使用了snmpwalk命令来获取127.0.0.1(本地)设备的sysName
#-v 2c指定了使用SNMP版本 2c
#-c public表示使用公共团体名 "public" 进行身份验证。
#在实际应用中,"public" 是一个常见的默认团体名,但从安全角度来看并不推荐使用。
#在生产环境中应该使用更加安全的团体名和访问控制
#sysname 是要获取的信息类型,这里是系统名称
(三)配置snmp方式监控
在 Web 页面配置 snmp 方式监控
点击左边菜单栏【配置】中的【主机】,点击 Zabbix server
【Interfaces】点击【添加】选择 SNMP ,端口设置成 161
点击上方菜单栏【模板】,【链接的模板】中的所有 agent 模板选择取消链接并清理
再在【Link new templates】中搜索 Linux SNMP,选择 Template OS Linux SNMP
点击 【更新】,等待一段时间后 Zabbix server 的可用性就变成了 SNMP 监控方式。
:指定共同体字符串
等待一段时间后,Zabbix server 的可用性就变成了 SNMP 监控方式
六、Windows监控
Zabbix 监控 Windows 服务器主要通过安装 Zabbix Agent 实现。它收集本地机器的性能数据,并将这些数据发送给 Zabbix Server 或 Proxy
Zabbix Agent下载地址:Zabbix:企业级开源监控解决方案
(一)安装Zabbix Agent
在Windows机器上安装Zabbix Agent
(二)添加主机
在zabbix服务端的web界面,添加windows主机
点击左边菜单栏【配置】中的【主机】,点击【创建主机】
【主机名称】设置成 windows-253
【可见的名称】设置成 windows-253
【群组】选择 windows sever(新)
【Interfaces】的【IP地址】设置成 192.168.83.253 #windows机器的IP地址再点击上方菜单栏【模板】
【Link new tamplates】搜索 Linux ,选择 Template OS Windows by Zabbix agent
点击 【添加】
查看结果