📇Exporters

Nedir?

Exporters, ölçümlerin üçüncü taraf sistemden (linux veya Windows işletim sistemi gibi) Prometheus ölçümleriyle aynı biçimde dışa aktarılmasına yardımcı olan bir servistir.

Exporter, belirli bir hizmet, uygulama veya sistem için tanımlanmış metrikleri toplamak ve bu metrikleri Prometheus veri toplayıcısına aktarmak için tasarlanmış bir araçtır.

Exporter'lar, Prometheus tarafından kullanılabilen bir HTTP endpoint'e sahiptir ve belirli bir metrikle ilişkili olan birçok farklı istekle çağrılabilirler. Prometehus, bir exporter'ın HTTP endpoint'ini belirli bir zaman aralığı boyunca düzenli aralıklarla çağırarak, verileri toplar ve depolar.

Exporter'lar, belirli bir hizmet veya sistem için birçok farklı metrikleri toplayabilir. Örneğin, bir veritabanı exporter'ı, CPU kullanımı, bellek kullanımı, disk kullanımı, sorgu sayısı, bağlantı sayısı gibi metrikleri toplayabilir.

Bir web sunucusu exporter'ı ise, istek sayısı, yanıt süresi, hata sayısı gibi metrikleri toplayabilir.

Prometheus, bir exporter'ın topladığı verileri, Grafana gibi diğer araçlarla birlikte kullanarak, metrikleri grafikleştirmeye, monitör etmeye veya alarm kurmaya olanak tanır.

Exporter'lar, verileri toplama ve sunma işlemini yürütmek için Go, Python, Java gibi farklı dillerde yazılabilir. Prometheus exporter'ları Zabbix agent gibi düşünebiliriz. Her ikisi de monitör edilen hedeflerin belirli metriklerini toplayıp bir merkezi sunucuya gönderirler.

Özetle, sunucudan ölçümler almak için, sunucu da çalışan ve istatistikleri sunan bir veri toplayıcıya (örneğin bir exporter) ihtiyacımız var. Bu nedenle, misal bir Linux sunucunun CPU veya bellek grafiğini görmek istiyorsak, öncelikle bu sunucuda çalışan bir exporter kurmamız gerekir.

Node Exporter

Node Exporter, bir Linux veya Unix işletim sistemi üzerinde çalışan, Prometheus'a sistem ölçümleri sağlamak için kullanılan bir araçtır. Bu ölçümler, işletim sistemi kaynaklarından (CPU, bellek, disk vb.), ağ bağlantılarından, sistem istatistiklerinden ve diğer performans ölçümlerinden elde edilir.

Node Exporter, işletim sistemi istatistiklerini çıkarmak için önceden tanımlanmış bir dizi metrik toplar ve Prometheus'a düzenli aralıklarla sunar. Bu ölçümler daha sonra Prometheus tarafından işlenir ve depolanır, böylece bir sunucunun performansı, tarihsel eğilimleri veya beklenmedik değişiklikleri izlemek için kullanılabilir.

Node Exporter, bu metriklerin sağladığı bilgileri bir HTTP endpoint aracılığıyla sunar. Bu endpoint'e erişim, Prometheus'un bu metrikleri toplamasına ve depolamasına olanak tanır.

Node Exporter Kurulum ( Ubuntu 20.04 )

  • Gerekli dosyanın indirilmesi ve çıkarılması gerekmektedir.

    1. Aşağıdaki komut, öncelikle "/tmp" dizinine geçişi sağlar (eğer yoksa oluşturulur), ardından node_exporter adlı Prometheus exporter'ının 0.18.1 sürümünün indirilmesini ve açılmasını gerçekleştirir. İndirilen dosya "node_exporter-.-amd64.tar.gz" şeklinde bir formatta olduğundan, gerçek dosya adı tam olarak belirtilmez ve yıldız işaretiyle yer değiştirilir. Bu nedenle, "tar xvfz" komutuyla dosya sıkıştırması çözümlenir ve node_exporter uygulaması /tmp dizininin altındaki bir dizine çıkarılır.

cd /tmp && wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz && tar xvfz node_exporter-*.*-amd64.tar.gz 
  • Dosyaların taşınması ve kullanıcı oluşturulması gerekmektedir.

    1. Aşağıdaki komut 2 adımdan oluşmaktadır =>

      1. /usr/local/bin/ dizinine node_exporter adındaki ana uygulama dosyamızı taşıyoruz.

      2. node_exporter kullanıcısı oluşturuluyoruz. Bu komutla birlikte, /usr/local/bin/ dizinine taşınan node_exporter dosyasının çalışması için bir kullanıcı oluşturulmaktadır. -rs /bin/false argümanları, kullanıcının oturum açmasını engellemektedir. Yani node_exporter kullanıcısı, yalnızca node_exporter servisini çalıştırmak için kullanılacak bir sistem kullanıcısıdır.

