☕ Um Café no Bellacosa Mainframe
Gostou do conteúdo? Ajude a manter o café quente, o COBOL compilando e o mainframe acordado. 😄
☕ Pague um café ao Bellacosa

Translate

Mostrar mensagens com a etiqueta OpenTelemetry. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta OpenTelemetry. Mostrar todas as mensagens

quinta-feira, 16 de abril de 2026

💥 CICS Não é Legado: Como o CICS TS 6.3 Está Processando Milhões de Transações por Segundo (Enquanto o Mundo Ainda Subestima o Mainframe)

 

Bellacosa Mainframe apresenta o CICS TS versão 6.3

💥 CICS Não é Legado: Como o CICS TS 6.3 Está Processando Milhões de Transações por Segundo (Enquanto o Mundo Ainda Subestima o Mainframe)

🧠 CICS Transaction Server – visão geral atual

O produto que manda no jogo é o
👉 IBM CICS Transaction Server for z/OS

  • Middleware transacional de altíssimo volume
  • Base de praticamente todos os bancos, seguradoras e governos
  • Arquitetura cooperativa de multitarefa (quase um “mini-OS dentro do z/OS”)

🚀 Versão mais recente (estado da arte)

👉 Versão atual: CICS TS 6.3
👉 Data de GA: 05 de setembro de 2025

📌 Importante:

  • A linha 6.x segue modelo continuous delivery
  • Atualizações continuam saindo (inclusive em 2026)

🧬 Evolução recente (6.1 → 6.2 → 6.3)

🟢 CICS TS 6.1 (2022)

  • Base da nova geração
  • Foco:
    • APIs modernas
    • Cloud enablement
    • Melhor governança operacional

🟡 CICS TS 6.2 (2024)

  • Performance tuning pesado
  • Melhorias operacionais reais (não só dev)
  • Consolidação da documentação (6.x unificado)

💡 Destaque Bellacosa:

Aqui o CICS começou a “respirar DevOps de verdade”


🔵 CICS TS 6.3 (2025 – atual)

  • Foco forte em:
    • Observabilidade (OpenTelemetry)
    • Segurança
    • Automação operacional
    • Integração com APIs modernas

Exemplo prático:

  • Flush automático de dados de telemetria (SMF + observabilidade moderna)

🔐 Segurança evoluída

  • HSTS (HTTP Strict Transport Security)
  • Melhor visibilidade de login (tentativas, timestamps)

⚙️ Limites operacionais (o que ninguém te explica direito)

Agora vem o ouro 👇 (estilo Bellacosa raiz)

👥 Limite de usuários

👉 Não existe limite fixo definido pelo CICS

Depende de:

  • Região (QR TCB)
  • Storage (EDSAs / GDSA / RDSA)
  • Tuning de SIT

💡 Na prática:

  • Milhares de usuários simultâneos são comuns
  • Bancos operam com dezenas de milhares

🧵 Limite de tasks (TCLASS / MAXTASKS)

👉 Controlado por:

  • MXT (Max Tasks global da região)
  • TCLASS (limite por tipo de workload)

💥 Valores típicos:

  • MXT: 500 até 2000+ (ou mais em ambientes modernos)
  • Pode escalar dependendo de CPU e tuning

📌 Importante:

  • Cada transação = 1 TASK
  • CICS é cooperativo (não preemptivo)

🔁 Limite de transações por segundo (TPS)

👉 Não existe limite fixo no produto

Depende de:

  • CPU (MSU / MIPS)
  • I/O (VSAM / DB2 / MQ)
  • Locking
  • Design da aplicação

💥 Casos reais:

  • 10.000+ TPS → comum
  • 50.000+ TPS → ambientes financeiros pesados

🧠 Limite de memória (Storage)

Controlado por:

  • DSAs:
    • CDSA
    • EDSA
    • RDSA
  • 31-bit vs 64-bit storage

💡 Tendência moderna:
👉 mover tudo possível para 64-bit storage (above the bar)


🧬 Limite de regiões CICS

👉 Ilimitado na prática (depende do z/OS)

Arquiteturas modernas usam:

  • CICSPlex SM
  • TOR / AOR / FOR separation

🏗️ Arquitetura operacional (visão de campo)

🧩 Componentes chave

  • QR TCB → coração da região
  • Open TCBs → paralelismo real (DB2, MQ, Java)
  • Dispatcher CICS → controla multitarefa
  • Program Control (PC)
  • Task Control (TC)

🔄 Modelo de execução

  1. Terminal / API chama transação
  2. CICS cria TASK
  3. Dispatcher gerencia CPU
  4. TASK usa serviços:
    • VSAM
    • DB2
    • MQ
  5. Commit (syncpoint)

🔥 O que realmente mudou (visão prática)

Antes (CICS clássico)

  • 3270
  • COBOL puro
  • VSAM pesado
  • Transação síncrona

Agora (CICS moderno)

  • REST via z/OS Connect
  • APIs JSON
  • Observabilidade (OpenTelemetry)
  • Integração cloud
  • DevOps pipeline

💥 Em resumo:
👉 CICS virou Application Server corporativo de missão crítica


📊 Pontos fortes atuais

  • Escalabilidade absurda (vertical + horizontal)
  • Resiliência (quase zero downtime)
  • Integração híbrida (legacy + cloud)
  • Segurança nível bancário

⚠️ Gargalos reais (sem romantizar)

  • Aplicação mal escrita = gargalo (não o CICS)
  • Lock em VSAM/DB2
  • TASK segurando CPU (não liberando)
  • Storage mal dimensionado
  • Falta de paralelismo (Open TCB subutilizado)

🧠 Conclusão estilo Bellacosa

CICS hoje não é legado.

👉 É core digital escondido atrás de APIs modernas

E a versão 6.3 consolida isso:

  • Mais observável
  • Mais seguro
  • Mais integrado
  • Mais preparado para cloud






quarta-feira, 19 de junho de 2024

Observabilidade Muito Além do Grafana

 

Bellacosa Mainframe em revisao observabilidade muito alem do grafana

☕ Um Café no Bellacosa Mainframe

Observabilidade Muito Além do Grafana

O Que Todo Programador COBOL Padawan Precisa Saber Sobre Prometheus, Grafana, Loki, ELK, Zabbix, OpenTelemetry e Como os Grandes Bancos Descobrem Problemas Antes que os Clientes Percebam

"Durante décadas, quem trabalhava com Mainframe aprendia uma regra simples: se o sistema caiu, alguém vai ligar em menos de cinco minutos. Na era do Kubernetes, dos microsserviços e da nuvem, essa regra mudou. O objetivo agora é descobrir o problema antes mesmo que o telefone toque."


Introdução

Se você é um Programador COBOL Padawan e passou boa parte da carreira trabalhando com IBM Z, CICS, DB2, IMS, MQ, JCL, JES2, SDSF e RACF, provavelmente já ouviu alguém dizer:

"Agora usamos Grafana."

Ou então:

"Precisamos colocar Prometheus."

Ou ainda:

"Os logs estão no Loki."

E a primeira reação costuma ser:

"Mais um monte de ferramentas..."

Na verdade, não.

O que mudou não foi o problema.

Mudaram apenas as ferramentas utilizadas para resolvê-lo.

Desde a década de 1960, administradores de sistemas possuem exatamente as mesmas preocupações:

  • O servidor está funcionando?

  • Existe gargalo?

  • A CPU está sobrecarregada?

  • A memória acabou?

  • O banco está lento?

  • O programa entrou em loop?

  • Quem provocou o incidente?

  • Como evitar que aconteça novamente?

No Mainframe existiam RMF, SMF, SYSLOG, OMEGAMON, SDSF, Tivoli, NetView e System Automation.

Na computação em nuvem surgiram Prometheus, Grafana, Loki, OpenTelemetry, Tempo, Jaeger, Elastic Stack e dezenas de outras soluções.

O conceito continua exatamente o mesmo.

A diferença é que agora estamos monitorando milhares de microsserviços distribuídos em centenas de servidores que podem nascer e desaparecer em segundos.

Vamos tomar um café e entender essa evolução.


O maior erro de quem começa em DevOps

Muita gente acredita que Grafana é uma ferramenta de monitoramento.

Não é.

Outros imaginam que Prometheus cria dashboards.

