Monit.

Monitorando mandante aberto (tcode SCC4) no SAP S/4 HANA com ZABBIX

Escrito por Douglas Baiocco. Publicado em Nagios/ZABBIX.

O controle do estado do mandante é ponto crítico na administração de um sistema SAP. É muito perigoso um ambiente produtivo ficar aberto, sujeito a modificações. Isso compromete todo o Landscape SAP. Utilizamos para abrir um mandante, a transação SCC4. Ela deve ser restrita e muito bem controlada. Infelizmente temos situações que podem fugir do nosso controle, como esquecer o mandante aberto ou mesmo o uso mal intencionado da SCC4. Para evitar surpresas, resolvi monitorar o mandante com o ZABBIX.

SAP

Atenção para este ponto: irei realizar modificações em funções e webservices no SAP. Se isso não for tranquilo para você, peça ajuda. Não cague todo o sistema, colocando a culpa em mim, por favor.

A primeira etapa consiste em encontrar um modo de monitorar o mandante. Para isso eu usei o Modulo de função VIEW_GET_CLIENT_STATE. Entre na SE37 e execute este modulo de função:


image001

image002

 

Note o campo TRANSP_STATE. Ele identifica o estado do mandante. O valor 2 identifica que o mandante está fechado, como na imagem da SCC4:


image003

 

Para não alterar coisas STANDARD do SAP, vou copiar este modulo de função e chamarei de ZVIEW_GET_CLIENT_STATE

 image004

 

 

Vou criar a CR para transporte aos outros ambientes (estou usando o DEV para essas mudanças e, é claro que estou fazendo do jeito que a SAP manda).

Com o Modulo de função criado, vou editá-lo, entrando na guia Características, e mudarei o campo para Modulo de acesso remoto, como na imagem:

 

 

Salve e ative o Modulo de função.image005

Ainda na edição, entre em Utilitários, Outros utilitários, Gerar serviços web e selecione a opção Do modulo de função, conforme a imagem:
image006

 

Iremos, a partir de agora, criar o Webservice para o acesso do ZABBIX ao SAP. Preencha os valores solicitados nesta tela:
image007

 

Preencha a próxima tela, como segue:
image008

 

 

Na tela seguinte, selecione na caixa Profile o segundo item (PRF_DT_IF_SEC_LOW), conforme a imagem:
image009

 

Agora, selecione o pacote onde quer gerar este serviço e digite a sua CR para transporte:
image010

 

Após isso, salve e ative o serviço:
image011

 

Execute a transação SOAMANAGER:
image012

 

Selecione Configuração de Web Service e digite o nome do serviço criado:
image013

 

Selecione o serviço:
image014

 

Clique no botão Criar serviço e preencha conforme a imagem:
image015

 

Na próxima tela, selecione na caixa Autenticação em nível de transporte o item ID do usuário e senha:
image016

 

Na tela seguinte, deixe como está e clique em Concluído:
image017

 

Veja o resultado:
image018

 

Para testarmos o acesso do webservice, vamos usar o SoapUI. Abra o software, mas antes pegue o endereço do WSDL do serviço criado. Para isso, ainda no SOAMANAGER, clique no botão ao lado do nome do serviço, conforme a imagem:
image019

 

Note a URL do WSDL. Com ela, iremos testar o resultado do serviço. No SoapUI, abra um novo projeto SOAP e preencha com os dados da url copiada do SAP:
image020

 

Digite um usuário válido no sistema:
image021

 

Acesse a requisição e complete a autenticação, conforme a imagem:
image022

 

Execute a requisição e veja o resultado:
image023

 

Pronto, transporte as CRs para os ambientes que serão monitorados.

 

Configuração no ZABBIX

Agora precisamos deixar o ZABBIX acessando o recurso do SAP. Para isso, criei um template, que disponibilizo abaixo:

LINK DO TEMPLATE

Esse template faz uma requisição ao serviço criado no SAP e retorna os valores do modulo de função Z criado anteriormente. Veja o template:


image024

 

E aqui o Item do template:


image025

Detalhe do item:


image026

Note que no BODY estou colocando a requisição para chamar o serviço com o seguinte conteúdo:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:sap-com:document:sap:rfc:functions">

   <soapenv:Header/>

   <soapenv:Body>

      <urn:VIEW_GET_CLIENT_STATE/>

   </soapenv:Body>

</soapenv:Envelope>

 

Mudei o Header também para Content-Type = text/xml

No Preprocesing do Item, deixei da seguinte forma:


image027

 

O Trigger do template está abaixo:


image028

 

Qualquer coisa diferente de 2 será alertado.

 

Conclusão

Com a ajuda de um ABAP que conheça webservices podemos criar uma infinidade de monitoramentos em nosso ambiente SAP. Isso pode ser muito útil para eliminar as tarefas diárias de checagem que temos que fazer, liberando tempo para outras atividades mais divertidas. Nestes exemplos, não nos preocupamos muito com a segurança. Se for implantar isso, tenha cuidado de checar com a equipe responsável os impactos em sua infraestrutura.