Loki ve Promtail Kurulumu (Log Management)
Daha önceki yazılarda Loglamayı nasıl detaylandırabiliriz incelemiştik. Yine yazımız da Grafana’yı kurduğumuzu göre artık loglarımızı Grafana üzerinden daha kolay bir şekilde inceleyebiliriz.
Loki: Marvel karekterindeki kötülük tanrısından bahsetmeyeceğiz elbet. Ama dizisi güzel tavsiye ederim. Grafana Loki, log verilerini toplamak, depolamak, sorgulamak ve görselleştirmek için kullanılan bir açık kaynak log toplama ve analiz platformudur.
Promtail: Promtail, Grafana Loki ile birlikte kullanılan açık kaynaklı bir log koleksiyon ajanıdır.
Loki’yi Grafana yüklü olan sunucumuza, Promtail ise logu çekmek istediğimiz sunucuya yani Postgresql veritabanı kurulu olan sunucuya kuracağız.
Loki Kurulumu
Grafana yüklü olan sunucu üstüne kurulum adımlarını gerçekleştiriyoruz. Loki sayesinde log verilerini monitoring sunucusu üstünde tutabileceğiz. Grafana ile de kolayca loglarımızı inceleyip görselleştirebileceğiz.
# loki klasörü oluşturulur.
mkdir /opt/loki
# Oluşturulan klasöre giriş sağlanır.
cd /opt/loki
# Loki aşağıdaki linkten indirilir.
wget https://github.com/grafana/loki/releases/download/v2.9.1/loki-linux-amd64.zip
# Paketin açılması sağlanır.
unzip loki-linux-amd64.zip
# Loki'nin çalışma dizinini oluşturuyoruz.
mkdir /tmp/loki
# Verilerin depolanacağı dizini oluşturuyoruz.
mkdir /var/lib/loki
# Loki için YAML dosyasını oluşturuyoruz.
nano loki-local-config.yaml
# Aşağıdaki ayarları dosyaya kayıt edip çıkıyoruz.
# Burada bir çok ayar mevcut inceleyip kendinize göre revize edebilirsiniz.
---------------------------------------------------------
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 9096
ingester:
lifecycler:
address: 127.0.0.1
ring:
kvstore:
store: inmemory
replication_factor: 1
final_sleep: 0s
chunk_idle_period: 1h
max_chunk_age: 1h
chunk_target_size: 1048576
chunk_retain_period: 30s
max_transfer_retries: 0
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: /var/lib/loki/boltdb-shipper-active
cache_location: /var/lib/loki/boltdb-shipper-cache
cache_ttl: 24h
shared_store: filesystem
filesystem:
directory: /var/lib/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: /var/lib/loki/rules
rule_path: /tmp/loki/rules-temp
alertmanager_url: http://localhost:9093
ring:
kvstore:
store: inmemory
enable_api: true
---------------------------------------------------------
# Servis dosyasını oluşturuyoruz.
nano /etc/systemd/system/loki.service
# Aşağıdaki ayarları dosyaya kayıt edip çıkıyoruz.
[Unit]
Description=Grafana Loki service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/opt/loki/loki-linux-amd64 -config.file /opt/loki/loki-local-config.yaml
[Install]
WantedBy=multi-user.target
# Servis ayarlarını yeniden yüklemesini sağlıyoruz.
systemctl daemon-reload
# Sunucu yeniden başladığında servis otomatik olarak başlasın.
systemctl enable loki
# Servisi başlatıyoruz.
systemctl start loki
# Servisi kontrol ediyoruz.
systemctl status loki
# Firewall 3100 portuna izin veriyoruz.
firewall-cmd --zone=public --add-port=3100/tcp --permanent
# Firewall ayarlarını yeniden yüklüyoruz.
firewall-cmd --reload
# Sunucudaki erişilebilir portları listeliyoruz.
netstat -tulnp
Servisimiz aktif şeklinde çalışıyor olduğunu ve 3100 portuna erişimimiz açık olduğunu kontrol ettik.
Promtail Kurulumu
Postgresql yüklü olan sunucu üstüne kurulum adımlarını gerçekleştiriyoruz. Promtail ile Postgresql “log” dizinin içerisindeki bütün log verilerini Lokiye iletiyor olacağız.
# promtail klasörü oluşturulur.
mkdir /opt/promtail
# Oluşturulan klasöre giriş sağlanır.
cd /opt/promtail/
# promtail aşağıdaki linkten indirilir.
wget https://github.com/grafana/loki/releases/download/v2.8.2/promtail-linux-amd64.zip
# Paketin açılması sağlanır.
unzip promtail-linux-amd64.zip
# promtail paketi servis olarak çalışabilmesi için taşınır.
cp promtail-linux-amd64 /usr/local/bin
# Promtail için YAML dosyasını oluşturuyoruz.
nano config-promtail.yml
# Aşağıdaki ayarları dosyaya kayıt edip çıkıyoruz.
# clients bölümünde Loki'nin kurulu olduğu sunucuyu girmeyi unutmayın !!!
# path bölümünde Postgresql Log File konumunun doğru olduğu teyit edin !!!
---------------------------------------------------------
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: 'http://192.168.153.141:3100/loki/api/v1/push'
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: postgresql_db
__path__: /var/lib/pgsql/15/data/log/*.log
---------------------------------------------------------
# Servis dosyasını oluşturuyoruz.
nano /etc/systemd/system/promtail.service
# Aşağıdaki ayarları dosyaya kayıt edip çıkıyoruz.
[Unit]
Description=Promtail service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/promtail-linux-amd64 -config.file /opt/promtail/config-promtail.yml
[Install]
WantedBy=multi-user.target
# Servis ayarlarını yeniden yüklemesini sağlıyoruz.
systemctl daemon-reload
# Sunucu yeniden başladığında servis otomatik olarak başlasın.
systemctl enable promtail
# Servisi başlatıyoruz.
systemctl start promtail
# Servisi kontrol ediyoruz.
systemctl status promtail
# Firewall 9080 portuna izin veriyoruz.
firewall-cmd --zone=public --add-port=9080/tcp --permanent
# Firewall ayarlarını yeniden yüklüyoruz.
firewall-cmd --reload
# Sunucudaki erişilebilir portları listeliyoruz.
netstat -tulnp
Servisimiz aktif şeklinde çalışıyor olduğunu ve 9080 portuna erişimimiz açık olduğunu kontrol ettik.
http://192.168.153.142:9080/metrics adresini tarayıcınızda açıyorsunuz. Tabi siz kendi sunucunuzun IP sini girmeyi unutmayın. Artık Promtail 9080 portu üzerinden Postgresql Loglarını yayınlıyor.
Grafana ile Loki Entegrasyonu
Loki ve Promtail kurulumlarımızı tamamladık. Servislerin çalıştıklarını kontrol ettik. Son adım olarak Grafana ile Loki entegrasyon etmek kaldı.
Grafana arayüzünü açıyoruz. “Toggle Menu” (3 çizgi iconu) tıklayıp. “Connections” altındaki “Data Sources” açıyoruz.
“Add new data source” butonuna tıklıyoruz.
“Loki” seçiyoruz.
“URL” alanına Loki ip adresimizi giriyoruz. http://192.168.153.141:3100/
“Save & Test” butonunu seçiyoruz. Başarılı mesajını gördükten sonra entegrasyonumuz tamamlanmış oluyor.
Grafana Üstünden Logları İnceleme
Grafana arayüzünü açıyoruz. “Toggle Menu” (3 çizgi iconu) tıklayıp. “Explore” açıyoruz.
En üst bölümdeki açılır menüden “Loki” seçin. “label filters” alanlarındaki açılır menülerden ise sırasıyla ilk önce “job” sonrasında “postgresql_db” seçin. Son olarak “Run Query” butonunu tıklayın.
Artık loglarımızı kolaylıkla Grafana üstünden inceleybilir. En önemlisi ise kolayca filtreleyebilir loglarınızı bulabilirsiniz.