☕ 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 grafana. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta grafana. Mostrar todas as mensagens

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.

quinta-feira, 4 de janeiro de 2024

☕💣🔥 LABORATÓRIO PRÁTICO — TESTES DE PERFORMANCE PARA O PADAWAN COBOL MAINFRAME

 

Bellacosa Mainframe e laboratorio pratico de performance

☕💣🔥 LABORATÓRIO PRÁTICO — TESTES DE PERFORMANCE PARA O PADAWAN COBOL MAINFRAME

Este laboratório foi criado para transformar conceitos em prática.

A ideia é que o aluno pense como um Analista de Performance, um Desenvolvedor COBOL e um Sysprog ao mesmo tempo.

Cada exercício possui:

  • Cenário

  • Desafio

  • Solução Comentada

  • Conceitos Envolvidos


EXERCÍCIO 1

Identificando o Tipo de Teste

Cenário

O banco deseja validar se o Internet Banking suporta 5.000 usuários simultâneos.

Pergunta

Qual tipo de teste deve ser realizado?

A) Estresse

B) Resistência

C) Carga

D) Pico


Solução

Resposta:

C) Carga

O objetivo é validar a capacidade prevista do ambiente.

Não estamos ultrapassando limites.

Não estamos testando durante horas.

Não estamos simulando explosões repentinas.

Estamos simulando o uso normal esperado.


EXERCÍCIO 2

Descobrindo o Gargalo

Cenário

Uma consulta de saldo apresenta:

ComponenteTempo
Front-End50 ms
API80 ms
CICS1200 ms
DB2950 ms

Pergunta

Onde está o principal gargalo?


Solução

CICS e DB2.

O tempo de resposta total está concentrado nessas camadas.

O Front-End e API representam parcela muito pequena do processamento.

O próximo passo seria analisar:

  • SQL

  • Índices

  • Plano de acesso

  • Locks


EXERCÍCIO 3

Avaliando Throughput

Cenário

Durante um teste foram processadas:

120.000 transações

em

60 segundos

Pergunta

Qual o Throughput?


Solução

Fórmula:

TPS = Transações ÷ Tempo

120.000 ÷ 60

TPS = 2.000

Resposta:

2.000 TPS


EXERCÍCIO 4

Encontrando Problema de Código COBOL

Programa

PERFORM UNTIL WS-FIM = 'S'

   READ ARQ-CLIENTES
      AT END
         MOVE 'S' TO WS-FIM
   END-READ

   PERFORM PROCESSA-CLIENTE

END-PERFORM

Pergunta

Qual risco de performance existe?


Solução

Se o arquivo possuir milhões de registros:

  • CPU elevada

  • I/O elevado

  • Tempo excessivo

O código não está errado.

Mas pode não escalar.

Performance depende do volume.


EXERCÍCIO 5

Escolhendo a Ferramenta

Cenário

Você precisa gerar:

10.000 usuários simultâneos

realizando chamadas HTTP.

Pergunta

Qual ferramenta apresentada seria mais indicada?


Solução

Apache JMeter.

Porque:

  • Open Source

  • Escalável

  • HTTP

  • HTTPS

  • REST

  • SOAP

Foi justamente a ferramenta mostrada na apresentação.


EXERCÍCIO 6

Teste de Resistência

Cenário

Uma aplicação funciona perfeitamente por:

30 minutos

Após:

8 horas

o consumo de memória cresce continuamente.

Pergunta

Qual tipo de teste identificou o problema?


Solução

Teste de Resistência.

Também chamado:

Soak Test

ou

Endurance Test.

Esse tipo de problema dificilmente aparece em testes rápidos.


EXERCÍCIO 7

Simulando Black Friday

Cenário

Usuários simultâneos:

09:00 → 1.000

09:01 → 10.000

09:02 → 15.000

09:03 → 1.000

Pergunta

Qual tipo de teste está sendo realizado?


Solução

Teste de Pico.

Objetivo:

Validar explosões repentinas de acesso.

Muito comum em:

  • Black Friday

  • PIX

  • Campanhas

  • Venda de ingressos


EXERCÍCIO 8

Análise de Mainframe

Cenário

Durante o teste:

CPU = 35%

Tempo de Resposta = 8 segundos

Pergunta

A CPU é o problema?


Solução

Não necessariamente.

Esse é um erro clássico.

Mesmo com CPU baixa podem existir:

  • Locks DB2

  • Espera de I/O

  • MQ congestionado

  • SQL ruim

  • Contenção CICS

CPU baixa não significa ambiente saudável.


EXERCÍCIO 9

Virtualização de Serviços

Cenário

O microsserviço precisa chamar:

  • Serviço A

  • Serviço B

  • Mainframe

Mas o Mainframe está indisponível.

Pergunta

Como continuar os testes?


Solução

Utilizando Virtualização.

Criamos respostas simuladas.

Exemplo:

{
  "conta":"12345",
  "saldo":"1500.00"
}

Assim os testes continuam sem depender do ambiente real.


EXERCÍCIO 10

Diagnóstico Completo

Cenário

O Grafana mostra:

CPU = 40%

Memória = 45%

Tempo Médio = 5 segundos

Dynatrace mostra:

API = 100 ms

CICS = 250 ms

DB2 = 4200 ms

Pergunta

Onde você investigaria primeiro?


Solução

DB2.

O banco responde por mais de 80% do tempo total.

Possíveis causas:

  • Full Scan

  • Índice ausente

  • Estatísticas desatualizadas

  • Lock

  • SQL mal otimizado


DESAFIO FINAL DO PADAWAN ☕💣

Imagine a seguinte arquitetura:

Mobile
   ↓
Apache
   ↓
WebSphere
   ↓
API
   ↓
MQ
   ↓
CICS
   ↓
COBOL
   ↓
DB2

Você recebe a reclamação:

"Consultar saldo está demorando 12 segundos."

Descreva:

  1. Quais ferramentas utilizaria?

  2. Quais métricas analisaria?

  3. Quais componentes investigaria primeiro?

  4. Como executaria um teste de carga?

  5. Como validaria a correção?


GABARITO ESPERADO

Ferramentas:

  • JMeter

  • Dynatrace

  • Grafana

  • OMEGAMON

  • RMF

  • SMF

Métricas:

  • CPU

  • TPS

  • Tempo Médio

  • P95

  • P99

  • I/O

  • MQ Depth

  • Tempo DB2

Investigação:

  1. Dynatrace

  2. DB2

  3. CICS

  4. MQ

  5. API

Teste:

  • 5.000 usuários

  • Ramp-up gradual

  • Monitoramento simultâneo

Validação:

Comparar:

Antes = 12 segundos

Depois = meta inferior a 2 segundos


Missão Extra Bellacosa Mainframe

Pegue um programa COBOL real do seu ambiente e responda:

  • Quantos READs ele executa?

  • Quantos WRITEs?

  • Quantos SELECTs DB2?

  • Qual o maior loop?

  • Qual o volume esperado?

  • Como ele se comportaria com 10 milhões de registros?

Se você conseguir responder essas perguntas, já começou a pensar como um profissional de Performance Mainframe e não apenas como um programador COBOL. ☕💣🚀


terça-feira, 2 de janeiro de 2024

☕💣🔥 O DIA EM QUE 10.000 USUÁRIOS DERRUBARAM UM COBOL QUE FUNCIONAVA PERFEITAMENTE — O GUIA DEFINITIVO DE TESTES DE PERFORMANCE PARA O PADAWAN DO MAINFRAME

Bellacosa Mainframe e a performance em mainframe


☕💣🔥 O DIA EM QUE 10.000 USUÁRIOS DERRUBARAM UM COBOL QUE FUNCIONAVA PERFEITAMENTE — O GUIA DEFINITIVO DE TESTES DE PERFORMANCE PARA O PADAWAN DO MAINFRAME

Existem algumas frases que assustam qualquer profissional experiente de Mainframe.

