COMO NOTIFICAÇÃO COM GRAFICO

VAMOS LÁ:


CRIA OS SCRIPT  E DIRETORIOS 

crie o script 

nano /usr/lib/zabbix/alertscripts/telegram.py


#!/bin/python3


#Desenvolvido por: B7telecom em parceria com o ChatGPT #

#Author: RENATO #

#Nome: telegram.py

#Data: 04/06/2025 13h30m #



import os

import re

import sys

import requests


#### Inicio Declaracao de variaveis ####


# Parâmetros do Telegram

telegram_token = '8101048514:AAHCnAU2yL8oJ0K4W4VWd9-C-JI9e45ZVPs'


# URL base do Zabbix

zabbix_url = 'http://192.168.1.101/zabbix'


# Credenciais de login

username = 'Admin'

password = 'zabbix'


#### Fim da declaracao de variaveis ####


# Obtém os argumentos da linha de comando

mensagem = sys.argv[1]

titulo = sys.argv[2]

chat_id = sys.argv[3]


graph_directory = '/var/tmp/zabbix/'


# Função para extrair o item_id da mensagem

def extract_item_id(mensagem):

    # Procura o padrão "Item ID: <item_id>" na mensagem

    match = re.search(r'Item ID:\s*(\d+)', mensagem)

    if match:

        # Extrai o valor do item_id

        item_id = match.group(1)

        return item_id

    else:

        return None


# Extrai o item_id da mensagem

item_id = extract_item_id(mensagem)


print('\n\n\nItem ID:', item_id)


# Verifica se o item_id foi encontrado na mensagem

#if item_id is None:

#    print('Item ID não encontrado na mensagem')

#    exit()


# URL do login

login_url = f'{zabbix_url}/index.php'


# Dados do formulário de login

login_data = {

    'name': username,

    'password': password,

    'enter': 'Sign in',

    'autologin': 1,

    'request': login_url

}


# Sessão do requests

session = requests.Session()


# Faz login

response = session.post(login_url, data=login_data)


# Verifica se o login foi bem-sucedido

if 'Falha no login' in response.text:

    print('Falha no login')

    exit()


# URL do gráfico específico

# Item

graph_url = f'{zabbix_url}/chart.php?from=now-1h&to=now&&itemids[0]={item_id}&type=0&profileIdx=web.charts.filter'


# Faz a requisição do gráfico

graph_response = session.get(graph_url)


# Verifica se a requisição foi bem-sucedida

if graph_response.status_code != 200:

    print('Falha ao obter o gráfico')

    exit()


# Caminho completo para salvar o arquivo do gráfico

graph_filename = os.path.join(graph_directory, f'graph_{item_id}.png')


with open(graph_filename, 'wb') as file:

    file.write(graph_response.content)


print(f'O gráfico foi salvo em {graph_filename}')


# URL do envio de mensagem com foto

url = f'https://api.telegram.org/bot{telegram_token}/sendPhoto'


# Dados do formulário (caption e chat_id)

data = {

    'caption': f'{titulo}\n\n{mensagem}',

    'chat_id': chat_id

}


# Envio da foto via Telegram

files = {'photo': open(graph_filename, 'rb')}

response = requests.post(url, data=data, files=files)


# Verifica se o envio foi bem-sucedido

if response.status_code == 200:

    print('Mensagem e gráfico enviados com sucesso via Telegram')

else:

    print('Falha ao enviar mensagem e gráfico via Telegram')




agora salve e de permissão


chmod +x /usr/lib/zabbix/alertscripts/telegram.py





crie os diretorios e de permissão 


sudo mkdir -p /var/tmp/zabbix
sudo chown zabbix:zabbix /var/tmp/zabbix
sudo chmod 755 /var/tmp/zabbix



apos isso crie o bot no telegram e um grupo 



apos isso crie o templete no zabbix de alerta
 
crie o templete 


Telegram-Graph.xml



<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
    <version>6.0</version>
    <date>2023-06-28T01:43:51Z</date>
    <media_types>
        <media_type>
            <name>Telegram-Graph</name>
            <type>SCRIPT</type>
            <script_name>beebot.py</script_name>
            <parameters>
                <parameter>{ALERT.MESSAGE}</parameter>
                <parameter>{ALERT.SUBJECT}</parameter>
                <parameter>{ALERT.SENDTO}</parameter>
            </parameters>
            <message_templates>
                <message_template>
                    <event_source>TRIGGERS</event_source>
                    <operation_mode>PROBLEM</operation_mode>
                    <subject>Alerta de Novo Incidente ❌</subject>
                    <message>Iniciado em: {EVENT.TIME}
Problema: {EVENT.NAME}
Host: {HOST.NAME}
Item: {ITEM.NAME}
Host IP: {HOST.CONN}
Severidade: {EVENT.SEVERITY}
Status Atual: {EVENT.OPDATA}
By: Beesoft (Bee Solutions)
Item ID: {ITEM.ID}
Ação: Por favor, verificar dispositivo.❌
</message>
                </message_template>
                <message_template>
                    <event_source>TRIGGERS</event_source>
                    <operation_mode>RECOVERY</operation_mode>
                    <subject>Alerta de Resolução de Incidente ✅</subject>
                    <message>Resolvido em: {EVENT.RECOVERY.TIME} de {EVENT.RECOVERY.DATE}
Problema: {EVENT.NAME}
Duração: {EVENT.DURATION}
Host: {HOST.NAME}
Host IP: {HOST.CONN}
Severidade: {EVENT.SEVERITY}
Status Atual: {EVENT.OPDATA}
By: Beesoft (Bee Solutions)
Item ID: {ITEM.ID}
Ação: O Incidente foi resolvido ✅.</message>
                </message_template>
            </message_templates>
        </media_type>
    </media_types>
</zabbix_export>



salve como xml ate na versao testada do zabbix 7.2


apos iponta o  templete para o zabbix sica o passo a passo



coloque o id do grupo no zabbix














apos coloca o id do grupo crie os alertas 

Fazendo upload: 32004 de 32004 bytes.










importe o templete




feito isso cria trigger
















so isso duvidas chama no whatsapp 83993166390

Postar um comentário

0 Comentários