GH GambleHub

Linhas de montagem ELK e Loki

1) Porquê e quando: objetivos de logagem

Observabilidade e RCA: aceleração do debag, pós-mortem, controle SLO/SLA.
Segurança e auditoria, sinais de acesso, anomalias, investigações.
Métricas de negócios: conversão, flow de pagamento, erros de PSP, comportamento dos usuários.
Complacência: armazenamento, camuflagem PII, políticas de retenha, Legal Hold.

Tipos de logs: aplicativos, infraestrutura (kubelet, kube-proxy, CNI, ingress), redes, auditoria, pagamentos, eventos web, Nginx/Envoy, BD.

2) Arquiteturas de alto nível

Opção A: ELK

Producers → Logshipper (Filebeat/Fluent Bit/Vector) → Logstash/Beats input → Elasticsearch → Kibana/Алертинг

Opção B: Loki

Producers → Promtail/Fluent Bit → Loki distributor/ingester/querier → Grafana/Алертинг

Híbrido

ELK para pesquisa em texto cheio/faceta, Loki para armazenamento de escala barata e consultas rápidas; corelação com métricas/pistas em Grafana.

3) Fluxo de dados e níveis de processamento

1. Coleta: arquivos tail tail, jornald, syslog, contêineres stdout, HTTP.
2. Enriquecimento: timestamp normalização, host/pod/namespace, eng (prod/estágio), release, commit SHA, trace/span id.
3. Parsing: JSON → flat fields; grok/regex; Formatos Nginx/Envoy; esquemas de pagamento (códigos de erro PSP).
4. Filtragem/redação: cortar PII (PAN, CVV, e-mail, endereços), segredos, tokens.
5. Roteiro: por tenant/service/nível logístico; hot/warm/cold; no armazenamento S3/objeto.
6. Armazenamento e retenções: política de TTL por classe de dados.
7. Acesso/Analista/Alerta.

4) ELK: soluções-chave

4. 1 Logstash/Beats

Use o Beats/Fluent Bit em nodes para coletor leve, o Logstash como um ETL central (grok, disect, mutate, geoip, translate).
Poulas Logstash: ingest-ETL, security-ETL, payments-ETL - para isolar as cargas.

4. 2 Elasticsearch

Charding: Direcione-se para £20-50 GB por chard; Evite o Shard-Bang.
Estratégia de índice: 'logs- <tenant> - <service> -YYYY. MM. DD 'ou data-striam; rollover em tamanho/tempo.

ILM (hot/warm/cold/frozen):
  • hot: SSD, 1-7 dias; warm: HDD, 7-30 dias; cold: volume; frozen: custo mínimo com acesso mais lento.
  • Mappings: Tipifique severamente os campos, limite 'fielddata' e crie campos dinâmicos.
  • Dinheiro e consultas: filtros para campos de keyword, equipamentos com cuidado; pin-to-hot para buscas de alta frequência.

4. 3 Kibana

Espaços (Spaces) para a multi-tenência.
Saved searches, Lens/TSVB, threshold/metric-alerts.
RBAC índice-pattern ('logs-tenant-').

5) Loki: soluções essenciais

5. 1 Modelo de editoras

As editoras são o índice Loki. Use «cluster», «namespace», «app», «level», «eng», «tenant».
Campos de alta vitalidade (uid, request _ id) - na linha; retire quando solicitado através de LogQL '| =', '| json', '| regexp'.

5. 2 Componentes

Promtail: сбор stdout, files, journald; parsers (JSON, regex, cri).
Distribuidor/Ingester/Querier/Query-frontend: zoom em papéis; O cachê de solicitações.
O objeto de armazenamento (S3/GCS/MinIO) para armazenamento de logs de chank a longo prazo.

5. 3 LogQL técnicas

Grep rápido: '

Парсинг JSON: `{app="api"} | json | code="5xx" | unwrap duration | avg()`

Correlação com métricas: 'rate (

6) Comparação ELK vs Loki (resumo)

