目录
生成webhook(请保管好webhook的值;后面需要用到。)
一.故事背景
在之前的zabbix学习中,学习了如何安装配置zabbix,如何创建新模板,构建监控项,图像等内容,本节内容继续推进,讲述如何添加自动部署,触发器等动作。
二.自动发现
自动发现是指通过zabbix自带的网络扫描功能扫描整个设置好的ip地址段内的符合要求的主机
自动发现常用的键
操作系统相关
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等,方便对虚拟机进行管理和监控。
创建规则
现在开启一台虚拟机,ip为192.168.71.195,下载agent服务后观察是否自动检测
重启服务就发现已经添加了
三.自动发现动作
把刚才新添加的自动检查加入,并增加动作
成功添加,此时返回查看主机,可以发现刚才自动发现的主机已经添加了模板
四.自动注册动作
已经进行自动发现的主机不会被自动注册
此时进行主机配置,重启服务
此时等待片刻发现host1出现了
五.邮件告警
创建媒介
(SMTP寻找方式:
注意划线密码是授权登录密码,而不是登录密码
测试邮件是否可用 (可用)
添加用户组
然后点击更新
邮件告警
添加测试脚本,检查同时使用用户人数,脚本语句如下
UserParameter=user_sum,w | awk 'NR >= 3{print | "wc -l"}'
重启服务,并从监控机测试
定义模板(之前定义的模板)
创建监控项和图形
关联组
开始测试
使人数增加
然后查看邮箱
再将人数恢复
再查看邮箱
六.设置钉钉告警
创建钉钉群
生成webhook(请保管好webhook的值;后面需要用到。)
请保管好webhook的值;后面需要用到。
服务器上操作
配置钉钉脚本
cd /usr/lib/zabbix/alertscripts/
vim dingding.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
import datetime
webhook = 写刚才保存的webhock
user=sys.argv[1]
subject=sys.argv[2]
text=sys.argv[3]
data={
"msgtype": "text",
"text": {
"content": "%s%s"%(subject,text)
},
"at": {
"atMobiles": [
user
],
"isAtAll": False
}
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/usr/lib/zabbix/log/dingding.log"):
f=open("/usr/lib/zabbix/log/dingding.log","a+")
else:
f=open("/usr/lib/zabbix/log/dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:
f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送成功"+"\n"+str(text))
f.close()
else:
f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送失败"+"\n"+str(text))
f.close()
#为脚本添加执行权限
chmod +x dingding.py
#修改脚本的属主和属组:
chown zabbix.zabbix dingding.py
创建日志文件:
mkdir -p /usr/lib/zabbix/log/
touch /usr/lib/zabbix/log/dingding.log
chown zabbix.zabbix -R /usr/lib/zabbix/log/
测试脚本是否能运行成功:
./dingding.py 手机号 告警 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}
恢复操作添加:
更新媒介
钉钉接收告警信息测试
自己设置好服务器的监控项
和触发器
,让他告警;
完成测试