Uma delas é:

"Pode colocar em produção. Já testamos tudo."

A segunda é:

"Funcionou na minha máquina."

E a terceira, talvez a mais perigosa de todas:

"Performance a gente vê depois."

Se você é um jovem Padawan do COBOL, provavelmente acredita que o trabalho do programador termina quando o programa compila sem erros, passa nos testes funcionais e devolve o resultado correto.

Mas existe um mundo oculto além da lógica.

Um universo onde programas corretos derrubam bancos.

Onde APIs perfeitamente desenvolvidas travam durante a Black Friday.

Onde um SELECT aparentemente inocente consegue transformar uma aplicação inteira em um incêndio corporativo.

Esse universo chama-se Performance.

E hoje vamos conversar sobre um assunto que separa programadores comuns dos profissionais que sobrevivem décadas trabalhando em ambientes críticos.

Vamos falar sobre Testes de Performance.


A PRIMEIRA GRANDE LIÇÃO

Imagine que você criou um programa COBOL chamado CONSULTA-SALDO.

O programa recebe:

  • Agência

  • Conta

Consulta o DB2.

Retorna o saldo.

Você testa.

Funciona.

Seu colega testa.

Funciona.

O analista testa.

Funciona.

O gerente testa.

Funciona.

Todo mundo comemora.

O programa sobe para produção.

Cinco minutos depois:

O Internet Banking trava.

O aplicativo móvel trava.

O atendimento telefônico trava.

O gerente da agência liga desesperado.

E você pensa:

"Mas aqui funcionava..."

Sim.

Funcionava.

Para um usuário.

Produção não possui um usuário.

Produção possui milhares.

Essa é a primeira lição da performance.

Um sistema que funciona para uma pessoa não necessariamente funciona para dez mil.


O QUE É UM TESTE DE PERFORMANCE?

Muitos iniciantes acreditam que teste de performance significa medir velocidade.

Não é apenas isso.

Teste de performance é a arte de descobrir como um sistema se comporta quando submetido ao mundo real.

Queremos responder perguntas como:

  • Quantos usuários suporta?

  • Qual o tempo de resposta?

  • Onde está o gargalo?

  • Quanto de CPU consome?

  • Quanto de memória utiliza?

  • Quantas transações por segundo processa?

Na prática estamos tentando descobrir o limite antes que o cliente descubra primeiro.

Porque quando o cliente descobre primeiro, normalmente já existe uma crise instalada.


TESTES FUNCIONAIS X TESTES NÃO FUNCIONAIS

O material apresentado faz uma separação extremamente importante.

Testes funcionais verificam:

"O sistema faz o que deveria fazer?"

Exemplo:

Você informa uma conta.

O sistema retorna o saldo correto.

Teste aprovado.

Mas existe outra pergunta.

"O sistema continua fazendo isso quando dez mil usuários acessam simultaneamente?"

Essa pergunta pertence ao mundo dos testes não funcionais.

E é exatamente aqui que entra a performance.


O EXEMPLO DO AUTOMÓVEL

Imagine um carro.

Você gira a chave.

O motor liga.

Teste funcional aprovado.

Mas ainda faltam várias perguntas:

  • Qual a velocidade máxima?

  • Quanto consome?

  • Quanto suporta de carga?

  • Como se comporta em uma subida?

  • Como reage após cinco horas de viagem?

Essas perguntas representam os testes não funcionais.

O mesmo vale para sistemas.


O QUE REALMENTE DERRUBA SISTEMAS?

O Padawan normalmente pensa:

"Se estiver lento é porque falta CPU."

Nem sempre.

Na verdade, CPU costuma ser apenas um dos suspeitos.

Os verdadeiros vilões geralmente são:

  • SQL mal escrito

  • Índices ausentes

  • Locks excessivos

  • Filas MQ congestionadas

  • Chamada excessiva a serviços

  • Pool JDBC esgotado

  • Recursos compartilhados

Em outras palavras:

O problema normalmente não está onde você imagina.


TESTE DE CARGA

Este é o mais conhecido.

O objetivo é reproduzir o uso normal esperado.

Imagine:

O banco estima 5.000 usuários simultâneos.

Criamos então um cenário simulando exatamente esse volume.

A pergunta é simples:

"O sistema suporta?"

Se suporta, ótimo.

Se não suporta, ainda temos tempo para corrigir.

Muito melhor descobrir isso no laboratório do que no Jornal Nacional.


TESTE DE ESTRESSE

Aqui a conversa fica interessante.

Em vez de testar o limite esperado, ultrapassamos o limite.

Muito.

Se o ambiente foi projetado para 5.000 usuários:

Testamos 10.000.

15.000.

20.000.

Queremos descobrir:

Como ele falha?

Uma falha controlada é muito melhor que um colapso inesperado.


TESTE DE RESISTÊNCIA

Agora imagine uma maratona.

O sistema suporta 5.000 usuários.

Ótimo.

Mas por quanto tempo?

Uma hora?

Duas?

Dez?

Vinte e quatro?

O teste de resistência mantém carga constante durante longos períodos.

Muitas aplicações parecem saudáveis por trinta minutos.

Depois começam a consumir memória.

Depois mais memória.

Depois ainda mais memória.

Até morrerem lentamente.

É o famoso Memory Leak.


TESTE DE PICO

Imagine a abertura das vendas de um show.

Ou a Black Friday.

Ou o lançamento de um PIX promocional.

O tráfego explode.

O sistema precisa absorver esse impacto.

O teste de pico verifica exatamente isso.

O comportamento durante explosões repentinas.


O MUNDO HÍBRIDO

Antigamente era simples.

Usuário.

Tela.

Mainframe.

Fim.

Hoje não.

Hoje temos:

Aplicativo Mobile

Apache

WebSphere

API Gateway

Microsserviços

MQ

CICS

COBOL

DB2

Percebe o problema?

Se a tela demora cinco segundos, onde está o gargalo?

Pode estar em qualquer ponto da cadeia.

E é por isso que observabilidade se tornou tão importante.


APACHE JMETER

Se existe uma ferramenta que virou símbolo dos testes de carga modernos, essa ferramenta é o Apache JMeter.

Pense nele como um exército virtual.

Você configura usuários fictícios.

Esses usuários começam a executar operações.

Consultar saldo.

Fazer transferência.

Emitir extrato.

Pagar boleto.

E o sistema acredita que são usuários reais.

O JMeter consegue gerar milhares de acessos simultâneos.

É exatamente assim que simulamos produção sem colocar clientes reais em risco.


EXEMPLO PRÁTICO

Suponha uma API:

GET /saldo

Queremos simular:

5.000 usuários.

Criamos:

Thread Group

Usuários: 5000

Ramp-Up: 300 segundos

Loop: infinito

Agora adicionamos:

HTTP Request

Executamos.

Pronto.

Começamos a produzir carga.

Mas isso é apenas metade da história.


POR QUE APENAS GERAR CARGA NÃO BASTA?

Imagine um médico.

Ele mede sua pressão.

Mas ignora:

  • Frequência cardíaca

  • Oxigenação

  • Temperatura

Seria um diagnóstico completo?

Claro que não.

Com performance ocorre a mesma coisa.

Gerar carga é apenas o começo.

Precisamos observar o ambiente inteiro.


DYNATRACE

É aqui que entra o Dynatrace.

Pense nele como uma tomografia computadorizada da aplicação.

Ele acompanha cada requisição.

Cada chamada.

Cada serviço.

Cada banco de dados.

Cada microsserviço.

Cada transação.

Em vez de simplesmente dizer:

"Está lento."

Ele mostra:

"Está lento porque o Serviço X chamou o Serviço Y que executou uma consulta SQL custosa."

Agora existe informação para agir.


O SONHO DE TODO ANALISTA DE PERFORMANCE

Imagine um clique no aplicativo.

Consultar saldo.

Dynatrace exibe:

Frontend = 80 ms

API = 100 ms

Microsserviço = 120 ms

CICS = 800 ms

DB2 = 700 ms

Pronto.

Achamos o culpado.

Não existe mais adivinhação.


GRAFANA

Se Dynatrace é o médico.

Grafana é o painel da UTI.

Ele transforma números em gráficos.

Mostra:

  • CPU

  • Memória

  • Throughput

  • Erros

  • Tempo médio

  • Percentil 95

  • Percentil 99

E permite acompanhar tudo em tempo real.

Uma imagem muitas vezes vale mais que mil relatórios.


O QUE O MAINFRAME ENSINA SOBRE PERFORMANCE?

Muito antes da palavra observabilidade virar moda, o Mainframe já monitorava tudo.

E quando digo tudo, é tudo mesmo.

O z/OS nasceu para ambientes críticos.

Por isso existem ferramentas extremamente sofisticadas.


SMF

System Management Facility.

Registra praticamente tudo.

CPU.

I/O.

Transações.

Consumo.

Execução.

É o grande livro de registros do sistema.


RMF

Resource Measurement Facility.

Analisa comportamento dos recursos.

Ajuda a identificar gargalos.

Mostra utilização de processadores.

Filas.

Memória.

Dispositivos.


OMEGAMON

Uma das ferramentas mais famosas do universo IBM.

Monitora:

  • z/OS

  • CICS

  • DB2

  • MQ

Em tempo real.

Quando algo fica lento, geralmente ele é um dos primeiros lugares onde o especialista procura respostas.


O MAIOR ERRO DOS PROGRAMADORES INICIANTES

O Padawan costuma pensar:

"Meu programa executa rápido."

Mas rápido para quem?

Com qual volume?

Em qual horário?

Contra qual banco?

Com quantos registros?

Essas perguntas mudam tudo.

Um SELECT que retorna dez linhas parece maravilhoso.

O mesmo SELECT retornando dez milhões de linhas pode virar um desastre.


O CASO DO LOOP INOCENTE

Imagine:

PERFORM UNTIL EOF

READ ARQUIVO

PROCESSA

END-PERFORM

Parece simples.

Mas e se o arquivo possuir:

50 milhões de registros?

Agora o cenário muda.

Performance não depende apenas do código.

Depende dos dados.


PERFORMANCE É ARQUITETURA

Muitos acreditam que performance é responsabilidade exclusiva da infraestrutura.

Não é.

Também não é responsabilidade exclusiva do desenvolvedor.

Performance é responsabilidade de todos.

Arquitetura.

Banco.

Infraestrutura.

Rede.

Aplicação.

Integração.

Monitoramento.

Tudo influencia.


A MENTALIDADE DO PROFISSIONAL MADURO

O iniciante pergunta:

"Funciona?"

O profissional experiente pergunta:

"Funciona sob carga?"

O iniciante pergunta:

"Retornou o resultado?"

O profissional experiente pergunta:

"Quanto tempo demorou?"

O iniciante pergunta:

"Passou no teste?"

O profissional experiente pergunta:

"Qual foi o consumo?"

Essa mudança de mentalidade transforma carreiras.


A LIÇÃO FINAL

Ao longo dos anos vi programas COBOL sobreviverem décadas.

Vi sistemas processarem bilhões de transações.

Vi ambientes suportarem eventos gigantescos sem falhar.

E todos tinham algo em comum.

Performance não era tratada como um detalhe.

Era tratada como requisito.

Porque funcionalidades atraem usuários.

Mas é a performance que permite que eles permaneçam utilizando o sistema.

No fim das contas, um programa COBOL não é avaliado apenas pelo que faz.

Ele é avaliado pela velocidade, estabilidade e capacidade com que faz aquilo.

E essa é a diferença entre escrever código e construir sistemas capazes de sobreviver ao mundo real.

Bem-vindo ao próximo nível da sua jornada no Mainframe, jovem Padawan.

Agora você já sabe que compilar é apenas o começ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...