Mudanças entre as edições de "Como Monitorar 95th percentile"
(11 revisões intermediárias por 3 usuários não estão sendo mostradas) | |||
Linha 7: | Linha 7: | ||
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. | 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 | + | 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 | + | Nesse caso em questão, o upstream deverá excluir 5% dos maiores picos de trafego que esse cliente utilizou, e cobrar pelo valor subsequente. |
[[Arquivo:Zabbix logo.png|miniaturadaimagem|Zabbix]] | [[Arquivo:Zabbix logo.png|miniaturadaimagem|Zabbix]] | ||
Linha 15: | Linha 15: | ||
Alguns sistemas de monitoramento possuem formas simples de fazer isso, um excelente exemplo é o próprio Zabbix, que é o que utilizaremos para demonstrar aqui. | 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 | + | 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: |
[[Arquivo:Criaçao Grafico 95percentil.png|miniaturadaimagem|Criação do Gráfico no Host]] | [[Arquivo:Criaçao Grafico 95percentil.png|miniaturadaimagem|Criação do Gráfico no Host]] | ||
# Entre nos Hosts do Zabbix; | # Entre nos Hosts do Zabbix; | ||
Linha 24: | Linha 24: | ||
# 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; | # 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; | ||
# Manipule o Time-Range do gráfico de forma que ele mostre o trafego desde o primeiro dia do mês, até o ultimo; | # Manipule o Time-Range do gráfico de forma que ele mostre o trafego desde o primeiro dia do mês, até o ultimo; | ||
− | # Uma linha aparecerá no gráfico, e uma estatística com um | + | # Uma linha aparecerá no gráfico, e uma estatística com um triângulo na frente escrito "95percentile"; |
# O valor seguinte, é o valor que buscamos. | # O valor seguinte, é o valor que buscamos. | ||
− | [[Arquivo:Ready-graph-95percentil.png|miniaturadaimagem|Gráfico pronto de um link 95 | + | [[Arquivo:Ready-graph-95percentil.png|miniaturadaimagem|Gráfico pronto de um link 95 percentile.]] |
− | Caso | + | Caso prefira, pode adicionar essa configuração nos gráficos que podem ser criados automaticamente pelo Low Level Discovery do seu template. |
− | === Relatórios | + | === Relatórios Usando ExternalScripts === |
− | Existem casos onde o o | + | 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: | 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: | ||
Linha 49: | Linha 49: | ||
Dentro do script é necessário colocar o usuário e senha do seu database, para isso utilizaremos o nano: | Dentro do script é necessário colocar o usuário e senha do seu database, para isso utilizaremos o nano: | ||
− | <code>nano | + | <code>nano 95percentil.sh</code> |
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. | 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. | ||
Linha 55: | Linha 55: | ||
De permissões ao arquivo: | De permissões ao arquivo: | ||
− | <code>chmod a+x | + | <code>chmod a+x 95percentil.sh</code> |
− | Determine que o dono do arquivo é o usuário zabbix:[[Arquivo:Item Host 95percentil.png|miniaturadaimagem]]<code>chown -R zabbix | + | Determine que o dono do arquivo é o usuário zabbix:[[Arquivo:Item Host 95percentil.png|miniaturadaimagem]]<code>chown -R zabbix 95percentil.sh</code> |
− | Agora precisamos criar um item no host que | + | 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. | Todo item de monitoramento no Zabbix possui uma identificação numérica chamada de ItemID, para pegar o ItemID é bastante simples. | ||
Linha 67: | Linha 67: | ||
Na URL vai reparar que estará algo parecido com isso: | Na URL vai reparar que estará algo parecido com isso: | ||
− | <code><nowiki>http://192.0.2.0 | + | <code><nowiki>http://192.0.2.0/zabbix/items.php?form=update&hostid=10260&itemid=29583</nowiki></code> |
− | Guarde o | + | 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: | Crie um novo item no seu host, utilizando a seguinte configuração: | ||
Linha 89: | Linha 89: | ||
Clique em update, entre no item que acabou de criar e clique em Check Now. | Clique em update, entre no item que acabou de criar e clique em Check Now. | ||
− | Ao clicar 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. | 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. | ||
Linha 96: | Linha 96: | ||
[[Arquivo:DadosRecentes.png|miniaturadaimagem]] | [[Arquivo:DadosRecentes.png|miniaturadaimagem]] | ||
− | === | + | === Outras Funções === |
Além da função de relatório, o script também possui outras 2 funções: | Além da função de relatório, o script também possui outras 2 funções: | ||
==== 95current ==== | ==== 95current ==== | ||
− | + | Realiza a verificação do monitoramento do mês atual, exclui os 5% maiores resultados e informa o maior resultado subsequente. | |
==== fullreport ==== | ==== fullreport ==== | ||
Traz o relatório completo, sem excluir os 5% maiores resultados. | 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.''' | '''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.''' | ||
+ | |||
+ | <code>[https://github.com/andrediashexa/95percentil.git https://github.com/andrediashexa/95percentil]</code> | ||
'''Autor: [[Usuário:Andredias|André Dias]]''' | '''Autor: [[Usuário:Andredias|André Dias]]''' | ||
+ | [[Categoria:Infraestrutura]] |
Edição atual tal como às 11h17min de 1 de agosto de 2024
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.
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:
- Entre nos Hosts do Zabbix;
- Entre nos gráficos do seu host;
- Crie um novo gráfico;
- Existem 2 itens chamados de "Item Percentile (left)" e "Item Percentile (right)", habilite ambos e ao lado coloque 95;
- Adicione os itens relacionados ao trafego da interface que deseja monitorar (trafego de inbound e de outbound);
- 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;
- Manipule o Time-Range do gráfico de forma que ele mostre o trafego desde o primeiro dia do mês, até o ultimo;
- Uma linha aparecerá no gráfico, e uma estatística com um triângulo na frente escrito "95percentile";
- O valor seguinte, é o valor que buscamos.
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:
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
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.
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