zabbix之邮箱告警,钉钉告警,电话告警

安装zabbix的服务器 zabbix-server 192.168.231.219

zabbix-agent  192.168.231.217 ,已安装nginx

前提

Zabbix告警是指当监控项的值超过了预设的阈值时,Zabbix会向管理员发送告警信息,以便管理员及时处理问题。

浏览器访问  192.168.231.219/zabbix

创建监控项

检查 TCP 端口 是否处于侦听状态。返回 0 - 未侦听;1 - 正在侦听

创建触发器

当ngixn开启时80端口存在监控正常,当nginx端口不存在时,那么就会触发警报

触发器动作

也就是监控项在监控nginx端口是否被监听,如果端口不存在,那么就会触发触发器,动作就会执行,动作执行的命令时 启动nginx服务

在zabbix-agent服务器修改

[root@zabbix-agent ~]# vim /etc/sudoers

101行添加
zabbix  ALL=(ALL)       NOPASSWD: ALL

修改配置文件

[root@zabbix-agent ~]# vim /etc/zabbix/zabbix_agentd.conf 

87行左右
EnableRemoteCommands=1

102行左右
LogRemoteCommands=1
这个是开启的,后面添加等于1即可

修改完配置文件,记得重启服务

systemctl restart zabbix-agent

这样的话,在zabbix-agent关闭nginx服务的话 就会触发触发器,引发动作去执行启动命令,那么有时候我们不知道什么时候会发生这种情况,这样就涉及到自动告警,可以借助第三方的服务 来告诉我们监控出现的告警情况。

以前三种告警都是基于关闭nginx服务,没有nginx80端口,来触发告警的前提做的实验

zabbix邮箱告警

注册网易邮箱

注册地址:163网易免费邮-你的专业电子邮局

开启SMTP服务,获取授权码

在zabbix页面查看:

192.168.231.219/zabbix

1. SMTP服务器如果是网易就写163,如果是QQ邮箱就写qq

2. 服务器端口号默认是25,不加密,465是加密,如果填写465那么下main安全链接就得选择SSL/TLS

3. SMTP HELO, SMTP电邮,用户名都写你的网易邮箱即可。密码写之前网易获取到的授权码

消息模板

有自动生成是英文的,如果想是中文,更改就好

默认信息:邮件的主题
主机: {HOST.NAME1}
时间: {EVENT.DATE} {EVENT.TIME}
级别: {TRIGGER.SEVERITY}
触发: {TRIGGER.NAME}
详情: {ITEM.NAME1}:{ITEM.KEY1}:{ITEM.VALUE1}
状态: {TRIGGER.STATUS}
项目:{TRIGGER.KEY1}
事件ID:{EVENT.ID}

我这里是发现问题是英文,解决问题时中文

zabbix添加动作

测试媒介类型

收件人是我的QQ邮箱

给用户绑定媒介类型

开始测试,在zabbix-agent端测试

[root@zabbix-agent ~]# systemctl stop nginx 

查看邮箱

发现错误

解决错误

查看报表--动作日志

zabbix钉钉机器人告警

在钉钉中创建群聊(同组的同学创建一个群聊),在群里面添加自定义机器人

通过自定义webhook接入自定义服务

webhook:记住webhook的地址

安全设置:设置加签,只有信息内容包含签才会被机器人发送。

在zabbix-server端进行操作

下载python
[root@zabbix-server ~]# yum -y install  python3 python3-requests

配置钉钉告警脚本zabbix_ding.conf

[root@zabbix-server ~]# vim /etc/zabbix/zabbix_ding.conf

[config]
log_path=/var/log/zabbix/zabbix_ding.log
webhook=https://oapi.dingtalk.com/robot/send?access_token=c1d11ecf6704f008eb25de644ed5cead752c065c0d11f9f89b58273cf0c78a96
secret=SECc26e5bc55c64d454f15a8bdcce6825b7e5bb4f6fecc38025d2845837415192d7

将之前钉钉创建机器人时候生成的俩个码 粘贴复制过来,注意别少复制

创建钉钉告警日志文件zabbix_ding.log

[root@zabbix-server ~]# touch /var/log/zabbix/zabbix_ding.log 

设置权限

