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: 47.270 ]

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

Instalando Apache, PHP e PostgreSQL no Slackware 12 (compilando)

Detectando vulnerabilidades com o Nessus

Monitorando as conversas do MSN

SuperDNS: Solução definitiva para DNS dinâmico

Solucionando problemas no sistema de arquivos

Leitura recomendada

Cockpit Web Console

Slackware não tem gerenciador de pacotes?! Não tinha!

Instalação da Zabbix 3.0 em Debian 8.6 Jessie

Desenvolvimento web no Linux

Dicionário pt-BR no Firefox 2.0

  
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