Para minha configuração do OpenStack, estou usando o LVM como back-end de armazenamento do Cinder Block. Eu criei um vg de volumes de cinza para Thin Provisioning.
Agora, quero monitorar quanto esse vg é usado (não discos separados). Descobri que lvs -a pode fazer isso. Consegui verificar a utilização do meu pool de volumes
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
cinder-volumes-pool cinder-volumes twi-aotz-- 1.49t 26.35 22.20
Posso ver que há aproximadamente 26% de utilização desse pool de volumes. Existe alguma maneira de monitorá-lo. Atualmente utilizo o Zabbix para monitoramento geral de servidores e outros serviços. Mas o Zabbix suporta monitoramento de sistema de arquivos, não de discos e pools LVM.
Você conhece alguma solução que eu possa usar para monitorá-lo? Qualquer coisa como algum script bash ou python que envia e-mail por smtp quando a% de dados é superior a 80% ou mais? Ou algum modelo zabbix??
Edit1: Acho que posso usar essa abordagem.
disk_usage=$(sudo lvs -a | grep -w cinder-volumes-pool | awk '$1 ~ /cinder-volumes-pool/ { POOL = $1 } { DISK += $5 } END { print DISK }')
Compararei esse valor var com meu limite (50% ou 80%). Quando corresponder, configurarei o SMTP para enviar e-mail. Deve ser uma solução decente. Se vocês tiverem algo melhor, sintam-se à vontade para me ajudar.
Ok, resolvi esse problema, e assim postando uma solução caso alguém queira ajuda. Em primeiro lugar, obteremos o uso do disco com o comando lva -a. A personalização a seguir obterá o valor exato. Certifique-se de substituir o nome do pool fino do LVM em grep e awk regex.
Compare o valor com aquele que você está obtendo para o seu conjunto de volumes no comando lvs -a, se for o mesmo, podemos prosseguir. Caso contrário, conte sua posição e modifique-a no awk (de $5 para a posição do seu disco%).
No meu caso, eu já estava usando o Zabbix. Então, editei meu arquivo do agente zabbix (/etc/zabbix/zabbix_agent2.conf) e adicionei a seguinte linha.
UserParameter é usado no Zabbix para enviar chaves definidas pelo usuário do agente para o servidor Zabbix. Aqui, cinder-volumes.disk_usage é o nome da minha chave e o comando é o valor dessa chave.
Como meu comando precisa de privilégio de root, modifiquei a unidade systemd do zabbix-agent para rodar como root (sei que esta não é a melhor abordagem, uma solução melhor é sempre bem-vinda). Reinicie seu Agente Zabbix.
Confirme se sua chave personalizada está funcionando:
Se você obtiver o valor de saída, vá para o Zabbix Dashboard. Para o seu Host, crie um novo item com a chave que você criou na etapa anterior. Selecione Numérico (flutuante) para o tipo de informação e Intervalo de atualização 1h e pronto.
Após criar o item, crie gatilhos baseados nesse item com expressão
Para teste, crie um gatilho com valor inferior (sob o uso atual do disco). Se o gatilho for criado, está tudo bem. Agora você pode criar alertas de mídia (e-mail, pagerduty, slack ou qualquer coisa) para receber alertas para seu gatilho.