Também não.

Há quem pense que Loki substitui um banco de dados.

Novamente, não.

Essas ferramentas fazem parte de uma disciplina muito maior chamada Observabilidade.

E esse é um conceito extremamente importante.


Monitoramento x Observabilidade

Imagine que você trabalha em um banco.

Às 10h15 da manhã começam centenas de reclamações.

Clientes não conseguem fazer PIX.

O monitoramento informa apenas:

API PIX

Status:

DOWN

Ótimo.

Sabemos que existe um problema.

Mas...

Por quê?

Agora entra a observabilidade.

Ela responde algo como:

CPU

↓

95%

↓

Garbage Collector executando

↓

Banco de Dados respondeu lentamente

↓

Fila Kafka acumulou mensagens

↓

Timeout

↓

Clientes começaram a receber erro

Percebe a diferença?

Monitoramento responde:

Existe um problema.

Observabilidade responde:

Por que ele aconteceu.


A analogia perfeita para quem vem do Mainframe

Vamos traduzir tudo isso para o universo IBM Z.

Mundo MainframeMundo Cloud Native
RMFPrometheus
SMFMetrics
SYSLOGLogs
OMEGAMONGrafana
SDSFGrafana + Loki
NetViewAlertmanager
Tivoli MonitoringPrometheus + Grafana
System AutomationAlertmanager + Kubernetes

Ou seja...

Você já conhece praticamente todos os conceitos.

Apenas os nomes mudaram.


Os três pilares da Observabilidade

Existe uma regra que todo profissional de SRE conhece.

Uma infraestrutura moderna precisa de três tipos de informação.

Pilar 1 — Métricas

São números.

Apenas números.

Exemplos:

CPU

67%
Memória

12 GB
Disco

81%
Latência

95 ms
Requests

3500/s

Essas informações ocupam pouco espaço.

São rápidas.

Podem ser armazenadas durante anos.

É exatamente esse tipo de dado que o Prometheus coleta.


Pilar 2 — Logs

Agora imagine um extrato bancário.

Cliente iniciou login

↓

Senha válida

↓

Consultou saldo

↓

Transferência

↓

PIX

↓

Logout

Isso é um log.

Ele conta uma história.

Enquanto métricas dizem:

CPU = 89%

O log diz:

NullPointerException

Arquivo não encontrado

Timeout DB2

Usuário autenticado

Transação cancelada

Os logs ocupam muito mais espaço.

Mas possuem riqueza de detalhes.


Pilar 3 — Traces

Este é o mais moderno dos três pilares.

Imagine um PIX.

Ele passa por vários componentes.

Aplicativo

↓

API Gateway

↓

Autenticação

↓

Pagamento

↓

Banco

↓

Kafka

↓

Resposta

Cada etapa possui tempo.

O Trace mostra exatamente onde ocorreu a lentidão.

É como colocar um GPS dentro da requisição.

Ferramentas:

  • Jaeger

  • Tempo

  • OpenTelemetry


Afinal, o que é o Prometheus?

O Prometheus nasceu na SoundCloud.

Hoje é um projeto da CNCF.

Praticamente todo cluster Kubernetes utiliza Prometheus.

Mas afinal...

O que ele faz?

Resposta curta:

Coleta métricas.

Só isso.

Não cria dashboards.

Não armazena logs.

Não faz visualizações bonitas.

Ele apenas pergunta continuamente aos servidores:

Como você está?

O modelo Pull

Esse detalhe é extremamente importante.

Prometheus trabalha com Pull.

Ou seja...

Ele vai até o servidor.

Prometheus

↓

Servidor Linux

↓

Qual sua CPU?

Servidor responde:

cpu_usage 63.4

Depois de alguns segundos...

Pergunta novamente.

cpu_usage 65.8

Depois novamente.

cpu_usage 67.9

Assim nasce uma série temporal.


Time Series Database

O banco interno do Prometheus é especializado em séries temporais.

Cada informação possui:

Valor

+

Data

+

Hora

Por exemplo:

10:00

CPU 20%
10:05

CPU 32%
10:10

CPU 48%
10:15

CPU 80%

O interessante não é apenas o valor.

É enxergar sua evolução.


Exporters

Prometheus não entende tudo sozinho.

Ele utiliza Exporters.

Imagine-os como tradutores.

Linux?

Node Exporter.

Windows?

Windows Exporter.

MySQL?

MySQL Exporter.

PostgreSQL?

Postgres Exporter.

Redis?

Redis Exporter.

Kafka?

Kafka Exporter.

Nginx?

Nginx Exporter.

Apache?

Apache Exporter.

Até equipamentos de rede podem ser monitorados utilizando SNMP Exporter.

No mundo IBM Z também existem integrações específicas para expor métricas de z/OS, CICS, Db2 e MQ para plataformas modernas de observabilidade.


PromQL — A linguagem do Prometheus

Um dos maiores diferenciais do Prometheus é sua linguagem de consultas.

PromQL.

Imagine perguntar:

"Qual foi a média de CPU dos últimos cinco minutos?"

Ou:

"Quantas requisições HTTP ocorreram por segundo?"

Ou:

"Qual o percentil 95 da latência?"

Tudo isso pode ser respondido utilizando PromQL.

É uma linguagem extremamente poderosa e indispensável para quem trabalha com SRE.


Grafana — Muito além dos gráficos bonitos

Existe uma frase famosa:

Prometheus coleta.

Grafana apresenta.

Essa frase resume bem o papel do Grafana.

Ele não coleta nada.

Ele apenas conecta diversas fontes de dados.

Pode consultar:

  • Prometheus

  • Loki

  • Elasticsearch

  • Oracle

  • SQL Server

  • PostgreSQL

  • MySQL

  • InfluxDB

  • OpenSearch

  • Tempo

  • Jaeger

  • CloudWatch

  • Azure Monitor

  • Google Cloud Monitoring

E transformar tudo isso em painéis extremamente intuitivos.


O painel do NOC

Imagine entrar em um Centro de Operações.

Existe um enorme telão.

Você vê:

  • CPU

  • Memória

  • Disco

  • Rede

  • APIs

  • Kubernetes

  • Bancos

  • Filas MQ

  • Kafka

  • Tempo de resposta

  • Quantidade de usuários

Tudo atualizado em tempo real.

Esse telão normalmente é Grafana.


Dashboards inteligentes

Um bom dashboard não serve apenas para mostrar gráficos.

Ele ajuda a responder perguntas.

Exemplo:

Por que a CPU aumentou?

Clique.

Agora veja somente aquele servidor.

Clique novamente.

Veja apenas aquele Pod.

Clique outra vez.

Agora visualize os logs.

Depois os traces.

Esse processo chama-se Drill Down.

É uma investigação guiada.


Loki — O banco de logs da Grafana Labs

Se Prometheus trabalha com métricas...

Loki trabalha com logs.

Mas existe uma diferença enorme entre Loki e Elasticsearch.


ELK tradicional

No Elastic Stack, praticamente todo o conteúdo do log é indexado.

Isso torna a pesquisa extremamente rápida.

Mas também exige muito armazenamento.

Grandes ambientes podem consumir dezenas de terabytes.


Loki

O Loki segue uma filosofia diferente.

Ele indexa apenas Labels.

Por exemplo:

Namespace

backend
Pod

payment-api
Container

java

O texto completo permanece compactado.

Resultado?

Muito menos espaço.

Muito menos custo.

Por isso Loki tornou-se extremamente popular em Kubernetes.


LogQL

Assim como Prometheus possui PromQL...

Loki possui LogQL.

Você pode perguntar:

Mostre todos os logs do namespace financeiro.

Ou:

Procure apenas mensagens ERROR.

Ou:

Mostre todos os Timeout DB2.

A sintaxe é bastante intuitiva.


Elastic Stack — O gigante da busca textual

Nem sempre Loki é a melhor escolha.

Imagine uma instituição financeira.

Milhões de logs por dia.

Auditoria.

LGPD.

Compliance.

Fraudes.

Pesquisas complexas.

Nesse cenário o Elastic Stack continua sendo excelente.

Ele é composto por:

  • Elasticsearch

  • Logstash

  • Kibana

Em muitas empresas modernas o Logstash foi substituído por Beats ou Elastic Agent.

