Loki + Grafana ile Tomcat Log İzleme (Alloy Kurulum Rehberi)

Bu yazıda Tomcat loglarını Grafana üzerinde canlı olarak nasıl izleyebileceğinizi adım adım ele alıyoruz. Loki, Grafana Alloy ve Grafana kullanarak güçlü, merkezi ve üretim ortamına uygun bir log izleme sistemi kurabilirsiniz.

Kısa özet: Bu rehberde Tomcat loglarını Alloy ile okuyup Loki’ye göndermeyi, Grafana’da canlı log akışı açmayı, hata loglarını filtrelemeyi ve temel dashboard yapısını kurmayı öğreneceksiniz.

Spring Boot ve Tomcat tarafındaki güvenlik akışlarını da izlemek istiyorsanız Token Nedir? Access ve Refresh Token rehberine de göz atabilirsiniz.


Loki Nedir?

Loki, Grafana ekosisteminde log toplama ve indeksleme için kullanılan modern bir sistemdir. Prometheus benzeri bir mantıkla çalışır ve logları tam metin yerine çoğunlukla label tabanlı şekilde organize eder.

  • Düşük disk kullanımı
  • Prometheus benzeri label mantığı
  • Grafana ile güçlü entegrasyon
  • Docker ve Kubernetes desteği

Grafana Alloy Nedir?

Grafana Alloy, log ve metrik toplamak için kullanılan yeni nesil bir ajandır. Bu rehberde Alloy, Tomcat’in host üzerindeki log dosyalarını okuyacak ve bu logları Loki’ye iletecek.

Tomcat Logs → Grafana Alloy → Loki → Grafana Dashboard

Sistem Gereksinimleri

  • Linux Server
  • Docker
  • Docker Compose
  • Tomcat Server
  • Grafana

Docker Compose ile Monitoring Stack Kurulumu

Aşağıdaki docker-compose yapısı ile Grafana, Loki ve Alloy servislerini ayağa kaldırabilirsiniz. Bu yapı Tomcat loglarını host makineden okuyacak şekilde tasarlanmıştır.

version: "3.8"

networks:
  monitoring:
    driver: bridge

volumes:
  grafana_data:
  loki_data:
  alloy_data:

services:
  grafana:
    image: grafana/grafana:10.4.0
    container_name: grafana
    restart: unless-stopped
    networks:
      - monitoring
    ports:
      - "3000:3000"
    volumes:
      - grafana_data:/var/lib/grafana

  loki:
    image: grafana/loki:3.6.7
    container_name: loki
    restart: unless-stopped
    networks:
      - monitoring
    ports:
      - "3100:3100"
    volumes:
      - ./loki/loki-config.yaml:/etc/loki/config.yaml
      - loki_data:/loki
    command: -config.file=/etc/loki/config.yaml

  alloy:
    image: grafana/alloy:v1.13.2
    container_name: alloy
    restart: unless-stopped
    networks:
      - monitoring
    ports:
      - "12345:12345"
    volumes:
      - ./alloy/config.alloy:/etc/alloy/config.alloy
      - /home/apache-tomcat/logs:/var/log/tomcat
      - alloy_data:/var/lib/alloy
    command:
      - "run"
      - "--server.http.listen-addr=0.0.0.0:12345"
      - "/etc/alloy/config.alloy"
    depends_on:
      - loki

Buradaki kritik nokta, Tomcat log dizininin container içine mount edilmesidir: /home/apache-tomcat/logs:/var/log/tomcat


Loki Konfigürasyonu

Loki için loki-config.yaml dosyasını aşağıdaki gibi oluşturabilirsiniz:

auth_enabled: false

server:
  http_listen_port: 3100

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

schema_config:
  configs:
    - from: 2024-01-01
      store: tsdb
      object_store: filesystem
      schema: v13
      index:
        prefix: index_
        period: 24h

Bu yapı, küçük ve orta ölçekli log izleme senaryoları için oldukça yeterlidir.


Alloy ile Tomcat Loglarını Okuma

Alloy tarafında config.alloy dosyası ile hangi log dosyalarının okunacağını belirtmemiz gerekir. Aşağıdaki yapı Tomcat loglarını okuyup Loki’ye gönderir.

