zabbix邮件告警和钉钉机器人告警

本文介绍如何在Zabbix中配置使用外部邮箱发送报警邮件及利用钉钉机器人进行告警。详细步骤包括关闭sendmail或postfix服务、安装mailx、配置外部邮箱、创建发送邮件脚本及配置钉钉告警脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 使用外部邮箱账号发送报警邮件设置

//在服务端关闭sendmail或者postfix

	[root@xaii ~]# systemctl stop postfix
	[root@xaii ~]# systemctl disable postfix
	Removed symlink /etc/systemd/system/multi-user.target.wants/postfix.service.
	[root@xaii ~]# ss -antl (没有25号端口,则已经关闭)
	State      Recv-Q Send-Q Local Address:Port                Peer Address:Port              
	LISTEN     0      128                *:22                             *:*                  
	LISTEN     0      128                *:10050                          *:*                  
	LISTEN     0      128                *:10051                          *:*                  
	LISTEN     0      128        127.0.0.1:9000                           *:*                  
	LISTEN     0      128               :::80                            :::*                  
	LISTEN     0      128               :::22                            :::*                  
	LISTEN     0      80                :::3306                          :::*      

//安装邮件发送工具mailx

	[root@xaii ~]# yum -y install mailx
	......
	已安装:
 	 mailx.x86_64 0:12.5-19.el7    
	[root@xaii ~]# mail -V(查看版本信息)
	12.5 7/5/10

//配置zabbix服务端外部邮箱

	[root@xaii ~]# vim /etc/mail.rc 
	[root@xaii ~]# tail /etc/mail.rc 
	set from=940160129@qq.com
	set smtp=smtp.qq.com
	set smtp-auth-user=940160129@qq.com
	set smtp-auth-password=cslvnmsnytngbbjj(开启邮箱smtp服务后,生成的授权码)
	set smtp-auth=login

//手动验证,利用QQ邮箱发送给126邮箱

[root@xaii ~]# echo 'hello,nice to meet you' | mail -s 'hello' bebejo@126.com

在这里插入图片描述
//配置zabbix监控

这里需要添加三个参数:
在这里插入图片描述
为某个用户添加Media:有Admin和guest两个用户,选择Admin用户
在这里插入图片描述
添加动作:

  • 创建动作时,需要基于触发器来执行
    在这里插入图片描述
  • 动作名称为:send_mail
    在这里插入图片描述
  • 发现问题1分钟后,执行动作,大部分保持默认即可:

在这里插入图片描述

  • 问题被解决(覆盖)后,执行的动作:

在这里插入图片描述

//在zabbix服务端写一个发送邮件的脚本,脚本存放位置为/usr/local/etc/alertscripts,需要自己创建目录

	[root@xaii ~]# mkdir -pv /usr/local/etc/alertscripts
	mkdir: 已创建目录 "/usr/local/etc/alertscripts"
	[root@xaii ~]# cd /usr/local/etc/alertscripts
	[root@xaii alertscripts]# vim mail.sh(脚本名称必须和zabbix添加的名称一致)

//脚本内容:

	#! /bin/bash

	message=$3
	subject=$2
		
	echo "$message" | mail -s "$subject" $1

//修改alertscripts目录的属主和属组,赋予脚本执行权限

	[root@xaii alertscripts]# chmod +x mail.sh 
	
	[root@xaii ~]# chown -R zabbix.zabbix /usr/local/etc/alertscripts/

//编辑服务端配置文件,将存放脚本的路径添加到配置文件中,并重启服务

	[root@xaii ~]# vim /usr/local/etc/zabbix_server.conf
	[root@xaii ~]# cat /usr/local/etc/zabbix_server.conf
	......
	AlertScriptsPath=/usr/local/etc/alertscripts(添加此内容)
	[root@xaii ~]# pkill zabbix
	[root@xaii ~]# zabbix_server 
	[root@xaii ~]# zabbix_agentd 

//重启客户端,测试脚本,就监控/etc/cc文件内容被修改

	[root@agent ~]# pkill zabbix
	[root@agent ~]# zabbix_agentd 
	[root@agent ~]# cat /etc/cc
	hello
	adssadasdas
	asdsadasasdas
	[root@agent ~]# echo 'hello world' >> /etc/cc

在这里插入图片描述
在这里插入图片描述

//在bebejo@126.com上查看是否收到两封邮件
在这里插入图片描述

查看Problem: /etct/cc文件发生了改变邮件内容:

	Problem started at 23:50:34 on 2019.02.26
	Problem name: /etct/cc文件发生了改变
	Host: web服务器-192.168.157.19
	Severity: Warning
	
	Original problem ID: 97

查看Resolved: /etct/cc文件发生了改变邮件内容:

	Problem has been resolved at 23:51:04 on 2019.02.26
	Problem name: /etct/cc文件发生了改变
	Host: web服务器-192.168.157.19
	Severity: Warning
	
	Original problem ID: 97

2. 利用钉钉机器人告警

基础配置不再提了,下面展示一下zabbix配置
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

附上钉钉脚本:


#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os

headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
#此处的api_url在生成钉钉webhook机器人时,会自动生成。
#需要更换为你机器人的地址
def msg(text):
    json_text= {
     "msgtype": "text",
     "text": {
         "content": text
     },
     "at": {
         "atMobiles": [
             "" #需要@群里谁
         ],
         "isAtAll": True #是否全部@,True为是,False为否
     }
    }
    print requests.post(api_url,json.dumps(json_text),headers=headers).content

if __name__ == '__main__':
    text = sys.argv[1]
    msg(text)
