MONITORANDO SERVIDORES SAP (CCMS) COM ZABBIX parte 2 – monitorando BUFFERS
Neste artigo, iremos continuar o processo de monitoramento do SAP através do ZABBIX, mas nos exemplos, iremos monitorar itens que retornam mais de uma linha.
Para ver a primeira parte, siga o link abaixo:
http://ajudadigital.com.br/index.php/windows/171-monitorando-servidores-sap-ccms-com-zabbix
No artigo passado, instalamos o plugin para acessar a CCMS e fizemos o teste com um valor chamado ResponseTime. Neste artigo, iremos pegar valores dos BUFFERs. Vejam um exemplo de dados de BUFFERs no SAP ECC acessando a transação st02:
Monitorar isso pode ser um belo indicador da saúde do seu ambiente, pois estouro de BUFFERS podem ocasionar lentidão e erros no SAP.
Mas qual o motivo de termos um tópico em separado para isso? O maior problema neste cenário está relacionado com o retorno do valor pelo script da CCMS. Veja como ele retorna o valor do item responsetime na linha de comando:
Para os BUFFERS, vamos usar como exemplo o PROGRAM BUFFER. Para acessá-lo, vou configurar da seguinte maneira o arquivo agent.cfg, no diretório sapmon:
[TEMPLATE_buffers_program]
DESCRIPTION="BUFFER PROGRAM"
MONI_SET_NAME=SAP CCMS Monitor Templates
MONI_NAME="Buffers"
PATTERN_0="*Program*"
Quando eu faço o teste na linha de comando, veja o resultado:
Note que são exibidas várias linhas, cada uma delas com um parâmetro que deveria ser monitorado. Lembrando que os valores que nos interessam são:
DirectoryUsed – espaço ocupado do buffer
SpaceUsed – quantidade de objetos do buffer utilizados
HitRatio – taxa de acerto do buffer
Swap – quantidade de trocas realizadas no buffer
O problema está em tratar esses valores dentro do ZABBIX. Eu testei de algumas formas (usando um script para tratar e receber um JSON, por exemplo) mas não obtive sucesso. Então, para não ficar criando script em linha de comando e manter tudo no ZABBIX, fiz uma “solução de contorno”. Criei uma cópia do script de checagem do NAGIOS. Com isso, posso chamar várias vezes o script (mudando o nome dentro do ITEM) e ter os valores que eu quero. Não é o mais elegante nem o mais rápido, mas funcionou.
Veja abaixo como ficaram os ITENS dentro do template:
Note que cada item tem um check_sap com um numero. Dessa maneira, eu consigo monitorar vários itens do BUFFER dentro de um mesmo template. Infelizmente são feitas 4 chamadas ao servidor para extrair os valores. Nem tudo são flores.
E esse é o detalhe de um dos itens:
Veja que, como no artigo anterior, o segredo está no PREPROCESSING:
Fazendo dessa forma, qualquer valor que retorne da CCMS com mais de uma linha pode ser monitorado. É claro que se encontrar um jeito mais inteligente de fazer isso, compartilharei aqui. E se você tiver um jeito melhor, pode me contar também. Eu mantenho os créditos.
Vou disponibilizar o XML do template para facilitar a vida no link abaixo
EDIT 1
Graças a dica do sr. Rodolfo Ribeiro, podemos mudar a forma de monitoramento dos buffers. No meu exemplo estou copiando várias vezes o check_sap, mas podemos apenas criar diversas instancias no agent.cfg. Desta forma ficaria assim o agent.cfg:
[TEMPLATE_buffers_program_directory]
DESCRIPTION="BUFFER PROGRAM"
MONI_SET_NAME=SAP CCMS Monitor Templates
MONI_NAME="Buffers"
PATTERN_0="*Program*"
[TEMPLATE_buffers_program_space]
DESCRIPTION="BUFFER PROGRAM"
MONI_SET_NAME=SAP CCMS Monitor Templates
MONI_NAME="Buffers"
PATTERN_0="*Program*"
[TEMPLATE_buffers_program_hitratio]
DESCRIPTION="BUFFER PROGRAM"
MONI_SET_NAME=SAP CCMS Monitor Templates
MONI_NAME="Buffers"
PATTERN_0="*Program*"
[TEMPLATE_buffers_program_swap]
DESCRIPTION="BUFFER PROGRAM"
MONI_SET_NAME=SAP CCMS Monitor Templates
MONI_NAME="Buffers"
PATTERN_0="*Program*"
No ZABBIX eu precisaria apenas colocar cada item com o respectivo valor do arquivo, sem ficar mudando o check_sap, conforme a imagem:
E no preprocessing fazer o mesmo dos exemplos acima:
O check_sap continuará trazendo tudo, mas agora ficou mais elegante.