Também existe o OpenSearch, derivado do Elasticsearch, bastante utilizado como alternativa open source.


Zabbix — O veterano que continua forte

Antes do Kubernetes dominar o mercado, muitas empresas já utilizavam Zabbix.

Ele continua extremamente relevante.

Especialmente para:

  • Switches

  • Roteadores

  • Firewalls

  • Impressoras

  • Servidores físicos

  • Máquinas virtuais

  • UPS

  • Storage

  • Bancos de dados

  • Ambientes híbridos

Enquanto Prometheus nasceu para ambientes dinâmicos e cloud native, Zabbix continua brilhando em infraestruturas tradicionais.


OpenTelemetry — A linguagem universal da observabilidade

Nos últimos anos surgiu um novo protagonista.

OpenTelemetry.

Ele não substitui Prometheus.

Nem Grafana.

Nem Loki.

Ele cria um padrão.

Imagine uma aplicação Java.

Outra em Go.

Outra em Python.

Outra em COBOL acessando uma API via z/OS Connect.

Como todas enviarão métricas, logs e traces?

OpenTelemetry resolve esse problema.

Ele padroniza a instrumentação.

É como um tradutor universal.


Alertmanager — Quando o problema precisa encontrar você

Monitorar é importante.

Mas ninguém fica olhando dashboards vinte e quatro horas por dia.

Quando algo acontece...

O Alertmanager entra em ação.

Ele pode enviar notificações para:

  • Slack

  • Microsoft Teams

  • Telegram

  • Discord

  • PagerDuty

  • Opsgenie

  • E-mail

  • SMS

Muito parecido com o papel desempenhado pelo IBM System Automation e pelo NetView em ambientes Mainframe.


O fluxo completo da observabilidade

Imagine um microsserviço Java executando em Kubernetes.

O fluxo típico será:

Aplicação

↓

Exporta métricas

↓

Prometheus

↓

Grafana

Ao mesmo tempo:

Aplicação

↓

Logs

↓

Fluent Bit

↓

Loki

↓

Grafana

E também:

Aplicação

↓

OpenTelemetry

↓

Collector

↓

Tempo

↓

Grafana

Observe algo interessante.

Tudo converge para o Grafana.

Ele torna-se a porta de entrada para toda a operação.


Um exemplo real em um grande banco

Imagine um Internet Banking durante o pagamento de salários.

Milhões de transações.

Subitamente o tempo de resposta aumenta.

O que acontece?

Primeiro...

Prometheus detecta aumento de CPU.

Depois...

Grafana mostra crescimento da latência.

Logo em seguida...

Alertmanager envia alerta para a equipe.

Os operadores acessam Loki.

Descobrem centenas de mensagens:

Timeout DB2

Os traces mostram que todas as requisições lentas passam pelo mesmo microsserviço.

A equipe reinicia apenas aquele componente.

O problema desaparece.

Tudo isso pode acontecer em poucos minutos.

Antes mesmo de milhares de clientes perceberem.


E no Mainframe?

Muita gente imagina que observabilidade pertence apenas à nuvem.

Não é verdade.

IBM Z possui uma enorme quantidade de dados operacionais.

SMF Records.

RMF.

OMEGAMON.

CICS Performance Analyzer.

Db2 Statistics.

IMS Monitor.

MQ Statistics.

Essas informações podem ser integradas com Prometheus, Grafana e OpenTelemetry.

Hoje é perfeitamente possível construir dashboards que apresentam lado a lado:

  • CPU do z/OS

  • Consumo do CICS

  • Threads do Java

  • Pods Kubernetes

  • APIs REST

  • Banco PostgreSQL

  • Db2 for z/OS

Tudo na mesma tela.

Essa convergência é uma das maiores tendências da observabilidade corporativa.


O caminho recomendado para um COBOL Padawan

Se você está começando nessa área, minha recomendação é seguir uma trilha progressiva:

  1. Entenda o conceito de observabilidade.

  2. Aprenda a diferença entre métricas, logs e traces.

  3. Estude Prometheus e PromQL.

  4. Domine Grafana e criação de dashboards.

  5. Aprenda Loki e LogQL.

  6. Conheça Alertmanager.

  7. Estude OpenTelemetry.

  8. Explore Tempo e Jaeger.

  9. Conheça Elastic Stack e OpenSearch.

  10. Aprenda como tudo isso se integra ao Kubernetes.

Essa sequência faz muito mais sentido do que tentar aprender todas as ferramentas ao mesmo tempo.


Muito além das ferramentas

Talvez a maior lição deste café seja perceber que observabilidade não é um produto, mas uma forma de pensar.

O profissional moderno não espera o usuário reclamar. Ele cria sistemas capazes de revelar tendências, antecipar falhas e explicar, com precisão, por que uma aplicação está degradando.

Quem trabalhou anos com IBM Z já conhece essa mentalidade. Sempre houve preocupação com disponibilidade, desempenho, capacidade e diagnóstico. O que mudou foi a escala. Em vez de monitorar um único computador central altamente estável, hoje monitoramos milhares de contêineres efêmeros, APIs, filas de mensagens e bancos distribuídos que surgem e desaparecem em segundos.

Ferramentas como Prometheus, Grafana, Loki, OpenTelemetry, Tempo, Jaeger, Elastic Stack e Zabbix representam a evolução natural desse processo. Elas não substituem os conceitos que fizeram do Mainframe uma referência mundial em confiabilidade; elas os expandem para um ambiente distribuído, dinâmico e orientado a microsserviços.

Para o Programador COBOL Padawan, aprender observabilidade é muito mais do que decorar comandos ou instalar dashboards. É compreender como uma transação percorre toda a arquitetura, como interpretar sinais de degradação antes que se transformem em incidentes e como utilizar dados para tomar decisões técnicas com rapidez e segurança.

No fim das contas, a missão continua a mesma de cinquenta anos atrás: manter sistemas críticos funcionando com excelência. A diferença é que agora contamos com uma caixa de ferramentas muito mais rica, integrada e inteligente. Quem domina observabilidade deixa de apenas reagir a problemas e passa a antecipá-los, tornando-se um profissional indispensável em qualquer equipe de Engenharia de Software, DevOps, SRE ou Modernização de Mainframe.

Porque, seja em um IBM Z processando milhões de transações CICS por segundo ou em um cluster Kubernetes espalhado por dezenas de nós, a pergunta continua sendo a mesma:

"O sistema está saudável?"

E a observabilidade moderna finalmente nos permite responder não apenas "sim" ou "não", mas também "por quê", "desde quando", "qual componente foi afetado" e, o mais importante, "como evitar que isso aconteça novamente".

Esse é o verdadeiro poder da observabilidade. Esse é o próximo passo na jornada de todo Programador COBOL Padawan rumo à engenharia de software moderna.

sexta-feira, 10 de maio de 2024

Logging, Tracing & Metrics — O Caso dos Sinais Ocultos no Sistema

 

Bellacosa Mainframe e o caso dos sinais ocultos do sistema logging tracing e metrics

☕ Um Café no Bellacosa Mainframe

Logging, Tracing & Metrics — O Caso dos Sinais Ocultos no Sistema

A chuva caía sobre o CPD como se alguém tivesse submetido um JOB com TYPRUN=HOLD para o próprio céu.

Na sala de operações, monitores exibiam gráficos, mensagens, filas, tempos de resposta e alguns alertas vermelhos que ninguém queria encarar por muito tempo. O relógio marcava 02h17 da manhã quando o telefone tocou.

— Bellacosa, temos um problema.

Do outro lado da linha, um programador COBOL iniciante tentava controlar a ansiedade.

— Qual é o erro?

— Ainda não sabemos.

— O sistema caiu?

— Não exatamente.

— O CICS está fora?

— Não.

— O Db2 parou?

— Também não.

— Então qual é o problema?

Houve alguns segundos de silêncio.

— Os clientes estão reclamando que o sistema está lento.

Essa é uma das frases mais perigosas de qualquer ambiente de produção.

“Está lento” não é diagnóstico.

“Está lento” é uma pista.

Pode ser CPU, memória, rede, fila, programa COBOL, consulta SQL, contenção de recurso, timeout, deadlock, chamada externa, API, excesso de logging, problema em disco, indisponibilidade parcial ou até uma combinação de vários elementos.

