Mudanças entre as edições de "Como Monitorar 95th percentile"

De Wiki BPF
Ir para navegação Ir para pesquisar
 
(20 revisões intermediárias por 3 usuários não estão sendo mostradas)
Linha 3: Linha 3:
 
Link burstable é grandemente falado e procurado por sua flexibilidade e facilidade. Fernando Frediani realizou um [https://www.youtube.com/watch?v=WjSps5huDGU&t=157s painel] na GTER explicando sobre seus conceitos e utilidades.
 
Link burstable é grandemente falado e procurado por sua flexibilidade e facilidade. Fernando Frediani realizou um [https://www.youtube.com/watch?v=WjSps5huDGU&t=157s painel] na GTER explicando sobre seus conceitos e utilidades.
  
Uma dificuldade que impede de alguns upstreams a ofertar esse serviço é justamente no que tange 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.
+
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 600M.
+
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 Percentil, 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 aos 600M.
+
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 devera excluir 5% dos picos de trafego que esse cliente utilizou, e cobrar pelo valor subsequente.
+
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]]
  
 
=== Monitoramento Nativo ===
 
=== 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.
 
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 95percentil, siga os seguintes passos:
+
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]]
 
# Entre nos Hosts do Zabbix;
 
# Entre nos Hosts do Zabbix;
 
# Entre nos gráficos do seu host;
 
# Entre nos gráficos do seu host;
Linha 22: 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 triangulo na frente escrito "95percentile";
+
# 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:95percentil-graph.png|miniaturadaimagem|Criação do Gráfico no Host]]
+
[[Arquivo:Ready-graph-95percentil.png|miniaturadaimagem|Gráfico pronto de um link 95 percentile.]]
[[Arquivo:Ready-graph-95percentil.png|miniaturadaimagem|Gráfico pronto de um link 95 percentil.]]
 
  
Caso preferira, pode adicionar essa configuração nos gráficos que podem ser criados automaticamente pelo Low Level Discovery do seu template.
+
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 ===
+
=== Relatórios Usando ExternalScripts ===
Existem casos onde o o transito 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.
+
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 48: 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 95percentile.sh</code>
+
<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 54: Linha 55:
 
De permissões ao arquivo:
 
De permissões ao arquivo:
  
<code>chmod a+x 95percentile.sh</code>
+
<code>chmod a+x 95percentil.sh</code>
  
Determine que o dono do arquivo é o usuário zabbix:
+
Determine que o dono do arquivo é o usuário zabbix:[[Arquivo:Item Host 95percentil.png|miniaturadaimagem]]<code>chown -R zabbix 95percentil.sh</code>
  
<code>chown -R zabbix 95percentile.sh</code>
+
Agora precisamos criar um item no host que deseja monitorar, mandando utilizar o script para gerar relatório de um determinado ItemID.
 
 
Agora precisamos criar um item no host que desenha 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 68: 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/24/zabbix/items.php?form=update&hostid=10260&itemid=29583</nowiki></code>
+
<code><nowiki>http://192.0.2.0/zabbix/items.php?form=update&hostid=10260&itemid=29583</nowiki></code>
  
Guarde o numero do ItemID que mostra na sua URL, utilizaremos ele.
+
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:
  
 
Substitua o Te0/0/1 pela interface que vai monitorar
 
Substitua o Te0/0/1 pela interface que vai monitorar
[[Arquivo:Item Host 95percentil.png|miniaturadaimagem]]
+
 
 
'''Name: 95% Te0/0/1'''
 
'''Name: 95% Te0/0/1'''
  
Linha 86: Linha 85:
 
'''Type of information: TEXT'''
 
'''Type of information: TEXT'''
  
'''Update Interval: 1d'''
+
'''Update Interval: 1d'''[[Arquivo:Latest Data.png|miniaturadaimagem]]'''New Application: 95%'''
  
'''New Application: 95%'''
+
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, forçará o monitoramento acontecer naquele instante.
  
Ao clicar em Check Now, forçara o monitoramento acontecer naquele instante.
 
[[Arquivo:Latest Data.png|miniaturadaimagem]]
 
 
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.
  
 
O monitoramento foi configurado para acontecer todo dia. Nada impede de manipular para ele acontecer todo dia 1 de cada mês.
 
O monitoramento foi configurado para acontecer todo dia. Nada impede de manipular para ele acontecer todo dia 1 de cada mês.
 +
[[Arquivo:DadosRecentes.png|miniaturadaimagem]]
  
=== '''Outras Funções:''' ===
+
=== 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- Traz apenas o "valor" referente ao 95percentile do mês monitorado
+
 
* 95- Traz o relatório completo, sem excluir os 5% maiores resultados
+
==== 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.'''
 
'''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.

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