Zabbix配置自动发现
一、UI界面配置自动发现
数据采集->自动发现->创建发现规则
创建发现规则
添加类型
自动发现常用的键
操作系统相关
Linux
system.uname:键通常用于获取系统相关的信息,包括操作系统名称、内核版本等
net.if.discovery:自动发现网络接口,可用于监控网卡的流量、状态等信息。
vfs.fs.discovery:发现文件系统,方便监控磁盘空间使用情况、文件系统类型等。
proc.discovery:用于发现正在运行的进程,有助于监控进程的资源占用和状态。
service.discovery:发现系统服务,可对服务的启动、停止等状态进行监控。
hw.sensor.discovery:自动检测硬件传感器,例如温度和风扇转速传感器,用于硬件状态监测。
user.discovery:发现系统用户,能用于监控用户登录活动等安全相关内容。
Windows
net.if.discovery:同Linux下的功能类似,用于发现网络接口。
vfs.fs.discovery:发现文件系统,可监测磁盘分区等情况。
win_service.discovery:专门用于发现Windows服务,方便对服务状态进行监控。
proc.discovery:发现运行的进程,可用于监控进程资源占用等情况。
user.discovery:发现系统用户,用于安全监控等。
数据库相关
mysql.discovery:自动发现MySQL数据库的对象,如数据库、表等,用于监控数据库性能、连接数等指标。
oracle.discovery:用于发现Oracle数据库中的实例、表空间、数据文件等对象,可对数据库性能和状态进行监控。
postgres.discovery:能发现PostgreSQL数据库中的数据库、表、索引等对象,方便监控数据库的资源使用和查询性能。
中间件相关
tomcat.discovery:自动发现Tomcat中间件中的应用程序、Servlet、JSP页面等,可用于监控Tomcat的运行状态和性能指标。
rabbitmq.discovery:用于发现RabbitMQ消息队列中间件中的队列、交换机、绑定关系等,方便对消息队列的长度、消息收发速率等进行监控。
容器相关
docker.container.discovery:自动发现主机上运行的Docker容器,包括容器名称、ID、状态等信息,可用于监控容器资源使用情况和内部应用性能。
kubernetes.pod.discovery:用于发现Kubernetes集群中的Pods,包括Pod名称、命名空间、状态、IP地址等,可对Pods的资源使用和容器运行状态进行监控。
网络设备相关
snmp.if.discovery:如果设备支持SNMP协议,可自动发现网络设备的接口,用于监控接口的流量、状态等。
snmp.vlan.discovery:通过SNMP协议自动发现网络设备上的VLAN信息,包括VLAN ID、VLAN名称、VLAN成员端口等,用于监控VLAN相关的流量和端口状态。
cisco.config.discovery(主要用于Cisco设备):自动发现设备的配置信息,如接口配置、路由配置、访问控制列表等,用于及时发现设备配置变更。
云平台相关
aws.ec2.discovery:自动发现亚马逊AWS EC2实例的相关信息,如实例ID、实例类型、状态、IP地址等,可用于监控EC2实例的性能指标。
azure.vm.discovery:用于发现微软Azure云平台虚拟机的基本信息和性能指标,如虚拟机名称、状态、资源组、CPU使用率、磁盘I/O等,方便对虚拟机进行管理和监控。
主机做好环境部署
更改zabbix配置文件
启动zabbix-agent
[root@localhost ~]# systemctl start zabbix-agent.service
其他主机同上
注意:防火墙和SElinux环境需要提前设置
Rocky9 yum源下载
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-7.0-5.el9.noarch.rpmyum install -y zabbix-agent
UI界面观察
添加动作
发现动作
选择创建的规则
点击操作,添加动作
选择群组
再次添加操作,选择模板
查看效果
自动注册部署
添加触发条件
添加动作 主机群组
模版链接
自动注册动作设置完成
pc1安装zabbix-agent,并更改配置文件
[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf
启动服务
[root@localhost ~]# systemctl start zabbix-agent.service
查看状态
二、邮件告警设置
1.邮箱设置
登录163邮箱,设置邮箱调用授权码
复制授权码 查看SMTP服务器地址
2、Zabbix Server UI界面设置告警
告警->媒介->创建媒介类型
测试邮件能否正常发送
3、设置调用用户
用户->用户->
4、设置触发器
数据采集->主机或模版->触发器->创建触发器(假如有触发器可跳过该步骤!!)
5、添加动作
动作的作用是将触发器与告警配置联系在一起。
告警->动作->触发器动作->创建动作
设置触发操作
设置恢复操作
三、设置钉钉告警
- 登录钉钉
- 创建钉钉群
手机电脑都可以,这里使用电脑端钉钉举例
随便拉几个好友创建一个群
添加机器人,设置警告词
点击添加
生成webhook(请保管好webhook的值;后面需要用到。)
请保管好webhook的值;后面需要用到。
服务器上操作
配置钉钉脚本
#将脚本写在/usr/lib/zabbix/alertscripts/目录下
[root@zabbix ~]# cd /usr/lib/zabbix/alertscripts/##安装python或者python3
[root@zabbix alertscripts]# yum install python3[root@zabbix alertscripts]# vim dingding.py
注意:这里需要提前安装好这几个python模块:requests、json、sys、os、datetime
;
安装方式为:pip3 install requests
以此类推;
如遇到以下报错就是没有安装requests模块
,就需要pip安装一下;
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
import datetime
import logging# 配置日志(修复路径)
LOG_FILE = "/usr/lib/zabbix/alertscripts/log/dingding.log"
LOG_DIR = os.path.dirname(LOG_FILE)if not os.path.exists(LOG_DIR):os.makedirs(LOG_DIR, exist_ok=True)logging.basicConfig(filename=LOG_FILE,format='%(asctime)s - %(message)s',level=logging.INFO
)webhook = "https://oapi.dingtalk.com/robot/send?access_token=ddd766d19bf8151b84732db8bc88a9ec0f19f2bbd9791d7583397eb110f407b7"
user = sys.argv[1]
subject = sys.argv[2] + " " # 确保主题与内容分离
text = sys.argv[3]# 转义特殊字符
safe_text = text.replace("<", "<").replace(">", ">")data = {"msgtype": "text","text": {"content": f"{subject}{safe_text}"},"at": {"atMobiles": [user],"isAtAll": False}
}headers = {'Content-Type': 'application/json'}
status = "未知"try:# 增加超时和重试response = requests.post(webhook,data=json.dumps(data),headers=headers,timeout=5)# 记录完整响应logging.info(f"请求数据: {json.dumps(data)}")logging.info(f"钉钉响应: {response.status_code} {response.text}")if response.status_code == 200:result = response.json()if result.get("errcode") == 0:status = "发送成功"else:status = f"钉钉错误: {result.get('errmsg')}"else:status = f"HTTP错误: {response.status_code}"except Exception as e:status = f"异常错误: {str(e)}"logging.error(status)# 最终记录结果
logging.info(f"{datetime.datetime.now()} | {user} | {status}")
print(status) # Zabbix需要标准输出
#为脚本添加执行权限
[root@zabbix alertscripts]# chmod +x dingding.py#修改脚本的属主和属组:
[root@zabbix alertscripts]# chown zabbix.zabbix dingding.py
创建日志文件
[root@zabbix alertscripts]# mkdir -p /usr/lib/zabbix/log/[root@zabbix alertscripts]# touch /usr/lib/zabbix/log/dingding.log[root@zabbix alertscripts]# chown zabbix.zabbix -R /usr/lib/zabbix/log/
测试脚本是否能够运行成功
注意关键词
#py脚本 手机号 关键词 告警信息
./dingding.py 12312312312 告警 test
手机号写的正确的话就可以直接@他,如果随便写的就不会输出,如下图的上(正确手机号)、下(错误手机号)
成功接收到信息,完成!
web页面操作
管理–>报警媒介类型–>创建媒体类型
变量
{ALERT.SUBJECT}
{ALERT.MESSAGE}
{ALERT.SENDTO}
配置–>动作–>创建动作
#告警操作内容:
##标题:
服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
##消息内容:
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}#恢复操作内容
##标题:
服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!
##消息内容:
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.ID}
操作添加
恢复操作添加:
个人中心–>报警媒介–>添加
钉钉接收告警信息测试
自己设置好服务器的监控项
和触发器
,让他告警;
成功收到,完成!!!