promovaweb-devops-review-metabase-stack

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Review Metabase Stack

Metabase 栈审核

Executa uma auditoria completa do arquivo
metabase.yaml
e reporta conformidade, problemas e sugestões.
metabase.yaml
文件执行完整审计,并上报合规性、问题及优化建议。

Instruções de Execução

执行说明

Quando esta skill for invocada, siga exatamente este roteiro:
调用本工具时,请严格遵循以下流程:

Passo 1 — Ler os arquivos

步骤1 — 读取文件

Leia o arquivo
metabase.yaml
completo. Leia também
postgres.yaml
para verificar a consistência das credenciais de banco.
读取完整的
metabase.yaml
文件,同时读取
postgres.yaml
以校验数据库凭证的一致性。

Passo 2 — Executar todos os checks abaixo

步骤2 — 执行所有检查项

Execute cada bloco de verificação e registre os resultados (✅ OK / ⚠️ Atenção / ❌ Erro).
逐个执行以下校验模块并记录结果(✅ 正常 / ⚠️ 注意 / ❌ 错误)。

Passo 3 — Gravar o resultado

步骤3 — 保存结果

Grave o relatório completo em um arquivo chamado metabase.audit.md.

将完整的审计报告保存为名为metabase.audit.md的文件。

Checks de Verificação

校验项清单

1. Variáveis de Ambiente Obrigatórias

1. 必填环境变量

Verifique se todas as variáveis abaixo estão definidas no anchor
x-metabase-db-env
:
Banco de dados PostgreSQL (
x-metabase-db-env
)
  • MB_DB_TYPE
    — deve ser
    postgres
  • MB_DB_DBNAME
    — deve ser definido (padrão:
    metabase
    )
  • MB_DB_PORT
    — deve ser
    5432
  • MB_DB_USER
    — deve ser definido (padrão:
    postgres
    )
  • MB_DB_PASS
    — deve existir e não deve ser o placeholder
    SENHA
    , compare com a senha definida em
    postgres.yaml
  • MB_DB_HOST
    — deve ser definido (padrão:
    postgres
    )
Variáveis diretas no serviço
metabase
:
  • MB_SITE_URL
    — deve começar com
    https://
    e ser um domínio válido (não localhost, não
    bi.agenciasynca.com.br
    se placeholder)
  • O domínio de
    MB_SITE_URL
    deve corresponder à regra Traefik configurada