Busca/agregação: ELK mais forte para pedidos complexos de texto completo e faceta; Loki - grep-like, rápido e barato.
Custo: Loki muitas vezes é mais barato em grandes volumes (armazenamento de objetos + índice menor).
Dificuldade de operação: ELK requer disciplina de índice/ILM, javu-hip; A Loki é uma disciplina de editoras.
Correlação com métricas/pistas: Loki integra-se naturalmente com o vidro Grafana/OTel; O ELK também é capaz, mas mais frequentemente através da integração.

7) Segurança e Complacência

Edição PII na borda (shipper): disfarce PAN, e-mail, telefone, endereços, tokens.
TLS in-transit, mTLS entre agentes e pneus.
RBAC: para-tenant índices/editoras; isolamento de neimspace/espaços.
Secret hygiene: variáveis de ambiente sem segredos, gerentes de segredo individuais.
Legal Hold: mecanismo de congelamento de segmentos/índices; write-once para períodos de disputa.
Remoção/Retensas: Políticas de TTL por classe de dados (prod/stateful/pagamentos/auditoria).
Auditoria dos trailers de acesso aos logs.

8) Confiabilidade e banda larga

Tampão e backpressure: arquivos/discos locais dos agentes; retrai com backoff exponencial.
Idempotency: campos 'ingest _ id '/' jobs _ id' para evitar duplicações em repetições.
HA: Mínimo de 3 nodes para os mestres/ingestores de ES Loki; antiaffinity по AZ.
Quotas e rate-limits por tenant/service; protecção contra «tempestades» de loging.
O padrão de nível de logs é 'ERRO' limitado, 'DEBUG' apenas temporariamente através de bandeiras dinâmicas.

9) Desempenho e sintonização

ELK:
  • JVM heap 50% RAM (mas ≤ £30-32 GB por nó), page cache é importante.
  • Rollover inteligente (20-50 GB/shard), 'refresh _ interval' ↑ para os índices ingest.
  • Em Logstash evitar «pesado» grok; se possível, o loging JSON na fonte.
Loki:
  • A editora-set correta é a chave da velocidade.
  • Grandes chancas → armazenamento mais barato, mas mais caro memória no ingester; balanceie.
  • Query-frontend + dinheiro (mem/redis) para reencontros.

10) FinOps para logs (custo)

Reduzir a radicalidade dos campos/editoras.
Sampling DEBUG e «Logs Sweeeecks» dinâmicos.
Rotação: hot curto, cold longo em objeto.
Deduplicação e mensagens consolidadas (batch).
Arquivamento de logs raramente usados em classes de armazenamento baratas.
Dashboard valor: volume/data striam/editoras/índices/tenentes.

11) Correlação com métricas e pistas (Observabilidade 3-em-1)

Trace-ID/Span-ID em cada logs (middleware nas passarelas API e nos serviços).
OpenTelemetry: contexto único; exportadores para Tempo/Jaeger, métricas para Prometheus/Mimir, logs para Loki/ELK.
Cenários rápidos: «alert por métrica → salto em logs apropriados → salto na pista».

12) Multi-tenência e isolamento

Namespace-based isolamento (K8s labels), índice-pattern/editoras individuais.
Separação de alertas/dashboards/retensia pelo tenante.
Billing de consumo: volume de ingest, armazenamento, consultas.

13) Monitoramento e SLO para a própria linha de montagem

SLO ingest: «99. 9% dos logs foram entregues <X segundos".
SLO de pesquisa: «p95 solicitações <Y segundos».
Métricas técnicas: queue depth, dropped logs, reprocess rate, erro rate parsers, falha ingester/ES nod.

14) Esquemas de implantação típicos

Managed: Elasticsearch Service/Opensearch, Grafana Cloud Loki.
Self-hosted K8s: StatefulSets para ES/Loki, anti-afinidade em AZ, PersistentVolumes, armazenamento de objetos.
Agentes Edge (aplicativos em regiões): tampão local + TLS para o canal central ingest.

15) Exemplos de configuração

15. 1 Promtail (K8s, CRI JSON)