<think>首先,用户的问题是关于配置Zabbix以通过钉钉群组机器人发送告警通知。用户引用了几个参考,这些是关于Zabbix钉钉集成的信息。 关键点: - 用户想配置Zabbix使用钉钉机器人发送告警。 - 引用的内容提供了关于安装依赖、创建媒体类型、配置动作等的步骤。 我的回答需要: - 使用中文。 - 结构清晰,逐步解决问题。 - 确保真实可靠(基于提供的引用)。 - 在行内数学表达式使用$...$,独立公式使用$$...$$(但这个问题可能不涉及数学公式,所以可能不需要)。 - 生成相关问题。 - 在引用段落末尾添加引用标识,如[^1]。 步骤: 1. **理解需求**:用户要配置Zabbix发送告警钉钉群。 2. **参考引用**: - [^1]: 提到在Docker部署的Zabbix中安装requests模块,创建媒体类型动作。 - [^2]: 提供消息模板。 - [^3]: 提到使用一个脚本。 - [^4]: 解释钉钉机器人。 - [^5]: 提供钉钉告警脚本的Python代码。 3. **结构化回答**: - 介绍步骤。 - 确保清晰:安装依赖、创建钉钉机器人、配置Zabbix媒体类型、配置动作。 - 使用代码块展示脚本。 - 添加引用标识。 4. **生成相关问题**:在回答结束时,列出相关问题。 回答大纲: - **步骤1: 准备环境** - 如果使用Docker,确保安装requests模块(如引用[^1])。 - **步骤2: 创建钉钉机器人** - 在钉钉群中添加机器人,获取Webhook URL。 - **步骤3: 创建报警脚本** - 编写Python脚本发送消息到钉钉(如引用[^5])。 - **步骤4: 配置Zabbix媒体类型** - 在Zabbix中创建新的媒体类型,指向脚本。 - **步骤5: 配置动作** - 创建动作,使用消息模板(如引用[^2])。 - **步骤6: 测试** - 停止一个agent来测试告警。 - **生成相关问题** 确保语言自然、专业。</think>### 配置Zabbix通过钉钉群组机器人发送告警通知 要将Zabbix配置为通过钉钉群组机器人发送告警通知,需要完成以下步骤。本指南基于Zabbix官方文档常见实践,确保操作可靠。配置过程包括环境准备、创建钉钉机器人、编写告警脚本、设置Zabbix媒体类型动作等。以下是详细步骤(假设Zabbix已部署,如使用Docker,需额外处理依赖)。 #### 步骤1: 准备环境(确保Pythonrequests模块可用) - 如果Zabbix部署在Docker容器中(如官方镜像`zabbix-server-mysql`),需进入容器安装Python的requests模块,因为钉钉脚本依赖此模块。执行以下命令: ```bash docker exec -it <容器名称> bash # 进入容器 yum -y install epel-release # 安装EPEL源 yum -y install python-pip # 安装pip pip --no-cache-dir install requests # 安装requests模块 yum clean all # 清理缓存 ``` 完成后退回主机环境。此步骤确保脚本能发送HTTP请求到钉钉API[^1]。 #### 步骤2: 创建钉钉群组机器人 1. 在钉钉群组中,点击“群设置” > “智能群助手” > “添加机器人”。 2. 选择“自定义机器人”,设置名称(如“Zabbix告警”),并获取Webhook URL(格式如`https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN`)。保存此URL,后续脚本需要它[^4]。 3. 可选:配置安全设置(如IP白名单或关键词),确保仅Zabbix服务器能发送消息。 #### 步骤3: 编写告警脚本 在Zabbix服务器上创建Python脚本(如`/usr/lib/zabbix/alertscripts/dingding.py`),用于发送消息到钉钉。脚本内容基于引用[^5],替换`api_url`为你的Webhook URL: ```python #!/usr/bin/python # -*- coding: utf-8 -*- import requests import json import sys import os headers = {'Content-Type': 'application/json;charset=utf-8'} api_url = "https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN" # 替换为你的token def msg(text): json_text = { "msgtype": "text", "text": { "content": text }, } response = requests.post(api_url, json.dumps(json_text), headers=headers) print(response.content) if __name__ == '__main__': text = sys.argv[1] # Zabbix传递告警消息作为参数 msg(text) ``` - 保存后,赋予脚本执行权限:`chmod +x /usr/lib/zabbix/alertscripts/dingding.py`。 - 测试脚本:运行`./dingding.py "测试消息"`,检查钉钉群是否收到消息[^3]。 #### 步骤4: 配置Zabbix媒体类型 1. 登录Zabbix Web界面,导航到“管理” > “报警媒介类型” > “创建媒体类型”。 2. 设置名称(如“钉钉机器人”),类型选择“脚本”。 3. 在“脚本名称”字段输入脚本文件名(如`dingding.py`)。 4. 在“脚本参数”中添加`{ALERT.MESSAGE}`,这样Zabbix会将告警消息传递给脚本。 5. 保存设置。此步骤定义告警发送渠道[^1]。 #### 步骤5: 配置动作消息模板 1. **创建动作**:导航到“配置” > “动作” > “事件源触发器” > “创建动作”。 - 名称:如“钉钉告警动作”。 - 条件:设置触发器条件(如“触发器严重性 >= 警告”)。 - 操作:在“操作”标签页,添加新操作: - 发送到用户:选择接收告警的用户或群组(确保用户已配置钉钉媒体)。 - 仅送到:选择“钉钉机器人”(步骤4创建的媒体类型)。 - 消息:粘贴告警消息模板(见下文)。 2. **消息模板**:使用以下模板,基于引用[^2]优化: ``` 告警主机:{HOST.NAME} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息:{TRIGGER.NAME} 当前状态:{TRIGGER.STATUS} 事件ID:{EVENT.ID} 告警项目:{ITEM.NAME} 告警值:{ITEM.VALUE} 问题详情:{ITEM.DESCRIPTION} ``` 此模板自动填充Zabbix宏,提供详细告警上下文[^2]。 3. 保存动作。 #### 步骤6: 测试配置 - 模拟告警:停止一个Zabbix agent(如`systemctl stop zabbix-agent`),触发问题。 - 检查钉钉群:应收到类似消息: ``` 告警主机:server1 告警时间:2023-10-05 14:30 告警等级:警告 告警信息:Zabbix agent on {HOST.NAME} is unreachable 当前状态:PROBLEM ... ``` - 问题解决后,Zabbix会自动发送恢复消息(状态变为“OK”)[^1]。 #### 常见问题排查 - **脚本失败**:检查Python路径(`#!/usr/bin/python`)权限;确保requests模块安装正确。 - **无消息接收**:验证Webhook URL钉钉安全设置;检查Zabbix动作条件是否匹配。 - **性能建议**:对于高负载环境,使用钉钉机器人的“加签”安全选项或限流设置。 此配置基于标准实践,确保告警实时可靠。如需更多细节,参考Zabbix官方文档或钉钉机器人指南[^4][^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值