Prometheus: Zaman Serisi Veritabanı Nedir?
Prometheus, sistemler ve servislerden veri toplamak için kullanılan açık kaynaklı bir zaman serisi veritabanıdır. Verileri "pull" modeli aracılığıyla alır, yani Prometheus, tanımlı hedeflerden düzenli aralıklarla veri çeker. Bu veriler, Prometheus'un yerleşik arayüzünde PromQL (Prometheus Query Language) kullanılarak sorgulanabilir ve görselleştirilebilir. Grafana gibi araçlarla entegrasyonu sayesinde, daha zengin görselleştirme ve kapsamlı dashboard oluşturma imkanı sunar.
Exporter Nedir?
Exporter'lar, çeşitli kaynaklardan metrikleri toplayan ve bu verileri Prometheus'un anlayabileceği formatta HTTP üzerinden sunan araçlardır. Bu, Prometheus'un hedef sistemlerde doğrudan çalışmasına gerek kalmadan dış kaynaklardan veri toplamasını sağlar.
Zabbix ile Prometheus Metriklerinin Entegrasyonu
Zabbix, güçlü bir açık kaynak izleme çözümüdür ve Prometheus metriklerini entegre etmek mümkündür. Bu rehber, Prometheus'dan toplanan metriklerin Zabbix kullanılarak nasıl izlenebileceğini adım adım açıklar.
Gereksinimlerin Listesi:
- Zabbix sunucusu: İzleme yapılacak ana sistem.
- Exporter: Bu rehberde kullanılacak olan JMX Exporter.
- Kafka sunucusu: Metrik kaynağı olarak hizmet veren sunucu.
Docker kullanarak Kafka sunucusunu ve bağlantılı Zookeeper servisini başlatıyoruz.
kafka@kafka:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7e5f046d5fa4 bitnami/zookeeper:latest "/opt/bitnami/script…" 6 minutes ago Up 6 minutes 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp, 8080/tcp kafka_zookeeper_1
5a28b5f7ca84 bitnami/kafka:latest "/opt/bitnami/script…" 6 minutes ago Up 6 minutes 0.0.0.0:9091-9092->9091-9092/tcp, :::9091-9092->9091-9092/tcp, 0.0.0.0:9999->9999/tcp, :::9999->9999/tcp kafka_kafka_1
Adım 1: Metrik Seçimi ve Tanımlama
Kafka sunucumda çalışan ve 192.168.1.9:9091 adresinde erişilebilen Exporter üzerinden, belirli bir Kafka topic'i için trafik metriklerini seçiyorum.
Seçilen metrikler, topic üzerinden gelen ve giden veri akışını ve talep sayısını içerir.
kafka_server_brokertopicmetrics_meanrate{name="BytesInPerSec",topic="test_topic",} 82.34778932997635
kafka_server_brokertopicmetrics_meanrate{name="BytesOutPerSec",topic="test_topic",} 112.90497508080351
kafka_server_brokertopicmetrics_meanrate{name="TotalFetchRequestsPerSec",topic="test_topic",}
Adım 2: Zabbix Template Oluşturma
Zabbix içinde "Prometheus Metrics" adında bir template oluşturarak, seçilen metrikleri bu template altına item olarak ekleyeceğim.
Adım 3: HTTP Agent oluşturulmalı
Zabbix sunucusunda, Exporter'dan metrikleri çekecek bir HTTP Agent kuruyorum. Bu agent, metriklerin düzenli olarak Zabbix sunucusuna aktarılmasını sağlar.
Yeni bir item oluşturarak "Prometheus Metrics" template'ine ekliyorum.
Item yapılandırmasını tamamladıktan sonra, 'Test' butonuna tıklayarak HTTP Agent'ın düzgün çalışıp çalışmadığını kontrol ediyorum.
Adım 4: Bağımlı Öğelerin (Dependent Item) Oluşturulması
Bağımlı öğeler, ana metriklerden türetilen ve daha detaylı analiz için kullanılan veri öğeleridir.
Bu adımda, 'BytesInPerSec' metriğine dayalı olarak "topic_bytes_in_rate" adında bir dependent item oluşturuyorum. Bu dependent item, belirli bir Kafka topic'inden gelen veri akış hızını temsil eder ve ölçümleri daha spesifik bir kontekste yerleştirir.
Oluşturduğum dependent item için preprocessing sekmesine giderek "add" butonuna tıklayarak yeni bir preprocessing kuralı ekliyorum. Bu kural, Prometheus'un metrik formatını Zabbix'in anlayacağı formata dönüştürür.
Kullanılacak parametre, Prometheus Pattern'dir ve metrik değerlerini doğru bir şekilde parse etmek için önceden belirlenen Prometheus sorgusu kullanılır.
Örneğin, kafka_server_brokertopicmetrics_meanrate{name="BytesInPerSec", topic="test_topic"}
metriği, Kafka sunucusundaki belirli bir topic'e gelen veri miktarını ölçer. Bu örnek metrik, rehberimizde kullanılan örnek bir metrik değeridir.
Bu sürecin çalışması için, seçilen her metrik için ayrı bir dependent item oluşturulmalıdır.
Adım 5: Kafka Server'a Template Ekleme
Oluşturduğumuz bu template'i, izlemek istediğimiz Kafka sunucusuna ekliyoruz.
Adım 6: Metrikleri Kontrol Etme
Son adım olarak, Zabbix arayüzünden 'Monitoring > Hosts > Kafka Sunucusu > Latest Data' yolunu takip ederek sunucumuzda izlemekte olduğumuz metriklerin güncel verilerine ulaşıyoruz.
Sonuç
Bu rehber, Prometheus ve Zabbix kullanarak Kafka sunucusundan metrik toplama sürecini adım adım ele almakta ve bu süreci nasıl yöneteceğinizi açıklamaktadır. Prometheus'un güçlü zaman serisi veri toplama kabiliyeti ve Zabbix ile olan entegrasyonu sayesinde, karmaşık sistemlerin izlenmesi ve yönetilmesi kolaylaşmaktadır.