[인프라] Loki Grafana Log수집 연동

개요

  • Loki, Grafana Log 수집 PoC 진행합니다.

디렉터리 구성

  • Loki, Grafana Log 수집 관련하여 docker-compose 를 이용하여 로그 수집 테스트 진행할 예정입니다.
  • docker-compose.yml 작성 하기 전, Volumn Mount 를 하기 위한 선행 작업으로 디렉터리 구조를 다름과 같이 진행하였습니다.


loki-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_
        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

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
  alertmanager_url: http://localhost:9093
  ring:
    kvstore:
      store: inmemory
  enable_api: true

promtail-config.yaml 파일 작성

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://loki:3100/loki/api/v1/push

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs
      __path__: /var/log/*/*.json

docker-compose.yaml 파일 작성

  • 이제 Loki, Promtail, Grafana 를 실행시킬 docker-compose.yml 을 작성합니다.
version: "3.4"

networks:
  loki:

services:
  loki:
    image: grafana/loki:2.2.1
    ports:
      - "3100:3100"
    volumes:
      - ./loki:/etc/loki
    command: -config.file=/etc/loki/loki-config.yaml
    networks:
      - loki

  promtail:
    image: grafana/promtail:2.2.1
    volumes:
      - ./logs:/var/log
      - ./promtail:/etc/promtail 
    command: -config.file=/etc/promtail/promtail-config.yaml
    networks:
      - loki

  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"
    networks:
      - loki

Docker Compose UP

  • 이제 준비는 마쳤으니, docker-compose.yaml 파일 있는 디렉터리에 docker-compose up 명령어를 통해 컨테이너를 실행합니다.
> docker-compose up

Grafana Loki DataSource 생성

  • Loki DataSource 를 생성합니다.


Grafana Explorer 생성

  • Loki DataSource 를 추가 하였다면, Explorer 메뉴에 들어가서 Log 가 정상적으로 수집 되는지 확인합니다.
  • 정상적으로 로그가 수집 되어 표시되는 것을 확인할 수 있습니다.

728x90

이 글을 공유하기

댓글

Designed by JB FACTORY