”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 为 Zabbix 编写电报和电子邮件通知脚本

为 Zabbix 编写电报和电子邮件通知脚本

发布于2024-11-08
浏览:348

Writing a Telegram and Email Notifications Script for Zabbix

监控整个基础设施非常重要,特别是在 IT 基础设施中。我最近学习创建和编写这样的监控脚本。我将向您分享我如何制作电报和电子邮件通知脚本。每当基础设施出现问题时,此脚本都会发送电报和电子邮件通知。

Zabbix是什么

Zabbix 是一款开源软件,可监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的运行状况和完整性。 Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的警报。这允许对服务器问题做出快速反应。 Zabbix 基于存储的数据提供出色的报告和数据可视化功能。这使得 Zabbix 成为容量规划的理想选择。

电报通知脚本

通过 SSH 登录到您的 Zabbix 代理/服务器并转到“externalscripts”目录。

cd /usr/lib/zabbix/externalscripts

为 Telegram 机器人创建脚本。在这里设置您的电报机器人。

sudo vim telegram-notif.sh

粘贴下面的脚本

#!/bin/bash

# Telegram Bot API Token
BOT_TOKEN="YOUR_BOT_TOKEN"

# Telegram Chat ID
CHAT_ID="YOUR_TELEGRAM_CHAT_ID"

# Message to be sent
MESSAGE="$1"

# Sends the telegram message
curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" -d "chat_id=$CHAT_ID&text=$MESSAGE"

保存您的脚本。

:wq

转换为可执行文件

chmod  x telegram-notif.sh

电子邮件通知脚本

在同一目录下,创建一个python文件。

sudo vim email-notif.py

粘贴此代码。此代码需要您的 Gmail 帐户的应用程序密码。在此创建您的应用程序密码。

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import sys

# Get the alert message from command-line arguments
alert_message = sys.argv[1]

# Email account credentials
gmail_user = 'YOUR_EMAIL_ADDRESS'
gmail_password = 'YOUR_APP_PASSWORD'  # Use your App Password here

# Create the message
msg = MIMEMultipart()
msg['From'] = gmail_user
msg['To'] = 'YOUR_RECIPIENT_EMAIL_ADDRESS'  # Recipient's email address
msg['Subject'] = 'Alert Message Subject'  # Subject of the email
message = alert_message
msg.attach(MIMEText(message, 'plain'))

# Attempt to send the email
try:
    server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
    server.ehlo()
    server.login(gmail_user, gmail_password)
    server.send_message(msg)
    server.close()

    print('Email sent!')
except Exception as e:
    print('Failed to send email:', e)

不要忘记保存并使其成为可执行文件

:wq
chmod  x email-notif.py

该脚本可以集成到 Zabbix 中,以通知需要尽快解决的问题。

在某些情况下,在服务器中运行 python 脚本需要 root 权限 (sudo)。要允许 Zabbix 使用 sudo 运行 python 脚本,您必须编辑 visudo.

sudo visudo

找到“用户权限规范”,将这行代码粘贴到下面。

zabbix  ALL=(ALL) NOPASSWD: /usr/lib/zabbix/externalscripts/your_script.py

所以它看起来像这样

# User privilege specification
root    ALL=(ALL:ALL) ALL
zabbix  ALL=(ALL) NOPASSWD: /usr/bin/python3
zabbix  ALL=(ALL) NOPASSWD: /usr/lib/zabbix/externalscripts/your_script.py

感谢您的阅读!

