> ## Documentation Index
> Fetch the complete documentation index at: https://chatcli.edilsonfreitas.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Web Dashboard e Grafana

> Dashboard web embutido e dashboards Grafana pré-configurados para observabilidade.

A plataforma AIOps do ChatCLI inclui um **dashboard web embutido** (SPA self-contained) e **4 dashboards Grafana pré-configurados** para observabilidade completa do pipeline de operações autônomas.

## Web Dashboard

### Visão Geral

O Web Dashboard é uma **Single Page Application** embutida diretamente no binário do operator via Go `embed.FS` — não requer Node.js, npm ou qualquer build frontend separado.

| Característica         | Detalhe                                                                                         |
| ---------------------- | ----------------------------------------------------------------------------------------------- |
| **Tecnologia**         | HTML/CSS/JS vanilla (zero dependências externas)                                                |
| **Empacotamento**      | Go `embed.FS` — compilado no binário                                                            |
| **Porta**              | `8090` (configurável via `CHATCLI_AIOPS_PORT`)                                                  |
| **Tema**               | Dark theme (fundo escuro, texto claro)                                                          |
| **Responsivo**         | Adapta-se a desktop, tablet e mobile                                                            |
| **Auto-refresh**       | Intervalo configurável: Off, 10s, 30s (padrão), 1m, 2m, 5m — com botao de refresh manual        |
| **Tabelas ordenáveis** | Clique no cabeçalho de qualquer coluna para ordenar (▲ ascendente / ▼ descendente)              |
| **Ordenação estável**  | Listas mantêm ordem consistente entre refreshes (incidentes/audit por timestamp, SLOs por nome) |
| **Autenticação**       | Mesma API key do REST API (header `X-API-Key`)                                                  |
| **URL**                | `http://&lt;operator-host&gt;:8090/`                                                            |

<Note>
  O dashboard consume a mesma API REST documentada em [API Reference](/pt/reference/api-reference). Todas as operações disponíveis no dashboard (acknowledge, snooze, approve, reject) são chamadas REST autenticadas.
</Note>

### Arquitetura

```text theme={"system"}
┌─────────────────────────────────────────────────────────┐
│                    Operator Binary                       │
│                                                         │
│  ┌──────────────────┐  ┌─────────────────────────────┐  │
│  │  embed.FS         │  │  HTTP Server (:8090)        │  │
│  │  ├── index.html   │  │  ├── /          → SPA       │  │
│  │  ├── styles.css   │  │  ├── /api/v1/  → REST API  │  │
│  │  └── app.js       │  │  ├── /healthz  → Health    │  │
│  │                    │  │  └── /readyz   → Ready     │  │
│  └──────────────────┘  └─────────────────────────────┘  │
│                                                         │
│  ┌──────────────────────────────────────────────────┐   │
│  │  Kubernetes Client (informers + watch)            │   │
│  │  Issues, Anomalies, AIInsights, Plans, PostMortems│   │
│  └──────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────┘
```

### Views do Dashboard

O dashboard possui **10 views** acessíveis via navegação por tabs:

<AccordionGroup>
  <Accordion title="1. Overview">
    Visão geral da plataforma com métricas agregadas.

    **Componentes:**

    | Componente                    | Descrição                                                                                                                                                                                                                                                                                                                       |
    | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | **Stats Cards**               | 8 cards: Active Issues, **Contained (needs human)**, Resolved, Remediations (sucesso/total), Success Rate, PostMortems (com contador de pendentes de ação humana), Pending Approvals, **Chaos drills (excluídos de MTTD/MTTR)**. O card Contained recebe um destaque visual (border + glow roxo) quando há issues nesse estado. |
    | **Compliance & SLA**          | Porcentagem de compliance em tempo real, MTTD, MTTR, violações de SLA response/resolution, stats de aprovação                                                                                                                                                                                                                   |
    | **Capacity Warnings**         | Banner de alerta mostrando recursos em risco de esgotamento (urgente/planejado), com recomendações                                                                                                                                                                                                                              |
    | **Remediação por Estratégia** | Gráfico de barras horizontais mostrando taxa de sucesso por tipo de ação                                                                                                                                                                                                                                                        |
    | **Pie Chart (Severidade)**    | Distribuição de incidentes por severidade (Critical/High/Medium/Low)                                                                                                                                                                                                                                                            |
    | **Incidentes Recentes**       | Lista dos 10 incidentes mais recentes com estado, severidade e timestamp                                                                                                                                                                                                                                                        |
    | **Timeline**                  | Gráfico temporal de incidentes nas últimas 24h (barras empilhadas por severidade)                                                                                                                                                                                                                                               |

    O Overview fornece consciencia situacional abrangente com métricas de compliance, capacidade e efetividade de remediação.
  </Accordion>

  <Accordion title="2. Incidents">
    Tabela interativa de todos os incidentes com filtros e ações.

    **Funcionalidades:**

    | Funcionalidade  | Descrição                                                                                                                                                                          |
    | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | **Filtros**     | Severidade, estado (Detected/Analyzing/Remediating/**Contained**/Resolved/Escalated/Failed), kind do recurso, namespace, período, **filtro de chaos (Hide/All/Only chaos drills)** |
    | **Tabela**      | Colunas: Nome (com badges `CHAOS`/`NEEDS HUMAN` quando aplicável), Severidade, Estado, Recurso, Namespace, Detectado em, Duração                                                   |
    | **Ordenação**   | Clique no header da coluna para ordenar (asc/desc)                                                                                                                                 |
    | **Expansão**    | Clique na linha para expandir detalhes: análise IA, recomendações, plano de remediação                                                                                             |
    | **Acknowledge** | Botão para reconhecer incidente (requer role `operator`)                                                                                                                           |
    | **Snooze**      | Botão com seletor de duração (30m, 1h, 2h, 4h, 24h)                                                                                                                                |
    | **Paginação**   | Navegação por páginas com 20 itens por página                                                                                                                                      |

    **Badges de severidade:**

    | Severidade | Cor                |
    | ---------- | ------------------ |
    | Critical   | Vermelho (#ef4444) |
    | High       | Laranja (#f97316)  |
    | Medium     | Amarelo (#eab308)  |
    | Low        | Azul (#3b82f6)     |

    **Badges de estado:**

    | Estado        | Cor                                                                                              |
    | ------------- | ------------------------------------------------------------------------------------------------ |
    | Detected      | Vermelho (#ff4757)                                                                               |
    | Analyzing     | Laranja (#ffa502)                                                                                |
    | Remediating   | Laranja (#ffa502)                                                                                |
    | **Contained** | **Roxo (#9b59b6) com animação pulse** — chama atenção visualmente porque há ação humana pendente |
    | Resolved      | Verde (#2ed573)                                                                                  |
    | Escalated     | Laranja-avermelhado (#ff6348)                                                                    |
    | Failed        | Vermelho (#ff4757)                                                                               |

    **Badges inline (após o nome):**

    | Badge                    | Quando aparece                                                                                         |
    | ------------------------ | ------------------------------------------------------------------------------------------------------ |
    | `CHAOS` (azul)           | Issue correlacionado com `ChaosExperiment` ativo (label `platform.chatcli.io/source=chaos-experiment`) |
    | `NEEDS HUMAN` (vermelho) | Issue em `Contained` ou com condition `RequiresHumanAction=True`                                       |
  </Accordion>

  <Accordion title="3. SLOs">
    Cards de SLOs com indicadores visuais de error budget e burn rate.

    **Componentes por SLO:**

    | Componente             | Descrição                                                                                                           |
    | ---------------------- | ------------------------------------------------------------------------------------------------------------------- |
    | **Card**               | Nome do SLO, serviço, tipo de SLI, target vs. current                                                               |
    | **Error Budget Gauge** | Barra de progresso circular mostrando % consumido do error budget. Verde (\<70%), Amarelo (70-90%), Vermelho (>90%) |
    | **Burn Rate Chips**    | 4 chips: 1h, 6h, 24h, 72h. Cor indica se burn rate excede threshold (Google SRE model)                              |
    | **Estado**             | Badge: `healthy` (verde), `at_risk` (amarelo), `breached` (vermelho)                                                |
    | **Histórico**          | Sparkline dos últimos 7 dias de compliance                                                                          |

    **Thresholds de Burn Rate (Google SRE):**

    | Janela | Threshold | Significado                                    |
    | ------ | --------- | ---------------------------------------------- |
    | 1h     | 14.4x     | Consome 100% do budget em 5 dias               |
    | 6h     | 6.0x      | Consome 100% do budget em 5 dias (confirmação) |
    | 24h    | 3.0x      | Consome 100% do budget em 10 dias              |
    | 72h    | 1.0x      | Consome 100% do budget em 30 dias              |
  </Accordion>

  <Accordion title="4. Approvals">
    Lista de aprovações pendentes com ações de aprovar/rejeitar.

    **Funcionalidades:**

    | Funcionalidade      | Descrição                                                                                          |
    | ------------------- | -------------------------------------------------------------------------------------------------- |
    | **Lista Pendentes** | Aprovações pendentes no topo, com destaque visual                                                  |
    | **Contexto**        | Cada aprovação mostra: incidente associado, ação proposta, severidade, confidence da IA            |
    | **Approve**         | Botão verde. Abre modal com campo obrigatório para nome do aprovador e campo opcional para motivo. |
    | **Reject**          | Botão vermelho. Abre modal com campos obrigatórios para nome e motivo da rejeição.                 |
    | **Histórico**       | Tab para ver aprovações históricas (approved/rejected/expired)                                     |
    | **Expiração**       | Timer countdown mostrando tempo restante para expiração                                            |
  </Accordion>

  <Accordion title="5. AI Insights">
    Visualize todas as analises geradas pela IA para entender como ela raciocinou sobre cada incidente.

    **Funcionalidades:**

    | Funcionalidade         | Descrição                                                                                                        |
    | ---------------------- | ---------------------------------------------------------------------------------------------------------------- |
    | **Filtro**             | Filtrar por nome do incidente para ver insights de um issue específico                                           |
    | **Tabela**             | Colunas: Incidente, Provider, Modelo, Confiança, Recomendações, Ações, Gerado em                                 |
    | **Confiança**          | Score de confiança colorido: verde (≥85%), amarelo (70-84%), vermelho (\<70%)                                    |
    | **Expansão**           | Clique na linha para expandir: texto completo da análise, lista de recomendações, ações sugeridas com parâmetros |
    | **Análise de Logs**    | Visão expandida mostra achados estruturados dos logs (stack traces, padrões de erro)                             |
    | **Análise de Cascata** | Mostra cadeia de cascata entre servicos quando detectada                                                         |
    | **Contexto GitOps**    | Exibe status do Helm/ArgoCD/Flux no momento da análise                                                           |
    | **Blast Radius**       | Mostra impacto previsto das ações de remediação sugeridas                                                        |

    Esta view é essencial quando um incidente é **escalado para ação humana** -- mostra exatamente o que a IA encontrou, porque recomendou ações específicas, e quais dados de enriquecimento informaram sua análise.

    **Endpoint da API:** [`GET /api/v1/aiinsights`](/pt/reference/api/list-aiinsights)
  </Accordion>

  <Accordion title="6. Remediations">
    Acompanhe todos os planos de remediação com detalhes de execução, tanto baseados em runbook quanto em modo agêntico.

    **Funcionalidades:**

    | Funcionalidade         | Descrição                                                                                                              |
    | ---------------------- | ---------------------------------------------------------------------------------------------------------------------- |
    | **Filtros**            | Dropdown de estado (Pending/Executing/Verifying/Completed/Failed/RolledBack), filtro por nome do incidente             |
    | **Tabela**             | Colunas: Nome, Incidente, Tentativa, Estado, Modo (Runbook/Agentic), Ações/Steps, Início, Duração                      |
    | **Indicador de modo**  | Modo agêntico destacado em vermelho; Modo runbook em texto padrão                                                      |
    | **Expansão**           | Clique para expandir: descrição da estratégia, lista de ações planejadas, resultado                                    |
    | **Detalhes agênticos** | Para planos agênticos: contagem de steps na tabela, conversa completa via API de detalhe                               |
    | **Duração**            | Calculada automaticamente do início ao fim                                                                             |
    | **Badges de estado**   | Mesmo esquema de cores dos incidentes: Completed (verde), Executing (amarelo), Failed (vermelho), RolledBack (laranja) |

    **Endpoint da API:** [`GET /api/v1/remediations`](/pt/reference/api/list-remediations)
  </Accordion>

  <Accordion title="7. Runbooks">
    Visualize todos os runbooks — tanto criados manualmente quanto gerados automaticamente pela IA após remediações bem-sucedidas.

    **Funcionalidades:**

    | Funcionalidade         | Descrição                                                                                                                             |
    | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
    | **Tabela**             | Colunas: Nome, Tipo de Sinal, Severidade, Tipo de Recurso, Steps, Max Tentativas, Criado                                              |
    | **Badge de sinal**     | Badge colorido mostrando o tipo de sinal que dispara o runbook (oom\_kill, pod\_not\_ready, deploy\_failing, etc.)                    |
    | **Expansão**           | Clique na linha para expandir: descrição completa, critérios de trigger, e lista ordenada de steps                                    |
    | **Detalhes dos steps** | Cada step mostra: badge do tipo de acao, descrição, e parâmetros em JSON                                                              |
    | **Auto-gerado**        | Runbooks são criados automaticamente quando a IA remedia um incidente com sucesso — capturam a estratégia vencedora para reutilização |

    Runbooks servem como a "memória institucional" da IA — quando um incidente similar ocorre no futuro, a plataforma o corresponde a um runbook existente em vez de começar do zero, reduzindo significativamente o MTTR.

    **Endpoint da API:** [`GET /api/v1/runbooks`](/pt/reference/api/list-runbooks)
  </Accordion>

  <Accordion title="8. PostMortems">
    Lista de post-mortems com detalhes expansíveis.

    **Funcionalidades:**

    | Funcionalidade         | Descrição                                                                                                                                                                       |
    | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | **Lista**              | Todos os post-mortems com estado (open/in\_review/closed), incidente associado, duração                                                                                         |
    | **Expansão**           | Clique para expandir: timeline completa, causa raiz, impacto, ações executadas                                                                                                  |
    | **Lessons Learned**    | Seção com lições aprendidas (geradas pela IA)                                                                                                                                   |
    | **Prevention Actions** | Checklist de ações preventivas sugeridas                                                                                                                                        |
    | **Developer Feedback** | Formulário inline para o desenvolvedor avaliar a remediação (1-5 estrelas), sobrescrever root cause e adicionar comentários. Após submetido, exibe o feedback com rating visual |
    | **Review**             | Botão para marcar como "em revisão"                                                                                                                                             |
    | **Close**              | Botão para fechar o post-mortem após revisão                                                                                                                                    |
    | **Fonte**              | Badge indicando se foi gerado por remediação `agentic` ou `standard`                                                                                                            |
  </Accordion>

  <Accordion title="9. Clusters">
    Cards de clusters monitorados com status de saúde.

    **Componentes por cluster:**

    | Componente    | Descrição                                                                |
    | ------------- | ------------------------------------------------------------------------ |
    | **Card**      | Nome do cluster, provedor (EKS/GKE/AKS), versão K8s                      |
    | **Status**    | Badge: `healthy` (verde), `degraded` (amarelo), `unreachable` (vermelho) |
    | **Métricas**  | Número de nodes, incidentes ativos, namespaces monitorados               |
    | **Recursos**  | Barras de uso de CPU e memória (capacity vs. usage)                      |
    | **Targets**   | Lista de watcher targets com contadores de alertas por namespace         |
    | **Last Sync** | Timestamp da última sincronização com indicador de freshness             |
  </Accordion>

  <Accordion title="10. Audit">
    Log de auditoria pesquisável com exportação.

    **Funcionalidades:**

    | Funcionalidade  | Descrição                                                           |
    | --------------- | ------------------------------------------------------------------- |
    | **Busca**       | Campo de texto para buscar em tipo, recurso, ator, descrição        |
    | **Filtros**     | Tipo de evento, severidade, período                                 |
    | **Tabela**      | Colunas: Timestamp, Tipo, Severidade, Ator, Recurso, Descrição      |
    | **Severidade**  | Ícones e cores: info (azul), warning (amarelo), critical (vermelho) |
    | **Exportar**    | Botão para exportar em JSON ou CSV (requer role `admin`)            |
    | **Paginação**   | 50 itens por página                                                 |
    | **Auto-scroll** | Novos eventos aparecem no topo com animação de highlight            |
  </Accordion>
</AccordionGroup>

## Grafana Dashboards

A plataforma AIOps inclui **4 dashboards Grafana pré-configurados** em formato JSON, prontos para importação.

### 1. AIOps Overview (`aiops-overview.json`)

Dashboard principal com visão geral operacional.

**Painéis:**

| Painel                  | Tipo        | Descrição                                                                                              |
| ----------------------- | ----------- | ------------------------------------------------------------------------------------------------------ |
| **Active Issues**       | Stat        | Número de issues não resolvidos (gauge com thresholds: verde \<5, amarelo 5-15, vermelho >15)          |
| **MTTR**                | Stat        | Tempo médio de resolução em minutos                                                                    |
| **Success Rate**        | Gauge       | Taxa de sucesso de remediação (0-100%)                                                                 |
| **Issues by Severity**  | Pie Chart   | Distribuição de issues por severidade (Critical/High/Medium/Low)                                       |
| **Issues by State**     | Bar Chart   | Contagem de issues por estado (Detected/Analyzing/Remediating/Resolved/Escalated)                      |
| **Remediation Actions** | Time Series | Ações de remediação ao longo do tempo, separadas por tipo (Restart/Scale/Rollback/Adjust/Delete/Patch) |
| **Resolution Duration** | Histogram   | Distribuição do tempo de resolução com buckets de 1min, 2min, 5min, 10min, 30min                       |
| **Issues Over Time**    | Time Series | Incidentes criados vs. resolvidos por hora                                                             |

**Variáveis de template:**

| Variável    | Tipo     | Valores                          |
| ----------- | -------- | -------------------------------- |
| `namespace` | Query    | Todos os namespaces com issues   |
| `severity`  | Custom   | All, Critical, High, Medium, Low |
| `interval`  | Interval | 1m, 5m, 15m, 1h                  |

### 2. SLO Burn Rate (`slo-burn-rate.json`)

Dashboard dedicado a SLOs seguindo o modelo Google SRE.

**Painéis:**

| Painel                           | Tipo        | Descrição                                                                                            |
| -------------------------------- | ----------- | ---------------------------------------------------------------------------------------------------- |
| **Error Budget Gauge**           | Gauge       | Porcentagem de error budget restante por SLO. Thresholds: verde >30%, amarelo 10-30%, vermelho \<10% |
| **Burn Rate 1h**                 | Time Series | Burn rate na janela de 1 hora com linha de threshold em 14.4x                                        |
| **Burn Rate 6h**                 | Time Series | Burn rate na janela de 6 horas com linha de threshold em 6.0x                                        |
| **Burn Rate 24h**                | Time Series | Burn rate na janela de 24 horas com linha de threshold em 3.0x                                       |
| **Burn Rate 72h**                | Time Series | Burn rate na janela de 72 horas com linha de threshold em 1.0x                                       |
| **SLA Compliance**               | Stat        | Porcentagem atual de compliance por SLO                                                              |
| **SLA Violations**               | Table       | Lista de violações com timestamp, SLO afetado, duração e impacto no budget                           |
| **Budget Consumption Over Time** | Time Series | Consumo acumulado de error budget ao longo da janela de 30 dias                                      |

**Threshold lines (anotações):**

Cada gráfico de burn rate inclui uma linha horizontal vermelha tracejada no threshold correspondente (modelo Google SRE de multi-window, multi-burn-rate alerting).

### 3. Incident Timeline (`incident-timeline.json`)

Dashboard focado no fluxo temporal de incidentes e notificações.

**Painéis:**

| Painel                       | Tipo                 | Descrição                                                                   |
| ---------------------------- | -------------------- | --------------------------------------------------------------------------- |
| **Critical Incidents**       | Stat                 | Contagem de incidentes critical ativos (vermelho pulsante se >0)            |
| **Escalated Incidents**      | Stat                 | Contagem de incidentes escalados                                            |
| **Resolved Today**           | Stat                 | Incidentes resolvidos nas últimas 24h                                       |
| **Incident Timeline**        | Timeline/Annotations | Visualização temporal de incidentes com cores por severidade                |
| **Notifications by Channel** | Bar Chart            | Contagem de notificações enviadas por canal (Slack/PagerDuty/Webhook/Email) |
| **Approval Decisions**       | Pie Chart            | Distribuição de decisões de aprovação (Approved/Rejected/Expired)           |
| **Federation Status**        | Table                | Status de clusters federados com last sync, incidentes ativos e health      |
| **MTTD Over Time**           | Time Series          | Mean Time to Detect ao longo do tempo                                       |

### 4. Remediation Stats (`remediation-stats.json`)

Dashboard detalhado sobre o desempenho das remediações.

**Painéis:**

| Painel                      | Tipo                   | Descrição                                                                                   |
| --------------------------- | ---------------------- | ------------------------------------------------------------------------------------------- |
| **Success Rate Gauge**      | Gauge                  | Taxa de sucesso geral de remediação. Thresholds: verde >90%, amarelo 75-90%, vermelho \<75% |
| **Actions by Type**         | Bar Chart (horizontal) | Total de ações executadas agrupadas por tipo (RestartDeployment, ScaleDeployment, etc.)     |
| **Actions by Result**       | Stacked Bar            | Ações por resultado (success/failed) ao longo do tempo                                      |
| **Duration p50**            | Stat                   | Mediana do tempo de remediação                                                              |
| **Duration p90**            | Stat                   | Percentil 90 do tempo de remediação                                                         |
| **Duration p99**            | Stat                   | Percentil 99 do tempo de remediação                                                         |
| **Duration Distribution**   | Histogram              | Distribuição do tempo de remediação com buckets                                             |
| **Operator Reconciliation** | Time Series            | Contagem de reconciliações por controller (Issue/Anomaly/AIInsight/Remediation)             |
| **Reconciliation Errors**   | Time Series            | Erros de reconciliação por controller                                                       |
| **Reconciliation Duration** | Heatmap                | Duração das reconciliações por controller (detecta gargalos)                                |

## Instalação dos Dashboards Grafana

### Via Grafana Sidecar (Recomendado)

Se você usa o [Grafana Helm chart](https://github.com/grafana/helm-charts) com sidecar habilitado, crie ConfigMaps com o label `grafana_dashboard: "1"`:

```bash theme={"system"}
# Criar ConfigMaps para cada dashboard
kubectl create configmap grafana-aiops-overview \
  --from-file=aiops-overview.json=operator/dashboards/aiops-overview.json \
  -n monitoring

kubectl create configmap grafana-slo-burn-rate \
  --from-file=slo-burn-rate.json=operator/dashboards/slo-burn-rate.json \
  -n monitoring

kubectl create configmap grafana-incident-timeline \
  --from-file=incident-timeline.json=operator/dashboards/incident-timeline.json \
  -n monitoring

kubectl create configmap grafana-remediation-stats \
  --from-file=remediation-stats.json=operator/dashboards/remediation-stats.json \
  -n monitoring

# Adicionar label para o sidecar descobrir
kubectl label configmap grafana-aiops-overview grafana_dashboard=1 -n monitoring
kubectl label configmap grafana-slo-burn-rate grafana_dashboard=1 -n monitoring
kubectl label configmap grafana-incident-timeline grafana_dashboard=1 -n monitoring
kubectl label configmap grafana-remediation-stats grafana_dashboard=1 -n monitoring
```

<Note>
  O sidecar do Grafana detecta automaticamente ConfigMaps com o label `grafana_dashboard: "1"` e importa os dashboards sem restart.
</Note>

### Via Importação Manual

1. Acesse Grafana > **Dashboards** > **Import**
2. Faça upload do arquivo JSON ou cole o conteúdo
3. Selecione o datasource Prometheus
4. Clique em **Import**

### ServiceMonitor para Prometheus Operator

Configure o scraping de métricas do operator:

```yaml theme={"system"}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: chatcli-operator
  namespace: chatcli-system
  labels:
    app.kubernetes.io/name: chatcli-operator
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: chatcli-operator
  endpoints:
    - port: metrics
      interval: 30s
      path: /metrics
  namespaceSelector:
    matchNames:
      - chatcli-system
```

## Referência de Métricas Prometheus

O operator expõe as seguintes métricas Prometheus para alimentar os dashboards Grafana:

| Métrica                                              | Tipo      | Labels                          | Descrição                                                         |
| ---------------------------------------------------- | --------- | ------------------------------- | ----------------------------------------------------------------- |
| `chatcli_operator_issues_total`                      | Counter   | `severity`, `state`             | Total de issues criados por severidade e estado                   |
| `chatcli_operator_active_issues`                     | Gauge     | `namespace`                     | Número de issues ativos (não resolvidos)                          |
| `chatcli_operator_issue_resolution_duration_seconds` | Histogram | `severity`                      | Duração da detecção até resolução                                 |
| `chatcli_operator_remediation_actions_total`         | Counter   | `type`, `result`                | Total de ações de remediação por tipo e resultado                 |
| `chatcli_operator_remediation_duration_seconds`      | Histogram | `type`                          | Duração das ações de remediação por tipo                          |
| `chatcli_operator_anomalies_total`                   | Counter   | `signal_type`, `namespace`      | Total de anomalias detectadas                                     |
| `chatcli_operator_anomalies_suppressed_total`        | Counter   | `strategy`                      | Anomalias suprimidas pelo Noise Reducer por estratégia            |
| `chatcli_operator_ai_analysis_duration_seconds`      | Histogram | `provider`, `model`             | Duração das análises por IA                                       |
| `chatcli_operator_ai_analysis_confidence`            | Histogram | `provider`                      | Distribuição de confidence das análises                           |
| `chatcli_operator_ai_tokens_total`                   | Counter   | `provider`, `direction`         | Total de tokens consumidos (direction: input/output)              |
| `chatcli_operator_ai_cost_dollars`                   | Counter   | `provider`                      | Custo acumulado em dólares por provedor                           |
| `chatcli_operator_slo_current_ratio`                 | Gauge     | `slo_name`, `service`           | Ratio atual do SLO (0-1)                                          |
| `chatcli_operator_slo_error_budget_remaining`        | Gauge     | `slo_name`                      | Error budget restante em minutos                                  |
| `chatcli_operator_slo_burn_rate`                     | Gauge     | `slo_name`, `window`            | Burn rate por janela (1h/6h/24h/72h)                              |
| `chatcli_operator_approvals_total`                   | Counter   | `decision`                      | Total de decisões de aprovação (approved/rejected/expired)        |
| `chatcli_operator_notifications_total`               | Counter   | `channel`, `result`             | Notificações enviadas por canal e resultado                       |
| `chatcli_operator_postmortems_total`                 | Counter   | `source`                        | Total de post-mortems gerados por fonte (agentic/standard)        |
| `chatcli_operator_reconcile_total`                   | Counter   | `controller`, `result`          | Total de reconciliações por controller e resultado                |
| `chatcli_operator_reconcile_duration_seconds`        | Histogram | `controller`                    | Duração das reconciliações por controller                         |
| `chatcli_operator_reconcile_errors_total`            | Counter   | `controller`                    | Total de erros de reconciliação por controller                    |
| `chatcli_operator_cluster_health`                    | Gauge     | `cluster`, `provider`           | Health do cluster (1=healthy, 0.5=degraded, 0=unreachable)        |
| `chatcli_operator_capacity_cpu_usage_percent`        | Gauge     | `resource`, `namespace`         | Uso atual de CPU em porcentagem                                   |
| `chatcli_operator_capacity_memory_usage_percent`     | Gauge     | `resource`, `namespace`         | Uso atual de memória em porcentagem                               |
| `chatcli_operator_capacity_exhaustion_days`          | Gauge     | `resource`, `namespace`, `type` | Dias projetados até esgotamento (type: cpu/memory, -1 se estável) |

## Queries Prometheus Úteis

Exemplos de queries PromQL para usar nos dashboards ou alertas:

<AccordionGroup>
  <Accordion title="MTTR por severidade (últimas 24h)">
    ```promql theme={"system"}
    histogram_quantile(0.5,
      rate(chatcli_operator_issue_resolution_duration_seconds_bucket{severity="critical"}[24h])
    )
    ```
  </Accordion>

  <Accordion title="Taxa de sucesso de remediação">
    ```promql theme={"system"}
    sum(chatcli_operator_remediation_actions_total{result="success"})
    /
    sum(chatcli_operator_remediation_actions_total)
    * 100
    ```
  </Accordion>

  <Accordion title="Burn rate do SLO (alerta multi-window)">
    ```promql theme={"system"}
    # Alerta: burn rate 1h > 14.4x E burn rate 6h > 6x (Google SRE model)
    chatcli_operator_slo_burn_rate{window="1h"} > 14.4
    and
    chatcli_operator_slo_burn_rate{window="6h"} > 6.0
    ```
  </Accordion>

  <Accordion title="Custo LLM acumulado por hora">
    ```promql theme={"system"}
    increase(chatcli_operator_ai_cost_dollars[1h])
    ```
  </Accordion>

  <Accordion title="Anomalias suprimidas vs. processadas">
    ```promql theme={"system"}
    # Ratio de supressão
    sum(rate(chatcli_operator_anomalies_suppressed_total[1h]))
    /
    (sum(rate(chatcli_operator_anomalies_total[1h])) + sum(rate(chatcli_operator_anomalies_suppressed_total[1h])))
    * 100
    ```
  </Accordion>

  <Accordion title="Recursos próximos de esgotamento (menos de 7 dias)">
    ```promql theme={"system"}
    chatcli_operator_capacity_exhaustion_days > 0
    and
    chatcli_operator_capacity_exhaustion_days &lt; 7
    ```
  </Accordion>
</AccordionGroup>

## Acesso ao Dashboard

<Steps>
  <Step title="Verificar o operator">
    Confirme que o operator está rodando:

    ```bash theme={"system"}
    kubectl get pods -n chatcli-system -l app.kubernetes.io/name=chatcli-operator
    ```
  </Step>

  <Step title="Port-forward (desenvolvimento)">
    Para acesso local durante desenvolvimento:

    ```bash theme={"system"}
    kubectl port-forward -n chatcli-system svc/chatcli-operator 8090:8090
    ```

    Acesse: `http://localhost:8090/`
  </Step>

  <Step title="Ingress (produção)">
    Para acesso em produção, configure um Ingress:

    ```yaml theme={"system"}
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: chatcli-dashboard
      namespace: chatcli-system
      annotations:
        nginx.ingress.kubernetes.io/ssl-redirect: "true"
    spec:
      tls:
        - hosts: ["aiops.empresa.com"]
          secretName: aiops-tls
      rules:
        - host: aiops.empresa.com
          http:
            paths:
              - path: /
                pathType: Prefix
                backend:
                  service:
                    name: chatcli-operator
                    port:
                      number: 8090
    ```
  </Step>

  <Step title="Configurar API Key">
    Configure ao menos uma API key antes de expor o dashboard externamente:

    ```yaml theme={"system"}
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: chatcli-operator-config
      namespace: chatcli-system
    data:
      api-keys: |
        - key: "ck_live_abc123..."
          role: admin
          description: "CI/CD Pipeline"
        - key: "ck_live_def456..."
          role: operator
          description: "NOC Team"
    ```

    Após criar o ConfigMap, reinicie o operator para carregar as chaves:

    ```bash theme={"system"}
    kubectl rollout restart deployment chatcli-operator -n chatcli-system
    ```
  </Step>
</Steps>

<Warning>
  Nunca exponha o dashboard sem autenticação (API key) em produção. O modo dev (sem chaves) permite acesso irrestrito, incluindo operações de escrita como acknowledge, approve e reject.
</Warning>

## Próximo Passo

<CardGroup cols={2}>
  <Card title="API REST Reference" icon="code" href="/pt/reference/api-reference">
    Referência completa de todos os endpoints consumidos pelo dashboard.
  </Card>

  <Card title="Capacity & Custos" icon="chart-line" href="/pt/features/aiops/capacity-cost">
    Detalhes do Capacity Planner, Noise Reducer e Cost Tracker.
  </Card>

  <Card title="AIOps Platform" icon="brain" href="/pt/features/aiops-platform">
    Arquitetura completa do pipeline de operações autônomas.
  </Card>

  <Card title="K8s Operator" icon="dharmachakra" href="/pt/features/k8s-operator">
    Configuração e deployment do operator Kubernetes.
  </Card>
</CardGroup>