校验锚点
x-metabase-db-env
中是否已定义所有以下变量:
PostgreSQL 数据库配置(
x-metabase-db-env
  • MB_DB_TYPE
    — 必须为
    postgres
  • MB_DB_DBNAME
    — 必须已定义(默认值:
    metabase
  • MB_DB_PORT
    — 必须为
    5432
  • MB_DB_USER
    — 必须已定义(默认值:
    postgres
  • MB_DB_PASS
    — 必须存在且不能是占位符
    SENHA
    ,需和
    postgres.yaml
    中定义的密码一致
  • MB_DB_HOST
    — 必须已定义(默认值:
    postgres
metabase
服务直接配置的变量:
  • MB_SITE_URL
    — 必须以
    https://
    开头且为有效域名(不能是localhost,不能是占位符
    bi.agenciasynca.com.br
  • MB_SITE_URL
    的域名必须和配置的Traefik规则匹配

2. Serviços Obrigatórios

2. 必填服务

Verifique se o serviço está presente:
ServiçoObrigatório
metabase
Sim

校验是否存在以下服务:
服务是否必填
metabase

3. Replicas do Serviço

3. 服务副本数

Verifique a quantidade de réplicas:
ServiçoRéplicas EsperadasObservação
metabase
1Metabase é stateful, múltiplas réplicas requerem configuração adicional
Alertar se houver mais de 1 réplica sem configuração de sessão compartilhada.

校验副本数量:
服务预期副本数说明
metabase
1Metabase是有状态服务,多副本需要额外配置
如果存在超过1个副本但未配置共享会话,需发出告警。

4. Rotas Traefik

4. Traefik 路由

Para o serviço
metabase
, verifique:
Âncora de endereço (
x-metabase-app-url
):
  • A âncora
    x-metabase-app-url
    deve existir e conter um domínio válido (não placeholder como
    bi.agenciasynca.com.br
    )
  • O domínio na âncora deve ser idêntico ao domínio dentro de
    Host(...)
    na label
    traefik.http.routers.metabase.rule
  • Se não forem iguais, reportar como ❌ Erro: inconsistência entre
    x-metabase-app-url
    e a regra Traefik
  • O domínio na âncora deve coincidir também com o domínio em
    MB_SITE_URL
    (sem o
    https://
    )
Labels obrigatórias:
  • traefik.enable=true
  • traefik.swarm.network=network_swarm_public
  • traefik.http.routers.metabase.rule
    — deve conter
    Host(...)
    com domínio válido
  • traefik.http.routers.metabase.entrypoints=websecure
  • traefik.http.routers.metabase.tls.certresolver=letsencryptresolver
  • traefik.http.routers.metabase.service=metabase
  • traefik.http.services.metabase.loadbalancer.server.port=3000
Regras:
  • O domínio na regra Traefik deve corresponder ao
    x-metabase-app-url
    e ao
    MB_SITE_URL
  • Verificar se
    passHostHeader
    está configurado (recomendado)

针对
metabase
服务,校验以下内容:
地址锚点(
x-metabase-app-url
):
  • 锚点
    x-metabase-app-url
    必须存在且包含有效域名(不能是
    bi.agenciasynca.com.br
    这类占位符)
  • 锚点中的域名必须完全等于标签
    traefik.http.routers.metabase.rule
    Host(...)
    内的域名
  • 如果不一致,标记为 ❌ 错误:
    x-metabase-app-url
    与Traefik规则不匹配
  • 锚点中的域名也必须和
    MB_SITE_URL
    中的域名(去掉
    https://
    后)一致
必填标签:
  • traefik.enable=true
  • traefik.swarm.network=network_swarm_public
  • traefik.http.routers.metabase.rule
    — 必须包含带有效域名的
    Host(...)
  • traefik.http.routers.metabase.entrypoints=websecure
  • traefik.http.routers.metabase.tls.certresolver=letsencryptresolver
  • traefik.http.routers.metabase.service=metabase
  • traefik.http.services.metabase.loadbalancer.server.port=3000
规则:
  • Traefik规则中的域名必须与
    x-metabase-app-url
    MB_SITE_URL
    匹配
  • 校验是否配置了
    passHostHeader
    (推荐配置)

5. Recursos do Container

5. 容器资源配置

Verifique os limites de recursos do serviço
metabase
:
ServiçoCPU MínimoMemória MínimaMemória Máxima
metabase
"1"1024M2048M
Alertar se não tiver
resources.limits
definido. Metabase requer ao menos 1-2GB de memória para operar corretamente.

校验
metabase
服务的资源限制:
服务最低CPU配置最低内存配置最高内存配置
metabase
"1"1024M2048M
如果未定义
resources.limits
需发出告警。Metabase至少需要1-2GB内存才能正常运行。

6. Configuração de Deploy

6. 部署配置

Para o serviço
metabase
, verifique:
  • mode: replicated
    — deve ser
    replicated
  • placement.constraints
    — deve incluir
    node.role == manager
  • Verificar se há
    update_config
    com
    order: start-first
    e
    failure_action: rollback
    (recomendado)

针对
metabase
服务,校验以下内容:
  • mode: replicated
    — 必须为
    replicated
  • placement.constraints
    — 必须包含
    node.role == manager
  • 校验是否配置了带
    order: start-first
    failure_action: rollback
    update_config
    (推荐配置)

7. Redes e Imagens

7. 网络与镜像

Redes:
  • O serviço deve estar na rede
    network_swarm_public
  • A rede deve ser declarada como
    external: true
    na seção
    networks:
  • Metabase não declara volumes (usa banco externo) — verificar se isso é intencional
Imagens:
  • O serviço deve usar
    *metabase-image
    (anchor)
  • Verificar se a imagem usa tag específica de versão em vez de
    latest
    (recomendado em produção)
  • Alertar se estiver usando
    metabase/metabase:latest
    — versões do Metabase podem ter migrações de banco incompatíveis

网络:
  • 服务必须接入
    network_swarm_public
    网络
  • 该网络必须在
    networks:
    部分声明为
    external: true
  • Metabase未声明存储卷(使用外部数据库)—— 校验是否为有意配置
镜像:
  • 服务必须使用
    *metabase-image
    (锚点)
  • 校验镜像是否使用具体版本标签而非
    latest
    (生产环境推荐)
  • 如果使用
    metabase/metabase:latest
    需发出告警 —— Metabase版本升级可能存在不兼容的数据库迁移

8. Segurança

8. 安全配置

  • MB_DB_PASS
    não deve ser
    SENHA
    (placeholder)
  • MB_SITE_URL
    deve usar
    https://
    (não
    http://
    )
  • Verificar se o banco de dados
    metabase
    foi criado no PostgreSQL antes do deploy
  • Verificar se há configuração de email para recuperação de senha (
    MB_EMAIL_*
    variáveis)

  • MB_DB_PASS
    不能是占位符
    SENHA
  • MB_SITE_URL
    必须使用
    https://
    (不能是
    http://
  • 校验部署前是否已在PostgreSQL中创建了
    metabase
    数据库
  • 校验是否配置了密码找回相关的邮箱配置(
    MB_EMAIL_*
    变量)

Formato do Relatório de Saída

输出报告格式

Ao final, produza um relatório estruturado:
undefined
最终生成结构化报告如下:
undefined

Relatório de Auditoria — metabase.yaml

审计报告 — metabase.yaml

Data: <data atual>
日期: <当前日期>

Resumo

概览

  • Total de checks: X
  • ✅ OK: X
  • ⚠️ Atenções: X
  • ❌ Erros: X
  • 总校验项: X
  • ✅ 正常: X
  • ⚠️ 注意项: X
  • ❌ 错误项: X

Resultados por Categoria

各分类校验结果

1. Variáveis de Ambiente

1. 环境变量

✅ MB_DB_TYPE: postgres ❌ MB_DB_PASS: usando placeholder SENHA — troque antes do deploy ✅ MB_SITE_URL: https://bi.agenciasynca.com.br ...
✅ MB_DB_TYPE: postgres ❌ MB_DB_PASS: 使用占位符SENHA — 部署前请替换 ✅ MB_SITE_URL: https://bi.agenciasynca.com.br ...

2. Serviços

2. 服务校验

✅ metabase: presente
✅ metabase: 已存在

3. Replicas

3. 副本配置

✅ metabase: 1 réplica (adequado para instalação padrão) ...
✅ metabase: 1个副本(标准安装适配) ...

4. Rotas Traefik

4. Traefik路由

✅ metabase: rota Host correta, TLS ok ⚠️ passHostHeader não configurado — recomendado adicionar ...
✅ metabase: Host规则正确,TLS配置正常 ⚠️ 未配置passHostHeader — 推荐添加 ...

5. Recursos

5. 资源配置

✅ metabase: 2048M de memória (adequado) ...
✅ metabase: 2048M内存(配置合规) ...

6. Deploy

6. 部署配置

⚠️ update_config não definido — recomendado configurar start-first e rollback ...
⚠️ 未定义update_config — 推荐配置start-first和rollback策略 ...

7. Redes e Imagens

7. 网络与镜像

⚠️ Imagem usando
latest
— atenção: atualizações do Metabase podem migrar o banco automaticamente ...
⚠️ 镜像使用
latest
标签 — 注意:Metabase升级可能自动执行数据库迁移 ...

8. Segurança

8. 安全配置

❌ MB_DB_PASS: placeholder SENHA detectado ⚠️ Banco
metabase
deve ser criado no PostgreSQL antes do primeiro deploy ...
❌ MB_DB_PASS: 检测到占位符SENHA ⚠️ 首次部署前请先在PostgreSQL中创建
metabase
数据库 ...

Ações Recomendadas (por prioridade)

推荐操作(按优先级排序)

Crítico (fazer antes do deploy)

critical(部署前必须完成)

  1. ...
  1. ...

Recomendado

推荐

  1. ...
  1. ...

Opcional

可选

  1. ...
undefined
  1. ...
undefined