欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

zabbix告警報(bào)表并發(fā)送郵件功能實(shí)現(xiàn)

 更新時(shí)間:2024年07月19日 14:47:03   作者:樂維_lwops  
Zabbix開源監(jiān)控是IT監(jiān)控領(lǐng)域的佼佼者,擁有強(qiáng)大的告警統(tǒng)計(jì)與報(bào)表生成能力,但對(duì)于剛上手的小白來說可能還有些難度,本文將詳細(xì)介紹zabbix告警報(bào)表的生成過程及發(fā)送郵件的操作步驟,感興趣的朋友一起看看吧

一、場(chǎng)景模擬

小東是一名資深的IT運(yùn)維人員,其直屬領(lǐng)導(dǎo)想要了解公司業(yè)務(wù)系統(tǒng)的健康狀態(tài)以及小東日常的工作情況等,要求小東每周統(tǒng)計(jì)系統(tǒng)告警情況并發(fā)郵件給到他。小東所在公司搭建了一套zabbix開源監(jiān)控,于是小東利用自己的專業(yè)知識(shí),實(shí)現(xiàn)了zabbix告警統(tǒng)計(jì),并生成漂亮的告警報(bào)表發(fā)送給自己的領(lǐng)導(dǎo),得到了領(lǐng)導(dǎo)的稱贊。

Zabbix開源監(jiān)控是IT監(jiān)控領(lǐng)域的佼佼者,擁有強(qiáng)大的告警統(tǒng)計(jì)與報(bào)表生成能力,但對(duì)于剛上手的小白來說可能還有些難度,本文將詳細(xì)介紹zabbix告警報(bào)表的生成過程及發(fā)送郵件的操作步驟。

二、實(shí)現(xiàn)原理

環(huán)境說明:本人部署的zabbix版本為6.0加postgresql14.4數(shù)據(jù)庫,如果用mysql的話,查詢語句可能不一致

1、數(shù)據(jù)來源

基于python腳本實(shí)現(xiàn),安裝psqcopg2庫,查詢pg數(shù)據(jù)庫的數(shù)據(jù),主要是統(tǒng)計(jì)出最近一個(gè)月內(nèi)告警出現(xiàn)最多的觸發(fā)器,返回10-20條數(shù)據(jù)即可。統(tǒng)計(jì)最近一個(gè)月內(nèi)哪些對(duì)象出現(xiàn)的告警次數(shù)比較多,我個(gè)人的話,返回的數(shù)據(jù)是1000條

2、數(shù)據(jù)清理

把主要是統(tǒng)計(jì)出最近一個(gè)月內(nèi)告警出現(xiàn)最多的觸發(fā)器的數(shù)據(jù)整理成一個(gè)列表數(shù)據(jù),數(shù)據(jù)格式如下

[{“告警標(biāo)簽”},{“觸發(fā)器名稱”},{“告警次數(shù)”},{“告警顏色”}]

統(tǒng)計(jì)最近一個(gè)周內(nèi)哪些對(duì)象出現(xiàn)的告警次數(shù)比較多(本人加了限制,就是一個(gè)對(duì)象同一個(gè)觸發(fā)器起碼一周內(nèi)出現(xiàn)超過5次才統(tǒng)計(jì)),我個(gè)人的話,返回的數(shù)據(jù)是1000條

[{“對(duì)象名稱”},{“對(duì)象ip”},{“觸發(fā)器名稱”},{“告警出現(xiàn)次數(shù)”}]

3、腳本實(shí)現(xiàn)過程

通過python腳本把最近一個(gè)月告警出現(xiàn)最多的觸發(fā)器動(dòng)態(tài)封裝成html發(fā)到郵件正文。把一周內(nèi)哪些對(duì)象出現(xiàn)的告警次數(shù)多的填充到excel表,并作為附件發(fā)送到郵件

三、實(shí)現(xiàn)步驟

需要安裝一下python庫

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import psycopg2
import openpyxl
from openpyxl.styles import Alignment, Font
from openpyxl.utils import get_column_letter
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import os

部分代碼

Postgresql數(shù)據(jù)庫連接代碼

