Configuração Avançada do Grafana Loki

Estrutura de Configuração do Loki

O Grafana Loki utiliza um arquivo de configuração no formato YAML, geralmente nomeado como loki-local-config.yaml ou similar. Esse arquivo pode ser especificado durante a inicialização do serviço por meio da flag -config.file. A estrutura principal inclui seções dedicadas a componentes esppecíficos do sistema, como servidor HTTP/gRPC, armazenamento, ingestão, consulta e escalonamento.

Configurações do Servidor (Server)

Define os parâmetros de rede e log para o serviço Loki:

server:
  http_listen_address: "0.0.0.0"
  http_listen_port: 3100
  grpc_listen_port: 9095
  log_level: info
  log_format: logfmt

  • http_listen_port: Porta onde a API HTTP será exposta (padrão: 3100).
  • grpc_listen_port: Usado para comunicação interna entre componentes (ex: ingesters e queriers).
  • log_level: Nível de detalhe nos logs; valores comuns são debug, info, warn.

Configuração Compartilhada (Common)

Parâmetros globais aplicáveis a múltiplos serviços dentro do cluster Loki:

common:
  path_prefix: /var/loki
  replication_factor: 3
  storage:
    type: filesystem
    filesystem:
      chunks_directory: /var/loki/chunks
      rules_directory: /var/loki/rules
  ring:
    kvstore:
      store: memberlist
    replication_factor: 3
    tokens_file_path: /var/loki/tokens.dat

  • storage.type: Define o back end — pode ser s3, gcs, azure ou filesystem.
  • ring: Gerencia distribuição de carga e tolerância a falhas usando um anel baseado em chave-valor (KV), como Consul ou memberlist.

Ingestão de Dados (Ingester)

Controla como os dados recebidos são processados antes de serem armazenados:

ingester:
  chunk_idle_period: 5m
  chunk_retain_period: 30s
  max_chunk_age: 2h
  chunk_block_size: 262144
  chunk_target_size: 1572864
  chunk_encoding: gzip
  wal:
    enabled: true
    dir: /var/loki/wal

  • chunk_idle_period: Tempo que um chunk inativo permanece na memória antes de ser descarregado.
  • wal.enabled: Ativa o Write-Ahead Log para recuperação após falhas inesperadas.
  • max_chunk_age: Idade máxima permitida para entradas dentro de um mesmo chunk.

Regras e Alertas (Ruler)

Habilita avaliação de regras prometheus-like e envio de alertas:

ruler:
  enable_api: true
  rule_path: /etc/loki/rules
  alertmanager_url: http://alertmanager:9093
  wal:
    dir: /var/loki/ruler-wal
    truncate_frequency: 1h
  remote_write:
    enabled: true
    clients:
      - url: http://prometheus-gw:9090/api/v1/write

  • alertmanager_url: Endpoint do Alertmanager para disparo de notificações.
  • remote_write.clients: Permite exportar métricas derivadas das consultas de log para sistemas externos.

Comunicação de Cluster (Memberlist)

Usado para descoberta automática de nós quando não se utiliza Consul ou etcd:

memberlist:
  bind_addr: 0.0.0.0
  bind_port: 7946
  join_members:
    - loki-node-01:7946
    - loki-node-02:7946
  gossip_interval: 200ms
  left_ingesters_timeout: 5m

  • join_members: Lista estática de membros iniciais para formar o anel.
  • gossip_interval: Frequência com que os nós trocam informações sobre estado do cluster.

Limites por Tenant (Limits Config)

Define cotas de uso para evitar sobrecarga no sistema:

limits_config:
  ingestion_rate_mb: 4
  ingestion_burst_size_mb: 6
  max_line_size: 256KB
  max_streams_per_user: 10000
  max_query_parallelism: 16
  max_entries_limit_per_query: 5000
  max_cache_freshness_per_query: 10m

  • ingestion_rate_mb: Limite médio de taxa de entrada por usuário (MB/s).
  • max_entries_limit_per_query: Máximo de linhas retornadas por consulta.

Consulta (Querier)

Gerencia como as consultas são executadas e encaminhadas:

querier:
  query_ingesters_within: 3h
  max_concurrent: 8
  timeout: 1m

  • query_ingesters_within: Consultas com intervalo menor que esse valor serão direcionadas aos ingesters ativos.
  • max_concurrent: Número máximo de consultas simultâneas suportadas pelo querier.

Frontend de Consulta (Query Frontend)

Otimiza consultas longas dividindo-as e gerenciando cache:

frontend:
  compress_responses: true
  max_outstanding_per_tenant: 1024

query_range:
  cache_results: true
  parallelise_shardable_queries: true
  split_duration: 24h
  results_cache:
    cache:
      embedded_cache:
        enabled: true
        max_size_mb: 100

  • split_duration: Divide consultas longas em pedaços menores de até 24 horas.
  • cacche_results: Habilita armazenamento em cache dos resultados para acelerar respostas repetidas.

Tags: loki Grafana Logging monitoring Prometheus

Publicado em 9-3 11:05