☕ 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

sexta-feira, 11 de setembro de 2020

💀 ARC E O SMF DA EMPRESA INTEIRA — COMO CONSTRUIR A CAIXA-PRETA CORPORATIVA SEM CRIAR O BIG BROTHER

 
Bellacosa Mainframe analisando logs

☕ UM CAFÉ NO BELLACOSA MAINFRAME

💀 ARC E O SMF DA EMPRESA INTEIRA — COMO CONSTRUIR A CAIXA-PRETA CORPORATIVA SEM CRIAR O BIG BROTHER

SMF, COBOL, RACF, CICS, Db2, IAM, APIs, Cloud, EDR, SIEM, OpenTelemetry, grafos, Zero Trust, fraude, privacidade — e o dia em que Arc descobriu que investigar um incidente não significa vigiar uma pessoa.



🎬 PRÓLOGO — ARC ENCONTROU UMA DUNGEON MUITO ESTRANHA

Arc já havia acordado em mundos piores.

Virar um cavaleiro esqueleto gigantesco usando uma armadura pesada definitivamente não estava entre as experiências mais comuns de um programador.

Mas aquilo era diferente.

Não havia goblins.

Não havia dragões.

Não havia necromantes.

Na frente dele existia apenas um terminal 3270.

Na tela:

SDSF PRIMARY OPTION MENU

COMMAND INPUT ===>

Arc aproximou-se.

— Bellacosa-san... que espécie de magia ancestral é essa?

— Isso, meu caro esqueleto, é um mainframe.

Arc colocou a mão sobre a espada.

— Parece perigoso.

— E é. Digite qualquer coisa errada em produção numa sexta-feira às 17:58 e você descobrirá.

Arc prudentemente afastou a mão do teclado.

Foi então que apareceu nossa missão.

Uma empresa havia identificado uma transferência financeira suspeita.

O dinheiro passara por vários sistemas:

Internet
   ↓
API Gateway
   ↓
Cloud
   ↓
MQ
   ↓
CICS
   ↓
COBOL
   ↓
Db2
   ↓
Pagamento

O problema era descobrir:

o que aconteceu antes da transferência?

Arc perguntou:

— Não existe algum registro dizendo isso?

Sorri.

— Existe uma coisa no mainframe chamada SMF.

— Então basta consultar o SMF?

— Não exatamente. Porque metade da história aconteceu fora do mainframe.

Arc olhou novamente para o terminal.

E então nasceu nossa pergunta:

🕵️ QUAL SERIA O “SMF” DE UMA EMPRESA INTEIRA?



🦖 CAPÍTULO 1 — PRIMEIRO: O QUE DIABOS É SMF?

Se você está começando em COBOL e z/OS, provavelmente encontrará cedo ou tarde estas três letras:

SMF — System Management Facilities.

Simplificando bastante, podemos imaginar o SMF como um enorme mecanismo de registro de eventos do z/OS.

O sistema operacional e diversos componentes podem produzir registros descrevendo acontecimentos importantes.

Por exemplo:

JOB iniciou
JOB terminou
STEP executou
recurso foi utilizado
atividade de segurança ocorreu
dataset foi acessado
subsistema executou determinada operação

Esses registros possuem estruturas conhecidas.

Existem diferentes tipos e subtipos de registros SMF.

O resultado é algo extraordinariamente importante para operação, capacidade, auditoria, segurança, accounting, performance e investigação.

Imagine:

14:03:11 USER01 submeteu JOB12345
14:03:12 JOB12345 iniciou
14:03:13 STEP01 executou PROG001
14:03:14 PROG001 acessou recursos
14:03:18 STEP01 terminou
14:03:19 JOB12345 terminou

Agora imagine que algo deu errado.

Você pode reconstruir parte da história.

Essa palavra será fundamental durante todo este artigo:

história.

Porque segurança moderna não deveria procurar apenas eventos isolados.

Ela deveria conseguir reconstruir sequências de acontecimentos.



🧙 CAPÍTULO 2 — ARC DESCOBRE QUE O MUNDO DISTRIBUÍDO É UMA BAGUNÇA

Arc achou aquilo simples.

— Então instalamos SMF em todos os computadores!

Infelizmente não funciona assim.

O ambiente corporativo moderno pode possuir:

Windows
Linux
macOS
Android
iOS
Azure
AWS
Google Cloud
Kubernetes
firewalls
VPN
ZTNA
Active Directory
Entra ID
API Gateways
Kafka
MQ
Oracle
Db2
PostgreSQL
CICS
IMS
z/OS
aplicações Java
aplicações COBOL
SaaS
e-mail
sistemas financeiros
controle de acesso físico

Cada plataforma produz seus próprios registros.

Pior:

cada uma fala seu próprio dialeto.

Uma pode registrar:

USER=JOAO

Outra:

principal=j.silva@empresa

Outra:

uid=83921

Outra:

RACFID=JSILVA

Talvez sejam todos a mesma pessoa.

Talvez não.

Bem-vindo à primeira dungeon.



🧩 CAPÍTULO 3 — O PROBLEMA NÃO É TER LOGS

Grandes empresas normalmente possuem uma quantidade monstruosa de logs.

A dificuldade é responder:

Como relacionar acontecimentos espalhados por dezenas de tecnologias?

Imagine nosso funcionário fictício USER042.

Às 08:01:

PHYSICAL ACCESS

identity=USER042
door=HQ-ENTRANCE
result=GRANTED

Às 08:07:

IAM

identity=USER042
device=NOTEBOOK221
action=LOGIN
result=SUCCESS

08:13:

EMAIL

identity=USER042
action=OPEN_ATTACHMENT
message=M882193

08:14:

EDR

device=NOTEBOOK221
parent=OUTLOOK.EXE
process=POWERSHELL.EXE

08:15:

IAM

identity=USER042
action=TOKEN_REQUEST
application=CLOUD

08:17:

API

identity=USER042
endpoint=/customer/export
status=200

08:18:

DB2

authid=APISRV1
table=CUSTOMER
operation=SELECT
rows=284931

Separadamente, temos sete registros.

Mas Arc colocou os registros sobre a mesa e enxergou outra coisa:

EMAIL
  ↓
ATTACHMENT
  ↓
ENDPOINT
  ↓
POWERSHELL
  ↓
TOKEN
  ↓
API
  ↓
DB2
  ↓
284.931 ROWS

Agora temos uma narrativa técnica.

E isso muda completamente a investigação.



🔗 CAPÍTULO 4 — CORRELAÇÃO É A VERDADEIRA MAGIA

Pense numa aplicação moderna chamando um programa COBOL.

O usuário abre o navegador:

Browser

que chama:

API Gateway

que chama:

Java Microservice

que publica:

IBM MQ

que aciona:

CICS

que executa:

PROGCOB1

que finalmente executa:

UPDATE CONTA
   SET SALDO = ...

no Db2.

Cada plataforma pode conhecer apenas seu pedaço.

O navegador conhece uma sessão.

A API conhece uma requisição.

MQ conhece uma mensagem.

CICS conhece uma transação.

COBOL conhece dados recebidos.

Db2 conhece determinado acesso.

Precisamos transportar identificadores que permitam correlacionar tudo isso.

Algo conceitualmente semelhante a:

event_id
timestamp
actor_id
device_id
session_id
trace_id
transaction_id
source
target
action
result

Imagine:

TRACE-ID=ABC99172

atravessando:

API
 ↓
Java
 ↓
MQ
 ↓
CICS
 ↓
COBOL
 ↓
Db2

Agora podemos reconstruir a jornada.

Essa ideia aproxima o velho universo transacional do mainframe das técnicas modernas de distributed tracing.

O OpenTelemetry trabalha justamente com conceitos de traces, métricas e logs e com convenções semânticas destinadas a tornar a telemetria mais consistente entre tecnologias.

O velho COBOLzeiro pode olhar isso e pensar:

— Rapaz... o mundo inventou um negócio sofisticado para descobrir por onde passou uma transação.

Sim.

Bem-vindo ao século XXI.

😎


💀 CAPÍTULO 5 — ARC DESCOBRE O CORPORATE SMF

Vamos dar um nome à nossa arquitetura:

CORPORATE EVENT FABRIC

Ela receberia eventos de diferentes domínios:

IAM ───────────────┐
Endpoint ──────────┤
E-mail ────────────┤
Network ───────────┤
Cloud ─────────────┤
API ───────────────┤
Applications ──────┤
Databases ─────────┼──► EVENT FABRIC
Payments ──────────┤
Physical Access ───┤
Kafka/MQ ──────────┤
RACF ──────────────┤
CICS ──────────────┤
Db2 ───────────────┤
SMF ───────────────┘

Mas atenção.

Isso não significa simplesmente:

“Jogue todos os logs num SIEM.”

O SIEM seria apenas um dos consumidores.

Outros poderiam ser:

SOC
Incident Response
Fraud Detection
Forensics
IAM
Zero Trust
Compliance
Observability
SOAR
AI Agents

O Corporate Event Fabric seria uma espécie de memória factual corporativa.


👁️ CAPÍTULO 6 — E NASCE O BIG BROTHER

Arc ficou animado.

— Então podemos registrar absolutamente tudo!

Silêncio na sala.

— Arc...

— Sim?

— Foi exatamente aí que você quase criou o vilão da história.

Porque tecnicamente poderíamos produzir:

08:01 funcionário entrou
08:07 ligou notebook
08:11 abriu e-mail
08:31 acessou sistema
09:17 imprimiu documento
09:31 saiu da sala
09:47 entrou em outra sala
10:02 retornou

Isso seria extraordinariamente poderoso para investigação.

Mas poderia facilmente virar:

FUNCIONÁRIO FICOU 47 MINUTOS INATIVO.

FUNCIONÁRIO CHEGOU 11 MINUTOS ATRASADO.

FUNCIONÁRIO FOI AO BANHEIRO 6 VEZES.

Acabamos de atravessar uma fronteira.

Saímos de:

observabilidade

para:

vigilância.

A diferença não é apenas tecnológica.

É arquitetural, organizacional, jurídica, ética e cultural.


🛡️ CAPÍTULO 7 — REGISTRE EVENTOS, NÃO VIDAS

Aqui surge uma regra fundamental.

O Corporate SMF não deveria perguntar constantemente:

Onde está João?

Ele deveria registrar acontecimentos necessários para finalidades claramente estabelecidas.

Por exemplo, talvez não seja necessário armazenar:

VAGNER entrou no DATACENTER.

Podemos registrar:

actor=ENTITY-A91F27
zone=DATACENTER
action=ENTRY
result=GRANTED
timestamp=02:14:31

A relação:

ENTITY-A91F27 = pessoa real

pode ficar protegida em outro domínio.

Somente uma investigação devidamente autorizada poderia solicitar a resolução da identidade.

Isso cria algo muito interessante:

pseudonimização operacional.

O sistema consegue correlacionar:

ENTITY-A91F27

através de vários eventos sem necessariamente revelar imediatamente quem está por trás daquele identificador.


🧅 CAPÍTULO 8 — AS TRÊS CAMADAS DA CEBOLA DE ARC

Arc sugeriu dividir a arquitetura.

Desta vez o esqueleto acertou.

Camada 1 — EVIDENCE

Aqui registramos fatos.

event_id=9917821
actor=ENTITY-A91F27
device=DEVICE-882
action=READ
resource=DB:CUSTOMER
result=SUCCESS
timestamp=...

Nada de:

USER_IS_EVIL=YES

ou:

EMPLOYEE_SUSPICIOUS=87%

O evento deve dizer:

o que aconteceu.


Camada 2 — DETECTION

Agora podemos correlacionar acontecimentos.

Exemplo:

NEW DEVICE
+
UNUSUAL HOUR
+
PRIVILEGE ELEVATION
+
MASSIVE EXPORT

Resultado:

RISK_EVENT=R991

Observe a diferença.

Não estamos dizendo:

USER=CRIMINAL

Estamos dizendo:

ESTA SEQUÊNCIA MERECE INVESTIGAÇÃO.

Isso é profundamente diferente.


Camada 3 — INVESTIGATION

Somente uma investigação autorizada acessaria uma timeline ampliada:

RISK_EVENT
     ↓
RELATED EVENTS
     ↓
DEVICES
     ↓
IDENTITIES
     ↓
RESOURCES
     ↓
FULL TIMELINE

Assim separamos:

registro factual → detecção → investigação.


🕸️ CAPÍTULO 9 — ARC ENTRA NA DUNGEON DOS GRAFOS

Agora vem uma das partes mais interessantes.

Não pense apenas em linhas de log.

Pense em nós e relacionamentos.

Temos:

USER
DEVICE
TOKEN
GROUP
API
APPLICATION
QUEUE
CICS TRANSACTION
COBOL PROGRAM
DATABASE
ACCOUNT
PAYMENT

E relações:

USER ─uses────────► DEVICE

USER ─member_of───► GROUP

USER ─owns────────► TOKEN

TOKEN ─calls──────► API

API ─publishes────► MQ

MQ ─triggers──────► CICS

CICS ─executes────► COBOL

COBOL ─accesses───► DB2

Isso cria um Event Graph.

Mas podemos ir mais longe.

Podemos combinar:

IDENTITY GRAPH
+
PRIVILEGE GRAPH
+
RESOURCE GRAPH
+
EVENT GRAPH
+
TEMPORAL GRAPH

Aí a investigação muda completamente.

Em vez de procurar:

USER042

em 38 ferramentas diferentes, perguntamos:

Quais caminhos relacionam USER042 ao pagamento PAY991 durante a janela de 30 minutos anterior ao evento?

Isso é praticamente investigação forense como graph traversal.


💰 CAPÍTULO 10 — FRAUDE DEIXA DE SER UMA TRANSAÇÃO

Sistemas antifraude tradicionalmente podem observar algo como:

PIX
valor=800000
destino=NOVO
horario=02:11

E calcular risco.

Mas nosso Corporate SMF permite perguntar:

O que aconteceu antes desse PIX?

Talvez encontremos:

01:51 phishing
       ↓
01:55 attachment opened
       ↓
01:56 PowerShell
       ↓
02:01 credential/token
       ↓
02:03 VPN
       ↓
02:07 privilege elevation
       ↓
02:09 API
       ↓
02:10 MQ
       ↓
02:10 CICS
       ↓
02:10 COBOL
       ↓
02:11 PAYMENT

Agora a pergunta deixou de ser:

“Esta transação é estranha?”

Passou a ser:

“Qual história produziu esta transação?”

Essa mudança é gigantesca.


🏢 CAPÍTULO 11 — QUANDO O MUNDO FÍSICO ENCONTRA O DIGITAL

Controle físico pode enriquecer investigações.

Imagine:

02:03 VPN LOGIN
country=BR

e simultaneamente:

02:04 BADGE ENTRY
location=LONDON

Não precisamos concluir automaticamente:

FRAUDE!

Talvez exista explicação.

Credencial compartilhada.

Erro de relógio.

Sistema de badge mal integrado.

VPN.

Conta técnica.

Evento duplicado.

Mas podemos produzir:

ANOMALY:
incompatible physical/digital presence

O sistema apresenta a inconsistência.

O investigador decide o significado.

Essa separação é fundamental.


🔐 CAPÍTULO 12 — ZERO TRUST ENCONTRA O CORPORATE SMF

Antigamente poderíamos pensar:

LOGIN SUCCESS
     ↓
TRUSTED

Zero Trust muda isso.

A autenticação é apenas uma evidência.

Podemos ter:

IDENTITY      OK
DEVICE        OK
MFA           OK
LOCATION      UNUSUAL
RESOURCE      CRITICAL
BEHAVIOR      UNUSUAL
TRANSACTION   HIGH VALUE

A política poderia responder:

STEP-UP AUTHENTICATION

ou:

ALLOW + MONITOR

ou:

DENY

O Corporate Event Fabric fornece contexto para decisões desse tipo.


📦 CAPÍTULO 13 — NÃO COPIE O UNIVERSO

Outro princípio fundamental:

metadado antes de conteúdo.

No e-mail talvez precisemos registrar:

sender_hash
recipient_hash
message_id
attachment_hash
attachment_type
timestamp
delivery_result

Não precisamos necessariamente guardar:

BODY COMPLETO DO EMAIL

Para banco de dados, talvez seja suficiente:

actor
database
table
operation
rows
query_fingerprint

em vez de copiar:

CPF
SALARIO
ENDERECO
DADOS PESSOAIS

O Corporate SMF deveria saber que uma interação ocorreu.

Não necessariamente possuir uma cópia de tudo que participou dela.

Isso reduz:

  • exposição;

  • armazenamento;

  • impacto de vazamentos;

  • risco de privacidade;

  • complexidade regulatória.


🧊 CAPÍTULO 14 — HOT, WARM, COLD E ARCHIVE

Existe ainda um problema brutal:

volume.

Uma empresa grande pode gerar quantidades absurdas de eventos.

Portanto podemos trabalhar com camadas:

HOT
alta resolução
horas/dias

WARM
eventos normalizados
semanas/meses

COLD
eventos relevantes
meses/anos

ARCHIVE
retenção regulatória

E existe uma técnica particularmente interessante:

Progressive Evidence Preservation

Normalmente:

TELEMETRY=NORMAL

Surge um incidente:

RISK DETECTED

Então aumentamos temporariamente:

TELEMETRY=DETAILED

e preservamos evidências relacionadas.

É quase como colocar:

DISPLAY TRACE=ON

quando algo começa a cheirar estranho.

O velho operador de mainframe já conhece essa filosofia há décadas.


🧨 CAPÍTULO 15 — MAS E SE O ATACANTE APAGAR O LOG?

Arc levantou a mão.

— Mestre, se eu dominar o servidor, posso apagar meus rastros?

Muito bem observado.

Se o atacante controla:

SERVER01

não podemos depender exclusivamente de:

SERVER01.LOG

O ideal é transportar eventos rapidamente para outro domínio:

SERVER01
    │
    ▼
COLLECTOR
    │
    ▼
IMMUTABLE EVENT STORE

Podemos acrescentar mecanismos como:

append-only
WORM
hashing
signatures
restricted deletion
segregation of duties
independent credentials

E surge uma regra deliciosa:

O CORPORATE SMF PRECISA TER UM SMF DO CORPORATE SMF.

Sim.

Recursão.

😎

Se alguém alterar políticas de retenção:

registre.

Se alguém consultar uma investigação:

registre.

Se alguém exportar eventos:

registre.

Se alguém tentar apagar eventos:

registre.


🕵️ CAPÍTULO 16 — QUEM VIGIA O INVESTIGADOR?

Aqui mora um dos controles mais importantes.

Imagine:

SEARCH

employee=FULANO
period=365 days

Essa consulta é extremamente invasiva.

Portanto ela também deveria gerar evidência:

AUDIT_ACCESS

investigator=SECURITY17
case=INC82991
reason=FRAUD
scope=TIMELINE
timestamp=...

Para casos especialmente sensíveis poderíamos exigir:

SOC
 +
COMPLIANCE
 +
CASE-ID

antes de revelar identidade.

É o princípio das duas chaves.

Nenhum administrador deveria possuir sozinho o equivalente corporativo a:

SELECT *
FROM HUMANITY;

Arc tentou executar.

Resultado:

SQLCODE = -911

REASON:
DIVINE PRIVACY DEADLOCK

Eis nosso easter egg.


🧭 CAPÍTULO 17 — COMO COMEÇAR SEM CRIAR UM DATA LAKE DE LIXO

Erro clássico:

“Vamos coletar tudo!”

Seis meses depois:

PETABYTES DE LOG
+
FATURA DE CLOUD
+
NINGUÉM SABE O QUE PROCURAR

Comece com perguntas.

Passo 1 — Identidade

QUEM?

Passo 2 — Dispositivo

DE ONDE?

Passo 3 — Recurso

ACESSOU O QUÊ?

Passo 4 — Ação

FEZ O QUÊ?

Passo 5 — Resultado

FUNCIONOU?

Só depois acrescente contexto.

Uma implementação poderia evoluir assim:

FASE 1
IAM + Endpoint + VPN

FASE 2
Cloud + API + Network

FASE 3
Applications + Databases + MQ/Kafka

FASE 4
RACF + SMF + CICS + IMS + Db2

FASE 5
Payments + Email Metadata + Physical Access

Cada nova fonte precisa responder:

Qual pergunta de segurança, operação, auditoria ou investigação isso nos ajuda a responder?

Se a resposta for:

“Nenhuma, mas o log existe.”

Talvez não devamos ingeri-lo.


🪪 CAPÍTULO 18 — A DUNGEON MAIS DIFÍCIL: IDENTIDADE

João pode ser:

joao.silva
jsilva
JOSILVA
U883921
RACF=JSILVA
badge=192882
email=joao.silva@...

Tudo pode representar uma pessoa.

Mas:

APISRV1

pode representar uma aplicação.

E:

CERTIFICATE-X91

pode representar uma workload.

Precisamos distinguir:

HUMAN IDENTITY
SERVICE IDENTITY
DEVICE IDENTITY
WORKLOAD IDENTITY
APPLICATION IDENTITY

Daí surge o Identity Graph.

PERSON
 ├── RACF ID
 ├── CLOUD ID
 ├── EMAIL ID
 ├── BADGE ID
 └── DEVICE LOGIN

Enquanto:

APPLICATION
 ├── SERVICE ACCOUNT
 ├── CERTIFICATE
 ├── API KEY
 └── WORKLOAD ID

Sem essa resolução, correlação corporativa rapidamente vira caos.


⚠️ CAPÍTULO 19 — ANOMALIA NÃO É CULPA

Esse princípio merece letras garrafais:

UMA ANOMALIA É UMA PERGUNTA, NÃO UMA SENTENÇA.

Suponha:

login 03:00
+
new device
+
large export

Pode ser ataque.

Pode ser administrador trabalhando numa emergência.

Pode ser processo automatizado mal classificado.

Pode ser migração.

Pode ser teste.

Pode ser erro de relógio.

Pode ser falso positivo.

Portanto:

EVENT
   ↓
CORRELATION
   ↓
ANOMALY
   ↓
INVESTIGATION
   ↓
CONCLUSION

Nunca:

ANOMALY
   ↓
GUILTY

Essa distinção protege pessoas e melhora a própria segurança.


👁️ CAPÍTULO 20 — OBSERVABILIDADE NÃO É VIGILÂNCIA

Finalmente Arc compreendeu a diferença.

Observabilidade corporativa

Pergunta:

O que aconteceu com o sistema?

Características:

event-centric
resource-centric
purpose-limited
security-oriented
auditable

Vigilância corporativa

Pergunta:

O que esta pessoa está fazendo o tempo inteiro?

Características:

person-centric
continuous
open-ended
behavioral

Uma arquitetura saudável deveria possuir barreiras explícitas contra usos incompatíveis com sua finalidade.

O fato de ser tecnicamente possível inferir algo não significa que devamos fazê-lo.