[root@zabbix-server ~]#  chown zabbix.zabbix /var/log/zabbix/zabbix_ding.log 

在zabbix_server.conf中配置告警脚本的路径

vim /etc/zabbix/zabbix_server.conf
在zabbix_server.conf中配置告警脚本的路径
# AlertScriptsPath=/usr/lib/zabbix/alertscripts
我这里修改为
AlertScriptsPath=/usr/lib/zabbix/alertscripts

abbix5.0的默认是开启的

在/usr/bin/zabbix/alertscripts目录中执行的脚本dingding.py的内容

[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/

[root@zabbix-server alertscripts]# vim dingding.py

以下内容添加至dingding.py内
#!/usr/bin/env python3
# coding:utf8
#
import configparser
import os
import time
import hmac
import hashlib
import base64
import urllib.parse
import requests
import json
import sys

config = configparser.ConfigParser()
config.read('/etc/zabbix/zabbix_ding.conf', encoding='utf-8')
log_path = config.get('config', 'log_path')
api_url = config.get('config', 'webhook')
api_secret = config.get('config', 'secret')
log_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())


# 钉钉机器人文档说明
# https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
def get_timestamp_sign():
    timestamp = str(round(time.time() * 1000))
    secret = api_secret
    secret_enc = secret.encode('utf-8')
    string_to_sign = '{}\n{}'.format(timestamp, secret)
    string_to_sign_enc = string_to_sign.encode('utf-8')
    hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
    sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
    return timestamp, sign

# 获取加签后的链接
def get_signed_url():
    timestamp, sign = get_timestamp_sign()
    webhook = api_url + "&timestamp=" + timestamp + "&sign=" + sign
    return webhook

# 定义消息模式
def get_webhook(mode):
    if mode == 0:  # only 关键字
        webhook = api_url
    elif mode == 1 or mode == 2:  # 关键字和加签 或 # 关键字+加签+ip
        webhook = get_signed_url()
    else:
        webhook = ""
        print("error! mode:   ", mode, "  webhook :  ", webhook)
    return webhook


def get_message(text, user_info):
    # 和类型相对应,具体可以看文档 :https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
    # 可以设置某个人的手机号,指定对象发送
    message = {
        "msgtype": "text",  # 有text, "markdown"、link、整体跳转ActionCard 、独立跳转ActionCard、FeedCard类型等
        "text": {
            "content": text  # 消息内容
        },
        "at": {
            "atMobiles": [
                user_info,
            ],
            "isAtAll": False  # 是否是发送群中全体成员
        }
    }
    return message


# 消息发送日志
def log(info):
    if os.path.exists(log_path):
        log_file = open(log_path, "a+")
    else:
        log_file = open(log_path, "w+")
    log_file.write(info)


def send_ding_message(text, user_info):
    # 请求的URL,WebHook地址
    # 主要模式有 0 : 关键字 1:# 关键字 +加签 3:关键字+加签+IP
    webhook = get_webhook(1)
    # 构建请求头部
    header = {
        "Content-Type": "application/json",
        "Charset": "UTF-8"
    }
    # 构建请求数据
    message = get_message(text, user_info)
    # 对请求的数据进行json封装
    message_json = json.dumps(message)
    # 发送请求
    info = requests.post(url=webhook, data=message_json, headers=header).json()
    code = info["errcode"]
    errmsg = info["errmsg"]
    if code == 0:
        log(log_time + ":消息已发送成功 返回信息:%s %s\n" % (code, errmsg))
    else:
        log(log_time + ":消息发送失败 返回信息:%s %s\n" % (code, errmsg))
        print(log_time + ":消息发送失败 返回信息:%s %s\n" % (code, errmsg))
        exit(3)


if __name__ == "__main__":
    text = sys.argv[3]
    user_info = sys.argv[1]
    send_ding_message(text, user_info)

设置脚本目录的所有权

[root@zabbix-server alertscripts]# chown -R zabbix.zabbix /usr/lib/zabbix/alertscripts/

给脚本执行权限执行

[root@zabbix-server alertscripts]# chmod +x dingding.py 

[root@zabbix-server alertscripts]# ./dingding.py  user subject mesages

钉钉群查看消息

在页面端进行操作,创建媒介类型并测试

脚本传输参数

