◼️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:
wget https://github.com/prometheus/blackbox_exporter/releases/latest/download/blackbox_exporter-<version>.linux-amd64.tar.gzYukarı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:
tar xvfz blackbox_exporter-<version>.linux-amd64.tar.gzÇıkan dizine girin:
cd blackbox_exporter-<version>.linux-amd64Blackbox Exporter'ı
/usr/local/bindizinine kopyalayın:
Gerekli dizinleri oluşturun ve izinleri ayarlayın:
Örnek bir yapılandırma dosyasını
/etc/blackbox_exporter/blackbox.ymlolarak 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/metricsadresine 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.

fail_if_body_not_matches_regexpfail_if_body_not_matches_regexp 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, fail_if_body_not_matches_regexp 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;

probe_success 1 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_targetDeğişiklik:
__address__etiketi__param_targetetiketiyle 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: instanceDeğişiklik:
__param_targetetiketiinstanceetiketiyle 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:9115Değişiklik:
__address__etiketilocalhost:9115ile 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_targetile değiştirilir.__param_targetetiketiinstanceile değiştirilir.__address__etiketilocalhost:9115ile 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
Was this helpful?
