ZABBIX配置自动发现与自动注册,网易邮箱告警和钉钉告警

一、自动发现

  • zabbix server 主动的去发现所有的客户端,然后将客户端的信息登记在服务端上。

  • 缺点是如果定义的网段中的主机数量多,zabbix server 登记耗时较久,且压力会较大。

1、部署准备

准备三台虚拟机

192.168.80.151;192.168.80.152做自动发现

192.168.80.153 做自动注册

2、配置安装源

cs 复制代码
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-7.0-5.el9.noarch.rpm

yum clean all

3、修改主配置文件

cs 复制代码
[root@localhost ~]# cd /etc/zabbix/
[root@localhost zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d
[root@localhost zabbix]# vim zabbix_agentd.conf 



117 Server=192.168.80.150

4、关闭防火墙和上下文

cs 复制代码
systemctl disable --now firewalld
 setenforce 0

5、启动服务

二、设置自动发现

点击监测--自动发现,两台主机已经连接

2、找到告警,发现动作

添加成功后,回到数据采集--主机 刷新等待一会,发现已经创好了

三、自动注册动作

设置自动发现的主机尽量不要再设置自动注册,会有影响

添加成功后回到客户端修改配置

cs 复制代码
[root@localhost zabbix]# vim zabbix_agentd.conf 

ServerActive=192.168.80.150


Hostname=host1


[root@localhost zabbix]# systemctl start zabbix-agent.service 

四、邮件告警设置

1、登录邮箱点击设置,查看SMTP

复制授权码

2、创建媒介

告警->媒介->创建媒介类型

用户网易用户

密码就是上面的授权码

创建完成点击消息模板,创建问题

测试邮件发送

3、设置调用用户

4、添加模板

在终端创建一个脚本文件,测试用户登陆数量

cs 复制代码
[root@localhost zabbix_agentd.d]# cat test.conf 
UserParameter=user_count,w | awk 'NR>=3{print|"wc -l"}'



在服务器上测试
[root@zabbix zabbix_agentd.d]# zabbix_get -s 192.168.80.151 -p 10050 -k user_count
4

数据采集->主机或模版->触发器->创建触发器(假如有触发器可跳过该步骤!!)

5、创建图形

6、创建触发器

设置关联

点击告警---动作--触发器动作

操作详情

7、回到终端测试

观察图形

查看邮件,收到一条问题

五、设置钉钉警告

  • 登录钉钉

  • 创建钉钉群

手机、电脑都可以,这里以电脑举例

这里可以自己随便选择,我选择的是内部群

添加机器人-->设置关键词

点击添加机器人

添加"机器人"-->"自定义"

生成webhook(请保管好webhook的值;后面需要用到

服务器上操作

  • 配置钉钉脚本
cs 复制代码
#将脚本写在/usr/lib/zabbix/alertscripts/目录下
[root@zabbix ~]# cd /usr/lib/zabbix/alertscripts/

##安装python或者python3
[root@zabbix alertscripts]# yum install python3
 

**注意:**这里需要提前安装好这几个python模块:requests、json、sys、os、datetime;

安装方式为:pip3 install requests 以此类推;

如遇到以下报错就是没有安装requests模块,就需要pip安装一下;

cs 复制代码
[root@zabbix ~]# mkdir -p  /usr/lib/zabbix/alertscripts/
[root@zabbix ~]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix alertscripts]# vim dingding.py
[root@zabbix alertscripts]# chmod +x dingding.py
[root@zabbix alertscripts]# chown zabbix.zabbix dingding.py
cs 复制代码
[root@zabbix alertscripts]# cat dingding.py 
#!/usr/bin/env python
# -*- coding: utf-8 -*- 
import requests
import json
import sys
import os
import datetime
webhook = "https://oapi.dingtalk.com/robot/send?access_token=382cec5bbd171e65780867f926cfdea2ad8faf92d4b7216e48bee4c8a60601d6"
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/alertscripts/log/dingding.log"):
        f=open("/usr/lib/zabbix/alertscripts/log/dingding.log","a+")
else:
        f=open("/usr/lib/zabbix/alertscripts/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()

为脚本添加权限和更改属主属组

cs 复制代码
#为脚本添加执行权限
[root@zabbix alertscripts]# chmod +x dingding.py
 
#修改脚本的属主和属组:
[root@zabbix alertscripts]# chown zabbix.zabbix dingding.py
  • 创建日志文件:
cs 复制代码
[root@zabbix alertscripts]# mkdir -p  /usr/lib/zabbix/alertscripts/log

[root@zabbix alertscripts]# touch /usr/lib/zabbix/alertscripts/log/dingding.log

###递归更改的 属主属组
[root@zabbix alertscripts]# chown zabbix.zabbix -R /usr/lib/zabbix/alertscripts/log

###增加权限
[root@zabbix alertscripts]# chmon +x /usr/lib/zabbix/alertscripts/log

####
ls -l 查看一下zabbix整个路径的属主属组和权限 一定要是zabbix权限
  • 测试脚本是否能运行成功:
cs 复制代码
#py脚本 手机号 关键词 告警信息
[root@zabbix alertscripts]# ./dingding.py 17835697281 告警 111
[root@zabbix alertscripts]# ./dingding.py 17835697281 告警 你的热得快炸了
[root@zabbix alertscripts]# ./dingding.py 19829651293 告警 你的热得快炸了

web页面操作

  • 告警-->媒介-->创建媒体类型
  • 配置-->动作-->创建动作
css 复制代码
#告警操作内容:
##标题:
服务器:{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}
  • 个人中心-->报警媒介-->添加

添加完成记得点击更新

创建监控项

测试一下,是否有值

创建图表

主机选择,钉钉创建的主机

创建触发器

条件--监控项选择创建的监控项

钉钉查看告警问题

相关推荐
信创天地1 分钟前
AI + 信创双轮驱动:从自主可控到智能引领,重塑数字经济新范式
运维·人工智能·网络安全·系统架构·系统安全·运维开发
开开心心就好1 分钟前
免费无广告卸载工具,轻便安全适配全用户
linux·运维·服务器·网络·安全·启发式算法·1024程序员节
ipooipoo118822 分钟前
如何判断动态IP池里的IP都是纯净的吗?
服务器·网络·tcp/ip
only°夏至besos23 分钟前
MySQL 运维实战:常见问题排查与解决方案
运维·数据库·mysql
鱼大虾25 分钟前
centos服务器安装gitlab
服务器·centos·gitlab
赋创小助手33 分钟前
超微 SYS-E403-14B-FRN2T 深度解析:面向边缘与 IoT 场景的高扩展紧凑型服务器
运维·服务器·人工智能·科技·物联网·ai·边缘计算
飞翔沫沫情40 分钟前
关于在Jenkins 的job 中隐藏shared library 共享库相关的Git信息
运维·git·jenkins
乌萨奇也要立志学C++43 分钟前
【Linux】线程同步 条件变量精讲 + 生产者消费者模型完整实现
java·linux·运维
澄澈青空~43 分钟前
病毒木马侵入系统内核的底层运作机理
java·linux·服务器
AI+程序员在路上1 小时前
嵌入式Linux中添加ftp服务器的简易方法
linux·运维·服务器