
Compartilhar:
Adrian is a problem solver and Python developer advocate. He works with various programming languages to solve engineering problems. Introduced to programming at age 16, Adrian has spent the last 8 years oscillating between backend development and automation. He lives in Nairobi and when not writing code he is most likely playing Call Of Duty or NBA 2K on his PlayStation, riding his bicycle or binge watching the latest series on Netflix.
Crie um sistema de monitoramento do uso de disco usando a Messages API do Vonage
Tempo de leitura: 4 minutos
Introdução
O uso do disco é uma métrica importante a ser monitorada na infraestrutura de TI de qualquer organização. Sem estar ciente do uso do disco a qualquer momento, uma organização corre o risco de enfrentar problemas de desempenho nas aplicações em produção, bem como sobrecargas financeiras decorrentes de custos inesperados incorridos na atualização da infraestrutura existente.
Os provedores modernos de infraestrutura em nuvem, como a AWS, oferecem sistemas avançados de métricas com alarmes configurados, mas isso acarreta um custo adicional. O uso de disco é uma métrica fundamental e, por uma fração do custo cobrado pelos provedores de nuvem, você pode desenvolver seu próprio sistema de monitoramento de uso de disco, completo com alertas. Legal, né?
Neste guia, vamos explicar detalhadamente como criar um sistema personalizado de monitoramento do uso de disco usando a linguagem de programação Python e a Messages API do Vonage. Observe que você poderá executar esse programa em seus servidores e até mesmo em sua máquina de desenvolvimento local.
Pré-requisitos:
Python 3.6 ou superior
Configurar uma aplicação da Vonage por meio da CLI da Vonage
Instale a versão mais recente da CLI da Vonage em sua máquina de desenvolvimento:
npm install --location=global @vonage/cliObtenha sua API_KEY e API_SECRET da Vonage acessando a página de configurações no painel de controle
Configure seu Vonage
API_KEYeAPI_SECRETa partir da última etapa:vonage config:set --apiKey=API_KEY --apiSecret=API_SECRETCrie um aplicativo de mensagens do Vonage: use o comando
vonage apps:createe siga as instruções no modo CLI interativo, conforme mostrado abaixo:
✔ Application Name … <insert any appropriate name>
✔ Select App Capabilities › <select Messages>
✔ Create messages webhooks? › (y/N)
✔ Allow use of data for AI training? Read data collection disclosure - https://help.nexmo.com/hc/en-us/articles/4401914566036 … <select either y/N> Nossos objetivos
Queremos desenvolver uma aplicação leve que faça o seguinte:
Obter nossas estatísticas de uso do disco (seja no servidor ou na máquina de desenvolvimento local). Vamos utilizar uma biblioteca do Python,
psutilpara nos fornecer as estatísticas de uso do disco.Defina um limite arbitrário, por exemplo, 50% do uso do disco, que nos permita enviar notificações quando esse limite for atingido.
Personalize uma mensagem que nos avise quando o uso do disco estiver acima do nosso limite. Contamos com a API da Vonage para nos enviar essa mensagem.
Etapas
Crie um diretório de projeto localmente: Por exemplo,
mkdir disk_usage_monitor && cd disk_usage_monitor.Dentro do diretório do nosso projeto, crie um ambiente virtual para manter as dependências do nosso projeto separadas das dependências globais do Python:
python3 -m venv .venv.Ative nosso ambiente virtual usando o seguinte comando:
source .venv/bin/activate.Dentro do diretório do nosso projeto, crie um arquivo
requirements.txtusando o comandotouch requirements.txte copie as seguintes dependências do projeto para o arquivo:
vonage==3.5.1
python-dotenv==1.0.0
psutil==5.9.5Para instalar as dependências em nosso ambiente virtual, execute o seguinte comando:
pip3 install -r requirements.txtCrie um arquivo .env que irá conter nossas variáveis de ambiente usando o seguinte comando
touch .enve copie o seguinte conteúdo:
Observação: Alterar YOUR_VONAGE_API_KEY, YOUR_VONAGE_API_SECRET, THE_SENDER_NUMBER e THE_RECIPIENT_NUMBER pelas informações encontradas no Painel da Vonage.
# Vonage Credentials
VONAGE_API_KEY=YOUR_VONAGE_API_KEY
VONAGE_API_SECRET=YOUR_VONAGE_API_SECRET
VONAGE_SENDER=THE_SENDER_NUMBER
RECIPIENT=THE_RECIPIENT_NUMBERAdicione um arquivo chamado
monitor.pyusando o comandotouch monitor.pyno diretório do nosso projeto e cole o seguinte conteúdo:
Observação:
psutil.disk_usagedapsutilbiblioteca Python, retorna uma tupla nomeada no formato:sdiskusage(total=xxxxx, used=xxxxx, free=xxxx, percent=47.0). O valor percentual será o que mais nos interessará.
import psutil
import vonage
from dotenv import dotenv_values
# load your environment variables
config = dotenv_values(".env")
client = vonage.Client(key=config["VONAGE_API_KEY"], secret=config["VONAGE_API_SECRET"])
# get disk usage statistics for home directory
stats = psutil.disk_usage("/")
# device: give it an easily identifiable name e.g. server 1.89.200.4
device = "local dev machine"
# send out a message indicating the disk usage level
client.messages.send_message(
{
"channel": "sms",
"message_type": "text",
"from": config["VONAGE_SENDER"],
"to": config["RECIPIENT"],
"text": f"Your Disk Usage is at {stats[-1]} % on {device}.",
}
)Com isso, você pode executar o monitor.py arquivo usando o seguinte comando: python3 monitor.py.
Gostaríamos de receber notificações assim que um determinado limite for atingido em nosso dispositivo. Podemos modificar nosso
monitor.pyarquivo para que nos envie alertas assim que um determinado limite for atingido:
# our previous code remains as is on this section
...
# the disk usage threshold. Adjust this to an acceptable threshold of your choice
threshold = 50
# if disk usage is above given threshold, send out an sms alert
if stats[-1] > threshold:
client.messages.send_message(
{
"channel": "sms",
"message_type": "text",
"from": config["VONAGE_SENDER"],
"to": config["RECIPIENT"],
"text": f"Your Disk Usage is at {stats[-1]} % on {device}. Delete some files soon to create some disk space!",
}
)
Bônus
Em sistemas Unix, podemos configurar esse programa como uma tarefa cron que seja executada diariamente (ou de acordo com a frequência de sua preferência) para realizar verificações regulares do uso do disco:
Edite sua entrada no crontab em uma sessão de terminal usando o seguinte comando sudo crontab -e e adicione a seguinte entrada no cron para ser executada diariamente às 6h:
0 6 * * * cd <project_directory> && .venv/bin/python3 monitor.pyNo Windows, podemos configurar nosso programa como uma tarefa agendada para ser executada diariamente, seguindo estas etapas:
Abra o Agendador de Tarefas a partir do menu Iniciar.
No painel de ações, selecione a opção “Criar tarefa” para criar uma nova tarefa cron.
Na janela “Criar tarefa” que aparece na tela, insira um nome para a tarefa na guia “Geral” e mantenha as demais opções como estão por padrão.
Selecione a aba “gatilhos” e clique em “novo” para adicionar um gatilho.
Na janela “Iniciar tarefa”, selecione “diariamente” no painel lateral e defina a hora de início como 06:00:00 da manhã, por exemplo. Deixe as demais opções como estão por padrão.
Crie uma nova ação no painel de ações e, no painel “Nova ação”, forneça o caminho para o executável do Python, que é o resultado da execução do seguinte comando no prompt de comando:
where python.Na seção “Adicionar argumentos”, insira o nome do arquivo, por exemplo
monitor.py.Na seção “Início”, adicione o caminho para o diretório do projeto:
C:\Users\<user>\path\to\project-directory.
Conclusão
Criamos um sistema completo de monitoramento do uso de disco, com um componente de alertas que utiliza as APIs da Vonage para enviar alertas por SMS.
Se você gostou deste conteúdo ou tiver mais alguma dúvida, pode me enviar uma mensagem no e-mail ou ver o exemplo de código completo no GitHub.
A Vonage sempre valoriza a participação da comunidade. Fique à vontade para se juntar à Vonage no GitHub e no Slack da Comunidade Vonage.
Compartilhar:
Adrian is a problem solver and Python developer advocate. He works with various programming languages to solve engineering problems. Introduced to programming at age 16, Adrian has spent the last 8 years oscillating between backend development and automation. He lives in Nairobi and when not writing code he is most likely playing Call Of Duty or NBA 2K on his PlayStation, riding his bicycle or binge watching the latest series on Netflix.