{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

消息模板:

以下消息模板会自动填充

也可以更改

自定义消息内容

主题:服务器报警
消息:
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}

主题:服务器已恢复
消息:
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}

开始测试

添加动作:远程执行命令,发邮件

为用户添加报警媒介

开始测试,在zabbix-agent端测试

[root@zabbix-agent ~]# systemctl stop nginx 

查看报表--动作日志

电话告警

使用第三方服务:睿象云-智能运维管理平台-智能运维系统-自动化运维性能监控平台 睿象云

注册账号,登录

选择完成后 按照右面的提示步骤做可以,我这里将文件下载到前面做钉钉告警的路径下

在zabbix-server端进行操作

[root@zabbix-server zabbix]# cd /usr/lib/zabbix/alertscripts/

下载
[root@zabbix-server alertscripts]# wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-4.0.3.tar.gz

解压,安装

[root@zabbix-server alertscripts]# tar -xzf ca_zabbix_release-4.0.3.tar.gz


[root@zabbix-server alertscripts]# cd cloudalert/bin
[root@zabbix-server bin]# bash install.sh b8bf3f8e2132439191fddb2f68224de5

注意事项

1、在安装过程中根据安装提示,输入zabbix管理地址、管理员用户名、密码。

 2、zabbix管理地址正确示例:http://zabbix.server.com/zabbix 或是:https://zabbix.server.com/zabbix

4、修改运行zabbix服务权限与cloudalert探针目录权限
请保证运行zabbix服务的权限和cloudalert探针目录的权限保持一致,不一致会导致告警无法正常接入。

5、验证告警集成
产生新的zabbix告警(problem),动作状态为“已送达”表示集成成功。

分配策略

分配策略:什么类型的报警发送到哪个用户

通知策略

通知策略:采用什么方式进行通知

zabbix添加动作

给用户绑定报警媒介类型

查看报警媒介类型自动生成

开始测试告警

[root@zabbix-agent ~]# systemctl stop nginx 

    

由于是设置了发生故障通知与故障解决通知,因此会有俩个电话

查看报表--动作日志

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/149774.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

肝了一周,整理了Python 从0到1学习路线(附思维导图和PDF下载)

前段时间,我们陆续分享了一些关于Python基础知识,以及现在比较流行的Python各领域的学习知识,后台有很多小伙伴反馈,想要系统的自学Python,希望我们可以提供一个框架,方便作为参考,学习Python。…

Using Definition View 使用定义视图

You use Definition view to create definitions within a defined hierarchical structure, in which nodes represent the definitions. A node is the visual representation of a section, step, or action that you can select, collapse,modify, and so on. 您可以使用“…

找风景视频素材,就上这5个网站。

找风景视频素材那一定要上这6个网站,免费下载,赶紧收藏! 1、菜鸟图库 https://www.sucai999.com/video.html?vNTYxMjky 菜鸟图库网素材非常丰富,网站主要还是以设计类素材为主,高清视频素材也很多,像风景…

网站分类seo怎么优化(如何调整有利于SEO排名)

网站分类seo怎么优化(如何调整有利于SEO排名) 这期分享一篇关于网站seo优化中关于网页分类排名优化的文章,看看原文来自 蝙蝠侠IT ,原文标题网站分类,没有SEO标题,怎么办的文章介绍。 理想与现实总是充满矛…

学c语言可以过CCT里的c++吗?

学习 C 语言可以为学习 C 奠定一些基础,但它们是不同的语言,有各自独特的特点和用途。最近很多小伙伴找我,说想要一些c语言的资料,然后我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「c语言资料…

Linux控制---进程程序替换

前言:前面我们学洗了Linux进程退出的相关知识,了解了什么是进程退出,已经进程等待的相关话题,今天,我们来学习Linux中的进程程序替换,进程程序替换在Linux中可以用于实现新程序的启动、程序升级、多进程程序…

利用Vue+Echarts完成可视化任务

文章目录 任务一:用柱状图展示消费额最高的省份(一)提出任务(二)准备工作1、利用postman访问接口数据2、安装node.js3、输入更换镜像源为淘宝源4、清除npm缓存5、安装vue脚手架6、创建vue项目7、启动vue项目 任务一&am…

C语言判断闰年(ZZULIOJ1028: I love 闰年!)