yaml scrape_configs:
- job_name: kubernetes-pods kubernetes_sd_configs:
- role: pod pipeline_stages:
- cri: {}
- json:
expressions:
level: level msg: message trace: trace_id
- labels:
level:
app:
namespace:
- match:
selector: '{namespace="prod"}'
stages:
- regex:
expression: '(?P<pan>\b[0-9]{12,19}\b)'
- replace:
expression: '(?P<pan>\b[0-9]{12,19}\b)'
replace: '[REDACTED_PAN]'
relabel_configs:
- action: replace source_labels: [__meta_kubernetes_pod_label_app]
target_label: app
- action: replace source_labels: [__meta_kubernetes_namespace]
target_label: namespace
- action: replace source_labels: [__meta_kubernetes_pod_node_name]
target_label: node

15. 2 Logstash (ingest e camuflagem)

ruby input {
beats { port => 5044 }
}
filter {
json { source => "message" skip_on_invalid_json => true }
mutate { add_field => { "env" => "%{[kubernetes][labels][env]}" } }
PII mutate {
gsub => [
"message", "\b[0-9]{12,19}\b", "[REDACTED_PAN]",
"message", "(?i)(authorization: Bearer)([A-Za-z0-9\.\-_]+)", "\1[REDACTED_TOKEN]"
]
}
}
output {
elasticsearch {
hosts => ["https://es-hot-1:9200","https://es-hot-2:9200"]
index => "logs-%{[fields][tenant]}-%{[app]}-%{+YYYY. MM. dd}"
ilm_enabled => true ssl => true cacert => "/etc/ssl/certs/ca. crt"
user => "${ES_USER}"
password => "${ES_PASS}"
}
}

16) Alerting e dashboards (modelos)

Ошибки API: `rate({app="api",level="error"}[5m]) > threshold` → PagerDuty/Telegram.
Alta de 5xx em Nginx/Envoy; drop ingest em agentes; crescimento da busca latency.

Dashboard:
  • Volume de logs por serviços/tenentes.
  • Top Pattern erros (código/exclusão/endpoint).
  • Custo de retino/classe de armazenamento.

17) Verificações de qualidade (logs-QA)

Contratos de loging: formato JSON, campos obrigatórios ('ts', 'level', 'service', 'eng', 'trace _ id', 'msg').
Linter logs na CI: proibição de novos campos de alta vitalidade sem concordância.
Serviços Canários - Geração de logs de referência para detecção precoce de regressões.

18) Erros frequentes e anti-pattern

As editoras Loki de alta vitalidade ('user _ id', 'request _ id') → uma explosão de memória.
Campos dinâmicos em ES sem macpings → «explosão de índice».
DEBUG em venda «para sempre». Acenda por bandeiras e com TTL.
Falta de edição PII.
Uma linha de montagem «monolítico» comum para tudo é melhor para os segmentos de domínios.

19) Plano de implementação (iterações)

1. MVP: agentes + um pipline (aplicativos), dashboards básicos, edição PII.
2. Extensão: redes/infra-logs, alertas SLO, coreação com pistas.
3. FinOps: matriz de retenção, relatório de custo, otimização de editoras/índices.
4. Espaço Multi-Tenente, RBAC, Billing de Consumo.
5. Confiabilidade HA, disaster-drills, Legal Hold.

20) Folha de cheque de lançamento em proda

  • Formato JSON e campos obrigatórios em todos os serviços.
  • Camuflar o PII no agente/ingest.
  • Políticas de retencagem/ILM ou bucket-lifecyple.
  • RBAC/espaço/tenentes.
  • SLO ingest/pesquisa e alertas.
  • Logs canários e teste de carga.
  • Dashboards de custo e relatório sobre os proprietários de serviços.
  • Runbooks: «O que fazer se o ingest caiu/pesquisa em vermelho lento/chardes».

21) Mini-FAQ

O que escolher é ELK ou Loki?

Contact

Entrar em contacto

Contacte-nos para qualquer questão ou necessidade de apoio.Estamos sempre prontos para ajudar!

Telegram
@Gamble_GC
Iniciar integração

O Email é obrigatório. Telegram ou WhatsApp — opcionais.

O seu nome opcional
Email opcional
Assunto opcional
Mensagem opcional
Telegram opcional
@
Se indicar Telegram — responderemos também por lá.
WhatsApp opcional
Formato: +indicativo e número (ex.: +351XXXXXXXXX).

Ao clicar, concorda com o tratamento dos seus dados.