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.
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!