Essa talvez seja a maior lição deste artigo.


💀 CAPÍTULO 21 — ARC FINALMENTE ENXERGA A DUNGEON INTEIRA

No final da investigação tínhamos:

              CORPORATE MEMORY

 IAM ───────────────┐
 Endpoint ──────────┤
 Network ───────────┤
 Cloud ─────────────┤
 API ───────────────┤
 Application ───────┤
 Database ──────────┼──► NORMALIZATION
 Payments ──────────┤          │
 Email Metadata ────┤          ▼
 Physical Access ───┤      EVENT GRAPH
 MQ/Kafka ──────────┤          │
 RACF/CICS/Db2 ─────┤          ▼
 SMF ───────────────┘     CORRELATION
                               │
                      ┌────────┴────────┐
                      ▼                 ▼
                  DETECTION       INVESTIGATION
                      │                 │
                      └────────┬────────┘
                               ▼
                            EVIDENCE

Mas poderíamos descrevê-lo ainda melhor:

CORPORATE SMF
      =
EVENT STORE
      +
IDENTITY GRAPH
      +
PRIVILEGE GRAPH
      +
RESOURCE GRAPH
      +
TEMPORAL GRAPH
      +
GOVERNANCE

E perceba a última palavra.

Governance.

Sem ela, construímos o Big Brother.

Com ela, podemos construir uma poderosa caixa-preta corporativa.


☕ EPÍLOGO — O QUE O MAINFRAME JÁ SABIA

Arc levantou-se diante do 3270.

Depois de atravessar IAM, endpoints, APIs, cloud, MQ, CICS, COBOL, Db2, pagamentos, controle físico, grafos e Zero Trust, finalmente compreendeu.

— Bellacosa-san, então o objetivo não é observar todo mundo?

— Não.

— Nem guardar tudo?

— Também não.

— Então qual é?

Olhei novamente para o SDSF.

A resposta estava ali desde o começo.

Quando alguma coisa importante acontecer, deixe evidência suficiente para reconstruir o que aconteceu.

Esse princípio atravessou décadas de computação.

No mainframe temos uma cultura fortíssima de registros operacionais.

No mundo distribuído estamos tentando recuperar essa visão através de logs estruturados, tracing, observabilidade, telemetria, SIEM, EDR, cloud audit, IAM e tantas outras tecnologias.

O desafio agora é conectá-las.

Não queremos perguntar:

O QUE O FUNCIONÁRIO FEZ DURANTE TODO O DIA?

Queremos conseguir perguntar:

O QUE EXPLICA ESTE INCIDENTE?

Então podemos reconstruir:

quem
 ↓
usou qual identidade
 ↓
em qual dispositivo
 ↓
obteve qual privilégio
 ↓
atravessou qual caminho
 ↓
chamou qual API
 ↓
publicou qual mensagem
 ↓
acionou qual transação CICS
 ↓
executou qual COBOL
 ↓
acessou qual registro Db2
 ↓
originou qual pagamento
 ↓
em qual instante

Esse é o verdadeiro poder do conceito.

O SMF corporativo não seria simplesmente outro SIEM.

Seria uma camada de memória e evidência capaz de conectar os mundos físico, distribuído, cloud e mainframe.

Uma espécie de gravador de voo da empresa.

Se o avião corporativo sofrer uma pane, queremos reconstruir os últimos acontecimentos.

Queremos saber quais controles funcionaram.

Quais falharam.

Qual identidade apareceu.

Qual privilégio foi utilizado.

Qual API foi chamada.

Qual mensagem entrou no MQ.

Qual transação chegou ao CICS.

Qual programa COBOL executou.

Qual registro mudou.

E qual pagamento saiu.

Mas não precisamos passar o voo inteiro espionando se o passageiro pediu café duas ou três vezes.

Arc colocou o elmo.

A dungeon estava encerrada.

Antes de sair, porém, digitou no terminal:

//ARCJOB   JOB CLASS=A,MSGCLASS=X
//STEP01   EXEC PGM=BIGBROTHER

O JES respondeu:

IEF452I ARCJOB - JOB NOT RUN - JCL ERROR

Arc olhou para mim.

— Errei a JCL?

— Não.

— Então? 

— O sistema tem governança.

Arc permaneceu alguns segundos em silêncio.

Então começou a rir.

E em algum dataset perdido do z/OS apareceu mais um registro.

Porque no mainframe...

até o esqueleto deixa rastro.

☕💀🖥️

Bellacosa Mainframe — porque observabilidade sem contexto é apenas uma montanha de logs; contexto sem governança pode virar vigilância; e um bom COBOLzeiro sabe que, quando a produção explode às 03:17 da manhã, a primeira pergunta continua sendo a mesma: “onde está o log?”

domingo, 6 de setembro de 2020

😆 Bellacosa Otaku Blog — Parte 24: Expressões de Humor, Piadas e Momentos Cômicos nos Animes 😆

Bellacosa Mainframe e o humor asiatico expressoes e piadas nos animes


 😆 Bellacosa Otaku Blog — Parte 24: Expressões de Humor, Piadas e Momentos Cômicos nos Animes 😆


😂 O idioma da risada e da diversão nos animes

(Versão Bellacosa: caretas exageradas, quedas inesperadas e piadas que atravessam a tela.)

Nos animes de comédia, shounen e slice of life, o japonês se transforma em uma linguagem viva de humor.
Cada palavra, som ou expressão cria risadas instantâneas e momentos inesquecíveis.
Vamos explorar as mais icônicas! 🎉


🤪 1. ばか (baka)

Tradução: “Idiota / tonto.”
👉 Palavra clássica de comédia — usada para provocar, brincar ou exagerar situações engraçadas.

📺 Anime vibe: Naruto, One Piece, Gintama.
💬 Exemplo: “Baka! Como você conseguiu fazer isso?!” 🤦‍♀️


😆 2. えーっ (eeh!)

Tradução: “O quê? / Sério?”
👉 Exclamação para surpresa exagerada ou incredulidade cômica.

📺 Anime vibe: Nichijou, Gintama, K-On!.
💬 Exemplo: “Eeh!? Você comeu tudo sozinho?!” 🍰


🤣 3. ドンマイ (donmai)

Tradução: “Não se preocupe / tudo bem.”
👉 Usada de forma cômica para consolar alguém após falha ou trapalhada.

📺 Anime vibe: One Piece, Haikyuu!!, Nichijou.
💬 Exemplo: “Donmai! Todo mundo já errou alguma vez.” 😅


😂 4. わはは (wahaha)

Tradução: Risada alta e exagerada.
👉 Onomatopeia clássica de risada cômica ou triunfante.

📺 Anime vibe: Gintama, One Piece.
💬 Exemplo: “Wahaha! Eu sabia que daria certo!” 😆


😳 5. なんでやねん (nande ya nen)

Tradução: “Que isso?! / Mas que diabos?!”
👉 Expressão típica do humor estilo “boke & tsukkomi” (piada de choque e resposta).

📺 Anime vibe: Gintama, Osomatsu-san.
💬 Exemplo: “Nande ya nen! Você jogou meu bolo no chão?!” 🍰


🤯 6. ありえない (arienai)

Tradução: “Impossível / não acredito!”
👉 Usada em situações absurdas ou totalmente inesperadas, gerando efeito cômico.

📺 Anime vibe: Nichijou, One Piece.
💬 Exemplo: “Arienai! Como ele conseguiu escapar dessa?” 😱


🤭 7. ぎゃはは (gyahaha)

Tradução: Risada mais exagerada e caricata que wahaha.
👉 Usada para piadas absurdas ou vitórias cômicas.

📺 Anime vibe: Gintama, One Piece.
💬 Exemplo: “Gyahaha! Caímos todos na armadilha dele!” 🤣


😜 8. やばい (yabai)

Tradução: “Nossa! / Que loucura!”
👉 Palavra versátil: pode expressar perigo, surpresa ou algo engraçado.

📺 Anime vibe: Haikyuu!!, One Piece, Nichijou.
💬 Exemplo: “Yabai! Ele acabou de quebrar tudo de novo!” ⚡


🤔 9. ちょっと待って (chotto matte)

Tradução: “Espera um pouco!”
👉 Usada em comédia para reagir a situações absurdas ou inesperadas.

📺 Anime vibe: Nichijou, Gintama.
💬 Exemplo: “Chotto matte… como você entrou aqui vestido assim?” 😳


😹 10. ふざけんな (fuzakenna)

Tradução: “Não brinca comigo / tá de brincadeira?”
👉 Expressão cômica de irritação exagerada, geralmente após piada ou trapalhada.

📺 Anime vibe: One Piece, Gintama, Nichijou.
💬 Exemplo: “Fuzakenna! Isso não pode estar acontecendo!” 🤪


🏮 Curiosidades Bellacosa:

  • Palavras de surpresa (eeh!, arienai, yabai) criam efeito cômico imediato, intensificando caretas e gestos.

  • Gritos e risadas (wahaha, gyahaha) são essenciais para o timing da comédia em animes.

  • Expressões como baka, nande ya nen e fuzakenna funcionam como ganchos de humor, geralmente combinadas com exagero físico ou reação visual. 😂


🌟 Dica Bellacosa:

  • Observe entonação, expressão facial e timing: no humor japonês, o silêncio ou exagero pode ser tão engraçado quanto a palavra dita.

  • Onomatopeias de risada e surpresa reforçam a energia cômica da cena.

  • Memorizar essas expressões ajuda a entender piadas, caretas e exageros típicos de animes. 😆


🌸 Conclusão Bellacosa:

As expressões de humor nos animes transformam o japonês em uma linguagem de risadas, exageros e diversão pura.
Cada palavra, grito ou careta cria momentos que fazem rir sem precisar de tradução literal, conectando o público à alegria dos personagens.

“Baka! Nande ya nen! Wahaha… que situação absurda!” 😆🎉

sábado, 5 de setembro de 2020

☕🚀 Como Tornar Seu Blogspot Compatível com o IndexNow – Guia Passo a Passo

 

Bellacosa Mainframe e o indexnow

☕🚀 Como Tornar Seu Blogspot Compatível com o IndexNow – Guia Passo a Passo

Padawan, antes de tudo existe uma verdade importante:

O Blogger (Blogspot) não possui suporte nativo ao protocolo IndexNow.

Diferente de WordPress, Joomla ou sites próprios, você não consegue instalar plugins ou alterar o backend do Blogger para enviar notificações automáticas aos buscadores.

Mas existem alternativas para ficar o mais próximo possível do conceito do IndexNow.


O que é necessário para usar IndexNow?

O protocolo exige:

  1. Um domínio próprio

  2. Acesso ao servidor

  3. Upload de um arquivo de verificação

  4. Capacidade de enviar requisições HTTP para os buscadores

O Blogger oferece apenas parcialmente esses recursos.


Passo 1 – Usar Domínio Próprio

Em vez de:

meublog.blogspot.com

Use:

www.seudominio.com.br

No Blogger:

Configurações

→ Publicação

→ Domínio personalizado

Configure seu domínio.

Benefícios:

✅ Mais profissional

✅ Melhor SEO

✅ Permite verificações adicionais


Passo 2 – Registrar o Site no Bing Webmaster Tools

O Bing é um dos criadores do IndexNow.

Acesse:

Bing Webmaster Tools

Faça login.

Adicione seu site.


Passo 3 – Registrar o Site no Google Search Console

Acesse:

Google Search Console

Adicione seu blog.

Envie o sitemap:

https://seudominio.com/sitemap.xml

ou