版本声明 本文转载于:https://dev.to/kurtchan/writing-a-telegram-and-email-notifications-script-for-zabbix-5ddj?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • Go Web服务器:安全释放特权端口绑定后的权限方法
    Go Web服务器:安全释放特权端口绑定后的权限方法
    在GO(v1.7)在早期版本中,利用syscall.setuid()丢弃特权将返回“不支持”。作为替代方案,可以使用iPtables将80转移到非特权端口。但是,该解决方案通过允许非root进程模拟Web服务器来打开安全漏洞。该解决方案在于使用GO的网络和系统呼叫功能的组合。打开特权端口并确定UI...
    编程 发布于2025-03-13
  • 在C#中创建和写入文件时,如何防止文件碰撞?
    在C#中创建和写入文件时,如何防止文件碰撞?
    [2 [2 如果已经访问了目标文件,则创建和写入C#中的文件可能会导致错误。 即使使用在尝试使用创建它们之前,通常也会发生这种情况。 后续写操作(例如)然后抛出异常。 通用解决方案涉及关闭由 在这种情况下,这不是理想的。 一种更有效,更强大的方法是直接使用 file.writealltext...
    编程 发布于2025-03-13
  • 如何查询Zabbix以显示主机 - 网板关系?
    如何查询Zabbix以显示主机 - 网板关系?
    查询以在zabbix 中查询此查询有助于从zabbix表中检索数据,以显示hosts hosts使用特定模板。挑战在于事实是,主机和模板都存储在同一张表中,与诸如主机11813之类的ID和模板的11815混合在一起。解决此问题,我们介绍了hosts_templates表格,该表通过主机和模板之间的连...
    编程 发布于2025-03-13
  • Java是否允许多种返回类型:仔细研究通用方法?
    Java是否允许多种返回类型:仔细研究通用方法?
    在Java中的多个返回类型:一种误解类型:在Java编程中揭示,在Java编程中,Peculiar方法签名可能会出现,可能会出现,使开发人员陷入困境,使开发人员陷入困境。 getResult(string s); ,其中foo是自定义类。该方法声明似乎拥有两种返回类型:列表和E。但这确实是如此吗...
    编程 发布于2025-03-13
  • 哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    在Python Matplotlib's path.contains_points FunctionMatplotlib's path.contains_points function employs a path object to represent the polygon.它...
    编程 发布于2025-03-13
  • 可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    [2这里: https://webthemez.com/demo/sticky-multi-header-scroll/index.html </main> <section> { display:grid; grid-template-...
    编程 发布于2025-03-13
  • 我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    将我的加密库从mcrypt升级到openssl 问题:是否可以将我的加密库从McRypt升级到OpenSSL?如果是这样,如何?答案:是的,可以将您的Encryption库从McRypt升级到OpenSSL。可以使用openssl。附加说明: [openssl_decrypt()函数要求iv参...
    编程 发布于2025-03-13
  • 大批
    大批
    [2 数组是对象,因此它们在JS中也具有方法。 切片(开始):在新数组中提取部分数组,而无需突变原始数组。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    编程 发布于2025-03-13
  • 在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    For Each Loop vs. Iterator: Efficiency in Collection TraversalIntroductionWhen traversing a collection in Java, the choice arises between using a for-...
    编程 发布于2025-03-13
  • Python转C/C++性能提升?值得吗?深度解析
    Python转C/C++性能提升?值得吗?深度解析
    将python代码转换为c/c进行性能优化评估Python和C/C之间的性能差距的一种策略是在两种语言中实施一个简单的算法并基准为其进行基准测试。但是,重要的是要认识到,过早转换为C/C可能不会产生最佳结果。相反,专家建议以下顺序方法:Measure Performance with Profil...
    编程 发布于2025-03-13
  • 如何使用Regex在PHP中有效地提取括号内的文本
    如何使用Regex在PHP中有效地提取括号内的文本
    php:在括号内提取文本在处理括号内的文本时,找到最有效的解决方案是必不可少的。一种方法是利用PHP的字符串操作函数,如下所示: 作为替代 $ text ='忽略除此之外的一切(text)'; preg_match('#((。 &&& [Regex使用模式来搜索特...
    编程 发布于2025-03-13
  • 如何在HTML和CSS中订购的列表编号后删除该期间?
    如何在HTML和CSS中订购的列表编号后删除该期间?
    在html和css中订购列表:删除期间要删除周期,以这样的列表:这将在每个列表项目之前显示自定义数字。请记住,此解决方案依赖于:伪selector之前,该解决方案可能无法在IE6和IE7之类的较旧浏览器中使用。要解决这个问题,请使用专门针对这些浏览器的其他CSS规则:
    编程 发布于2025-03-13
  • 为什么尽管有效代码,为什么在PHP中捕获输入?
    为什么尽管有效代码,为什么在PHP中捕获输入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,输出...
    编程 发布于2025-03-13
  • 为什么我的CSS背景图像出现?
    为什么我的CSS背景图像出现?
    故障排除:CSS背景图像未出现 ,您的背景图像尽管遵循教程说明,但您的背景图像仍未加载。图像和样式表位于相同的目录中,但背景仍然是空白的白色帆布。而不是不弃用的,您已经使用了CSS样式: bockent {背景:封闭图像文件名:背景图:url(nickcage.jpg); 如果您的html,css...
    编程 发布于2025-03-13
  • 为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    The Mystery of "Broken" Two-Phase Template Instantiation in Microsoft Visual C Problem Statement:Users commonly express concerns that Micro...
    编程 发布于2025-03-12

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3