Grafana Stack; Grafana Labs tarafından geliştirilen, modern gözlemlenebilirlik (observability) için end-to-end açık-kaynak araçlar bütünüdür. Klasik 3 sütun (metric, log, trace) artık 4’e çıktı: continuous profiling (Pyroscope) ile dördüncü boyut. Hepsi tek bir Grafana UI’ından sorgulanabilir ve birbirine bağlanabilir (“derive log from trace”, “derive trace from metric”).
Stack’in temel felsefesi: etiket bazlı (label-based) indeksleme. Bu yaklaşım, Loki’nin storage maliyetini Elasticsearch’ün 10-20’de birine indirir; metric ve log paradigmalarını birleştirir; dev-friendly LogQL/PromQL/TraceQL sorgu dillerini sunar.
Mono’nun yaklaşımı
Modern uygulamalar için Mono’nun varsayılan gözlemlenebilirlik kurulumudur. Üç temel sinyal (metric, log, trace) birbirinden ayrıştırılarak yönetilir:
- Toplama: Grafana Alloy, OpenTelemetry Collector ve Prometheus exporter’ları ile sinyal toplama. Veriler kaynakta metric, log ve trace olarak ayrıştırılır.
- Metric: Mimir (multi-tenant, kendi S3 backend’imiz); Prometheus tercih etmiyoruz - tenant bazlı retention ve rotasyon politikalarını Mimir üzerinde yönetiyoruz.
- Log: Loki (full Loki pipeline; Promtail veya Vector kullanmıyoruz). Log verisi Alloy üzerinden parse edilerek eş zamanlı olarak metriğe dönüştürülür - bu sayede log hacmi artsa bile kritik göstergeler metrik olarak izlenebilir.
- Trace: Tempo + OpenTelemetry SDK; uygulamalara zero-code instrumentation kurulumu yapılır, yazılımcının ihtiyacına göre custom span’lar eklenebilir. Özel trace dashboard’larımız sayesinde ekstra verimlilik sağlanır.
- Alerting: Grafana’nın kendi alerting yapısı kullanılır.
- Dashboard’lar: Grafana as Code - dashboard ve alert tanımları GitLab repomuzdaki pipeline ile API üzerinden güncellenir. Mevcut araçların kullanımı ihtiyaçlarımızı karşılamadığı için kendi pipeline’ımızı geliştirdik.
Tipik üretim mimarisi
Uygulama ve ortamlardan çıkan metric, log ve trace verileri merkezi gözlemlenebilirlik platformunda toplanır. Load balancer verileri, firewall logları, Kubernetes metrikleri ve cluster verileri dahil tüm kaynaklar kapsam içindedir:
- Uygulamalar zero-code instrumentation ile trace üretir; yazılımcı isteğine göre custom span eklenir. Structured log ve metrikler uygulama tarafında üretilir.
- Alloy + OpenTelemetry Collector tüm kaynaklardan gelen verileri toplar, parse eder ve ilgili backend’lere (Mimir, Loki, Tempo) yönlendirir. Log’lar aynı zamanda metriğe dönüştürülür.
- Mimir (metric → S3), Loki (log → S3), Tempo (trace → S3) - her biri multi-tenant modda çalışır.
- Grafana tüm datasource’ları birleştirerek görselleştirme ve korelasyon sağlar. Multi-tenant yapıdaki kullanıcı yönetimi Keycloak ile SSO üzerinden yürütülür.
Yaygın sorunlar ve çözümler
- Yüksek cardinality: Label’larda IP adresi, sürekli değişen değerler veya rastgele üretilen değerler kesinlikle kullanılmamalıdır. Yüksek cardinality metrik hacmini ve sorgu maliyetini katlanarak artırır.
- Loki sorgu ve görselleştirme zorluğu: Log hacmi arttıkça sorguları filtrelemek ve görselleştirmek zorlaşır. Kritik log verileri önceden Alloy ile parse edilerek metriğe dönüştürülmelidir.
- Tempo’da trace bulunamıyor: İki yaygın neden vardır: (1) sampling oranı düşükse trace baştan yakalanmamıştır; (2) S3 backend’inde Tempo’nun index TTL’i kısa tutulmuşsa, compaction sonrası eski trace’ler indeksten düşer ve sorgulanamaz hâle gelir. Retention ile index TTL’in uyumlu ayarlanması gerekir.
- Grafana dashboard yavaş açılıyor: Genellikle yüksek cardinality’li sorgular, geniş zaman aralığı tarayan paneller veya yetersiz veri manipülasyonundan kaynaklanır. Sorguların dar label seçimi ile filtrelenmesi ve dashboard’ların variable-based yapıya geçirilmesi gerekir.

