Docker: Grafana Loki’yi docker ve docker-compose ile çalıştırma

Loki, Prometheus’tan ilham alan yatay olarak ölçeklenebilir, yüksek düzeyde kullanılabilir,  bir günlük toplama sistemidir.  Oldukça uygun maliyetli ve kullanımı kolay olacak şekilde tasarlanmıştır.  Günlüklerin içeriğini dizine eklemez, bunun yerine her günlük akışı için bir dizi etiketi dizine ekler.

Bu kılavuzda Grafana Loki ve Promtail’in Docker ve Docker Compose ile nasıl kurulacağını öğreneceğiz.  Üretim sistemleri için lütfen Grafana Loki’yi Tanka veya Helm ile kurmayı düşünün.

 

Docker ve docker compose’un kurulu olduğundan emin olun

Kurulumumuzu çalıştırmak için docker’ı kullanacağımız için kurulu ve çalışır durumda olması önemlidir.  Lütfen docker’ın kurulu olduğundan emin olun.

Sürümü kontrol ederek docker’ın beklendiği gibi çalıştığını doğrulayın:

$ docker version
Client: Docker Engine - Community
 Version:           20.10.17
 API version:       1.41
 Go version:        go1.17.11
 Git commit:        100c701
 Built:             Mon Jun  6 23:02:46 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.17
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.11
  Git commit:       a89b842
  Built:            Mon Jun  6 23:00:51 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.6
  GitCommit:        10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
 runc:
  Version:          1.1.2
  GitCommit:        v1.1.2-0-ga916309
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Daha sonra docker-compose’un kurulu olduğundan emin olun.  Docker compose, python pip paketi olarak mevcuttur.  Python ve pip’in kurulu olduğundan emin olun ve ardından şu komutla docker-compose’u kurun:

sudo pip3 install docker-compose

Bu, sistemimde yüklü olan docker-compose sürümüdür:

$ docker-compose --version
docker-compose version 1.29.2, build unknown

Grafana’yı docker’da çalıştırmak

Grafana, çok platformlu, açık kaynaklı bir analitik ve etkileşimli görselleştirme web uygulamasıdır.  Desteklenen veri kaynaklarına bağlanıldığında web için çizelgeler, grafikler ve uyarılar sağlar.

Bizim durumumuzda Loki sistemine kullanıcı arayüzü olarak Grafana’ya ihtiyacımız olacak.  Günlükleri sorgulamak veya günlük modellerine göre belirli kontrol panelleri oluşturmak için bunu kullanabiliriz.

Grafana’yı docker ile çalıştırmak için aşağıdaki komutu kullanın.  Grafana OSS’nin en son sürümünü (sürüm 9) kullanıyoruz.

docker run --name=grafana \
    -p 3000:3000 \
    grafana/grafana-oss:9.0.2

Müstakil modda başlamak için -d argümanını kullanabilirsiniz.  Sunucu başlatıldıktan sonra tarayıcınızda http://server_ip:3000 adresini ziyaret ederek sunucuya erişin.

Loki’yi docker ile çalıştırma

Loki, harika günlük arama ve görselleştirme özellikleriyle Prometheus ve Kubernetes çalıştıran kullanıcılar için optimize edilmiş bir günlük kaydı arka ucudur.  Loki, yerel günlüklerin içeriğini Grafana Loki’nin bir örneğine gönderen bir aracı olan promtail ile çalışır.

Öncelikle içeriği saklayacağımız ve geçerli dizin olarak kullanacağımız bir dizin oluşturalım.

mkdir loki

Daha sonra loki’yi başlatmak ve çalıştırmak için gereken bir yapılandırma dosyası oluşturun.  Bunları loki-config.yaml’a kaydedin:

auth_enabled: false

server:
  http_listen_port: 3100
  grpc_listen_port: 9096

common:
  path_prefix: /tmp/loki
  storage:
    filesystem:
      chunks_directory: /tmp/loki/chunks
      rules_directory: /tmp/loki/rules
  replication_factor: 1
  ring:
    instance_addr: 127.0.0.1
    kvstore:
      store: inmemory

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

ruler:
  alertmanager_url: http://localhost:9093

