Promtail Customize & Pipeline

Kubernetes üzerinde çalışan Promtail’in varsayılan konfigürasyon dosyası (promtail.yaml), base64 formatında saklandığı için önce decode edilerek ham içeriğine ulaşılabilir. Ardından, logları daha zengin etiketleyebilmek (örneğin method ve code gibi değerleri yakalamak) amacıyla ek pipeline_stages tanımlanarak, JSON içindeki belirli alanlar parse edilip Loki’ye label olarak gönderilebilir. Sonraki adımda, güncellenmiş promtail.yaml içeren bir Secret yeniden oluşturulup Promtail Pod’u yeniden başlatılarak, yeni konfigürasyonun devreye girmesi sağlanır.

Mevcut
promtail.yamlDosyasını Alma (Decode) Promtail yapılandırması varsayılan olarak, bir Secret içinde (örneğinloki-promtail) saklanır.kubectl get secret loki-promtail -o jsonpath="{.data.promtail\.yaml}" | base64 --decode > promtail.yamlBu komut, base64 kodlu içeriği “promtail.yaml” dosyasına yazar. Böylece varsayılan veya mevcut Promtail yapılandırması düz metin (YAML) olarak düzenlenebilir hale gelir.
Düzenleme: Loglardan Ek Verileri Label Olarak Çıkarmak
promtail.yamliçindekiscrape_configsaltında,pipeline_stagesbölümünematchvejsongibi ek aşamalar eklenir.matchile belirli bir label’e (örneğinapp="api") sahip logların ekstra işlem görmesi sağlanır.Ardından iç içe
jsonparse aşamaları kullanılarak log mesajındancode,methodgibi alanlar ayrıştırılır.Son olarak
labels:altındacodevemethodtanımlanır. Bu sayede Loki, bu alanları label olarak saklar ve Grafana’da etiket bazlı filtreleme yapmak mümkün hale gelir.
Secret’ı Güncelleme Yeni “promtail.yaml” kaydedildikten sonra mevcut Secret silinir:
kubectl delete secret loki-promtailArdından aşağıdaki komutla yeniden oluşturulur:
kubectl create secret generic loki-promtail --from-file=./promtail.yamlBöylece Promtail Pod’una yeni YAML konfigürasyonu enjekte edilir.

Tüm Pod’ları Sırasıyla Yeniden Başlatma (Tek bir pod varsa direkt olarak delete yapabilirsiniz)
kubectl rollout restart ds/loki-promtailloki-promtailyerine kendi DaemonSet adınızı yazın (örn.loki-promtail,promtail-daemonsetvs.).Bu komut, DaemonSet’in bağlı olduğu tüm Pod’ları sırasıyla silip tekrar oluşturur. Yeni Pod’lar ayağa kalkarken güncellenmiş Secret’tan
promtail.yamldosyasını okur.
Sonuç: Yeni Etiketler (Labels) Grafana’daki Explore ekranında sorgu yaptığınızda, log satırlarının label kısmında
codevemethodgibi ek alanlar görünür. Bu sayedecode=200gibi etiket bazlı filtrelerle loglara daha hızlı ve verimli ulaşılabilir.
Kısacası, bu yöntemle Promtail, log içindeki alanları JSON olarak parse edip Loki’ye label biçiminde aktarır. Böylece logları yalnızca metin bazlı aramak yerine, eklenen etiketlere göre de sorgulama yapılabilir (örneğin method="GET", code="200").
Last updated
Was this helpful?