https://seublog.blogspot.com/sitemap.xml

Passo 4 – Habilitar Sitemap do Blogger

O Blogger gera automaticamente:

/sitemap.xml

Teste:

https://seublog.blogspot.com/sitemap.xml

ou

https://www.seudominio.com/sitemap.xml

Se abrir, está funcionando.


Passo 5 – Forçar Indexação Manual

Sempre que publicar um artigo:

Google

No Search Console

→ Inspeção de URL

→ Solicitar Indexação


Bing

No Webmaster Tools

→ URL Submission

→ Enviar URL

Isso reproduz parcialmente o comportamento do IndexNow.


Passo 6 – Criar Ping Automático

Após publicar um artigo, acesse:

Bing

https://www.bing.com/ping?sitemap=https://www.seudominio.com/sitemap.xml

Google

https://www.google.com/ping?sitemap=https://www.seudominio.com/sitemap.xml

Embora o Google tenha reduzido a importância desse método, ainda ajuda em alguns cenários.


Passo 7 – Criar Automação com Make ou Zapier

Você pode automatizar:

Evento

Novo post no Blogger

↓

Ação

Enviar URL ao Bing

↓

Ação

Atualizar sitemap

↓

Ação

Enviar notificação

Ferramentas:


Passo 8 – Utilizar Cloudflare

Se você possui domínio próprio:

  1. Coloque o domínio atrás da Cloudflare.

  2. Ative recursos de cache e desempenho.

  3. Configure regras de sitemap.

Site oficial:

Cloudflare


Passo 9 – Publicar o Sitemap no robots.txt

No Blogger:

Configurações

↓

Rastreadores e Indexação

↓

robots.txt personalizado

Adicione:

User-agent: *
Allow: /

Sitemap: https://www.seudominio.com/sitemap.xml

Passo 10 – Acompanhar Cobertura

Verifique semanalmente:

Google

  • URLs indexadas

  • Erros

  • Cobertura

Bing

  • Crawling

  • Indexação

  • Backlinks


Solução Avançada (Mais Próxima do IndexNow)

Se você quiser IndexNow de verdade, a melhor estratégia é:

Blogspot
      ↓
Domínio próprio
      ↓
Cloudflare
      ↓
Worker Cloudflare
      ↓
IndexNow API

Nesse modelo, um Worker da Cloudflare detecta atualizações e envia notificações ao protocolo IndexNow.

É uma solução mais técnica, mas permite que um Blogspot participe do ecossistema IndexNow mesmo sem suporte nativo.

Resumo para o Padawan Mainframe

Se o Blogger fosse um sistema CICS:

  • Sitemap = catálogo de transações

  • Googlebot = operador consultando periodicamente

  • IndexNow = WTO enviando mensagem imediatamente ao operador

  • Search Console = SDSF da internet

  • Bing Webmaster = console de monitoramento

O Blogger não fala IndexNow nativamente, mas com domínio próprio, Search Console, Bing Webmaster, sitemap correto e automações externas, você consegue chegar muito perto do mesmo resultado prático em SEO. ☕🚀


sexta-feira, 4 de setembro de 2020

CICS Conversacional e Pseudo-Conversacional - Parte II

 

Bellacosa Mainframe e a conversação em cics parte II

☕ Um Café no Bellacosa Mainframe

CICS Conversacional e Pseudo-Conversacional

Parte 2 — Escalabilidade, COMMAREA, Channels, Web Services e Boas Práticas

"Na primeira parte aprendemos que programas conversacionais gostam de ficar esperando o usuário pensar, enquanto programas pseudo-conversacionais executam como ninjas do IBM Z: aparecem, trabalham, desaparecem e retornam apenas quando necessários. Agora vamos entender por que a IBM praticamente transformou a pseudo-conversação em padrão de mercado."

Pegue mais um café, abra o CEDF, deixe o CEMT pronto e vamos continuar nossa jornada.


Os problemas do modelo Conversacional

O modelo conversacional é elegante.

É simples.

É intuitivo.

Mas infelizmente é extremamente caro.

Vamos imaginar um banco.

Cenário

50.000 usuários.

Cada usuário demora:

20 segundos

para preencher uma tela.


Aplicação Conversacional

Programa fica ativo.

Task permanece viva.

TCB permanece associado.

TCA permanece ocupada.

Storage continua reservado.

EIB continua residente.

Tudo isso...

Durante vinte segundos.


Resultado

Pouca escalabilidade.

Maior uso de CPU.

Maior consumo de memória.

Possibilidade de gargalos.


O fenômeno Think Time

Um dos maiores inimigos do CICS.

Think Time.

Tempo em que o usuário está apenas pensando.

Exemplos:

Lendo uma tela.

Pegando um documento.

Atendendo telefone.

Procurando CPF.

Conversando com cliente.


Conversacional

Think Time = recursos desperdiçados


Pseudo

Think Time = recursos liberados


A IBM fez uma escolha inteligente

Ao invés de esperar.

Finaliza a task.

Salva contexto.

Cria nova task depois.


Visualmente:

Task 1

Mostra tela

RETURN


=================


Usuário pensa


=================


Task 2


Recebe dados


Processa


RETURN

Múltiplas telas

Poucos desenvolvedores COBOL iniciantes percebem.

Uma pseudo-conversação pode navegar por dezenas de telas.

Exemplo:

Menu

Consulta

Inclusão

Alteração

Confirmação

Resumo

Help

Paginação


Exemplo

MENU

↓

PF5

↓

CONSULTA

↓

ENTER

↓

DETALHE

↓

PF3

↓

MENU


Tudo utilizando.

COMMAREA.


COMMAREA

Provavelmente um dos conceitos mais importantes do CICS.

Ela guarda estado.

Entre uma task.

E outra.


Exemplo:


01 WS-COMM.

   05 WS-MODO PIC X.

   05 WS-PAGINA PIC 99.

   05 WS-CPF PIC 9(11).

   05 WS-NOME PIC X(30).


Limitação

COMMAREA possui limite.

64 KB.


Antigamente

Era suficiente.


Hoje.

JSON.

REST.

SOAP.

XML.

JWT.

Podem ultrapassar facilmente.

64 KB.


Surge Channels e Containers

Introduzidos para resolver isso.


COMMAREA

64 KB


Container

Gigabytes.


Exemplo


EXEC CICS PUT CONTAINER

CONTAINER('CLIENTE')

FROM(WS-DADOS)

END-EXEC



Recuperando.


EXEC CICS GET CONTAINER

CONTAINER('CLIENTE')

INTO(WS-DADOS)

END-EXEC



Qual utilizar?

Sistemas antigos

COMMAREA


Novos projetos

Channels

Containers


EIBCALEN

Nos projetos antigos.

Era rei.




IF EIBCALEN = ZERO


PERFORM PRIMEIRA-VEZ


ELSE


PERFORM RETORNO


END-IF



Pseudo-Conversação com BMS

Fluxo típico.


SEND MAP

↓

RETURN

↓

Usuário ENTER

↓

Nova Task

↓

RECEIVE

↓

DB2

↓

SEND

↓

RETURN


Web Services no CICS

Muitos acreditam.

Que CICS é apenas 3270.

Isso está muito longe da realidade.


CICS suporta.

SOAP.

REST.

JSON.

XML.

MQ.

JMS.

TCP/IP.

HTTP.

HTTPS.


Exemplo

Angular

↓

API

↓

zOS Connect

↓

CICS

↓

COBOL

↓

DB2


Visualmente



Browser


   │


REST API


   │


zOS Connect


   │


CICS


   │


COBOL


   │


DB2



O COBOL muda?

Quase nada.


Exemplo


PERFORM VALIDA


PERFORM CONSULTA-DB2


PERFORM RETORNA-DADOS




Interface muda.

Negócio permanece.


SOAP

Muito usado.

Seguradoras.

Governo.

ERP.


REST

Dominante.

OpenAPI.

Swagger.

JSON.


BMS ainda é importante?

Sim.

Muito.


Milhares de aplicações.

Continuam em produção.


Além disso.

BMS ensina.

Arquitetura.

Separação de responsabilidades.

Persistência de contexto.

Gerenciamento de estado.


Problemas comuns

MAPFAIL

Usuário apertou PF3.

Sem alterar dados.


INVREQ

Sequência incorreta.


LENGERR

Área pequena.


ASRA

S0C7.

S0C4.

S0CB.


Como debugar?

CEDF.

Excelente.



CEDF ON



Programa para.

Comando por comando.


CECI

Muito útil.


Exemplo


CECI RECEIVE MAP



CEMT

Consultar recursos.



CEMT I TASK




CEMT I PROG




CEMT I TRAN



Boas práticas

Sempre usar pseudo-conversação


Utilizar COMMAREA pequena


Preferir Containers

Projetos novos.


Não salvar tabelas grandes

Na COMMAREA.


Usar MDT apenas quando necessário


Utilizar DATAONLY

Reduz tráfego.


Evitar múltiplos SEND

Na mesma task.


Validar EIBRESP

Sempre.


Exemplo



IF EIBRESP NOT = DFHRESP(NORMAL)

PERFORM TRATA-ERRO


END-IF



Curiosidade Bellacosa Mainframe

Alguns bancos possuem aplicações pseudo-conversacionais escritas em 1986.

Elas foram migradas.

De 3090.

Para 9672.

Para z900.

Para z990.

Para z9.

Para z10.

Para z14.

Para z16.

E continuam praticamente inalteradas.


Easter Egg Mainframe

Nos anos 80.

Muitos desenvolvedores colocavam comentários curiosos.

Exemplo.



* MAY THE COBOL BE WITH YOU


Ou.



* DO NOT TOUCH


* WORKS SINCE 1987


Ou o clássico.



* IF YOU CHANGE THIS


* BUY COFFEE FOR THE TEAM



Continua...

Na Parte 3 veremos:

✔ Web Open Interface (WOI);

✔ CICS Event Processing;

✔ Programas COBOL completos;

✔ Pseudo-conversação com múltiplos MAPSETs;

✔ BMS avançado;

✔ Channels versus TSQ;

✔ Segurança RACF;

✔ Web Services SOAP e REST detalhados;

✔ Observabilidade moderna;

✔ OpenTelemetry;

✔ Curiosidades e easter eggs pouco conhecidos do universo CICS.

quinta-feira, 3 de setembro de 2020

REXX : Quando um Padawan Descobre que a Linguagem Mais Simples do Mainframe Também Pode Ser o Sabre de Luz que Automatiza uma Galáxia Inteira

 

Bellacosa Mainframe apresenta mais detalhes sobre o REXX Mainframe

☕ Um Café no Bellacosa Mainframe

REXX sem Mistérios para Programadores COBOL

Quando um Padawan Descobre que a Linguagem Mais Simples do Mainframe Também Pode Ser o Sabre de Luz que Automatiza uma Galáxia Inteira

"Não entre em pânico."
— O Guia do Mochileiro das Galáxias


Introdução — A toalha, o terminal 3270 e o estranho planeta chamado z/OS

Existe um antigo conselho interestelar que aparece em letras garrafais na capa do Guia do Mochileiro das Galáxias:

NÃO ENTRE EM PÂNICO.

Curiosamente, esse também deveria ser o primeiro conselho entregue a qualquer programador COBOL que acaba de conseguir seu primeiro acesso ao ambiente IBM Z.

Você finalmente recebe seu usuário.

TSO LOGON

A tela fica preta.

Letras verdes.

Nenhum botão.

Nenhum mouse.

Nenhuma janela.

Nenhum VS Code.

Nenhum IntelliJ.

