Programa escrito em Python para monitorar Mainframe job ABENDs via z/OSMF com a interface do ZOWE no VSCODE (extenção IBM Z Open Editor).
O monitor_abends.py verifica os jobs automaticamente a cada 5 minutos e envia alertas para um BOT no Telegram caso algum ABEND seja identificado.
- Após instalar o ZOWE no VSCode, será carregado o arquivo
zowe_config.json, é nele que configuramos o host, account e porta do z/OSMF. Configure os campos que estão indicados na imagem abaixo:
(O arquivo zowe_config.json já está disponível no repositório caso queira utilizá-lo como modelo. Basta substituir pelo arquivo original após realizar as configurações necessárias.)
- Variáveis de ambiente:
ZOWE_USERZOWE_PASSWORDTELEGRAM_BOT_TOKENTELEGRAM_CHAT_ID
Eu utilizei o Powershell para configurar as variáveis juntamente com o comando .py para rodar o programa logo em seguida. Segue abaixo. (lembrando que é preciso criar um BOT no BotFather do Telegram para ter o TOKEN e CHAT ID)
$env:ZOWE_USER = "seu_usuario"
$env:ZOWE_PASSWORD = "sua_senha"
$env:TELEGRAM_BOT_TOKEN = "seu_token_do_bot"
$env:TELEGRAM_CHAT_ID = "seu_chat_id"
python monitor_abends.py- Instale dependências:
python -m pip install -r requirements.txt- Na imagem abaixo simulei um Job Abend dentro do ZOWE.
Job: @REXX1JOBID: JOB04361RC=0127THURSDAY, 21 MAY(horário do Mainframe se difere do meu fuso horário)
Na imagem abaixo podemos notar o programa monitor_abends em funcionamento! (com o intervalo de 5min em 5min)
Note que o programa se conecta ao z/OSMF usando as configurações definidas no arquivo zowe_config.json, busca jobs com status ENDED, lê o JOBLOG de cada job e detecta ABENDs por padrão de texto ou RC.
Em seguida, o programa já indentificou que o JOB @REXX1 (JOBID JOB04361) abendou e dessa forma envia o alerta:
O alerta é enviado ao BOT no Telegram, assim como na imagem abaixo:
durante o looping, esse mesmo abend não será alertado novamente pois o programa mantém um controle local utilizando: .last_seen_jobs.json.
Assim, o mesmo JOB não gera múltiplos alertas repetidos.
O envio de alertas foi implementado utilizando o Telegram por ser simples de configurar e fácil de acompanhar pelo celular. Porém, nada impede de adicionar outros métodos de notificação, assim como o envio por e-mail que também seria bem prático.
monitor_abends.py: script principal.zowe_config.json: configuração de acesso Zowe.requirements.txt: dependências..last_seen_jobs.json: guarda o último estado dos jobs monitorados, esse arquivo é gerado automaticamente após rodar o monitor_abends.ABEND_NO_JESJCL.png: imagem para o READMEABEND_NO_TERMINAL.png: imagem para o READMEALERTA_TELEGRAM.png: imagem para o READMEJSON_FILE.png: imagem para o README



