Monitorando mandante aberto (tcode SCC4) no SAP S/4 HANA com 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:
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:
Para não alterar coisas STANDARD do SAP, vou copiar este modulo de função e chamarei de ZVIEW_GET_CLIENT_STATE
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.
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:
Iremos, a partir de agora, criar o Webservice para o acesso do ZABBIX ao SAP. Preencha os valores solicitados nesta tela:
Preencha a próxima tela, como segue:
Na tela seguinte, selecione na caixa Profile o segundo item (PRF_DT_IF_SEC_LOW), conforme a imagem:
Agora, selecione o pacote onde quer gerar este serviço e digite a sua CR para transporte:
Após isso, salve e ative o serviço:
Execute a transação SOAMANAGER:
Selecione Configuração de Web Service e digite o nome do serviço criado:
Selecione o serviço:
Clique no botão Criar serviço e preencha conforme a imagem:
Na próxima tela, selecione na caixa Autenticação em nível de transporte o item ID do usuário e senha:
Na tela seguinte, deixe como está e clique em Concluído:
Veja o resultado:
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:
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:
Digite um usuário válido no sistema:
Acesse a requisição e complete a autenticação, conforme a imagem:
Execute a requisição e veja o resultado:
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:
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:
E aqui o Item do template:
Detalhe do item:
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:
O Trigger do template está abaixo:
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.