Nenhum Visual Studio.

Você olha para aquilo e pensa:

"Será que voltei para 1984?"

Não.

Na verdade, você acabou de entrar em uma das maiores civilizações computacionais da história da humanidade.

O IBM Z é como a cidade de Megabrantis, do Guia do Mochileiro: gigantesca, viva, absurdamente organizada e funcionando sem que a maioria das pessoas faça ideia de como.

Enquanto bilhões de pessoas passam cartões, fazem PIX, compram passagens aéreas, consultam seguros ou movimentam contas bancárias, milhares de programas COBOL trabalham silenciosamente.

Mas existe um personagem pouco conhecido.

Um verdadeiro robô de manutenção.

Um droide.

Um ajudante.

Um companheiro inseparável.

Seu nome é:

REXX.

E hoje vamos descobrir por que essa pequena linguagem continua sendo uma das ferramentas mais úteis do universo IBM Z.

Pegue sua toalha.

Vamos embarcar.


Capítulo 1 — O planeta onde nasceu o REXX

Imagine o universo computacional dos anos 70.

Não existia:

  • GitHub

  • Python

  • PowerShell

  • Bash moderno

  • Docker

  • Kubernetes

  • DevOps

Os administradores realizavam praticamente tudo manualmente.

Era comum repetir comandos centenas de vezes.

Foi então que Mike Cowlishaw, pesquisador da IBM, teve uma ideia aparentemente simples:

"E se existisse uma linguagem extremamente fácil que automatizasse essas tarefas?"

Assim nasceu o REstructured EXtended eXecutor, ou simplesmente REXX.

O objetivo nunca foi competir com COBOL.

Nunca foi substituir PL/I.

Nem Assembler.

Nem C.

REXX nasceu para uma missão diferente:

Evitar que seres humanos façam trabalho repetitivo.

Em outras palavras...

Enquanto COBOL constrói bancos,

REXX ajuda os bancos a continuarem funcionando.


Capítulo 2 — Arthur Dent encontrando um terminal 3270

Imagine Arthur Dent chegando ao CPD.

Ele pergunta:

— Onde fica o botão "Executar"?

O operador responde:

— Aqui usamos JCL.

Arthur pergunta:

— Onde fica o Explorer?

O operador responde:

— Aqui usamos ISPF.

Arthur pergunta:

— Onde está o mouse?

Silêncio absoluto.

Nesse momento surge Ford Prefect.

Ele entrega uma toalha.

Depois um manual.

Depois diz:

"Aprenda REXX."

Arthur pergunta:

— Mas por quê?

Ford sorri.

Porque daqui a pouco você vai precisar executar o mesmo comando 500 vezes.


Capítulo 3 — COBOL constrói cidades. REXX organiza o trânsito.

Essa é provavelmente a melhor analogia.

Imagine uma metrópole.

COBOL constrói:

  • bancos

  • seguradoras

  • folha de pagamento

  • cartões

  • sistemas fiscais

  • aposentadorias

Já REXX faz outra coisa.

Ele liga os semáforos.

Controla o trânsito.

Verifica se alguma avenida foi interditada.

Aciona equipes.

Produz relatórios.

Organiza.

Automatiza.

Ele não constrói o prédio.

Ele faz a cidade funcionar.


Capítulo 4 — O maior mal-entendido dos iniciantes

Muitos iniciantes perguntam:

"Posso aprender só REXX?"

Tecnicamente?

Pode.

Mas seria como estudar apenas a chave inglesa e nunca aprender mecânica.

A ferramenta não substitui o conhecimento.

REXX aumenta sua produtividade.

Mas ele depende do ambiente.

Sem entender:

  • datasets

  • JES2

  • VSAM

  • TSO

  • ISPF

  • JCL

...REXX vira apenas uma coleção de comandos.


Capítulo 5 — A verdadeira hierarquia do conhecimento

A imagem apresentada resume muito bem uma ordem lógica de evolução para quem deseja construir uma carreira sólida no ecossistema IBM Z.

Nível 1 — Aprenda a língua do planeta

Antes de qualquer automação, compreenda como o sistema operacional funciona:

  • z/OS

  • TSO

  • ISPF

  • JES

  • SDSF

  • JCL

  • VSAM

  • Catálogos

  • GDGs

  • Bibliotecas PDS e PDSE

Sem isso, é como tentar pilotar uma nave sem conhecer o painel de instrumentos.


Nível 2 — Aprenda COBOL

Agora você começa a entender como a economia da galáxia funciona.

Os sistemas críticos são escritos principalmente em COBOL porque precisam ser:

  • confiáveis;

  • auditáveis;

  • estáveis;

  • rápidos;

  • duradouros.

Curiosidade: existem programas COBOL em produção com mais de 40 anos que continuam processando milhões de transações diariamente.


Nível 3 — Domine SQL e Db2

Quase nenhum sistema corporativo vive isolado.

Os dados precisam ser consultados, atualizados e protegidos.

Aprender SQL é como aprender a conversar com a memória coletiva da organização.


Nível 4 — Descubra o CICS

Se COBOL é o coração, o CICS é o sistema circulatório.

É ele quem permite milhares de transações online simultâneas.

Cada ENTER pressionado em um terminal 3270 pode representar uma conversa entre o usuário e dezenas de programas COBOL.


Nível 5 — Agora sim, REXX

Somente agora você percebe o verdadeiro potencial.

Porque você já conhece:

  • jobs;

  • datasets;

  • mensagens;

  • bibliotecas;

  • comandos TSO;

  • painéis ISPF.

Então o REXX deixa de ser uma linguagem e se transforma em um multiplicador de produtividade.


Nível 6 — O universo moderno

Aqui entram:

  • Python;

  • Git;

  • DevOps;

  • APIs REST;

  • Jenkins;

  • Zowe;

  • OpenShift;

  • Docker;

  • Ansible;

  • Inteligência Artificial.

O profissional moderno não abandona o legado.

Ele conecta o legado ao futuro.


Capítulo 6 — O poder escondido do REXX

Um bom script pode:

✔ listar milhares de datasets;

✔ procurar membros em centenas de bibliotecas;

✔ enviar comandos ao TSO;

✔ conversar com o ISPF;

✔ acessar o SDSF;

✔ verificar jobs;

✔ gerar relatórios;

✔ automatizar auditorias;

✔ criar menus personalizados;

✔ chamar programas COBOL;

✔ executar utilitários do z/OS.

Tudo isso em poucas linhas.


Capítulo 7 — O Babel Fish do Mainframe

No Guia do Mochileiro existe o famoso Peixe Babel, capaz de traduzir qualquer idioma.

No mainframe, o REXX desempenha um papel parecido.

Ele consegue "conversar" com diferentes componentes do sistema por meio de ambientes (ADDRESS) especializados.

Por exemplo:

  • ADDRESS TSO para emitir comandos do TSO;

  • ADDRESS ISPEXEC para controlar o ISPF;

  • ADDRESS SDSF para consultar jobs e filas;

  • ADDRESS SYSCALL para interagir com o UNIX System Services (USS);

  • ADDRESS COMMAND para comandos do sistema.

Essa capacidade faz do REXX uma espécie de tradutor universal entre o programador e o ecossistema do z/OS.


Capítulo 8 — Os Vogons da Automação

No universo de Douglas Adams, os Vogons são burocratas que adoram formulários intermináveis.

Todo operador de mainframe já enfrentou um equivalente moderno:

  • executar o mesmo comando dezenas de vezes;

  • conferir manualmente centenas de jobs;

  • localizar membros espalhados por várias PDS;

  • comparar listas enormes de datasets.

É aí que entra o REXX.

Em vez de repetir o trabalho manualmente, você escreve um script uma única vez.

Na próxima execução, ele realiza a tarefa em segundos.

O trabalho repetitivo desaparece, e sobra tempo para analisar resultados e resolver problemas reais.


Capítulo 9 — Easter Eggs do universo IBM Z

🥚 Easter Egg 1

A linguagem REXX foi criada para ser lida quase como inglês simples.

Muitos scripts parecem instruções escritas em linguagem natural.


🥚 Easter Egg 2

Grande parte das ferramentas internas desenvolvidas por equipes de infraestrutura em bancos utiliza REXX nos bastidores.

O usuário nem percebe.


🥚 Easter Egg 3

Diversos ambientes corporativos possuem scripts escritos há décadas que continuam funcionando sem alterações significativas.

Essa estabilidade é uma das razões para o respeito conquistado pelo REXX.


🥚 Easter Egg 4

Existem macros ISPF extremamente sofisticadas escritas em REXX que economizam milhares de horas de trabalho ao longo dos anos.


🥚 Easter Egg 5

Ansible, Python e outras ferramentas modernas frequentemente coexistem com REXX.

Em muitos projetos, eles trabalham juntos em vez de competir.


Capítulo 10 — Um roteiro de estudos digno de um mochileiro interestelar

Se eu pudesse entregar um "Guia do Viajante do Mainframe" para um iniciante, ele teria esta sequência:

  1. Aprenda conceitos básicos de computadores e sistemas operacionais.

  2. Entenda a arquitetura do IBM Z.

  3. Estude JCL.

  4. Explore TSO e ISPF.

  5. Aprenda SDSF e JES.

  6. Conheça VSAM e organização de datasets.

  7. Domine COBOL.

  8. Estude SQL e Db2.

  9. Aprenda CICS.

  10. Descubra REXX.

  11. Aprenda Git.

  12. Estude Zowe.

  13. Conheça Python.

  14. Explore APIs REST.

  15. Aprenda Ansible e automação moderna.

  16. Estude CI/CD e DevOps para IBM Z.

  17. Experimente ferramentas de IA aplicadas ao desenvolvimento e à operação.

Cada etapa fortalece a anterior.

Não pule fundamentos.


Capítulo 11 — A toalha do Programador COBOL

No Guia do Mochileiro, a toalha é o objeto mais útil do universo.

No IBM Z, sua "toalha" é composta por três itens:

  • curiosidade para aprender;

  • disciplina para estudar continuamente;

  • humildade para perguntar quando não souber.

Esses três elementos valem mais do que decorar dezenas de comandos.


Conclusão — A resposta para a pergunta inicial

Vale a pena aprender REXX?

A resposta é um sonoro sim.

Mas a pergunta mais importante é outra:

Quando aprender REXX?

A melhor resposta é:

Depois que você compreender os fundamentos do ecossistema IBM Z.

Assim, cada script deixará de ser apenas um conjunto de instruções e passará a representar conhecimento aplicado sobre o funcionamento do sistema.

No universo Bellacosa Mainframe, gosto de imaginar o IBM Z como a nave Coração de Ouro. O COBOL é seu poderoso motor de improbabilidade, responsável por mover os processos que sustentam bancos, seguradoras e governos. O Db2 guarda a memória da viagem, o CICS mantém o contato com bilhões de passageiros, o JCL define os planos de voo e o z/OS governa toda a nave.

E o REXX?

O REXX é Marvin, o androide paranoico — silencioso, aparentemente modesto, mas capaz de resolver em segundos tarefas que consumiriam horas de trabalho humano. Quem aprende a conversar com ele descobre um aliado fiel para automatizar, investigar e manter a galáxia mainframe funcionando.

No fim da jornada, o maior segredo não é escolher entre legado e modernidade. É compreender que o futuro pertence aos profissionais capazes de unir ambos. Aprenda COBOL para entender o coração dos sistemas, domine Db2 e CICS para compreender o fluxo dos negócios, use REXX para automatizar o cotidiano e abrace Python, Git, APIs, DevOps e Inteligência Artificial para construir a próxima geração de soluções.