config = {
    'host': '數(shù)據(jù)庫ip',
    'port': 5432,  # PostgreSQL 默認(rèn)端口是5432
    'user': '用戶名',
    'password': '密碼',
    'database': '數(shù)據(jù)庫名'
}
try:
       connection = psycopg2.connect(**config)
       with connection.cursor() as cursor:
         sql_query="""SELECT t.description AS trigger_name, t.priority AS trigger_level, COUNT(e.eventid) AS occurrence_count FROM events e JOIN triggers t ON e.objectid = t.triggerid WHERE e.source = 0 AND e.object = 0 AND e.clock >= EXTRACT(EPOCH FROM (NOW() - INTERVAL '1 WEEK')) GROUP BY t.description, t.priority ORDER BY occurrence_count DESC LIMIT 100;"""
         cursor.execute(sql_query)
         results = cursor.fetchall()
         for row in results:
              excel_data.append([row[0],row[1],row[2],row[3]])
except Exception as e:
       Print(e)

數(shù)據(jù)清洗封裝動(dòng)態(tài)html部分代碼(有些css樣式在郵件會(huì)不生效,所以可能需要用內(nèi)嵌style)

table_rows = ""
    for trigger in trigger_stats:
        table_rows += "<tr style='width:10%;height:10px'><td style='width:8%;border: 1px solid #999;text-align:center;padding: 5px 0;'><span style='background-color: {}; padding: 2px 6px; border-radius: 3px; color:white;'>{}</span></td><td style='width:10%;border: 1px solid #999;text-align:center;padding: 5px 0;color: #f40;'>{}</td><td style='width:10%;border: 1px solid #999;text-align:center;padding: 5px 0;'>{}</td></tr>".format(trigger['color'],trigger['level'],trigger["name"], trigger["count"])

Excel數(shù)據(jù)填充部分代碼(data為清理好的數(shù)據(jù))

def generate_excel(data):
    # 創(chuàng)建一個(gè)新的工作簿
    wb = openpyxl.Workbook()
    sheet = wb.active
    sheet.title = '告警報(bào)表'
    # 定義表頭
    headers = ['業(yè)務(wù)名稱', 'IP', '告警信息', '告警次數(shù)']
    # 寫入表頭
    for col_idx, header in enumerate(headers, start=1):
        cell = sheet.cell(row=1, column=col_idx)
        cell.value = header
        cell.font = Font(bold=True)
        cell.alignment = Alignment(horizontal='center')
    # 填充數(shù)據(jù)
    for row_idx, row_data in enumerate(data, start=2):
        for col_idx, value in enumerate(row_data, start=1):
            cell = sheet.cell(row=row_idx, column=col_idx)
            cell.value = value
            print(cell.value)
    # 保存工作簿
    excel_file = './alert_data.xlsx'
    wb.save(os.path.basename(excel_file))

郵件發(fā)送部分代碼

# 創(chuàng)建MIMEMultipart對(duì)象
    msg = MIMEMultipart('alternative')
    msg['From'] = sender_email
    msg['To'] = receiver_email
    msg['Subject'] = subject
    # 附加HTML內(nèi)容
    msg.attach(MIMEText(html_content, 'html'))
    generate_excel(excel_data)
    with open('./alert_data.xlsx', 'rb') as attachment:
        part = MIMEBase('application', 'octet-stream')
        part.set_payload(attachment.read())
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', 'attachment; filename="{}"'.format('./alert_data.xlsx'))
    msg.attach(part)
    try:
        # 連接到QQ郵箱的SMTP服務(wù)器
        server = smtplib.SMTP_SSL('smtp.qq.com', 465)
        server.login(sender_email, sender_password)
        server.sendmail(sender_email, receiver_email, msg.as_string())
        print('郵件發(fā)送成功')
    except Exception as e:
        print('郵件發(fā)送失敗:', e)
    finally:
        server.quit()

四、成果演示

1、郵件一個(gè)月的告警統(tǒng)計(jì)報(bào)表

2、告警統(tǒng)計(jì)excel郵件附件(部分宏值需要額外替換成具體值)