sudo mv node_exporter-*.*-amd64/node_exporter /usr/local/bin/ && sudo useradd -rs /bin/false node_exporter
  • Systemd Dosyasını oluştuyoruz:

sudo vi /etc/systemd/system/node_exporter.service

Yukarıdaki dosyayı oluşturup, aşağıdaki parametreleri dosyanın içerisine ekliyoruz;

[Unit]
Description=Node Exporter
After=network.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
  • Ardından daemond servisini reload edip, node exporter servisini çalıştırıp, startup duruma getiriyoruz.

sudo systemctl daemon-reload &&  sudo systemctl enable node_exporter && sudo systemctl start node_exporter && sudo systemctl status node_exporter
  • Servisin çalışıp, çalışmadığını kontrol etmek için aşağıdaki http endpointe istek gönderiyoruz.

curl http://<server-IP>:9100/metrics

Node exporter kurduğumuz sunucuyu, Prometheus 'a eklemek için;

  • Prometheus kurulu sunucumuza geçiyoruz ve prometheus.yaml dosyamızı düzenlemek için vi editörü ile dosyamızı açıyoruz.

vi /etc/prometheus/prometheus.yml

Aşağıdaki parametreleri dosyamızın en altına yazıyoruz.

  - job_name: "node_exporter"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["10.90.0.144:9100"]

Dosyamızın içeriği aşağıdaki şekilde gözükecek;

  • Ardından servisi prometheus servisini restart ediyoruz:

sudo systemctl restart prometheus
  • Ardından prometheus arayüzünden hem targets kısmını, hem de promQL ile up sorgusunu gönderip, node exporter yüklediğimiz ubuntu makinemizin durumunu kontrol ediyoruz.

Yukarıda görüldüğü üzere bir sorun gözükmüyor.

Yukarıda Node exporter yüklediğimiz sunucunun kullanılabilir memory miktarını sorguluyoruz.

WMI Exporter

WMI (Windows Management Instrumentation) Exporter, Windows işletim sistemi üzerinde çalışan uygulamaların, Windows yönetim bileşenlerinin, servislerin ve işletim sistemi hakkındaki performans istatistiklerini toplayan ve Prometheus tarafından kullanılabilen bir exporter'dır. Windows WMI aracılığıyla toplanan verileri Prometheus'a sunar. Bu exporter, Windows sunucularının performansının izlenmesi için oldukça yararlıdır ve işletim sistemi, bellek kullanımı, disk ve ağ performansı gibi çeşitli performans ölçütlerini takip etmek için kullanılabilir.

WMI Exporter Kurulumu

  • Ardından indirdiğimiz exe dosyasını çalıştırıyoruz.

  • Ardından wmi kurduğumuz sunucunun http://sunucuip:9182/metrics adresine gidip, servisin çalışıp, çalışmadığını kontrol ediyoruz.

  • Sıra geldi wmi exporter kurduğumuz sunucuyu prometheus servisimize eklemeye, bunun için prometheus sunucumuza gidip "prometheus.yaml" dosyamıza wmi servisini yüklediğimiz sunucunun bilgilerini yazıp, servisi restart ediyoruz.

  - job_name: "wmi_exporter"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["10.90.0.134:9192"]

Eklediğimiz kısım yukarıda görüldüğü gibidir.

Ardından prometheus servisimizi restart ediyoruz;

systemctl restart prometheus
  • Yeni eklediğimiz sunucuyu, promQL'de up sorgusu ile ve targets sekmesinden kontrol ediyoruz.

Bir sorun gözükmüyor. Aşağıda teyit etmek için disk üzerinde kalan boş alanın sorgusunu gönderiyorum.

WMI exporter gibi bir araç kullanılarak toplanan verilerde, "windows_logical_disk_free_bytes" adlı bir metrik, her bir mantıksal disk için mevcut kullanılabilir boş alanı bayt cinsinden içerir. Ancak, bu bilgi bayt olarak verildiği için okunması zor olabilir. Bu nedenle, "windows_logical_disk_free_bytes" metriğini 1024^3 ile bölerek GB cinsinden daha okunaklı hale getirmek için /1024/1024/1024 kısmı kullanılır.

Bonus Bilgi : prometheus "admin-api" aktif duruma getirmek için,

  • Prometheus systemd dosyasını açıp aşağıda işaretlediğim satırı dosyaya ekliyoruz.

  • Ardından daemon reload ediyoruz ve prometheus servisi yeniden başlatıyoruz.

systemctl daemon-reload && systemctl restart prometheus

Ardından bir instance'a ait verileri temizlemek için, Prometheus sunucunun shellinde aşağıdaki sorguyu çalıştırabilirsiniz.

curl -X POST -g 'http://localhost:9090/api/v1/admin/tsdb/delete_series?match[]={instance="10.90.0.134:9192"}'

Last updated