Foi então que uma figura surgiu na porta do CPD usando um sobretudo escuro, segurando uma lupa em uma mão e uma caneca de café na outra.

— Elementar, meu caro Padawan — disse o investigador. — O sistema já contou o que aconteceu. O problema é que vocês ainda não aprenderam a ouvi-lo.

Assim começa nossa investigação sobre Logging, Tracing, Metrics e Observabilidade.

Para um programador COBOL iniciante, esses conceitos podem parecer assuntos exclusivos de Cloud, DevOps, Kubernetes ou microsserviços. Mas isso é um engano digno de um suspeito tentando desviar a atenção do detetive.

Observabilidade também pertence ao mundo do mainframe.

Ela está no DISPLAY do COBOL, nas mensagens do CICS, nos registros SMF, no SYSLOG, no JES, nas estatísticas do Db2, nas filas MQ, nos tempos de resposta e nos caminhos percorridos por uma transação.

O mainframe sempre produziu evidências.

Agora precisamos aprender a investigá-las.


O mistério central: o sistema está tentando falar

A frase que inspira esta investigação é:

What if the hidden signals in your system are screaming for attention?

Em português:

E se os sinais ocultos do seu sistema estiverem gritando por atenção?

Sistemas raramente falham sem aviso.

Antes de um incidente, normalmente surgem pequenos sintomas:

  • aumento de tempo de resposta;

  • crescimento de filas;

  • elevação da CPU;

  • redução do throughput;

  • aumento de erros intermitentes;

  • mensagens de timeout;

  • conexões abertas por tempo excessivo;

  • SQLCODEs incomuns;

  • maior consumo de memória;

  • crescimento anormal de logs;

  • transações aguardando recursos;

  • chamadas externas cada vez mais lentas.

Separadamente, esses sinais podem parecer irrelevantes.

Juntos, eles formam uma cena do crime.

O grande objetivo da observabilidade é transformar sinais isolados em uma narrativa compreensível.

Em outras palavras, observabilidade é a capacidade de olhar para o comportamento externo de um sistema e deduzir o que está acontecendo dentro dele.

É exatamente o que Sherlock Holmes faria.

Ele não precisava ter visto o crime acontecer. Analisava pegadas, cinzas de cigarro, marcas no chão, horários, testemunhos e objetos fora de lugar.

Na engenharia de software, fazemos algo parecido com:

  • logs;

  • métricas;

  • traces;

  • alertas;

  • eventos;

  • identificadores de correlação.

Cada um desses elementos revela uma parte da história.



Capítulo 1 — Logging: o diário secreto do sistema

Logs são registros de acontecimentos.

Eles respondem perguntas como:

  • O que aconteceu?

  • Quando aconteceu?

  • Onde aconteceu?

  • Qual módulo estava sendo executado?

  • Qual usuário iniciou a operação?

  • Qual foi o código de retorno?

  • Qual dado estava sendo processado?

  • Qual transação estava ativa?

Imagine um programa COBOL responsável por consultar o saldo de um cliente.

Um log simples poderia ser:

CONSULTA DE SALDO INICIADA

Isso é melhor do que nada, mas ajuda pouco.

Qual cliente?

Qual horário?

Qual transação?

Qual programa?

Qual resultado?

Um log mais útil seria:

2026-08-03 02:17:54
PROGRAMA=BCSALDO
TRANSACAO=BS01
CLIENTE=000123456
EVENTO=INICIO-CONSULTA

Depois:

2026-08-03 02:17:55
PROGRAMA=BCSALDO
TRANSACAO=BS01
CLIENTE=000123456
SQLCODE=0
TEMPO-DB2=245MS
EVENTO=CONSULTA-CONCLUIDA

Agora existe uma narrativa.

Sabemos quando começou, quando terminou, qual cliente foi consultado e quanto tempo o Db2 levou.

Se ocorrer um erro:

2026-08-03 02:17:56
PROGRAMA=BCSALDO
TRANSACAO=BS01
CLIENTE=000123456
SQLCODE=-911
EVENTO=ROLLBACK
MENSAGEM=DEADLOCK-OU-TIMEOUT

Esse registro se transforma em evidência.

O erro clássico: escrever logs inúteis

Programadores iniciantes frequentemente usam mensagens assim:

DISPLAY 'DEU ERRO'.

O problema é que “deu erro” não diz absolutamente nada.

Seria como Sherlock Holmes encontrar uma testemunha que afirma:

— Aconteceu alguma coisa.

E se recusa a explicar o quê.

Um log de qualidade precisa fornecer contexto.

Exemplo:

DISPLAY 'ERRO NO PROGRAMA BCPAGTO'
DISPLAY 'CLIENTE: ' WS-CLIENTE
DISPLAY 'CONTA: ' WS-CONTA
DISPLAY 'SQLCODE: ' SQLCODE
DISPLAY 'ETAPA: CONSULTA-SALDO'

Melhor ainda seria construir uma mensagem estruturada:

LEVEL=ERROR
PROGRAM=BCPAGTO
STEP=CONSULTA-SALDO
CLIENT=000123456
SQLCODE=-911
TRACE-ID=ABC987654

Esse formato é fácil de pesquisar e processar automaticamente.


Logs estruturados

Sistemas modernos preferem logs estruturados, frequentemente no formato JSON:

{
  "timestamp": "2026-08-03T02:17:56",
  "level": "ERROR",
  "program": "BCPAGTO",
  "transaction": "PG01",
  "customer": "000123456",
  "sqlcode": -911,
  "traceId": "ABC987654",
  "message": "Rollback após deadlock"
}

Um programa COBOL tradicional pode não gerar JSON diretamente, mas isso não impede o uso do conceito.

O importante é manter um padrão previsível.

Por exemplo:

TIMESTAMP=20260803021756|LEVEL=ERROR|PGM=BCPAGTO|SQLCODE=-911

Depois, ferramentas de integração podem transformar esse conteúdo em formatos modernos.


Logging no mundo mainframe

No ecossistema IBM Z, os logs estão espalhados por vários lugares:

  • SYSOUT do JES;

  • spool;

  • mensagens do programa COBOL;

  • registros SMF;

  • CICS transient data queues;

  • CICS logs;

  • mensagens de Db2;

  • logs do MQ;

  • SYSLOG;

  • arquivos sequenciais;

  • datasets de auditoria;

  • mensagens RACF;

  • registros de middleware;

  • logs do z/OS Connect;

  • relatórios de ferramentas de monitoramento.

Para um iniciante, isso pode parecer fragmentado.

Mas o mainframe trabalha assim porque cada subsistema tem responsabilidades específicas.

O desafio moderno é correlacionar essas fontes.



Capítulo 2 — Metrics: os números que denunciam o comportamento

Se logs contam histórias, métricas contam números.

Uma métrica é uma medida quantitativa coletada ao longo do tempo.

Exemplos:

CPU = 78%
MEMORIA = 64%
TPS = 1.250
LATENCIA-MEDIA = 220MS
ERROS-POR-MINUTO = 35
FILA-MQ = 4.820

Métricas respondem perguntas como:

  • O sistema está mais lento que ontem?

  • A quantidade de erros está crescendo?

  • A CPU está próxima do limite?

  • A fila está acumulando mensagens?

  • O número de transações aumentou?

  • Qual é o tempo médio de resposta?

  • O comportamento atual é normal?

A grande vantagem das métricas é a capacidade de agregação.

Você não precisa guardar todos os detalhes de cada requisição para saber que a média de latência aumentou de 200 milissegundos para 3 segundos.


Média pode enganar

Vamos investigar dois cenários.

Cenário A

Cinco requisições:

100ms
110ms
120ms
130ms
140ms

Média:

120ms

Tudo parece normal.

Cenário B

Cinco requisições:

50ms
50ms
50ms
50ms
4000ms

Média:

840ms

A média revela um problema, mas não explica que apenas uma requisição foi extremamente lenta.

Agora imagine mil requisições.

A média pode esconder comportamentos importantes.

Por isso usamos percentis.


Percentis: P50, P95 e P99

O percentil indica o valor abaixo do qual determinada porcentagem das observações se encontra.

P50

Metade das requisições foi mais rápida que esse valor.

Também é conhecido como mediana.

P95

95% das requisições foram concluídas abaixo desse tempo.

Os 5% restantes foram mais lentos.

P99

99% das requisições ficaram abaixo desse valor.

O 1% restante representa os casos extremos.

Exemplo:

P50 = 180ms
P95 = 950ms
P99 = 4200ms

A média poderia ser 300 milissegundos, dando a impressão de que tudo está saudável.

Mas o P99 mostra que alguns usuários estão esperando mais de quatro segundos.

Para o negócio, esse detalhe pode ser crítico.


Métricas importantes para COBOL e mainframe

Um programador COBOL deveria começar a conhecer:

  • quantidade de registros processados;

  • tempo de execução do JOB;

  • quantidade de commits;

  • quantidade de rollbacks;

  • leituras de arquivos;

  • gravações;

  • registros rejeitados;

  • SQLCODEs diferentes de zero;

  • tempo gasto em Db2;

  • tempo gasto em VSAM;

  • número de transações CICS;

  • tempo médio de resposta;

  • uso de CPU;

  • consumo de zIIP;

  • filas MQ;

  • abends;

  • quantidade de retries;

  • taxa de sucesso;

  • taxa de erro.

Em um programa batch, métricas podem ser exibidas no final:

REGISTROS-LIDOS......: 001000000
REGISTROS-VALIDOS....: 000998500
REGISTROS-REJEITADOS.: 000001500
COMMITS..............: 000001000
TEMPO-TOTAL..........: 00:08:32

Isso é observabilidade.

Talvez não esteja em um dashboard sofisticado, mas o princípio é o mesmo.



Capítulo 3 — Tracing: seguindo as pegadas da requisição

Tracing é o acompanhamento completo de uma solicitação através de vários componentes.

Imagine uma compra realizada por aplicativo:

Usuário
↓
Aplicativo Mobile
↓
API Gateway
↓
Serviço de Pedido
↓
Serviço de Pagamento
↓
z/OS Connect
↓
CICS
↓
Programa COBOL
↓
Db2
↓
MQ
↓
Resposta

O usuário reclama:

— Minha compra levou oito segundos.

Onde o tempo foi consumido?

Sem tracing, cada equipe olha apenas para sua parte.

A equipe do aplicativo diz:

— O mobile enviou a requisição corretamente.

A equipe da API diz:

— Recebemos e encaminhamos.

A equipe do CICS diz:

— A transação terminou.

A equipe do Db2 diz:

— A consulta executou.

Todos parecem inocentes.

Mas o usuário esperou oito segundos.

O tracing conecta as etapas.


Trace e Span

Um trace representa toda a jornada de uma requisição.

Um span representa uma etapa dessa jornada.

Exemplo:

TRACE ABC123
├── SPAN 01: Mobile App............. 50ms
├── SPAN 02: API Gateway............ 40ms
├── SPAN 03: Serviço Pagamento...... 90ms
├── SPAN 04: z/OS Connect........... 45ms
├── SPAN 05: CICS................... 80ms
├── SPAN 06: Programa COBOL......... 70ms
├── SPAN 07: Db2.................. 7200ms
└── SPAN 08: Resposta............... 60ms

Pronto.

O culpado apareceu.

O Db2 consumiu 7,2 segundos.

Mas o caso ainda não terminou.

Por que o Db2 demorou?

Pode ter sido:

  • lock;

  • deadlock;

  • índice ausente;

  • estatísticas desatualizadas;

  • plano de acesso ruim;

  • tabela muito grande;

  • contenção;

  • excesso de concorrência;

  • I/O;

  • consulta mal construída.

O trace localiza a região do problema.

Os logs fornecem detalhes.

As métricas mostram se é um caso isolado ou uma tendência.

É por isso que os três pilares precisam trabalhar juntos.


Capítulo 4 — A grande correlação

O segredo mais importante da observabilidade moderna é a correlação.

Sem correlação, você possui milhares de logs, métricas e traces desconectados.

Com correlação, cada evidência aponta para o mesmo caso.

Para isso usamos identificadores como:

  • Trace ID;

  • Span ID;

  • Request ID;

  • Correlation ID;

  • Transaction ID;

  • Session ID.

Exemplo:

TRACE-ID=ABC123

Esse mesmo valor aparece:

No API Gateway
No serviço Java
No z/OS Connect
No CICS
No programa COBOL
No log do Db2
Na resposta ao cliente

Agora o investigador pode pesquisar ABC123 e reconstruir toda a operação.


Como levar um Correlation ID até o COBOL

Um possível fluxo seria:

Aplicativo cria Request ID
↓
API Gateway recebe o ID
↓
Cabeçalho HTTP transporta o valor
↓
z/OS Connect encaminha
↓
CICS recebe
↓
COMMAREA ou Channel/Container armazena
↓
Programa COBOL lê
↓
Programa grava o ID nos logs

Exemplo conceitual de campo COBOL:

01  WS-CORRELATION-ID     PIC X(36).

Durante o processamento:

DISPLAY 'TRACE-ID=' WS-CORRELATION-ID
        ' PROGRAMA=BCPAGTO'
        ' ETAPA=VALIDACAO'.

Assim, o programa COBOL deixa de ser uma caixa isolada dentro da arquitetura.

Ele passa a participar da observabilidade ponta a ponta.


Capítulo 5 — OpenTelemetry: o tradutor universal

Na imagem aparece o OpenTelemetry, frequentemente abreviado como OTel.

O OpenTelemetry é um conjunto de padrões, bibliotecas, APIs, SDKs e componentes para coletar telemetria.

Telemetria é o conjunto de sinais produzidos pelo sistema:

  • métricas;

  • traces;

  • logs.

Uma das grandes vantagens do OpenTelemetry é evitar dependência excessiva de um único fornecedor.

A aplicação gera dados em um padrão conhecido.

Depois, esses dados podem ser enviados para diferentes plataformas.



Auto instrumentation

A imagem mostra:

OTel auto instrumentation
OTel API
OTel SDK

Auto instrumentation

Instrumentação automática.

A ferramenta observa bibliotecas, frameworks e chamadas comuns sem exigir muitas alterações no código.

É útil em Java, .NET, Python, Node.js e outras plataformas.

OTel API

A API define como a aplicação cria spans, métricas e eventos.

OTel SDK

O SDK implementa a coleta, processamento e exportação dos dados.

No mundo COBOL, a instrumentação pode depender mais da arquitetura, do middleware e das ferramentas disponíveis.

Mesmo assim, a aplicação COBOL pode participar fornecendo:

  • IDs de correlação;

  • timestamps;

  • códigos de retorno;

  • métricas do processamento;

  • eventos relevantes;

  • contexto de negócio.



OpenTelemetry Collector

O Collector funciona como uma central de triagem.

Imagine a Scotland Yard da telemetria.

Ele recebe sinais de vários serviços, processa, filtra e encaminha.

Fluxo:

Aplicação
↓
OpenTelemetry Collector
↓
Grafana / Jaeger / Elastic / Backend APM

O Collector pode:

  • receber dados;

  • remover informações sensíveis;

  • adicionar metadados;

  • agrupar registros;

  • aplicar filtros;

  • controlar volume;

  • encaminhar para vários destinos;

  • reduzir dependência de agentes proprietários.



Capítulo 6 — Prometheus, Grafana, Elasticsearch, Kibana e Jaeger

A imagem apresenta várias ferramentas.

Vamos colocar cada suspeito na sala de interrogatório.


Prometheus

Prometheus é amplamente utilizado para coletar e armazenar métricas em séries temporais.

Uma série temporal é um conjunto de valores registrados ao longo do tempo.

Exemplo:

10:00 CPU=45%
10:01 CPU=48%
10:02 CPU=60%
10:03 CPU=82%
10:04 CPU=94%

O valor isolado de 94% é importante.

Mas a evolução também é importante.

Se a CPU subiu continuamente durante quatro minutos, existe uma tendência.

Prometheus trabalha muito bem com esse tipo de dado.


Grafana

Grafana é uma plataforma de visualização.

Ele transforma números em dashboards.

Um dashboard pode exibir:

  • TPS;

  • erros por minuto;

  • latência;

  • uso de CPU;

  • consumo de memória;

  • volume de transações;

  • filas;

  • disponibilidade;

  • P95;

  • P99;

  • status de serviços.