到此這篇關(guān)于如何生成好看的zabbix告警報(bào)表并發(fā)送郵件 的文章就介紹到這了,更多相關(guān)zabbix告警報(bào)表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于docker安裝zabbix的詳細(xì)教程

    基于docker安裝zabbix的詳細(xì)教程

    這篇文章主要介紹了基于docker安裝zabbix,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 通過Zabbix監(jiān)控Oracle 19c數(shù)據(jù)庫的完整配置指南

    通過Zabbix監(jiān)控Oracle 19c數(shù)據(jù)庫的完整配置指南

    本文將詳細(xì)介紹如何使用Zabbix配置Oracle 19c數(shù)據(jù)庫監(jiān)控,包括安裝、配置、問題排查等全過程,本指南適合新手獨(dú)立完成配置,文中通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • 利用zabbix監(jiān)控ogg進(jìn)程(Windows平臺(tái))

    利用zabbix監(jiān)控ogg進(jìn)程(Windows平臺(tái))

    這篇文章主要介紹了利用zabbix監(jiān)控ogg進(jìn)程(Windows平臺(tái))的步驟,幫助大家監(jiān)控windows平臺(tái)下的ogg程序,感興趣的朋友可以參考下
    2020-12-12
  • zabbix redis自動(dòng)發(fā)現(xiàn)端口的腳本返回json格式

    zabbix redis自動(dòng)發(fā)現(xiàn)端口的腳本返回json格式

    zabbix([`z&aelig;biks])是一個(gè)基于WEB界面的提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級(jí)的開源解決方案。這篇文章主要介紹了zabbix redis自動(dòng)發(fā)現(xiàn)端口的腳本,返回json格式,需要的朋友可以參考下
    2019-11-11
  • Zabbix配置釘釘?shù)膸D片報(bào)警功能

    Zabbix配置釘釘?shù)膸D片報(bào)警功能

    這篇文章主要介紹了Zabbix配置釘釘?shù)膸D片報(bào)警功能,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Zabbix配置WEB監(jiān)控詳細(xì)圖文教程

    Zabbix配置WEB監(jiān)控詳細(xì)圖文教程

    zabbix是基于web界面的開源分布式監(jiān)控平臺(tái),可以監(jiān)控各種服務(wù)器的配置參數(shù),支持自定義配置和自定義告警,并且可以實(shí)現(xiàn)郵件、短信等方式的告警,這篇文章主要給大家介紹了關(guān)于Zabbix配置WEB監(jiān)控的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • zabbix集群搭建分布式監(jiān)控的操作步驟

    zabbix集群搭建分布式監(jiān)控的操作步驟

    zabbix通過zabbix?proxies為IT基礎(chǔ)設(shè)施提供有效的可用的風(fēng)不是監(jiān)控代理(proxy)可用于代替zabbix?server本地手機(jī)數(shù)據(jù),然后將數(shù)據(jù)報(bào)告給服務(wù)器,對(duì)zabbix分布式監(jiān)控操作步驟感興趣的朋友一起看看吧
    2022-11-11
  • 搭建zabbix監(jiān)控以及郵件報(bào)警的超級(jí)詳細(xì)教學(xué)

    搭建zabbix監(jiān)控以及郵件報(bào)警的超級(jí)詳細(xì)教學(xué)

    zabbix是一個(gè)基?于web界面的企業(yè)級(jí)開源監(jiān)控軟件,下面這篇文章主要給大家介紹了關(guān)于搭建zabbix監(jiān)控以及郵件報(bào)警的超級(jí)詳細(xì)教學(xué),文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • zabbix監(jiān)控4.4升級(jí)至5.0的詳細(xì)教程

    zabbix監(jiān)控4.4升級(jí)至5.0的詳細(xì)教程

    這篇文章主要介紹了zabbix監(jiān)控4.4升級(jí)至5.0的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 在centos7安裝zabbix3.0的超詳細(xì)步驟記錄

    在centos7安裝zabbix3.0的超詳細(xì)步驟記錄

    這篇文章主要給大家介紹了關(guān)于在centos7安裝zabbix3.0的超詳細(xì)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10

最新評(píng)論