题目描述 根据一个年份,判断是否是闰年。 输入:输入为一个整数,表示一个年份。 输出:如果是闰年,输出"Yes",否则输出"No"。输出单独占一行。 样例输入 Copy 2012 样例输出 Copy Yes 分…

UE5 - UI Material Lab 学习笔记

1、学习资料收集 UI Material Lab : https://www.unrealengine.com/marketplace/zh-CN/product/ui-material-lab 视频1:https://www.bilibili.com/video/BV1Hm4y1t7Kn/?spm_id_from333.337.search-card.all.click&vd_source707ec8983cc32e6e065d5496a7f79ee6 视…

关闭RecyclerView惯性滚动,以及多个RecyclerView在嵌套滚动中的注意事项

前言: 当前RecyclerView 下拉到顶部 或者 上拉到底部时,虽然滚动列表停止了,但惯性任务并没有结束,一些特殊需求可能受到影响,需要手动停止。 1. RecyclerView源码 调用 rv.stopScroll() 停止; 2. Recycl…

网工内推 | 急聘网络运维,周末双休,厂商认证优先

01 湖北华特信息技术有限公司 招聘岗位:网络运维工程师(双休急聘) 职责描述: 1、 负责局域网交换机、路由器、防火墙等设备维护; 2、熟悉OSPF动态路由协议,有实施或维护经验; 3、 熟悉网络架构…

Java方法中不使用的对象应该手动赋值为NULL吗?

在java方法中,不使用的对象是否应该手动赋值为null?我们先来通过一个示例看一下。 垃圾回收示例一 public class GuoGuoTest {public static void main(String[] args) {byte[] placeholder new byte[64 * 1024 * 1024];System.gc();} } 上面代码向内…

Radiology 谈人工智能在放射学领域的10个预测方向 [文献阅读]

人工智能(AI)和信息学正在改变放射学。十年前,没有哪个专家会预测到今天放射人工智能行业的蓬勃发展,100多家人工智能公司和近400种放射人工智能算法得到了美国食品和药物管理局(FDA)的批准。 不到一年前,即使是最精明的预言家也不会相信这些…

kubernetes资源管理

资源管理 资源管理介绍 在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes。 kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服务,其实就是在kubernetes集…

Java设计模式-结构型模式-适配器模式

适配器模式 适配器模式应用场景案例类适配器模式对象适配器模式接口适配器模式适配器模式在源码中的使用 适配器模式 如图:国外插座标准和国内不同,要使用国内的充电器,就需要转接插头,转接插头就是起到适配器的作用 适配器模式&…

unity使用vs进行c#代码提示,查看F12unity元代码

unity关联vs 在vs中让cs.meta显示,鼠标右键,包含在内 提示GameObject类了 感谢下面这位的提示https://zhuanlan.zhihu.com/p/551119106

esp-01刷固件/下载软件到内部单片机的方法

此文章为转载,非原创 一、准备 需要准备三个东西: 1.esp模块。ESP-01 和 ESP-01s 的引脚及 flash 容量基本完全兼容,只是内部硬件设计粗糙与否的区别,所以理论上都适用。 2.官方固件。此部分可以从安信可官方教程中下载&#xff0…

腾讯待办停止运营怎么办?导出的ics文件数据怎么打开查看

待办提醒类工具是日常办公及生活中必不可少的工具,使用待办提醒类工具可以记录很多容易忘记的事情,其可以帮助大家轻松管理各项事务和提高办事的效率。而随着工作的不断变动,大家选择待办提醒类工具也会不断的发生改变。 比如就拿我自己的使…

【算法总结】归并排序专题(刷题有感)

思考 一定要注意归并排序的含义,思考归并的意义。 主要分为两个步骤: 拆分 每次对半分(mid l r >> 1)输入:raw整块,输出:raw左块 raw右块 合并 每次都要对raw左块、 raw右块按照某种规则进行合并输入&#xf…

2023.11.15-hivesql之炸裂函数explode练习

把一个容器的多个数据炸裂出单独展示: explode(容器) 需求:将NBA总冠军球队数据使用explode进行拆分&#xff0c;并且根据夺冠年份进行倒序排序。 1.建表 --step1:建表 create table the_nba_championship(team_name string,champion_year array<string> ) row format…