◼️BlackBox exporter
Blackbox Exporter, Prometheus izleme sistemi için bir bileşen olarak kullanılan bir yazılımdır. Blackbox Exporter, ağ tabanlı hizmetlerin durumunu ve performansını izlemek için kullanılır. Genellikle ağ sağlığı kontrolü, HTTP(S) hizmetlerinin erişilebilirliği, TCP bağlantı durumu ve DNS çözümlemesi gibi ağ tabanlı metrikleri toplamak için kullanılır.
Blackbox Exporter, Prometheus tarafından kullanılan metrikleri toplamak ve bunları Prometheus sunucusuna sunmak için HTTP tabanlı bir API sağlar. Bu sayede Prometheus, ağ tabanlı hizmetlerin durumu ve performansıyla ilgili metrikleri izleyebilir ve gerekli uyarıları oluşturabilir.
Blackbox Exporter, aşağıdaki özelliklere sahiptir:
HTTP, HTTPS, TCP, ICMP ve DNS gibi protokolleri destekler. Bu protokoller üzerinden hedef hizmetlere istekler gönderir ve yanıtlarını analiz ederek metrikleri toplar.
Gönderilen isteklerin zaman aşımı, durum kodu, veri doğrulama ve diğer istatistikler gibi ayrıntılı bilgilerini toplayabilir.
Blackbox Exporter'ın topladığı metrikler arasında hedef hizmetin erişilebilirlik durumu, yanıt süresi, başarı oranı ve TCP bağlantı durumu gibi bilgiler bulunur.
YAML formatında yapılandırılabilir. Bu sayede hangi hedefleri izleyeceğinizi ve izleme için kullanılacak protokollerin nasıl yapılandırılacağını belirleyebilirsiniz.
Blackbox Exporter Kurulumu (Ubuntu 20.04)
Bu dökümanda, Ubuntu 20.04 üzerinde Blackbox Exporter'ı kurmayı göstereceğiz.
İlk olarak, Blackbox Exporter'ın en son sürümünü indirin. Aşağıdaki komutu kullanarak GitHub'dan en son sürümü kontrol edebilir ve indirebilirsiniz:
Yukarıdaki komutta <version>
yerine en son sürüm numarasını yerleştirmeniz gerekmektedir. Örneğin, "v0.19.0" gibi bir sürüm numarasını kullanabilirsiniz.
İndirdiğiniz arşivi çıkartın:
Çıkan dizine girin:
Blackbox Exporter'ı
/usr/local/bin
dizinine kopyalayın:
Gerekli dizinleri oluşturun ve izinleri ayarlayın:
Örnek bir yapılandırma dosyasını
/etc/blackbox_exporter/blackbox.yml
olarak oluşturun ve düzenleyin:
Dosyada aşağıdaki gibi bir yapılandırma yapısı kullanabilirsiniz:
Bu örnek yapılandırmada, HTTP ve TCP prober'ları ile ilgili örnek modüller bulunmaktadır. İhtiyaçlarınıza göre yapılandırmayı özelleştirebilirsiniz.
Blackbox Exporter'ı systemd servisi olarak yapılandırın:
Aşağıdaki örnekteki gibi systemd servis dosyasını düzenleyin:
Servisi başlatın ve etkinleştirin:
Blackbox Exporter'ın düzgün çalışıp çalışmadığını kontrol edin. Tarayıcınızı açın ve
http://localhost:9115/metrics
adresine gidin. Blackbox Exporter'ın metriklerini görebilmelisiniz.
Blackbox Exporter'ı Ubuntu 20.04 üzerinde bu adımları takip ederek kurabilirsiniz. Yapılandırmaları ihtiyaçlarınıza göre özelleştirerek ağ tabanlı hizmetlerinizin durumunu izleyebilirsiniz.
Source:
-----------------------------------------------------------------------------------------------------
Optional:
Blackbox Exporter'ı Prometheus'a eklemek için Prometheus yapılandırma dosyanızı düzenleyin (prometheus.yml
):
Aşağıdaki örnekteki gibi bir yapılandırma ekleyin:
Yukarıdaki örnekte, http_2xx
modülü ve http://example.com
hedefi kullanılmaktadır. İhtiyaçlarınıza göre bu kısımları düzenleyebilirsiniz.
Prometheus servisini yeniden başlatın:
Artık Blackbox Exporter, Prometheus tarafından scrape edilecek ve izlediğiniz hedeflere ait metrikleri toplayacaktır.
-----------------------------------------------------------------------------------------------------
HTTP Module;
Yukarıdaki YAML yapılandırması, Blackbox Exporter'ın HTTP prober modülünü kullanarak belirli bir URL'ye yapılacak bir HTTP isteğini ifade eder. http_find_prom
olarak adlandırılan bir modül tanımlanmıştır.
Bu özel yapılandırmada, aşağıdaki ayarlar kullanılmıştır:
prober: http
: Bu modül, HTTP protokolünü kullanarak istekleri yapmak için kullanılır.preferred_ip_protocol: "ip4"
: Bu ayar, IPv4 protokolünün tercih edildiğini belirtir. Yani, bu istek IPv4 üzerinden gerçekleştirilecektir.fail_if_body_not_matches_regexp
: Bu ayar, yanıtın içeriğinde belirtilen bir düzenli ifadenin eşleşmediği durumda başarısızlık olarak işaretlenmesini sağlar. Bu örnekte, "monitoring" ifadesini içermeyen bir yanıt, başarısızlık olarak kabul edilecektir.
Bu yapılandırma, Blackbox Exporter'ın belirtilen URL'ye bir HTTP isteği göndererek hedefin izlenebilirliğini kontrol etmesini sağlar. Yanıtın içeriğini kontrol ederek, belirli bir kelime veya düzenin olup olmadığını kontrol edebilir ve gerekirse uyarılar veya hata durumları oluşturabilirsiniz.
değeri 0 dönmüştür. Belirtilen parametre şunu ifade eder, prometheus.io sitesinde "monitoring" text'inin olduğuna işarettir.
prometheus.io sitesinde olmayan bir değeri search ettiğimizde, değeri 1 olarak dönecektir.
TCP Module;
tcp modülünü kullanarak, 10.90.0.144:8000 portunun çalışıp, çalışmadığını kontrol ediyoruz. probe_success değeri 1 olarak döndüğünü görüyoruz, böylelikle 10.90.0.144:8000 portuna erişimimiz mevcut ve uygulamamız çalışıyor olarak düşünebiliriz.
ICMP Module;
parametresinin değeri 1 olduğu için, 10.90.0.144 IP adresine icmp erişiminin olduğunu anlıyoruz.
DNS Modüle;
Bu yapılandırma, Blackbox Exporter'ın belirtilen alan adı için bir DNS sorgusu gerçekleştirmesini ve elde edilen yanıtın kontrolünü sağlamasını ifade eder. Yanıtın yanıt kodunu ve diğer parametreleri kontrol ederek, DNS hizmetinin sağlıklı bir şekilde çalışıp çalışmadığını ve beklenen sonuçları verip vermediğini kontrol edebilirsiniz.
Scraping targets via Blackbox
Bu yapılandırmada, aşağıdaki ayarlar kullanılmıştır:
job_name: 'blackbox'
: Bu scrape konfigürasyonu için bir iş adı belirtilir. Bu örnekte, "blackbox" olarak belirlenmiştir.metrics_path: /probe
: Blackbox Exporter'dan metrikleri almak için kullanılacak yolu belirtir. Bu örnekte, "/probe" olarak belirlenmiştir.params: module: [http_2xx]
: Blackbox Exporter'ın hangi modülleri kullanacağını belirtir. Bu örnekte, "http_2xx" modülü belirtilmiştir. Yani, sadece HTTP yanıt kodu 2xx olan hedefleri izleyecektir.static_configs
: İzlenecek hedefleri belirtir.targets
: İzlemek istediğiniz hedef URL'lerini belirtir. Bu örnekte, "http://google.com" belirtilmiştir.
relabel_configs
: Etiket yeniden düzenlemelerini belirtir.
Aşamaları sırayla göstermek için örneğinizi kullanalım:
Aşama 1:
İlk relabel_configs adımı:
source_labels: [__address__]
,target_label: __param_target
Değişiklik:
__address__
etiketi__param_target
etiketiyle değiştirilir.Değiştirilmiş Sorgu Linki:
http://localhost:9115/probe?__param_target=www.google.com&module=http_2xx
Aşama 2:
İkinci relabel_configs adımı:
source_labels: [__param_target]
,target_label: instance
Değişiklik:
__param_target
etiketiinstance
etiketiyle değiştirilir.Değiştirilmiş Sorgu Linki:
http://localhost:9115/probe?instance=www.google.com&module=http_2xx
Aşama 3:
Üçüncü relabel_configs adımı:
target_label: __address__
,replacement: localhost:9115
Değişiklik:
__address__
etiketilocalhost:9115
ile değiştirilir.Değiştirilmiş Sorgu Linki:
http://localhost:9115/probe?instance=www.google.com&module=http_2xx
Sonuç:
Sorgu linkinde aşamaların etkisiyle yapılan değişiklikler:
__address__
etiketi__param_target
ile değiştirilir.__param_target
etiketiinstance
ile değiştirilir.__address__
etiketilocalhost:9115
ile değiştirilir.
Bu aşamaların sonunda, sorgu linki http://localhost:9115/probe?instance=www.google.com&module=http_2xx
şeklinde değişir. Bu değiştirilmiş sorgu linki, scrape işlemi sırasında Blackbox Exporter tarafından kullanılacak ve belirtilen parametrelere göre kontrol yapılacaktır.
Bu yapılandırma, Prometheus'un Blackbox Exporter aracılığıyla belirtilen URL'leri izleyeceğini ve bu hedefler için HTTP modülünü kullanacağını belirtir. İzlenen hedeflerin metriklerini localhost:9115
adresinden alır ve bu metrikleri scrape ederek Prometheus'a sunar. Bu sayede, belirtilen URL'lerin erişilebilirlik durumu, yanıt süreleri ve diğer ilgili metrikleri Prometheus üzerinden izlenebilir hale gelir.
Last updated