Como diria o Guia do Mochileiro das Galáxias:

"Não entre em pânico."

No IBM Z, basta levar sua toalha, abrir o ISPF e lembrar que todo grande Mestre Jedi do Mainframe começou exatamente onde você está agora: diante de uma tela 3270 piscando, imaginando qual seria o primeiro comando da aventura. E talvez, escondido em algum membro de uma antiga PDS, exista um pequeno script REXX esperando para mostrar que, às vezes, as ferramentas mais discretas são justamente aquelas que mantêm uma galáxia inteira em funcionamento.

quarta-feira, 2 de setembro de 2020

🧝‍♀️ GALADRIEL E O ESPELHO DE PROMETHEUS

 

Bellacosa Mainframe apresenta o Prometheus

☕ Um Café no Bellacosa Mainframe

🧝‍♀️ GALADRIEL E O ESPELHO DE PROMETHEUS

Métricas, exporters, targets, PromQL, Grafana, Alertmanager, observabilidade e a antiga arte de descobrir que a produção estava morrendo antes que o telefone tocasse.

Há sistemas que anunciam sua queda com trombetas.

Há outros que simplesmente morrem.

E existem os mais perigosos: aqueles que continuam aparentemente vivos enquanto, lentamente, alguma coisa começa a apodrecer por dentro.

Uma fila cresce. A latência aumenta. Uma aplicação começa a devolver mais erros. Um processo batch demora alguns minutos a mais todos os dias. A CPU parece normal. O CICS continua respondendo. O Db2 está UP. Nenhum job terminou com CC 0012.

Ainda assim, alguma coisa está errada.

Se estivéssemos em Lothlórien, talvez Galadriel nos conduzisse até seu espelho e dissesse:

“O espelho mostra muitas coisas. Coisas que foram, coisas que são e algumas coisas que ainda podem acontecer.”

No nosso reino, entretanto, não temos o Espelho de Galadriel.

Temos Prometheus.

E talvez isso seja até melhor, porque Prometheus não trabalha com profecias.

Ele trabalha com métricas.



🎬 PRÓLOGO — GALADRIEL OLHA PARA PRODUÇÃO

Imagine que você seja um programador COBOL iniciante.

Você escreveu seu programa, compilou, link-editou, submeteu o JCL e recebeu:

IEF142I JOB001 STEP01 - STEP WAS EXECUTED - COND CODE 0000

Maravilha!

Funcionou.

Só existe um pequeno problema.

Isso não significa que o sistema esteja saudável.

Um programa pode terminar com CC 0000 e consumir recursos demais.

Uma transação pode funcionar e levar quatro segundos.

Um serviço pode estar disponível enquanto 8% das requisições estão falhando.

Uma fila MQ pode estar funcionando perfeitamente enquanto cresce mais rapidamente do que os consumidores conseguem processá-la.

Uma aplicação pode estar tecnicamente UP e praticamente inutilizável.

É nesse momento que precisamos distinguir duas ideias:

FUNCIONAR

e

ESTAR SAUDÁVEL

São coisas diferentes.

Prometheus existe justamente para nos ajudar a observar essa segunda dimensão.



🧝 CAPÍTULO 1 — “VOCÊ NÃO PODE CORRIGIR AQUILO QUE NÃO CONSEGUE VER”

Antes de estudar Prometheus, precisamos falar de observabilidade.

Monitoramento tradicional normalmente pergunta:

CPU está alta?

Memória acabou?

Servidor está UP?

Banco está disponível?

Fila está cheia?

São perguntas importantes.

Observabilidade tenta responder perguntas maiores:

O que aconteceu?

Quando começou?

Onde aconteceu?

Quem foi afetado?

Por que aconteceu?

Está piorando?

Qual componente provavelmente participa do problema?

Uma forma didática muito usada para apresentar observabilidade fala em três grandes sinais:

METRICS
LOGS
TRACES

Podemos pensar assim:

Metrics mostram numericamente o comportamento do sistema.

Logs registram acontecimentos e detalhes.

Traces acompanham o caminho de uma operação através de vários componentes.

Imagine uma transação:

Cliente
   ↓
API
   ↓
MQ
   ↓
CICS
   ↓
COBOL
   ↓
Db2

Uma métrica pode dizer:

latência p95 = 2,4 segundos

O log pode mostrar:

SQLCODE -911

E um trace pode revelar que a maior parte daqueles 2,4 segundos aconteceu no acesso ao banco.

Agora começamos a enxergar o sistema.



💍 CAPÍTULO 2 — OS QUATRO SINAIS DOURADOS

Na literatura de SRE aparece frequentemente a ideia dos Four Golden Signals:

Latency
Traffic
Errors
Saturation

Para quem vem de mainframe, os nomes podem ser modernos, mas o raciocínio é muito familiar.

Latency

Quanto tempo algo demora?

CICS transaction response time
API response time
SQL elapsed time
batch elapsed time

Traffic

Quanto trabalho estamos recebendo?

transactions/sec
requests/sec
messages/sec
jobs/hour

Errors

Quanto está falhando?

HTTP 500
ABENDs
SQL errors
MQ failures
rejected transactions

Saturation

Quanto estamos nos aproximando do limite?

CPU
memory
connections
threads
queue depth
storage

Aqui existe uma lição importante.

CPU alta não significa automaticamente problema.

Imagine:

CPU      = 91%
Latency  = normal
Errors   = normal
Traffic  = altíssimo

Talvez a máquina simplesmente esteja trabalhando bastante.

Agora imagine:

CPU      = 42%
Latency  = 8 segundos
Errors   = crescendo
Traffic  = normal

Temos provavelmente algo muito mais preocupante.

O número isolado raramente conta a história inteira.



🔥 CAPÍTULO 3 — AFINAL, O QUE É PROMETHEUS?

Prometheus é um sistema open source para monitoramento e alertas baseado principalmente em métricas de séries temporais.

Podemos resumir sua missão assim:

COLETAR
   ↓
ARMAZENAR
   ↓
CONSULTAR
   ↓
AVALIAR
   ↓
ALERTAR

A palavra importante aqui é:

tempo.

Imagine simplesmente:

CPU = 84%

Esse número tem pouca informação.

Agora:

10:00  CPU 31%
10:01  CPU 38%
10:02  CPU 47%
10:03  CPU 63%
10:04  CPU 84%
10:05  CPU 96%

A situação mudou completamente.

Não temos apenas um valor.

Temos uma história.

E Prometheus é, em grande parte, uma máquina especializada em guardar e consultar essas histórias numéricas.



🕰️ CAPÍTULO 4 — TIME SERIES: O TEMPO CONTA A HISTÓRIA

Considere:

mq_queue_depth = 1400

Ruim?

Depende.

Talvez aquela fila normalmente tenha 5.000 mensagens.

Agora veja:

03:13   17
03:14   22
03:15   51
03:16   194
03:17   830
03:18   1.402
03:19   2.917

Agora temos uma história bastante diferente.

Às 03:17, alguma coisa aconteceu.

Sim, jovem padawan do COBOL: você encontrou o pequeno easter egg escondido no SYSOUT. ☕

Talvez o produtor tenha aumentado o ritmo.

Talvez um consumidor tenha parado.

Talvez alguma dependência esteja lenta.

Prometheus não sabe necessariamente a causa.

Mas agora temos uma pista extremamente importante:

QUANDO?

Esse é um dos maiores valores das séries temporais.


🏷️ CAPÍTULO 5 — LABELS: OS NOMES SECRETOS DAS COISAS

Suponha que tenhamos:

cics_transactions_total

Interessante.

Mas podemos enriquecer:

cics_transactions_total{
    region="CICSPROD",
    transaction="PAY1",
    status="success"
}

Os valores entre {} são labels.

Agora podemos perguntar:

transações por região
transações por status
transações por aplicação
transações por ambiente

Isso é poderosíssimo.

Porém Galadriel provavelmente levantaria uma sobrancelha e diria:

“Nem todas as labels deveriam ter sido criadas.”

Porque existe um monstro chamado:

💣 CARDINALIDADE

Imagine:

payment_total{
    channel="mobile",
    status="approved"
}

Perfeito.

Existem poucos canais e poucos status.

Agora alguém tem a brilhante ideia:

payment_total{
    customer_id="123456789",
    transaction_id="982737283928382"
}

Catástrofe em potencial.

Cada combinação diferente de labels pode criar outra série temporal.

Milhões de clientes multiplicados por milhões de transações podem gerar uma quantidade gigantesca de séries.

Portanto:

Label não é campo de banco de dados.

Não coloque tudo nela.

Esse é um dos conhecimentos que separa quem simplesmente instalou Prometheus de quem começou realmente a entendê-lo.




🧙 CAPÍTULO 6 — EXPORTERS: OS INTÉRPRETES ENTRE OS REINOS

Nem todo sistema nasceu sabendo falar Prometheus.

É aí que entram os exporters.

Um exporter obtém informações de determinado sistema e as apresenta de uma maneira que Prometheus consegue coletar.

Exemplo:

Linux
   ↓
Node Exporter
   ↓
/metrics
   ↑
Prometheus

Temos exporters para diferentes tecnologias e também podemos desenvolver exporters específicos.

Essa arquitetura é particularmente interessante para legado.

Imagine:

IBM Z
 ├── CICS
 ├── Db2
 ├── MQ
 ├── JES2
 └── z/OS
       ↓
  coleta/adaptação
       ↓
 Custom Exporter
       ↓
    /metrics
       ↑
   Prometheus

Pense no exporter como um tradutor.

O sistema pode continuar falando sua língua ancestral.

O exporter traduz os dados relevantes para o idioma esperado pelo ecossistema Prometheus.


🎯 CAPÍTULO 7 — EXPORTER NÃO É TARGET

Aqui aparece uma confusão comum.

Exporter é o software/adaptador que expõe métricas.

Target é o endpoint que Prometheus vai coletar.

Por exemplo:

server01:9100
server02:9100
server03:9100

podem ser targets.

E normalmente Prometheus encontrará ali:

/metrics

Portanto:

TARGET
   ↓
endpoint monitorado

EXPORTER
   ↓
componente que expõe métricas

Uma aplicação também pode implementar /metrics diretamente.

Nesse caso:

Application
     ↓
  /metrics
     ↑
Prometheus

Não precisamos necessariamente colocar outro exporter entre eles.


🧲 CAPÍTULO 8 — PROMETHEUS PUXA AS MÉTRICAS

Uma característica famosa do Prometheus é seu modelo predominantemente pull.

Em termos simplificados:

Prometheus
    |
    | HTTP GET
    ↓
http://server:9100/metrics

Ele pergunta:

“Quais são seus números agora?”

O target responde.

Depois Prometheus volta novamente.

E novamente.

Isso é chamado de scraping.

Imagine:

15 segundos
      ↓
scrape

15 segundos
      ↓
scrape

15 segundos
      ↓
scrape

O intervalo depende da configuração.

Existe suporte para cenários de push, particularmente através do Pushgateway para determinados workloads de curta duração, mas compreender o modelo pull primeiro ajuda muito.


📜 CAPÍTULO 9 — prometheus.yml: O JCL DO REINO

Agora chegamos a uma parte que fará qualquer mainframer sorrir.

Prometheus precisa saber:

o que coletar
onde coletar
com qual frequência
como organizar

Grande parte disso aparece no:

prometheus.yml

Exemplo simplificado:

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: "linux"
    static_configs:
      - targets:
          - "server01:9100"
          - "server02:9100"