local.file_match "tomcat_logs" {
  path_targets = [
    {
      __path__ = "/var/log/tomcat/*.log",
      job      = "tomcat",
    },
    {
      __path__ = "/var/log/tomcat/catalina.out",
      job      = "tomcat",
    },
  ]
}

loki.source.file "tomcat_logs" {
  targets    = local.file_match.tomcat_logs.targets
  forward_to = [loki.write.default.receiver]
}

loki.write "default" {
  endpoint {
    url = "http://loki:3100/loki/api/v1/push"
  }
}

Bu yapı sayesinde Alloy, Tomcat log dosyalarını tail ederek yeni satırları anlık biçimde Loki’ye iletir.


Servisleri Başlatma

Tüm servisleri başlatmak için aşağıdaki komutu çalıştırın:

docker compose up -d

Servislerin durumunu kontrol etmek için:

docker ps

Alloy loglarında tail routine started benzeri satırlar görüyorsanız, Tomcat log dosyaları başarıyla okunuyor demektir.


Grafana’da Loki Datasource Ekleme

Grafana arayüzüne giriş yaptıktan sonra Loki datasource eklemelisiniz.

  • Connections → Data Sources
  • Add data source
  • Loki seçin

Datasource URL:

http://loki:3100

Ardından Save & Test ile bağlantıyı doğrulayabilirsiniz.


Tomcat Loglarını Görüntüleme

Grafana Explore bölümünde aşağıdaki sorgu ile Tomcat loglarını görebilirsiniz:

{job="tomcat"}

Yalnızca error loglarını görmek için:

{job="tomcat"} |= "ERROR"

Exception loglarını görmek için:

{job="tomcat"} |= "Exception"

Canlı Log Akışı (Live Logs)

Grafana üzerinden canlı log akışı görmek için:

  • Explore ekranını açın
  • Loki datasource seçin
  • {job="tomcat"} sorgusunu çalıştırın
  • Live Mode veya Live tail özelliğini aktif edin

Bu sayede yeni gelen Tomcat logları anlık olarak ekrana düşer. Dashboard tarafında da en yeni logların üstte görünmesi için logs panelinde Descending sıralama ve kısa refresh süresi kullanılabilir.


Test Log Gönderme

Sistemin gerçekten çalıştığını hızlıca test etmek için host makinede aşağıdaki komutu çalıştırabilirsiniz:

echo "LOKI_TEST $(date)" >> /home/apache-tomcat/logs/catalina.out

Daha sonra Grafana’da şu sorguyu çalıştırın:

{job="tomcat"} |= "LOKI_TEST"

Test satırı görünüyorsa Tomcat → Alloy → Loki → Grafana hattı başarıyla çalışıyor demektir.


Production Best Practices

  • Tomcat log klasörünü sadece read-only mount edin
  • Loki için kalıcı volume kullanın
  • Dashboard refresh süresini ihtiyaca göre 5s veya 10s yapın
  • ERROR ve Exception logları için ayrı paneller oluşturun
  • İlerleyen aşamada alerting ile hata bildirimleri ekleyin

Sonuç

Bu rehberde Loki, Grafana Alloy ve Grafana kullanarak Tomcat loglarını merkezi olarak toplama ve analiz etme sürecini adım adım ele aldık.

  • Tomcat loglarını merkezi olarak toplayabilirsiniz
  • Grafana üzerinden canlı log akışı görebilirsiniz
  • Error ve Exception loglarını analiz edebilirsiniz
  • Dashboard ile log metriklerini izleyebilirsiniz

Özellikle DevOps, Java backend ve production monitoring senaryolarında bu yapı oldukça güçlü bir log observability çözümü sunar.

JVM ve uygulama metriklerini de izlemek istiyorsanız JavaMelody rehberine de göz atabilirsiniz.

Latest Software Developers - Yazılım Blog Yazarı Profil Resmi

Yazar

LatestSoftwareDevelopers

Blog where the most up-to-date software is followed. (En güncel yazılımların takip edildiği blog sitesi)

Devops ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *