Monitorando o Squid com o Zabbix

1

Filed Under (software livre) by rafaelgomes on 14-07-2009

Que o Squid é uma ferramenta fantástica, isso acredito que a maioria já saiba, mas que o mesmo de forma incrível disponibiliza uma interface de monitoria  web e linha de comando, isso poucos sabem.

O nome dessa “ferramenta” é Cachemgr. Com ele é possível saber muita coisa sobre o funcionamento do Squid como um todo.

No wiki do Squid tem pouca informação sobre os dados exibidos pelo Cachemgr, pois em muitos casos chega a ser enigmático para quem não tem um profundo conhecimento no assunto.

Com esse link você vai consegui configurar seu cachemgr, porém não há nenhum link explicando sobre os itens informados, pois são MUITOS.

Após configurar experimente rodar esse comando

squidclient -h <host> -p <porta do squid> mgr:info

Não se desespere, para quem REALMENTE tem interesse, há sempre uma saída. Achei esse livro que explica tudo sobre os dados exibidos, porém há dois problemas. Primeiro é em inglês (Tudo bem não é bem um problema, já que todos os analistas responsáveis pelo squid deveriam saber inglês, mas…) e o segundo é que o livro é pago. No link informado algumas página estão ocultas.

Vale a pena comprar o livro. Além dessas informações o livro é recheado com o que há de melhor nas informações sobre o Squid.

Para quem utiliza o Zabbix, há uma forma interessante para configurar novos itens de monitoramento. É possível configurar no cliente um “chave” de monitoria, para ser utilizado pelo servidor Zabbix. Ela se chama “userparameters”.

No arquivo de configuração padrão do Agente Zabbix existe alguns exemplos já pré-definidos e comentados para ter uma idéia.

Com isso é possível fazer o seguinte:

UserParameter=squid.cpu.usage,squidclient mgr:5min |grep cpu_usage| awk -F\= ‘{print $2}’ | sed ‘s/^ //’ | sed ‘s/%//’

O que ele fez? Eu criei a chave squid.cpu.usage para que uma vez configurado no servidor Zabbix essa chave para a máquina teve esse agente configurado o comando após a virgula será executado e retornará o valor para o servidor Zabbix.

O comando tem como objetivo pegar somente o número de utilização de cpu pelo o Squid.

Para mais informações sobre o UserParameter acesse o manual do Zabbix na página 119.

Pronto, simples assim.

Agora que todo mundo já sabe como configurar o Cachemgr, o que cada item do cachemgr representa e como configurar o  UserParameter  , vamos ao que interessa. O que monitorar!

Com base nesse link, achei que os itens abaixo são muito pertinentes. Aceito melhorias, ok?

  • Porcentagem de utilização de CPU pelo squid

É interessante saber a quantidade de CPU que o Squid está consumindo. Por motivos óbvios.

Comando para extração:

UserParameter=squid.cpu.usage,squidclient mgr:5min |grep cpu_usage| awk -F\= '{print $2}' | sed 's/^ //' | sed 's/%//'

  • Quantidade de Page Faults por segundos

Primeiro, o que é Page Faults? Page Faults é quando está informado na base que o dado está na memória e quando vai retirar de fato ele foi transferido para o disco. Isso com taxa acima de 0.5 indica problemas no cache.

Comando para extração:

UserParameter=squid.page.faults,squidclient mgr:5min |grep page_faults| awk -F\= '{print $2}' | sed 's/^ //' | sed 's/\/sec//'

  • Quantidade de requisições http por segundo

Por motivos óbvios é muito bom saber quantas requisições o seu servidor está recebendo por segundo. Isso pode ajudar o dimensionamento de um upgrade.

Comando para extração:

UserParameter=squid.http.request,squidclient mgr:5min |grep 'client_http.requests'| awk -F\= '{print $2}' | sed 's/^ //' | sed 's/\/sec//'

  • Tempo de serviço da requisição http

O tempo de serviço da requisição http é quanto tempo leva entre a requisição http do cliente e a retorno da requisição.

Comando para extração:

UserParameter=squid.http.svc.time,squidclient mgr:5min |grep "client_http.all_median_svc_time"| awk -F\= '{print $2}' | sed 's/^ //' | sed 's/seconds//'

  • Tempo de serviço da requisição DNS

O tempo de serviço da requisição dns é quanto tempo leva entre a requisição dns do squid e a retorno da requisição.

Comando para extração:

UserParameter=squid.dns.svc.time,squidclient mgr:5min |grep "dns.median_svc_time"| awk -F\= '{print $2}' | sed 's/^ //' | sed 's/seconds//'

  • Porcentagem de utilização do cache no disco

Por motivos óbvios é interessante saber quanto de cache o seu Squid está utilizando.

Comando para extração:

UserParameter=squid.cache.used,squidclient mgr:storedir |grep "Percent Used"| awk -F\: '{print $2}' | sed 's/^ //' | sed 's/%//'

  • Porcentagem de utilização do cache no lugar do acesso a internet

O squid tem duas formas de medição da utilização do cache; Uma é por requisição e outra é por tamanho.

Comando para extração:

Por requisição:

UserParameter=squid.cache.hit.request,squidclient mgr:info |grep "Hits as % of all requests" | awk -F\: '{print $3}' | awk -F\, '{print $1}' | sed 's/^ //' | sed 's/%//'

Por tamanho (em Bytes)

UserParameter=squid.cache.hit.byte,squidclient mgr:info |grep "Hits as % of bytes sent" | awk -F\: '{print $3}' | awk -F\, '{print $1}' | sed 's/^ //' | sed 's/%//'

  • Quantidades de File Descriptors utilizados

Para quem não sabe o que é,  vale a leitura desse link.

Como o Squid trabalha abrindo vários arquivos, é interessante saber a quantidade deles, pois como todos sabem existe um limite para esses File Descriptors, seja no squid e no linux.

Comando para extração:

UserParameter=squid.file.desc.used,squidclient mgr:info |grep "Number of file desc currently in use" | awk -F\: '{print $2}' |  sed 's/^ //'

  • Quantidades de conexões ativas

Essa informação é útil para sabermos quantos usuários estão utilizando o Squid naquele dado momento.

Comando para extração:

UserParameter=squid.conexoes,netstat -nat |grep :3128 | grep -v 0.0.0.0:3128 | grep -v 127.0.0.1:3128 | awk '{print $5}' | awk -F\: '{print $1}' | sort | uniq | wc -l

Obs: O comando acima está levando como base que sua porta é 3128.

Pronto! Agora configure no seu servidor Zabbix e se divirta com a quantidade de informações que irá obter.

UserParameter=squid.cpu.usage,squidclient mgr:5min |grep cpu_usage| awk -F\= ‘{print $2}’ | sed ‘s/^ //’ | sed ‘s/%//’
Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • email
  • Identi.ca
  • LinkedIn
  • RSS
  • Slashdot

Comments posted (1)

[...] описаны пользовательские айтемы, в общем, есть что почитать (заодно и испанский можно подтянуть). Для неосиливших [...]

Write a comment