Um mainframer olha para isso e imediatamente pensa:

“Então esse YAML está dizendo ao Prometheus qual trabalho executar.”

Exatamente.

Não é literalmente JCL, mas conceitualmente a analogia ajuda:

JCL
↓
descreve execução

prometheus.yml
↓
descreve comportamento de coleta/configuração

Cuidado apenas para não levar a analogia longe demais.


🧭 CAPÍTULO 10 — SERVICE DISCOVERY

Targets fixos funcionam bem quando temos:

server01
server02
server03

Mas imagine Kubernetes.

Agora:

10 pods

Cinco minutos depois:

27 pods

Mais tarde:

8 pods

Seria absurdo alguém editar manualmente prometheus.yml a cada mudança.

Entra então Service Discovery.

Prometheus pode descobrir dinamicamente os targets através de mecanismos de descoberta.

Conceitualmente:

Kubernetes
     ↓
Service Discovery
     ↓
Prometheus descobre targets
     ↓
scraping

Esse conceito é fundamental em cloud-native porque a infraestrutura deixou de ser necessariamente estática.

O servidor deixou de ser um castelo.

Passou a ser quase uma barraca de campanha: aparece, trabalha e desaparece.


📦 CAPÍTULO 11 — COUNTER: O CONTADOR QUE SÓ SABE AVANÇAR

Primeiro tipo fundamental de métrica:

Counter.

Exemplo:

http_requests_total

Ele cresce:

100
101
105
120
180

Normalmente só volta para baixo quando o processo reinicia.

Excelente para:

requests
transactions
errors
jobs completed
messages processed

Mas existe uma armadilha.

Perguntar:

http_requests_total = 938.281.293

não é muito útil.

Você quer saber:

“Quão rapidamente isso está crescendo?”

E então aparece PromQL.


🌊 CAPÍTULO 12 — rate(): A VELOCIDADE DO RIO

Imagine:

rate(http_requests_total[5m])

Estamos aproximadamente perguntando pela taxa média de crescimento por segundo naquele intervalo.

Se:

resultado = 150

podemos interpretar, dentro daquele contexto, algo como:

150 requests/s

Para CICS poderíamos imaginar:

rate(cics_transactions_total[5m])

Agora temos algo semelhante a TPS.

Essa é uma transformação importantíssima:

COUNTER
↓
rate()
↓
VELOCIDADE

📈 CAPÍTULO 13 — increase(): QUANTO CRESCEU?

Outra função extremamente útil:

increase(http_requests_total[1h])

Pergunta conceitualmente:

Quanto esse counter aumentou durante uma hora?

Compare:

rate()
→ ritmo

increase()
→ aumento no período

Uma analogia simples:

velocímetro → rate()

odômetro percorrido na viagem → increase()

🌡️ CAPÍTULO 14 — GAUGE: O TERMÔMETRO

Gauge pode aumentar e diminuir.

Exemplos:

CPU
memory
temperature
active connections
queue depth
active tasks

Imagine MQ:

mq_queue_depth

Valores:

08:00   14
08:01   17
08:02   25
08:03   81
08:04   320
08:05   982

Isso não prova sozinho qual é o problema.

Mas é um indício espetacular.

O produtor pode estar produzindo mais rapidamente.

O consumidor pode ter ficado lento.

O consumidor pode ter parado.

Alguma dependência pode estar congestionada.

A métrica é a pista.

A investigação continua.


📊 CAPÍTULO 15 — HISTOGRAM: A MÉDIA PODE MENTIR

Imagine tempos de resposta:

20 ms
22 ms
23 ms
25 ms
26 ms
29 ms
32 ms
4.000 ms

Calcular somente a média pode esconder uma experiência terrível para uma parcela dos usuários.

Por isso observabilidade fala tanto em:

p50
p90
p95
p99

Se dissermos:

p95 = 800 ms

estamos falando aproximadamente do valor abaixo do qual ficaram 95% das observações.

Histograms organizam observações em buckets e permitem estudar a distribuição.

Isso é extremamente útil para:

latência
tamanho de payload
tempo de processamento

🧮 CAPÍTULO 16 — SUMMARY: PARECIDO, MAS NÃO IGUAL

Summary também trabalha com distribuições e quantis.

A diferença arquitetural importante é que summaries tradicionalmente calculam quantis no cliente, enquanto histograms expõem dados que permitem ao Prometheus trabalhar posteriormente com a distribuição.

Isso tem consequência em ambientes distribuídos.

Imagine:

100 instâncias

Queremos calcular:

p95 global

Histograms normalmente são muito mais apropriados para agregação entre várias instâncias.

Não escolha Summary simplesmente porque o nome parece mais simpático.


🔮 CAPÍTULO 17 — PROMQL: A LÍNGUA DO ESPELHO

Agora chegamos ao coração intelectual da coisa.

PromQL é a linguagem de consulta do Prometheus.

Ela permite selecionar, filtrar, combinar e agregar séries temporais.

Por exemplo:

rate(http_requests_total[5m])

Ou:

sum by(service)(
  rate(http_requests_total[5m])
)

Agora perguntamos:

Quantas requisições por segundo cada serviço está processando?

Podemos filtrar labels:

http_requests_total{environment="prod"}

Ou:

http_requests_total{
    environment="prod",
    status="500"
}

Aqui Prometheus deixa de ser simplesmente coletor.

Ele vira ferramenta investigativa.


⚠️ CAPÍTULO 18 — PROMQL CORRETA PODE RESPONDER A PERGUNTA ERRADA

Essa é uma das melhores lições escondidas nas imagens.

Imagine alguém escrevendo:

avg(http_request_duration_seconds)

e dizendo:

“Essa é a latência média.”

Calma.

Primeiro precisamos entender que métrica é essa.

Gauge?

Histogram?

Summary?

Qual dimensão?

Qual intervalo?

O mesmo problema aparece em exemplos de CPU.

Algo como:

rate(node_cpu_seconds_total[5m]) > 80

não significa automaticamente:

CPU > 80%

node_cpu_seconds_total representa segundos acumulados de CPU separados por modos.

Uma consulta mais típica para utilização pode partir da proporção de idle:

100 *
(
  1 -
  avg by(instance)(
    rate(node_cpu_seconds_total{mode="idle"}[5m])
  )
)

A lição vale ouro:

Query que executa sem erro não é necessariamente query correta.

COBOLers conhecem muito bem esse fenômeno.

Um programa pode terminar:

CC 0000

e ainda assim produzir o resultado errado.

PromQL não é diferente.


🧠 CAPÍTULO 19 — RECORDING RULES: AS MATERIALIZED VIEWS DO PROMETHEUS

Imagine uma consulta PromQL pesada utilizada por vinte dashboards.

Executá-la constantemente pode ser caro.

Podemos criar uma Recording Rule.

Conceitualmente:

RAW METRICS
     ↓
PROMQL COMPLEXA
     ↓
RECORDING RULE
     ↓
NOVA TIME SERIES

Isso lembra bastante uma:

MATERIALIZED VIEW

de banco de dados.

Você calcula antecipadamente algo que será consultado frequentemente.

Resultado:

dashboards mais rápidos
queries mais simples
menor trabalho repetitivo

🚨 CAPÍTULO 20 — ALERTING RULES: QUANDO O ESPELHO GRITA

Agora queremos transformar observação em ação.

Uma Alerting Rule pode expressar:

SE condição acontecer
E persistir
ENTÃO gere alerta

Exemplo conceitual:

alert: HighLatency

expr: alguma_expressao > limite

for: 5m

labels:
  severity: warning

O for: é importantíssimo.

Imagine CPU:

14:00:01  92%
14:00:10  48%

Queremos chamar alguém?

Provavelmente não.

Foi apenas um pico.

Agora:

14:00  92%
14:01  94%
14:02  96%
14:03  95%
14:04  97%
14:05  96%

A história mudou.

Por isso os estados de um alerta podem passar conceitualmente por:

Inactive
   ↓
Pending
   ↓
Firing

🔔 CAPÍTULO 21 — PROMETHEUS DETECTA; ALERTMANAGER ORGANIZA A GUERRA

Prometheus e Alertmanager têm responsabilidades diferentes.

Prometheus determina:

"A condição do alerta aconteceu."

Alertmanager pergunta:

"Quem precisa saber?"

Ele pode:

agrupar
rotear
silenciar
inibir
encaminhar

Imagine cinquenta servidores falhando porque um único switch morreu.

Você provavelmente não quer:

50 × email
50 × Slack
50 × pager

Você quer contexto e agrupamento.

Esse é o trabalho do Alertmanager.


📺 CAPÍTULO 22 — GRAFANA NÃO É PROMETHEUS

Outra confusão comum:

Grafana ≠ Prometheus

Prometheus fornece os dados e responde às consultas.

Grafana os transforma em visualizações.

Prometheus
     ↑
   PromQL
     │
  Grafana

Grafana pode produzir:

gráficos
tabelas
gauges
heatmaps
dashboards

Mas existe uma armadilha sedutora.

Criar um dashboard com 93 gráficos e pensar:

“Nossa observabilidade está fantástica!”

Talvez não esteja.

Dashboard bom responde perguntas:

Estamos saudáveis?

Usuários estão sendo afetados?

Quando começou?

Onde está acontecendo?

Está piorando?

O que devo investigar?

Se o painel não ajuda nisso, temos apenas uma televisão extremamente sofisticada mostrando números coloridos.


🏦 CAPÍTULO 23 — PROMETHEUS ENTRA NO PROCESSAMENTO DE CARTÕES

Imagine:

AUTHORIZATION
      ↓
CAPTURE
      ↓
CLEARING
      ↓
SETTLEMENT

Instrumentamos:

card_authorizations_total

card_authorization_errors_total

card_authorization_duration_seconds

clearing_transactions_total

settlement_failures_total

Agora podemos observar:

TPS
error rate
latency
rejection rate
backlog

Perceba o salto.

Começamos monitorando:

CPU
memory
disk

Agora estamos monitorando:

O NEGÓCIO.

Isso é muito mais interessante.


🦖 CAPÍTULO 24 — PROMETHEUS ENCONTRA O MAINFRAME

Imagine um dashboard:

╔════════════════════════════════════╗
║          CICS PRODUCTION           ║
╠════════════════════════════════════╣
║ TPS                    2.841       ║
║ p95                    184 ms      ║
║ ABEND Rate             0,02%       ║
║ Active Tasks           117         ║
║ MQ Queue Depth          14         ║
║ CPU                     63%        ║
╚════════════════════════════════════╝

De repente o operador percebe:

03:15   MQ depth 17
03:16   MQ depth 34
03:17   MQ depth 581
03:18   MQ depth 1.307

Consulta outra métrica.

TPS continua normal.

Outra.

CICS response time começou a aumentar às 03:16:48.

Outra.

Db2 latency aumentou às 03:16:31.

Agora temos uma linha investigativa:

Db2 latency
      ↓
CICS latency
      ↓
MQ backlog
      ↓
experiência do usuário

É quase arqueologia de incidente em tempo real.


🕵️ CAPÍTULO 25 — NÃO ALERTE SOBRE RUÍDO

Existe uma regra de ouro operacional:

Alertar sobre tudo
=
não alertar sobre nada

Porque seres humanos aprendem rapidamente a ignorar alarmes inúteis.

Imagine receber diariamente:

CPU 81%
CPU 82%
CPU 84%
CPU 81%
CPU 83%

Depois de algumas semanas:

"Ah, é aquele alerta."

Até chegar o dia em que:

CPU 99%
latency 12s
errors 31%