# If you would like to disable reporting, uncomment the following lines:
#analytics:
#  reporting_enabled: false

Artık loki örneğimizi şu komutla çalıştırabiliriz:

docker run --name loki \
    -v $(pwd):/config \
    -p 3100:3100 \
    grafana/loki:2.5.0 -config.file=/config/loki-config.yaml

Loki çalıştığında, günlükleri /var/log/*log’dan loki örneğimize aktarmak için promtail’i ayrı bir sekmede çalıştıralım.  Promtail-config.yaml adlı bir dosya oluşturun.

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/*log

Yeni bir sekmede promtail’i şu komutla başlatın:

docker run --name promtail \
    -v $(pwd):/config \
    -v /var/log:/var/log \
    --link loki \
    grafana/promtail:2.5.0 -config.file=/config/promtail-config.yaml

Hem loki hem de promtail çalışırken, ölçümleri görüntülemek için http://server_ip:3100/metrics adresine, hazırlık için ise http://server_ip:3100/ready adresine gidin.

Görüntü, varsayılan olarak UID 10001 ve GID 10001 ile kullanıcı loki’si olarak çalışacak şekilde yapılandırılmıştır. Özellikle bağlama bağlamaları kullanıyorsanız, UID’yi docker run komutuyla belirterek ve –user=UID ile birlikte kullanarak farklı bir kullanıcı kullanabilirsiniz. ihtiyaçlarınıza uygun sayısal UID.  Kök kullanıcı UID 1000’dir.

Grafana, Loki ve promtail’i çalıştırmak için docker-compose’u kullanma

Dağıtımları oluşturmamızı, güncellememizi ve yönetmemizi kolaylaştırmak için yukarıdaki talimatları bir docker oluşturma dosyasına ekleyebiliriz.  Docker Compose, çok kapsayıcılı Docker uygulamalarını tanımlamaya ve çalıştırmaya yönelik bir araçtır.  Compose ile uygulamanızın hizmetlerini yapılandırmak için bir YAML dosyası kullanırsınız.  Daha sonra tek bir komutla tüm hizmetleri konfigürasyonunuzdan oluşturur ve başlatırsınız.

Docker-compose.yaml dosyasına aşağıdakini ekleyin:

version: '3.9'

networks:
  grafana_loki:

services:
  grafana:
    image: grafana/grafana-oss:latest
    ports:
      - 3000:3000
    networks:
      - grafana_loki

  loki:
    image: grafana/loki:2.5.0
    ports:
      - "3100:3100"
    volumes:
      - ./loki-config.yaml:/etc/loki/local-config.yaml
    command: -config.file=/etc/loki/local-config.yaml
    networks:
      - grafana_loki
  
  promtail:
    image: grafana/promtail:2.5.0
    volumes:
      - /var/log:/var/log
      - ./promtail-config.yaml:/etc/promtail/config.yml
    command: -config.file=/etc/promtail/config.yml
    networks:
      - grafana_loki

Dosyayı konfigürasyonların bulunduğu dizine kaydedin ve ardından hizmetleri bu komutla başlatın:

docker-compose up

Veya müstakil mod için -d argümanını ekleyebilirsiniz.  Aynı portlara bağlandığımız için yukarıda listelediğimiz şekilde erişim sağlayabilirsiniz.

Grafana’da oturum açma

Yönetici kullanıcınızla (varsayılan yönetici/yönetici) oturum açın.  İlk giriş yaptığınızda şifrenizi değiştirmeniz istenecektir.

Yan menüyü açın (üst menüdeki Grafana simgesine tıklayın) Veri Kaynakları’na gidin ve veri kaynağınızı ekleyin.  Loki’yi arayın, ardından kaynak URL’yi http://loki:3100’e ekleyin (Loki örneğimizi eklemek için) ve kaydedin.

Daha sonra keşfetmeye gidin ve veri kaynağı olarak Loki’yi seçin.  Var log günlüklerimizi görüntülemek için etiketleri, işi, ardından varlogları ve sorguyu seçin.

{job="varlogs"} | logfmt | __error__=``

Günlüklerin akışını görmelisiniz.

 

Yazının orijinalini buradan okuyabilirsiniz.