Uma curiosidade importante:

Grafana não é necessariamente o local onde os dados são coletados.

Ele normalmente consulta outras fontes.

É o painel do detetive, não o local do crime.


Alertmanager

Alertmanager gerencia alertas.

Exemplo:

Se erro > 5% durante 10 minutos:
    enviar mensagem para equipe
    abrir incidente
    registrar severidade

Um bom alerta precisa evitar dois extremos:

Silêncio excessivo

O problema acontece e ninguém é avisado.

Tempestade de alertas

A equipe recebe centenas de mensagens e deixa de prestar atenção.

Esse fenômeno é chamado de alert fatigue, ou fadiga de alertas.

Um alerta útil deve ser:

  • acionável;

  • contextualizado;

  • relevante;

  • direcionado à equipe correta;

  • baseado em condição persistente;

  • vinculado a um procedimento.


Elasticsearch

Elasticsearch é usado para indexação e pesquisa de grandes volumes de dados, especialmente logs.

Com ele, podemos pesquisar:

SQLCODE=-911

ou:

PROGRAM=BCPAGTO AND LEVEL=ERROR

ou:

TRACE-ID=ABC123

Ele permite encontrar rapidamente eventos em enormes conjuntos de registros.


Kibana

Kibana é muito usado para visualizar e explorar dados armazenados no Elasticsearch.

Com ele, podemos criar:

  • dashboards;

  • filtros;

  • gráficos;

  • pesquisas;

  • análises;

  • painéis de erros.

A dupla Elasticsearch e Kibana tornou-se famosa em arquiteturas de logging centralizado.


Jaeger

Jaeger é uma plataforma voltada para tracing distribuído.

Ela mostra visualmente o caminho de uma requisição.

Em vez de apenas saber que o sistema demorou quatro segundos, você enxerga onde cada milissegundo foi consumido.

Para um ambiente híbrido envolvendo Cloud e IBM Z, essa visão é extremamente valiosa.


Capítulo 7 — Observabilidade não é apenas monitoramento

Monitoramento e observabilidade são relacionados, mas não são idênticos.

Monitoramento

Pergunta:

O sistema está funcionando?

Exemplos:

  • servidor disponível;

  • CPU abaixo de 80%;

  • serviço respondendo;

  • disco com espaço;

  • CICS ativo.

Observabilidade

Pergunta:

Por que o sistema está se comportando dessa maneira?

A observabilidade permite investigar situações desconhecidas.

O monitoramento costuma trabalhar com problemas previamente imaginados.

Exemplo:

Se CPU > 90%, alertar.

Mas e se a CPU estiver em 40% e o sistema estiver lento?

O alerta não dispara.

A observabilidade permite explorar os dados e descobrir que:

  • uma API externa está demorando;

  • uma fila está crescendo;

  • um lock está bloqueando transações;

  • um plano SQL mudou;

  • o logging síncrono está atrasando o processamento.

A observabilidade não elimina o monitoramento.

Ela o amplia.


Capítulo 8 — Caso prático: o PIX fantasma

Vamos investigar um cenário completo.

Um cliente tenta realizar um PIX.

Arquitetura:

Aplicativo
↓
API Gateway
↓
Serviço de Autenticação
↓
Serviço Antifraude
↓
z/OS Connect
↓
CICS
↓
COBOL
↓
Db2
↓
MQ
↓
Resposta

O cliente recebe timeout.

Primeira pista: métrica

O dashboard mostra:

Latência P95:
Antes: 800ms
Agora: 6.500ms

A taxa de erro aumentou para 8%.

A métrica confirma que não é um caso isolado.

Segunda pista: trace

O trace mostra:

API Gateway.............. 30ms
Autenticação............. 70ms
Antifraude............... 90ms
z/OS Connect............. 40ms
CICS..................... 60ms
COBOL.................... 50ms
MQ..................... 5800ms

O gargalo está no MQ.

Terceira pista: logs

Os logs mostram:

MQRC=2053
REASON=QUEUE-FULL
QUEUE=PIX.OUTBOUND

Agora temos a causa provável.

A fila atingiu sua capacidade.

Quarta pista: investigação operacional

Por que a fila encheu?

Outro log mostra que o consumidor externo estava indisponível.

Conclusão:

Consumidor externo indisponível
↓
Mensagens acumuladas
↓
Fila MQ cheia
↓
Programa COBOL aguardando ou falhando
↓
Transações mais lentas
↓
Timeout no aplicativo

Sem observabilidade, cada equipe poderia culpar a outra.

Com métricas, traces e logs correlacionados, a investigação torna-se objetiva.



Capítulo 9 — Passo a passo para começar

Um programador COBOL iniciante não precisa implementar uma plataforma inteira no primeiro dia.

O caminho deve ser gradual.


Passo 1 — Identifique operações importantes

Liste as etapas críticas do programa.

Exemplo:

INICIO
VALIDACAO
LEITURA-ARQUIVO
CONSULTA-DB2
ATUALIZACAO
COMMIT
FIM

Esses pontos serão usados como marcos.


Passo 2 — Padronize os logs

Evite mensagens aleatórias.

Use um formato consistente:

DATA-HORA
PROGRAMA
ETAPA
NIVEL
CORRELATION-ID
CODIGO-RETORNO
MENSAGEM

Exemplo:

20260803-021754|INFO|BCPAGTO|INICIO|TRACE=ABC123|RC=0000

Passo 3 — Registre apenas o necessário

Não transforme o programa em uma metralhadora de DISPLAY.

Logging excessivo pode:

  • consumir CPU;

  • aumentar I/O;

  • encher spool;

  • dificultar pesquisa;

  • expor dados sensíveis;

  • aumentar custos;

  • esconder mensagens importantes.

Registre eventos relevantes.


Passo 4 — Crie métricas de negócio

Não monitore apenas infraestrutura.

Inclua indicadores do processo.

Exemplos:

  • pagamentos processados;

  • pagamentos recusados;

  • clientes validados;

  • registros rejeitados;

  • transações concluídas;

  • fraudes detectadas.

Uma CPU saudável não significa que o negócio está funcionando.

O sistema pode estar disponível e, ainda assim, rejeitar todos os pagamentos.


Passo 5 — Meça duração

Registre horário de início e fim.

Exemplo conceitual:

INICIO=02:17:54.100
FIM=02:17:54.850
DURACAO=750MS

Faça isso para etapas críticas.

Assim você poderá descobrir onde o tempo está sendo consumido.


Passo 6 — Adote um identificador de correlação

Cada requisição deve possuir um identificador único.

Exemplo:

TRACE-ID=PX202608030000123456

Propague esse valor entre as camadas.


Passo 7 — Defina alertas úteis

Exemplo ruim:

Alertar quando ocorrer um erro.

Isso pode gerar milhares de alertas.

Exemplo melhor:

Alertar quando a taxa de erro ultrapassar 5%
durante 10 minutos.

Outro exemplo:

Alertar quando o P95 superar 2 segundos
por 5 minutos consecutivos.

Passo 8 — Crie um runbook

Um runbook é um roteiro operacional.

Exemplo:

ALERTA: FILA MQ ACIMA DE 80%

1. Verificar profundidade da fila.
2. Verificar consumidor.
3. Verificar mensagens presas.
4. Confirmar conectividade.
5. Avaliar expansão temporária.
6. Acionar equipe responsável.

Um alerta sem orientação apenas transfere o problema para outra pessoa.


Passo 9 — Revise depois do incidente

Após resolver, pergunte:

  • O alerta chegou cedo?

  • Os logs eram suficientes?

  • O Trace ID estava disponível?

  • A métrica correta existia?

  • Houve excesso de ruído?

  • O runbook ajudou?

  • Poderíamos detectar antes?

Observabilidade é melhoria contínua.



Capítulo 10 — Boas práticas fundamentais

Nunca registre senhas

Nem em testes.

Nem temporariamente.

Nem “só para depurar”.

Também evite registrar:

  • CPF completo;

  • cartão;

  • CVV;

  • tokens;

  • segredos;

  • chaves;

  • dados médicos;

  • informações bancárias sensíveis.

Use mascaramento:

CPF=***.***.***-45
CARTAO=****-****-****-1234

Use níveis de log

Um modelo comum:

DEBUG

Detalhes para investigação técnica.

INFO

Eventos normais importantes.

WARN

Situação incomum, mas não fatal.

ERROR

Falha que afetou uma operação.

FATAL

Problema grave que impede continuidade.

Nem todo evento deve ser ERROR.

Caso contrário, ninguém saberá diferenciar uma falha crítica de uma condição comum.


Evite mensagens ambíguas

Ruim:

ERRO NA TABELA

Bom:

ERRO AO ATUALIZAR TABELA CLIENTE
SQLCODE=-803
CHAVE=000123456
TRACE-ID=ABC123

Inclua contexto de negócio

Um log puramente técnico pode ser insuficiente.

Exemplo técnico:

SQLCODE=-803

Exemplo enriquecido:

OPERACAO=CADASTRO-CLIENTE
RESULTADO=DUPLICIDADE
SQLCODE=-803
CLIENTE=000123456

Agora a equipe de negócio também entende o impacto.


Curiosidades do arquivo secreto

Curiosidade 1 — O mainframe já praticava observabilidade antes do termo ficar famoso

Muito antes de OpenTelemetry e microsserviços, ambientes mainframe já utilizavam:

  • SMF;

  • RMF;

  • SYSLOG;

  • dumps;

  • traces;

  • estatísticas de subsistemas;

  • relatórios de performance;

  • mensagens JES;

  • monitoramento CICS;

  • auditoria RACF.

O nome moderno mudou, mas a necessidade sempre existiu.


Curiosidade 2 — Um log pode causar o problema que tenta investigar

Logging excessivo pode aumentar:

  • I/O;

  • CPU;

  • armazenamento;

  • latência;

  • contenção.

Em alguns incidentes, ativar logging detalhado em produção piora o desempenho.

É como acender tantas luzes na cena do crime que o gerador elétrico entra em colapso.


Curiosidade 3 — Tracing completo pode ser caro

Registrar cada requisição em sistemas de altíssimo volume produz enormes quantidades de dados.

Por isso usamos sampling.

Sampling significa coletar apenas uma amostra.

Exemplo:

Coletar 1% dos traces normais.
Coletar 100% dos traces com erro.
Coletar 100% dos traces acima de 2 segundos.

Essa estratégia reduz custo sem perder sinais importantes.


Curiosidade 4 — O usuário percebe o P99

A equipe técnica pode comemorar uma média de 200 milissegundos.

Mas o cliente que recebeu uma resposta em oito segundos não se importa com a média.

Para ele, o sistema foi lento.

É por isso que percentis são tão importantes.


Easter eggs para o Padawan

Primeiro easter egg:

Quando um sistema apresenta erros intermitentes, lembre-se do cão que não latiu.

Em uma famosa investigação de Sherlock Holmes, a ausência de uma reação foi a pista principal.

Na observabilidade também precisamos analisar o que não aconteceu.

Exemplo:

  • o programa iniciou, mas não registrou o fim;

  • a mensagem entrou na fila, mas não saiu;

  • houve chamada ao Db2, mas não houve commit;

  • o serviço recebeu a requisição, mas não retornou resposta.

A ausência de um evento esperado pode ser mais importante do que um erro explícito.

Segundo easter egg:

Se encontrar a identificação 221B em algum exemplo de Trace ID, não é coincidência.

TRACE-ID=221B-BAKER-STREET

Terceiro easter egg:

Todo investigador de sistemas deveria desconfiar da frase:

“Não mudamos nada.”

Quase sempre alguma coisa mudou:

  • volume;

  • configuração;

  • dependência;

  • certificado;

  • plano SQL;

  • estatística;

  • carga;

  • rede;

  • comportamento do usuário;

  • versão externa;

  • horário de processamento.

Mesmo quando o código não mudou, o ambiente pode ter mudado.


O método Sherlock Holmes aplicado à produção

Podemos adaptar o método investigativo em sete etapas.

1. Observar

Colete evidências sem tirar conclusões prematuras.

2. Estabelecer a linha do tempo

Descubra quando o comportamento começou.

3. Correlacionar

Relacione logs, métricas, traces e mudanças recentes.

4. Formular hipóteses

Exemplo:

A lentidão pode estar sendo causada pela fila MQ.

5. Testar

Verifique profundidade da fila, consumidor e tempo de espera.

6. Eliminar hipóteses impossíveis

Se o Db2 respondeu em 20 milissegundos, provavelmente não é o gargalo principal.

7. Confirmar causa raiz

Não pare no primeiro sintoma.

Fila cheia é sintoma.

Consumidor indisponível pode ser a causa.

Certificado expirado no consumidor pode ser a causa raiz.


Conclusão — O sistema sempre deixa pegadas

Quando entramos no CPD, tínhamos apenas uma reclamação:

“O sistema está lento.”

Depois da investigação, descobrimos que essa frase escondia uma cadeia de evidências.

As métricas mostraram que a latência aumentava.

Os traces revelaram em qual componente o tempo era consumido.

Os logs explicaram o erro.

O identificador de correlação conectou todas as etapas.

O alerta chamou a equipe.

O runbook orientou a resposta.

E a revisão posterior transformou o incidente em aprendizado.

Esse é o verdadeiro valor da observabilidade.

Logging, tracing e metrics não são três tecnologias isoladas.

São três testemunhas.

Cada uma viu uma parte do caso.

O log afirma:

“Eu sei o que aconteceu.”

A métrica declara:

“Eu sei com que frequência e intensidade aconteceu.”

O trace completa:

“Eu sei por onde a requisição passou.”

Quando as três testemunhas são interrogadas juntas, o sistema deixa de ser uma caixa-preta.

Para o programador COBOL iniciante, a grande lição é simples: não escreva programas que apenas processem dados. Escreva programas capazes de explicar o próprio comportamento.

Registre o início.

Registre o fim.

Registre a etapa.

Registre o código de retorno.

Meça o tempo.

Conte os registros.

Propague um identificador.

Proteja dados sensíveis.

Produza evidências úteis.

Porque, quando o incidente acontecer às 02h17 da manhã — e algum dia ele acontecerá — você não desejará encontrar apenas um DISPLAY 'DEU ERRO' abandonado no spool.

Você desejará encontrar uma trilha completa de pegadas digitais.

Sherlock Holmes fechou o relatório, tomou o último gole de café e olhou para o jovem programador COBOL.

— Agora entende?

— Acho que sim. Observabilidade é descobrir o que o sistema está tentando nos contar.

O investigador sorriu.

— Não exatamente.

— Então o que é?

— É garantir que, quando o sistema falar, ele tenha algo útil a dizer.

No monitor principal, a transação voltou ao tempo normal.

O alerta vermelho desapareceu.

E, em algum lugar entre o CICS, o Db2 e uma fila MQ, um pequeno Trace ID chamado 221B-BAKER-STREET continuou seguindo silenciosamente as pegadas da próxima requisição.

segunda-feira, 29 de maio de 2023

☕🔥 PROMETHEUS, MIMIR E O “SMF DO MUNDO CLOUD” — O UNIVERSO DA OBSERVABILIDADE EXPLICADO PARA UM SYSPROG JÚNIOR 🔥☕

 

Bellacosa Mainframe o mundo da observabilidade mainframe

☕🔥 PROMETHEUS, MIMIR E O “SMF DO MUNDO CLOUD” — O UNIVERSO DA OBSERVABILIDADE EXPLICADO PARA UM SYSPROG JÚNIOR 🔥☕

Se o Grafana é o “painel do operador moderno”…

Então:

  • Prometheus é o coletor de métricas
  • Mimir é o mega repositório escalável
  • Loki é o “SYSLOG gigante”
  • Tempo é o rastreador de transações
  • OpenTelemetry virou o “SMF universal”

E tudo isso junto forma o que o mercado chama hoje de:

☕ OBSERVABILIDADE

Mas um sysprog veterano olha isso e pensa:

“Isso parece RMF + SMF + OMEGAMON + SYSLOG + CICS MONITORING misturados…”

E honestamente?

Está certíssimo. ☕💾


☕ O QUE É OBSERVABILIDADE?

Observabilidade é a capacidade de:

  • enxergar o sistema
  • entender comportamento
  • prever falhas
  • diagnosticar problemas rapidamente

Ela normalmente trabalha em 3 pilares:

PilarEquivalente Mainframe
MétricasRMF / SMF
LogsSYSLOG / JESMSGLG
TracesCICS trace / Db2 accounting

☕ O QUE É PROMETHEUS?

O Prometheus é:

  • banco de métricas
  • coletor temporal
  • motor de queries
  • sistema de alertas

Criado em:

  • 2012
  • pela SoundCloud
  • open source
  • depois adotado pela CNCF

Site oficial:


☕ O PROBLEMA QUE ELE RESOLVEU

Antes do Prometheus:

  • monitoramento era caro
  • proprietário
  • complicado
  • cheio de agentes pesados

O Prometheus trouxe:

  • simplicidade
  • coleta HTTP
  • métricas em texto
  • integração cloud-native

Foi um divisor de águas.


☕ COMO O PROMETHEUS FUNCIONA?

☕ Modelo “Pull”

O Prometheus vai até o servidor e pergunta:

“Me mostre suas métricas.”

Isso é chamado:

  • scrape

☕ Exemplo de endpoint

Servidor exportando:

http://server:9100/metrics

Saída:

node_cpu_seconds_total 12345
node_memory_MemFree_bytes 987654321

Parece simples…

E é exatamente essa simplicidade que tornou o Prometheus gigante.


☕ EXPORTERS — O “COLETOR SMF” DO MUNDO MODERNO

Prometheus usa exporters.

Eles convertem dados do sistema para métricas.


☕ EXPORTERS MAIS FAMOSOS

ExporterFunção
node_exporterLinux
windows_exporterWindows
blackbox_exporterRede
mysqld_exporterMySQL
postgres_exporterPostgreSQL
jmx_exporterJava
snmp_exporterEquipamentos

☕ ANALOGIA MAINFRAME

MainframePrometheus
SMF Type RecordsMetrics
RMF Monitornode_exporter
OMEGAMONGrafana + Prometheus
Performance MonitorTime Series DB

☕ PROMQL — O “JCL DAS MÉTRICAS”

O Prometheus possui uma linguagem chamada:

☕ PromQL

Isso é o coração do sistema.


☕ Exemplo simples

CPU:

rate(node_cpu_seconds_total[5m])

☕ Média de memória

avg(node_memory_MemAvailable_bytes)

☕ Detectar servidor offline

up == 0

☕ O QUE TORNA O PROMETHEUS ESPECIAL?

☕ 1 — Time Series Database

Ele guarda:

  • métricas no tempo
  • compressão eficiente
  • consultas rápidas

Perfeito para:

  • tendências
  • capacity planning
  • troubleshooting

☕ 2 — Labels

Toda métrica pode ter rótulos:

http_requests_total{job="api",status="500"}

Isso lembra:

  • classificação SMF
  • accounting records
  • classes de workload

☕ 3 — Alertas

Exemplo:

CPU > 90%

Aciona:

  • email
  • Slack
  • Teams
  • PagerDuty

Equivalente moderno de:

“OPERADOR! O SISTEMA ESTÁ PEGANDO FOGO!” ☕💥


☕ LIMITAÇÕES DO PROMETHEUS

Aqui começa o lado “sysprog raiz”.

Prometheus é excelente…

Mas:

  • retenção longa é complicada
  • clustering nativo é limitado
  • escala massiva dói
  • multi-tenant é complexo

E foi exatamente daí que nasceu:

☕ MIMIR


☕ O QUE É MIMIR?

O Grafana Mimir é:

  • backend distribuído
  • armazenamento massivo de métricas
  • compatível com Prometheus

Site:


☕ A IDEIA DO MIMIR

Imagine:

Prometheus sozinho:

  • ótimo para ambientes pequenos/médios

Mas empresas gigantes precisam:

  • bilhões de métricas
  • retenção longa
  • HA
  • multi datacenter
  • multi tenant

Mimir resolve isso.


☕ ANALOGIA MAINFRAME

Mundo ModernoMundo Mainframe
PrometheusRMF local
MimirSMF central corporativo
Object StorageTape library
Long retentionArquivamento histórico

☕ COMO O MIMIR FUNCIONA?

Ele separa componentes:

ComponenteFunção
Distributorrecebe métricas
Ingestergrava dados
Querierfaz consultas
Compactorcompacta blocos
Store Gatewayacessa storage

Parece familiar?

Sim…

É praticamente arquitetura de subsistema enterprise:

  • filas
  • cache
  • storage
  • distribuído
  • paralelismo

Muito parecido com mentalidade mainframe.


☕ STORAGE

Mimir normalmente usa:

  • S3
  • MinIO
  • GCS
  • Azure Blob

Isso permite:

  • retenção gigantesca
  • baixo custo
  • alta escalabilidade

☕ LOKI — O “SYSLOG GIGANTE”

☕ O QUE É?

O Loki é:

  • sistema de logs
  • feito pela Grafana Labs

Site:


☕ DIFERENÇA IMPORTANTE

Elasticsearch indexa tudo.

Loki indexa:

  • apenas labels

Resultado:

  • menos custo
  • menos storage
  • mais eficiência

☕ EXEMPLO

{job="nginx"} |= "ERROR"

☕ ANALOGIA MAINFRAME

LokiMainframe
Logs distribuídosSYSLOG
LabelsClasses JES
QueriesSDSF filtros

☕ TEMPO — O “CICS TRACE MODERNO”

Tempo trabalha com:

  • distributed tracing

Site:


☕ O QUE É TRACE?

Imagine:

  • usuário clica no app
  • passa API
  • banco
  • microserviço
  • MQ
  • cache

Tempo rastreia:

  • toda jornada

☕ ANALOGIA MAINFRAME

Quase igual:

  • CICS trace
  • Db2 accounting trace
  • MQ activity trace

☕ OPEN TELEMETRY — O “SMF UNIVERSAL”

☕ O QUE É?

Framework padronizado de:

  • métricas
  • logs
  • traces

Site:


☕ POR QUE ISSO MUDOU O MERCADO?

Antes:

  • cada ferramenta tinha padrão próprio

Agora:

  • tudo fala OpenTelemetry

Virou:

“o TCP/IP da observabilidade”


☕ DATA SOURCES MAIS IMPORTANTES NO GRAFANA

Data SourceUso
PrometheusMétricas
LokiLogs
TempoTraces
ElasticsearchLogs/search
InfluxDBIoT/time series
PostgreSQLDados SQL
MySQLAnalytics
CloudWatchAWS
Azure MonitorAzure
SplunkEnterprise logs
OpenSearchObservabilidade

☕ O QUE UM SYSPROG JÚNIOR PRECISA APRENDER?

☕ PRIORIDADE 1

Aprender:

  • Grafana
  • Prometheus
  • PromQL

Isso já abre MUITAS portas.


☕ PRIORIDADE 2

Depois:

  • Loki
  • Alertmanager
  • OpenTelemetry

☕ PRIORIDADE 3

Avançado:

  • Mimir
  • Tempo
  • Thanos
  • Kubernetes observability

☕ THA NOS — O “PRIMO DO MIMIR”

Outro projeto famoso:

Também resolve:

  • escala
  • retenção longa
  • HA

Muito usado em Kubernetes.


☕ CURIOSIDADES INSANAS

☕ Netflix, Uber, bancos e bolsas usam isso

Hoje observabilidade é:

  • missão crítica
  • core business

☕ Um dashboard ruim pode derrubar operação

Porque:

  • operador não vê problema
  • alerta errado gera caos
  • excesso de métricas vira ruído

Exatamente como:

  • console floodado no JES2 ☕💥

☕ MÉTRICA DEMAIS VIRA O NOVO “SPAGHETTI”

Empresas geram:

  • bilhões de métricas por dia

Sem governança:

  • storage explode
  • custo explode
  • queries ficam lentas

☕ O FUTURO

A nova onda:

  • AIOps
  • IA analisando métricas
  • detecção automática
  • previsão de falhas
  • correlação inteligente

Mas o princípio continua o mesmo desde os tempos do MVS:

“Monitorar, entender e agir antes do desastre.” ☕💾🔥

Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , é IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiências profissionais, conhecimento técnico, história da computação e práticas do universo mainframe para aproximar novas gerações das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988
GitHub LinkedIn
Inicializando conteúdo...