E alguém automaticamente pensa:

“É aquele alerta.”

Isso é alert fatigue.

Por isso, quando possível, é melhor aproximar alertas de sintomas relevantes:

error rate
latency
availability
SLO violation
queue growth

em vez de transformar todo pico técnico em emergência.


📚 CAPÍTULO 26 — PROMETHEUS NÃO É SEU LEDGER

Outra distinção fundamental.

Imagine que Prometheus indique:

1.984.322 pagamentos

Podemos usar isso para observar comportamento.

Mas se a pergunta for:

“Quantos pagamentos exatamente precisam ser liquidados?”

Procure a fonte transacional oficial.

database
transaction log
ledger
audit trail

Prometheus é sistema de observabilidade.

Não deveria ser tratado como livro contábil de transações.

Para um mainframer isso é especialmente fácil de compreender:

SMF ≠ arquivo mestre do cliente

RMF ≠ ledger financeiro

Prometheus ≠ sistema de registro transacional

Cada coisa tem sua finalidade.


🛠️ CAPÍTULO 27 — LABORATÓRIO DO APRENDIZ

Se eu estivesse ensinando Prometheus para um COBOLer iniciante, faria o aprendizado nesta ordem:

Primeiro, subiria Prometheus localmente.

Depois, instalaria Node Exporter.

Então observaria:

http://localhost:9100/metrics

Sem Grafana.

Isso é importante.

Veja primeiro a matéria-prima.

Procure métricas.

Entenda nomes e labels.

Depois vá à interface do Prometheus e experimente:

up

Depois:

node_cpu_seconds_total

Depois:

rate(node_cpu_seconds_total[5m])

Só depois começaria:

sum()
avg()
max()
topk()
histogram_quantile()

Então Grafana.

Depois alertas.

Depois Alertmanager.

Finalmente:

service discovery
recording rules
remote storage
HA
federation
OpenTelemetry

A ordem importa.

Quem começa instalando um dashboard pronto pode acabar sabendo operar o painel sem compreender o sistema.

É como aprender ISPF decorando PF keys sem compreender datasets, jobs e address spaces.


💡 CAPÍTULO 28 — CURIOSIDADES QUE VALEM UM CAFÉ

Prometheus nasceu no SoundCloud e posteriormente tornou-se projeto da CNCF.

O nome vem do Prometeu da mitologia grega, associado ao roubo do fogo dos deuses para entregá-lo aos humanos.

É uma escolha curiosamente apropriada.

O Prometheus moderno também nos entrega “fogo”:

dados
visibilidade
conhecimento

Grafana, por sua vez, não faz parte do Prometheus propriamente dito. Eles trabalham maravilhosamente juntos, mas são projetos separados.

Outra curiosidade importante: Prometheus consegue monitorar a si próprio.

Sim.

O vigia também pode ser vigiado.

E isso é essencial.

Porque existe algo pior do que um sistema cair:

o sistema cair enquanto seu monitoramento também está quebrado e ninguém perceber.


🧝‍♀️ EPÍLOGO — O ESPELHO NÃO PREVÊ O FUTURO

Galadriel observa novamente a superfície do espelho.

Mas dessa vez não aparecem exércitos de Mordor.

Aparecem gráficos.

Latency       ↗
Errors        ↗
Traffic       →
Saturation    ↗

Um aprendiz pergunta:

— Senhora, isso significa que o sistema cairá?

Galadriel responde:

— Não.

Porque métricas não são profecias.

Elas são evidências.

Prometheus não nos diz necessariamente o futuro.

Ele nos permite perceber que o presente está mudando.

E essa talvez seja a ideia mais importante de toda esta história.

O objetivo final não é:

INSTALAR PROMETHEUS

Nem:

CRIAR GRAFANA

Nem:

TER 500 MÉTRICAS

Muito menos:

CRIAR 200 ALERTAS

O objetivo é construir um sistema no qual, quando alguém disser:

“Produção está estranha.”

possamos responder:

Quando começou?

O que mudou?

Quem foi afetado?

Qual serviço degradou?

Qual é a tendência?

Qual foi a sequência dos acontecimentos?

E começar a encontrar respostas.


☕ O HOLOCRON DO PROGRAMADOR COBOL

Se você guardar apenas uma página deste enorme pergaminho de Lothlórien, guarde esta:

                OBSERVABILIDADE
                      │
          ┌───────────┼───────────┐
          │           │           │
       METRICS       LOGS       TRACES
          │
          ▼
       TARGETS
          │
     /metrics
          │
          ▼
      PROMETHEUS
          │
   ┌──────┼───────────────┐
   │      │               │
  TSDB   PromQL          RULES
   │      │               │
   │      │        ┌──────┴──────┐
   │      │        │             │
   │      │   Recording       Alerting
   │      │                      │
   │      │                      ▼
   │      │                Alertmanager
   │      │
   └──────┴──────────────► Grafana

E abaixo dele escreva:

Counter
→ algo acumulativo

Gauge
→ estado que sobe e desce

Histogram
→ distribuição em buckets

Summary
→ distribuição/quantis calculados no cliente

rate()
→ velocidade de crescimento

increase()
→ crescimento durante um intervalo

Labels
→ dimensões das séries

High Cardinality
→ perigo

Recording Rules
→ pré-calcular

Alerting Rules
→ detectar condições

Alertmanager
→ administrar notificações

Grafana
→ visualizar

PromQL
→ interrogar as séries

E finalmente uma última inscrição, talvez gravada na porta da sala de operações:

“CC 0000 apenas diz que o programa terminou. Observabilidade tenta descobrir se o reino continua saudável.”

Porque, no fim, Prometheus não é sobre CPU, dashboards ou gráficos.

É sobre transformar comportamento em métricas, métricas em séries temporais, séries em perguntas, perguntas em evidências e evidências em ação.

O velho programador COBOL pode olhar para exporters, YAML, PromQL, Grafana, Kubernetes e inicialmente pensar que chegou à Terra-média.

Mas, depois de remover os nomes modernos, encontrará conceitos bastante familiares:

medir
registrar
comparar
correlacionar
detectar
investigar
agir

Mudaram as ferramentas.

Mudaram os nomes.

Mudaram os castelos.

A missão permanece praticamente a mesma.

Descobrir o que está acontecendo dentro da máquina antes que aquilo que acontece dentro da máquina comece a acontecer com os usuários.

E se às 03:17 uma pequena fila começar silenciosamente a crescer...

...talvez o Espelho de Prometheus já esteja mostrando alguma coisa. 🔥🧝‍♀️☕

domingo, 30 de agosto de 2020

🌧️ Bellacosa Otaku Blog — Parte 23: Expressões de Tristeza, Perda e Superação nos Animes 🌧️

 

:

🌧️ Bellacosa Otaku Blog — Parte 23: Expressões de Tristeza, Perda e Superação nos Animes 🌧️


💔 O idioma das lágrimas e da superação nos animes

(Versão Bellacosa: suspiros, silêncios pesados e o peso da emoção que toca o coração.)

Nos animes dramáticos, shoujo, slice of life ou seinen, o japonês transmite tristeza, saudade e coragem para seguir em frente.
Cada palavra carrega emoção profunda, tornando momentos de dor e superação memoráveis.
Vamos explorar as expressões mais tocantes! 😢


😭 1. 悲しい (kanashii)

Tradução: “Triste / doloroso.”
👉 Palavra clássica para expressar tristeza ou decepção.

📺 Anime vibe: Clannad, Your Lie in April, Anohana.
💬 Exemplo: “Kanashii… por que isso aconteceu comigo?” 💔


🥺 2. 寂しい (sabishii)

Tradução: “Solitário / sinto sua falta.”
👉 Usada para expressar saudade ou vazio emocional.

📺 Anime vibe: March Comes in Like a Lion, Anohana.
💬 Exemplo: “Sabishii… queria que você estivesse aqui.” 🌧️


😓 3. 悔しい (kuyashii)

Tradução: “Frustrante / irritante (por derrota ou erro).”
👉 Expressa sentimento de arrependimento ou derrota dolorosa.

📺 Anime vibe: Haikyuu!!, Naruto, March Comes in Like a Lion.
💬 Exemplo: “Kuyashii… eu podia ter feito melhor.” ⚡


😔 4. 後悔 (koukai)

Tradução: “Arrependimento / remorso.”
👉 Palavra profunda usada em dramas e momentos de reflexão.

📺 Anime vibe: Clannad, Your Lie in April.
💬 Exemplo: “Koukai… eu deveria ter falado a verdade antes.” 💭


🌫️ 5. 涙 (namida)

Tradução: “Lágrimas.”
👉 Palavra simbólica para momentos emocionantes, tristeza ou alívio.

📺 Anime vibe: Anohana, Your Lie in April, Clannad.
💬 Exemplo: “Namida escorreu sem que eu percebesse…” 😢


💔 6. 失う (ushinau)

Tradução: “Perder / perder alguém ou algo importante.”
👉 Expressa dor de perda ou separação.

📺 Anime vibe: Anohana, Clannad: After Story.
💬 Exemplo: “Ushinau algo tão valioso dói demais.” 💔


🌟 7. 頑張れ (ganbare)

Tradução: “Força! / Continue firme!”
👉 Palavra de incentivo, usada para superar momentos difíceis.

📺 Anime vibe: March Comes in Like a Lion, Haikyuu!!.
💬 Exemplo: “Ganbare… você consegue superar isso.” 💪


🕊️ 8. 前に進もう (mae ni susumou)

Tradução: “Vamos seguir em frente.”
👉 Expressão de superação e motivação após tristeza ou perda.

📺 Anime vibe: Your Lie in April, Clannad.
💬 Exemplo: “Mae ni susumou… apesar de tudo, precisamos continuar.” 🌈


🌧️ 9. 忘れない (wasurenai)

Tradução: “Não vou esquecer / sempre lembrarei.”
👉 Palavra carregada de lembrança, memória e saudade.

📺 Anime vibe: Anohana, Clannad: After Story.
💬 Exemplo: “Wasurenai… você sempre estará no meu coração.” 💌


💫 10. 希望 (kibou)

Tradução: “Esperança.”
👉 Palavra de luz nos momentos de dificuldade, representando força para recomeçar.

📺 Anime vibe: March Comes in Like a Lion, Your Lie in April.
💬 Exemplo: “Kibou… mesmo no sofrimento, ainda há futuro.” 🌟


🏮 Curiosidades Bellacosa:

  • Palavras como kanashii, sabishii e kuyashii transmitem nuances diferentes de tristeza — desde saudade até frustração.

  • Expressões de superação (ganbare, mae ni susumou) equilibram drama com esperança, criando impacto emocional.

  • Termos de memória e lembrança (wasurenai, namida) tornam cenas de despedida ou perda inesquecíveis. 🌧️💖


🌟 Dica Bellacosa:

  • Observe tom de voz, silêncio e expressão facial: o peso emocional está tanto nas pausas quanto nas palavras.

  • Frases curtas podem ser mais impactantes do que monólogos longos — a emoção se sente nas entrelinhas.

  • Memorizar essas expressões ajuda a sentir e compreender os dramas e momentos emocionais dos animes. 😢


🌸 Conclusão Bellacosa:

As expressões de tristeza, perda e superação nos animes transformam o japonês em uma linguagem de emoção crua e esperança.
Cada palavra, lágrima e gesto revela vulnerabilidade e força, permitindo que o espectador viva junto a dor e a superação dos personagens.

“Namida caiu, sabishii ficou… mas ganbare, mae ni susumou, kibou nos guia.” 🌧️💫

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...