PyStorage Monitoring - monitoramento de storage com notificações no Telegram

PyStorage Monitoring - monitoramento de storage com notificações no Telegram


Monitoramento de Espaço em Disco com Telegram

Recentemente, desenvolvi um script em Python que permite monitorar o espaço em disco de forma simples e eficaz. O script coleta informações sobre todos os discos montados e envia essas informações diretamente para um chat do Telegram. Abaixo, explico como o script funciona e como você pode configurá-lo.

Monitoramento em tempo real de storage com notificações via telegram

Funcionalidades do Script

  • Listagem de Discos: O script usa o comando df -h para listar todos os discos e suas respectivas informações, como espaço total, usado e disponível.
  • Envio de Mensagens: As informações são formatadas em uma mensagem e enviadas para o Telegram, permitindo um monitoramento em tempo real do espaço em disco.
  • Divisão de Mensagens: Para evitar problemas com mensagens muito longas, o script divide automaticamente a mensagem em partes, garantindo que cada uma não exceda o limite de caracteres do Telegram.

Repositório do projeto
https://github.com/jaccon/PyStorage/

Código do Script

Aqui está o código do script. Lembre-se de ocultar suas credenciais do bot do Telegram para garantir a segurança. Para isso, utilize variáveis de ambiente ou um arquivo de configuração seguro.

# -*- coding: utf-8 -*-
import requests
import subprocess
import os

# Configurações do Telegram
bot_token = os.getenv('TELEGRAM_BOT_TOKEN')  # Adicione sua token do bot aqui
bot_chatID = os.getenv('TELEGRAM_CHAT_ID')    # Adicione seu chat ID aqui
max_message_length = 4096

def telegram_bot_sendtext(bot_message):
    send_text = f'https://api.telegram.org/bot{bot_token}/sendMessage?chat_id={bot_chatID}&parse_mode=Markdown&text={bot_message}'
    response = requests.get(send_text)
    return response.json()

def get_disk_usage():
    df_output = subprocess.check_output(['df', '-h']).decode('utf-8')
    lines = df_output.splitlines()[1:]  # Ignora o cabeçalho
    disk_info = []
    
    for line in lines:
        parts = line.split()
        disk_name = parts[0]
        total_space = parts[1]
        used_space = parts[2]
        available_space = parts[3]
        disk_info.append(f"{disk_name}: Total: {total_space}, Usado: {used_space}, Disponível: {available_space}")
    
    return disk_info

def send_disk_usage(disk_info):
    disk_usage_message = "Disk Space Monitoring\n\n" + "\n".join(disk_info)
    
    # Dividir a mensagem se for muito longa
    for i in range(0, len(disk_usage_message), max_message_length):
        part = disk_usage_message[i:i + max_message_length]
        sendMessage = telegram_bot_sendtext(part)
        print(sendMessage)

# Obtém o uso do disco
disk_info = get_disk_usage()
send_disk_usage(disk_info)

Configuração

Variáveis de Ambiente: Para proteger suas credenciais, utilize variáveis de ambiente para armazenar o token do bot e o chat ID. Você pode definir essas variáveis no seu sistema ou em um arquivo .env se estiver usando um gerenciador de ambiente.

Instalação de Dependências: Certifique-se de que você tenha a biblioteca requests instalada. Você pode instalá-la usando:

pip install requests

Execução do Script: Execute o script com o seguinte comando:

python3 disk_space_monitoring.py

Conclusão

Esse script é uma maneira prática de manter um olho no uso do disco e receber atualizações em tempo real no Telegram. É fácil de configurar e pode ser adaptado para atender a outras necessidades de monitoramento.

Sinta-se à vontade para entrar em contato se tiver alguma dúvida ou se quiser colaborar em melhorias para o script!