Centralizando logs com Promtail + Loki + Grafana

Neste artigo iremos aprender como centralizar nossos logs do Apache no Loki e a realizar buscas de forma muito rápida utilizando a linguagem LogQL.

[ Hits: 50.088 ]

Por: Leonardo Berbert Gomes em 20/09/2021 | Blog: https://www.linkedin.com/in/leoberbert


Configuração



Neste passo iremos realizar a configuração do Promtail e do Loki. Iremos utilizar um arquivo de log do Apache "access.log".
Arquivo de configuração do Promtail:

vim config.yaml

server:

  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

client:

  url: http://localhost:3100/loki/api/v1/push

scrape_configs:

  - job_name: apache
    static_configs:
    - targets:
        - localhost
      labels:
        job: apache
        env: production
        host: zeus
        __path__: /home/leoberbert/Downloads/stack/promtail/*.log # Diretório do meu arquivo de log.
    pipeline_stages:
    - match:
        selector: '{job="apache"}' #nome do meu job
        stages:
        - regex:
            expression: '^(?P<host>[\w\.]+) - (?P<user>[^ ]*) \[(?P<ts>.*)\] "(?P<method>[^ ]*) (?P<request_url>[^ ]*) (?P<request_http_protocol>[^ ]*)" (?P<status>[\d]+) (?P<bytes_out>[\d]+) "(?P<http_referer>[^"]*)" "(?P<user_agent>[^"]*)"?'
        - labels:
            time:
            host:
            user:
            method:
            request_url:
            request_http_protocol:
            status:
            bytes_out:
            http_referer:
            user_agent:

Arquivo de configuração do Loki:

vim loki-local-config.yaml

auth_enabled: false

server:
  http_listen_port: 3100
  grpc_listen_port: 9096

ingester:
  wal:
    enabled: true
    dir: /tmp/wal
  lifecycler:
    address: 127.0.0.1
    ring:
      kvstore:
        store: inmemory
      replication_factor: 1
    final_sleep: 0s
  chunk_idle_period: 1h       # Any chunk not receiving new logs in this time will be flushed
  max_chunk_age: 1h           # All chunks will be flushed when they hit this age, default is 1h
  chunk_target_size: 1048576  # Loki will attempt to build chunks up to 1.5MB, flushing first if chunk_idle_period or max_chunk_age is reached first
  chunk_retain_period: 30s    # Must be greater than index read cache TTL if using an index cache (Default index read cache TTL is 5m)
  max_transfer_retries: 0     # Chunk transfers disabled

schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_ #nome do meu indice
        period: 24h

storage_config:
  boltdb_shipper:
    active_index_directory: /tmp/loki/boltdb-shipper-active
    cache_location: /tmp/loki/boltdb-shipper-cache
    cache_ttl: 24h         # Can be increased for faster performance over longer query periods, uses more disk space
    shared_store: filesystem
  filesystem:
    directory: /tmp/loki/chunks

compactor:
  working_directory: /tmp/loki/boltdb-shipper-compactor
  shared_store: filesystem

limits_config:
  reject_old_samples: true
  reject_old_samples_max_age: 168h
  ingestion_burst_size_mb: 16
  ingestion_rate_mb: 16

chunk_store_config:
  max_look_back_period: 0s

table_manager:
  retention_deletes_enabled: false
  retention_period: 0s

ruler:
  storage:
    type: local
    local:
      directory: /tmp/loki/rules
  rule_path: /tmp/loki/rules-temp
  ring:
    kvstore:
      store: inmemory
  enable_api: true

É importante ressaltar que os arquivos de configuração são o formato YAML, então fiquem atentos quanto a indentação.

Página anterior     Próxima página

Páginas do artigo
   1. Promtail - Instalação
   2. Loki - Instalação
   3. Grafana - Instalação
   4. Configuração
   5. Começando a brincadeira
Outros artigos deste autor

Rundeck - Um Poderoso Agendador de Tarefas

Monitorando a saúde do Apache (Prometheus + Grafana)

Scikit Learn: Projetando o futuro de suas APIs e aplicativos usando machine learning

Detectando vulnerabilidades com o Nessus

Crie um bot para Telegram e gerencie a escala de plantonistas

Leitura recomendada

Instalar VMWare no Ubuntu 5.10

Acesso seguro a um desktop remoto utilizando Linux, OpenVPN e Nxserver

Planejando a migração de aplicações comerciais para o Linux/GNU

Dicionário pt-BR no Firefox 2.0

Blu-Ray no GNU/Linux - Gravando e ripando mídias via terminal

  
Comentários
[1] Comentário enviado por maurixnovatrento em 20/09/2021 - 23:25h


Bom artigo.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]

[2] Comentário enviado por diegomrodrigues em 22/09/2021 - 07:34h

Excelente artigo! Parabéns!

Atenciosamente,
Diego M. Rodrigues

[3] Comentário enviado por danniel-lara em 22/09/2021 - 11:58h


Muito bom , parabéns


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts