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

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

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

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]删除
最新教程 更多>
  • 请求 Iris 的正文限制中间件
    请求 Iris 的正文限制中间件
    概述 Iris Body Limit 中间件是一个强大的工具,用于控制 Iris Web 应用程序中传入请求正文的大小。通过设置请求正文的大小限制,您可以防止客户端发送过大的负载,否则可能会压垮您的服务器或导致拒绝服务 (DoS) 攻击。此中间件对于处理文件上传、JSON 有效负载...
    编程 发布于2024-11-08
  • 如何在 cookie 中存储 PHP 数组以及安全性和序列化的最佳实践是什么?
    如何在 cookie 中存储 PHP 数组以及安全性和序列化的最佳实践是什么?
    在 Cookie 中存储 PHP 数组在 PHP 中,可以将数组存储在 Cookie 中,以便在后续请求时轻松检索。然而,考虑安全隐患并使用正确的序列化技术至关重要。序列化选项要将数组转换为 cookie 兼容格式,您可以选择以下方法:JSONsetcookie('your_cookie_name'...
    编程 发布于2024-11-08
  • 如何设置VS Code调试工作目录?
    如何设置VS Code调试工作目录?
    设置 VS Code 中调试的工作目录在 Visual Studio Code (VS Code) 中调试 Python 程序时,它通常很有用指定脚本应在其中运行的工作目录。这允许您使用与代码所在的特定目录相关的文件和资源。要将工作目录动态设置为当前打开的 Python 文件的目录,请修改 laun...
    编程 发布于2024-11-08
  • 婴儿学步学习 Laravel
    婴儿学步学习 Laravel
    欢迎回来,开发者! ✨ 在 Laravel 之旅的这一章中(请记住,我在撰写这些文章时正在学习,因此这将是您能找到的最现实的教程系列之一!),我们将深入研究我们的 Laravel 项目。我们将探索项目结构,熟悉迁移,并以最简单的方式分解 MVC 架构。 ?今天的议程...
    编程 发布于2024-11-08
  • 如何动态包含具有不受控制的“document.write()”内容的脚本?
    如何动态包含具有不受控制的“document.write()”内容的脚本?
    动态添加具有不受控制的源内容的脚本标记当内容来自于控件外部时,创建具有外部源的脚本标记可能会带来挑战包括使用 document.write() 的代码。如前所述,仅在 中附加 script 标记无法支持此类内容。要解决此问题,请考虑以下解决方案:使用 document.create 新建一个 sc...
    编程 发布于2024-11-08
  • 在 JavaScript 中如何有效地确定一个数字是否为素数?
    在 JavaScript 中如何有效地确定一个数字是否为素数?
    在 JavaScript 中高效验证素数在计算机编程中,确定给定数字是否是素数是一项基本任务。素数是大于 1 的正整数,除了 1 和它本身之外没有正因数。检查素数的一种流行方法涉及埃拉托斯特尼筛法。然而,出于性能考虑,可以采用更有效的方法,如以下 JavaScript 实现所示:let inputV...
    编程 发布于2024-11-08
  • 为什么 Lambda 表达式需要最终局部变量而不是实例变量?
    为什么 Lambda 表达式需要最终局部变量而不是实例变量?
    Lambda 表达式和变量作用域:为什么 Local ≠ Instance在 Java 中使用 lambda 表达式时,一个常见的困惑点是为什么局部变量需要终结,而实例变量需要终结不要。本文旨在阐明这种区别背后的根本原因。局部变量:最终性命令在 lambda 表达式中,局部变量必须标记为 Final...
    编程 发布于2024-11-08
  • CKA 全程课程日 为什么使用 Kubernetes?
    CKA 全程课程日 为什么使用 Kubernetes?
    那么,您可能已经使用 Docker 容器有一段时间了,对吧?我知道旋转第一个容器的兴奋感就像魔法一样,但随后现实袭来。您开始注意到大规模管理容器很快就会成为物流噩梦。就在那时,Kubernetes(K8s)像经验丰富的项目经理一样进入房间,准备接管并简化一切。 在这篇文章中,我们将探讨独立容器面临的...
    编程 发布于2024-11-08
  • 简要封装示例
    简要封装示例
    书包: 该示例创建一个名为 bookpack 的包,其中包含一个用于管理书籍数据库的简单类。 图书类别: 它有私有属性 title、author 和 pubDate(标题、作者和出版日期)。 构造方法初始化属性。 show() 方法显示书籍详细信息。 BookDemo类: 创建一个包含 5 个 Bo...
    编程 发布于2024-11-08
  • 适用于 AWS 云的简单 SaaS 的技术堆栈
    适用于 AWS 云的简单 SaaS 的技术堆栈
    介绍 注1:这里是托管的交互式演示:demo.saasconstruct.com 注 2:我每个 SaaS 设置的每月账单为 3-5 美元,其中大部分是 CI/CD 成本。 注3:模板在这里:saasconstruct.com。 我在 AWS 上完成了多个 AI PoC 和 MVP...
    编程 发布于2024-11-08
  • 为什么在事件处理程序中使用箭头函数时“this”会出现意外行为?
    为什么在事件处理程序中使用箭头函数时“this”会出现意外行为?
    JavaScript - 箭头函数和事件处理程序当使用箭头函数作为事件处理程序的回调时,函数中的 this 值是意外的。这篇博文解释了此行为背后的原因,并提供了使用 event.currentTarget.箭头函数和词法作用域访问预期元素的解决方案与常规函数不同,箭头函数没有其自己的上下文或范围。相...
    编程 发布于2024-11-08
  • Aurora PostgreSQL 掌握:让您的团队喜极而泣的防弹 Java 模型和 DAO
    Aurora PostgreSQL 掌握:让您的团队喜极而泣的防弹 Java 模型和 DAO
    听着,代码骑师。我即将提供一些知识,帮助您将 Aurora PostgreSQL 游戏从业余游戏转变为大联盟游戏。我们谈论的是 Java 模型和数据库访问器,它们会让您的高级开发人员喜极而泣,而您的 DBA 是否会给您买啤酒(取决于您的年龄)。 为什么这很重要: 性能:草率的模型和 ...
    编程 发布于2024-11-08
  • 理解后端开发中的责任链设计模式
    理解后端开发中的责任链设计模式
    责任链 (CoR) 设计模式是一种强大的行为模式,可以显着增强后端开发。此模式允许您通过处理程序链传递请求,其中每个处理程序可以处理请求或将其传递到下一个处理程序。在本博客中,我们将从后端角度探讨 CoR 模式,特别关注其在 Web 服务中的请求验证和处理中的应用,并使用 Java 作为示例。 ...
    编程 发布于2024-11-08
  • 深入研究&#项目:大学信息查询系统&# - 掌握 Java 和 MySQL 进行高效数据管理
    深入研究&#项目:大学信息查询系统&# - 掌握 Java 和 MySQL 进行高效数据管理
    通过“项目:大学信息查询系统”释放数据管理的力量 - 这是一门综合课程,指导您完成使用 Java 和 MySQL 构建强大的信息查询系统的过程。这种基于项目的学习体验旨在让您掌握将 Java 应用程序连接到 MySQL 数据库、执行 SQL 查询和有效检索数据所需的基本技能。 课程概...
    编程 发布于2024-11-08
  • 使用 PHP 和 JavaScript 将网页下载为 PDF
    使用 PHP 和 JavaScript 将网页下载为 PDF
    在 PHP 中将 HTML 转换为 PDF 很容易。让我们更进一步,使用 PHP 和 JavaScript 将网页转换为 PDF 文件。 为此,您需要安装 Composer 和 Node。 安装完这些东西后,您需要使用 Composer 安装 Dompdf,并使用 npm(Node 包管理器)安装...
    编程 发布于2024-11-08

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

Copyright© 2022 湘ICP备2022001581号-3