Iryon Ops

⚠️ Banco de dados não configurado

O NOC está em modo memória (sem persistência nem HA). Configure a conexão do Postgres para o decider gravar estado, decisões e configurações. Faça isto antes de mexer em canais/IA/etc. — eles se perderiam no reinício.

Visão geral

Estado operacional do NOC autônomo

Saúde dos módulos

Fluxo do NOC autônomo — verde = disponível, vermelho = indisponível. Passe o mouse para latência.

carregando…

Auto-correção

Ligado: o NOC corrige incidentes sozinho (só ações da allow-list). Desligado (kill-switch): ele apenas registra e abre ticket — nada é executado.

Modo simulação (dry-run)

Ligado: o NOC decide e mostra o que faria, mas não executa nada. Ideal para validar com segurança antes de ligar a auto-correção de verdade.

Auto-resolução (24h)

% dos incidentes que o NOC resolveu sozinho, sem acionar um humano.

Auto-resolvidas0
Escaladas p/ humano0
Total de decisões0

Saúde do sistema

Dependências
carregando…

Decisões

Feed auditável de cada decisão do decider

quandoeventoalvoaçãotierexecticket/msgmotivo

Proteção

Cooldown / loop-guard — por que o NOC não atuou

    Notificações & Tickets

    Fonte ÚNICA de comunicação do NOC — ticket + avisos, problema e recovery

    orquestração: sempre ON ticketiryon

    Política

    No modelo harmonizado o decider é o orquestrador único: em qualquer problema sem auto-correção ele abre o ticket (com nº) e avisa nos canais abaixo; no recovery fecha o ticket e avisa "restabelecido". O Zabbix só encaminha o evento — esta é a única tela de comunicação.

    Avisar também quando auto-resolver (correção bem-sucedida)

    Ticket de problema/escalonamento e aviso são sempre enviados (não dá pra desligar — seria apagão de alerta).

    Canais p/ alertas do NOC

      IA / Agente

      Agente consultivo (confirma ou veta → escala; falha-aberto). Apenas um provedor ativo por vez.

      IA consultiva
      desligada = decisão 100% determinística (só a matriz)

      Simulador de triggers

      Injeta um incidente sintético no decider (como o Zabbix faria) p/ testar matriz + IA + orquestração. Não substitui o Zabbix — é banco de testes.

      Incidente de teste

      Presets:

      Veredito

      preencha e clique em Simular.

      Regras de roteamento

      Escolha host ou trigger e por quais canais o NOC comunica. Regra por trigger vence a por host. Vale sem sair do Iryon Ops (nada a editar no Zabbix).

      Nova regra

      Canais = destinos configurados em Notificações. Nenhum marcado = manda pra todos. A regra vale sem tocar no Zabbix: quando a trigger alerta, o decider decide e envia a mensagem (com a decisão) + comandos aos canais.

      Regras existentes

      escopoalvocanais

      Segurança

      Três camadas: o que pode automatizar, o que é proibido por construção, e o que escala para humano

      🔒 Proibições absolutas — impossíveis por construção

      não editável

      Operações destrutivas não existem como ação (allow-list é uma lista fechada) e ainda são barradas em duas camadas no código/cluster. Não dá para remover namespace, excluir PVC/secret, DROP/TRUNCATE em banco, rm -rf etc. — nem a IA, nem o painel podem liberar.

      Padrões recusados na hora (defesa em profundidade)
      Permissões do cluster (RBAC mínimo)
      • get/patch em deployments e statefulsets
      • get/list/delete apenas em pods (o controller recria)
      • sem delete de namespace, PVC, PV, secret, CRD ou node
      • sem exec/comando arbitrário · sem DROP/DDL em banco

      ✅ Allow-list — o que pode automatizar

      Estas são as únicas ações que o NOC executa automaticamente. É a barreira de segurança, definida no código (somente leitura) — nada fora desta lista roda sozinho, nem a IA pode inventar uma ação nova.

        ⛔ Block-list — o que escala para humano

        Se o alerta contiver algum destes textos, o NOC não age sozinho: abre ticket e avisa um humano. Útil para alvos críticos (identidade, bancos de dados, control-plane). A comparação é por trecho de texto (ignora maiúsculas) em: ação · host · namespace · nome do alerta.

        Bloqueios ativos

          Actuator (executor)

          Executa comandos nos nós via SSH. Flexível: ações nomeadas, comandos salvos ou ad-hoc — com escolha de sudo.

          Configuração (gerida aqui, não em manifesto)

          carregando…
          Nós (nome → IP)

          Segredos (token, chave SSH) e o break-glass permanecem em Secret/env — não editáveis aqui.

          Ações nomeadas (built-in)

            Comandos personalizados

            salvos / reutilizáveis

            Salve comandos próprios (com sudo opcional) para reutilizar. Clique em usar para carregar no executor abaixo.

              Executar no nó

              requer admin

              Roda agora no nó escolhido (via SSH). Bloqueio só de comandos catastróficos (rm -rf /, mkfs, DROP/TRUNCATE, delete namespace/pvc…). Tudo é auditado.

              
                    

              Onboarding de nó

              Prepare um nó para ser gerenciado pelo actuator: usuário dedicado, wrapper auditado (forced-command) e sudo root.

              1) Chave pública do actuator

              Autorize esta chave no nó (o script abaixo já faz isso). Origem permitida: · Fingerprint:

              🔑 Geração/rotação da chave é por linha de comando (a chave privada nunca passa pela GUI): NS=iryon ./noc-actuator/node-setup/gen-actuator-key.sh (ou --rotate). A GUI só exibe a pública.

              2) Script de preparação (rodar como root no nó)

              Self-contained (idempotente). Cole e execute como root num nó novo. Depois, adicione o nó (nome → IP) na aba Actuator.

              carregando…

              Re-provisionar nó já acessível

              requer admin

              Reaplica o setup (atualiza wrapper/origem/sudoers) num nó que o actuator já alcança. Para nó novo (sem acesso ainda), use o script acima manualmente.

              
                    

              Configurar Zabbix

              Modelo harmonizado: 1 webhook (noc-decider) + 1 Action (NOC autônomo). O Zabbix só encaminha o evento; o decider decide, remedia, abre/fecha ticket e avisa.

              Estado no Zabbix

              carregando…

              Cutover seguro e reversível: 1) Aplicar modelo (cria, desabilitado) → 2) Ativar (liga o novo e desliga o A/B antigo, sem deletar) → 3) Remover legado (quando estiver confiante).

              Autenticação — por padrão usa o token guardado (super-admin, sem senha). Clique p/ usar usuário/senha.

              Idempotente. Aplicar cria a Action DESABILITADA (não liga alerta sozinho). Canais/WhatsApp/ticket se configuram em Notificações (fonte única) — não aqui. Requer admin.

              Biblioteca de templates

              Os templates importados no "Aplicar modelo" vêm daqui. Faça upload p/ atualizar sem rebuild, baixe p/ backup/versionar, ou exporte do Zabbix p/ capturar edições feitas lá. Cada gravação guarda a versão anterior (rollback).

              templateno Zabbixorigemtam.atualizado

              Upload

              Exportar do Zabbix (round-trip)

              Baixa o YAML de um template como está no Zabbix (captura edições feitas lá).

              Ticket / ITSM (Citsmart)

              Config do ticket-api que era do manifesto, agora na GUI. Segredos (client secret, senha, bearer) ficam no Secret citsmart-secret — não passam por aqui.

              Citsmart / Keycloak

              Segredos são write-only: digite p/ trocar, deixe em branco p/ manter, e nunca são exibidos de volta (mascarados). Salvar grava no store; o ticket-api aplica em ~15s. "Testar" pede um token no Keycloak do Citsmart (valida tudo E2E). Requer admin.

              Segredos & estado

              Geridos por kubectl/CLI no Secret — a GUI só indica presença, nunca o valor.

              Sistema (NOC)

              Configuração efetiva e dependências

              Configuração efetiva

              Dependências