Como Monitorar 95th percentile

De Wiki BPF
Ir para: navegação, pesquisa

Introdução

Link burstable é grandemente falado e procurado por sua flexibilidade e facilidade. Fernando Frediani realizou um painel na GTER explicando sobre seus conceitos e utilidades.

Uma dificuldade que impede de alguns upstreams a ofertar esse serviço é o monitoramento de tal serviço, justamente por ser complexo determinar quanto o cliente deverá pagar por aquela fatura por se tratar de um valor variável, e não mais um valor fixo.

Leve em consideração que o provedor XPTO realizou a contratação de um link burstable com a operadora Z com commit de 500M e burst de 1G, sendo assim, o valor inicial que ele pagará será referente a 500M.

Porém como estamos nos referindo a 95 percentile, poderá acontecer de esse cliente ultrapassar os 500M de trafego durante mais do que 36 horas, passando assim a ter que pagar por uma capacidade superior utilizada além do mínimo contratado.

Nesse caso em questão, o upstream deverá excluir 5% dos maiores picos de trafego que esse cliente utilizou, e cobrar pelo valor subsequente.

Zabbix

Monitoramento Nativo

Alguns sistemas de monitoramento possuem formas simples de fazer isso, um excelente exemplo é o próprio Zabbix, que é o que utilizaremos para demonstrar aqui.

A primeira forma será através de uma forma nativa de monitoramento por parte do Zabbix através do monitoramento via SNMP que já é feito nas interfaces do seu equipamento. Para criar o gráfico relacionado ao 95 percentile, siga os seguintes passos:

Criação do Gráfico no Host
  1. Entre nos Hosts do Zabbix;
  2. Entre nos gráficos do seu host;
  3. Crie um novo gráfico;
  4. Existem 2 itens chamados de "Item Percentile (left)" e "Item Percentile (right)", habilite ambos e ao lado coloque 95;
  5. Adicione os itens relacionados ao trafego da interface que deseja monitorar (trafego de inbound e de outbound);
  6. Para checar se funcionou, entre no menu "Monitoring", "Graphs", selecione o grupo que seu host está incluso, selecione seu host, e o gráfico que voce criou;
  7. Manipule o Time-Range do gráfico de forma que ele mostre o trafego desde o primeiro dia do mês, até o ultimo;
  8. Uma linha aparecerá no gráfico, e uma estatística com um triângulo na frente escrito "95percentile";
  9. O valor seguinte, é o valor que buscamos.
Gráfico pronto de um link 95 percentile.

Caso prefira, pode adicionar essa configuração nos gráficos que podem ser criados automaticamente pelo Low Level Discovery do seu template.

Relatórios Usando ExternalScripts

Existem casos onde o o trânsito em questão possui a necessidade de gerar relatórios mais complexos, para tal eu desenvolvi um script para essa finalidade. Esse script faz justamente o que o gráfico realiza, porém de forma que mostre um relatório em texto.

Para utilizarmos esse script, precisaremos inicialmente acessar seu Zabbix via SSH, e após isso usar o seguinte comando para acessar o diretório onde ficam os scripts para monitoramento externo:

cd /usr/lib/zabbix/externalscripts

Vamos realizar o download das dependências do script:

apt install wget git -y

Após isso, realize o clone do script que está no GitHub:

git clone https://github.com/andrediashexa/95percentil.git

mv 95percentil/* .

Dentro do script é necessário colocar o usuário e senha do seu database, para isso utilizaremos o nano:

nano 95percentil.sh

Edite as primeiras linhas de acordo com suas informações, de forma que sejam coerentes com o acesso de seu database. Apenas dessa forma o script conseguirá buscar as informações que precisaremos para gerar os relatórios.

De permissões ao arquivo:

chmod a+x 95percentil.sh

Determine que o dono do arquivo é o usuário zabbix:

Item Host 95percentil.png

chown -R zabbix 95percentil.sh

Agora precisamos criar um item no host que deseja monitorar, mandando utilizar o script para gerar relatório de um determinado ItemID.

Todo item de monitoramento no Zabbix possui uma identificação numérica chamada de ItemID, para pegar o ItemID é bastante simples.

Acesse a interface web de seu Zabbix, e entre no item utilizado para monitorar o trafego de uma determinada interface de um host.

Na URL vai reparar que estará algo parecido com isso:

http://192.0.2.0/zabbix/items.php?form=update&hostid=10260&itemid=29583

Guarde o número do ItemID que mostra na sua URL, utilizaremos ele.

Crie um novo item no seu host, utilizando a seguinte configuração:

Substitua o Te0/0/1 pela interface que vai monitorar

Name: 95% Te0/0/1

Type: Monitoramento externo

Substitua o ITEMID pelo ID que guardou la atras.

Key: 95percentile.sh[report,ITEMID]

Type of information: TEXT

Update Interval: 1d

Latest Data.png

New Application: 95%

Clique em update, entre no item que acabou de criar e clique em Check Now.

Ao clicar em Check Now, forçará o monitoramento acontecer naquele instante.

Após isso, vá em Monitoring, Latest Data e procure pelo item que acabou de criar, clique em history e deverá mostrar o relatório de todas as vezes que aquela interface foi monitorada por aquele ItemID, excluindo 5% dos maiores resultados.

O monitoramento foi configurado para acontecer todo dia. Nada impede de manipular para ele acontecer todo dia 1 de cada mês.

DadosRecentes.png

Outras Funções

Além da função de relatório, o script também possui outras 2 funções:

95current

Realiza a verificação do monitoramento do mês atual, exclui os 5% maiores resultados e informa o maior resultado subsequente.

fullreport

Traz o relatório completo, sem excluir os 5% maiores resultados.

Dicas e Cuidados

Timer dos itens

Dependendo da função que utilizará do script, ele coletará todos valores monitorados do ultimo mês, o que poderá ser extremamente oneroso para o DB, e certamente fará o Zabbix dar timeout no script.

Supondo que monitore o tráfego de uma determinada interface 1x por minuto, isso causará 108mil registros para o MySQL buscar na tabela.

Recomendo que aumente o tempo de coleta para 5min, o que diminuirá para 21600 itens, e diminuirá a possibilidade de um timeout.

LowLevel Discovery

Não recomendo que tente "combar" o script com LLD, pelo mesmo motivo que foi citado acima.

Como Colaborar Com o Script?

O script em questão foi desenvolvido por mim, e por se tratar de um script OpenSource, está aberto no GitHub para quem quiser colaborar no desenvolvimento dele.

https://github.com/andrediashexa/95percentil

Autor: André Dias