Merhabalar,
Bu makalemizde elasticsearch ortamlarımızı opensource ürünler ile nasıl monitor ettiğimizi anlatacağım. Monitoring işlemi için en çok kullanılan üçlü ile ilerleyeceğiz; elasticsearch exporter, prometheus ve grafana.
Bu teknolojilere öncelikle kısaca bakalım.
Elasticsearch exporter: elasticsearch sunucularına kuracağımız ufak bir tool. Bu tool elasticsearch’e bağlanıp aynı sunucunun 9114 portundan http olarak yayınlayacak.
Prometheus : Prometheus, zaman serisi tabanlı izleme için kullanılan açık kaynaklı bir sistemdir. Elasticsearch exporter’ın broadcast yaptığı metrikleri prometheus yakalayıp store edecek.
Grafana : Grafana, verileri görselleştirmek ve izlemek için kullanılan popüler bir açık kaynaklı platformdur. Grafana ile prometheus’un yakalayıp store ettiği metrikleri web browser’da görselleştireceğiz.
Elasticsearch monitoring. için aşağıdaki adımları sırayla takip etmemiz gerekli.
Exporter kurulumu için github’daki bu projeden faydalanacağız. Öncelikle https://github.com/prometheus-community/elasticsearch_exporter/releases sayfasından işletim sistemimize uygun exporter’ı indirip sunucuya atıyoruz.
Ubuntu 22 için elasticsearch_exporter-1.6.0.linux-amd64.tar.gz ‘yi indirdim.
Elasticsearch’te authentication açık ise bir adet user oluşturuyorum.
/usr/share/elasticsearch/bin/elasticsearch-users useradd exporter_user -r superuser
Test amaçlı exporter’ı manuel çalıştırıyorum.
/root/exporter/elasticsearch_exporter --es.uri="https://exporter_user:password1@elasticnode1:9200" --es.ssl-skip-verify
Aşağıdaki gibi curl ile metriclerin gelip gelmediğini kontrol ediyorum. Eğer metrikler geliyor ise exporter tamamdır.
curl elasticnode1:9114/metrics
Şimdi exporter’ın arka planda çalışabilmesi için bir adet servis yazıyorum.
root@elasticnode1:~# cat /etc/systemd/system/elk_exporter.service
[Unit]
Description=Elasticsearch Exporter
After=network.target
[Service]
User=root
Group=root
Type=simple
ExecStart=/root/exporter/elasticsearch_exporter --es.uri="https://exporter_user:password1@elasticnode1:9200" --es.ssl-skip-verify
[Install]
WantedBy=multi-user.target
Servisi start edip curl ile tekrar kontrol ediyorum.
systemctl daemon-reload
systemctl start elk_exporter
Aşağıdaki konfigürasyonu prometheus.yml dosyasına ekleyip restart ediyoruz.
scrape_configs:
- job_name: 'elasticsearch'
static_configs:
- targets: ['elasticnode01:9114']
Grafana’ arayüzüne girip ‘ya bağlanıp https://grafana.com/grafana/dashboards/14191-elasticsearch-overview/ adresinden indirilen dashboard import edilir. Dashboard ID: 14191.
Tüm adımlar tamamlandıktan sonra grafana’ya bağlanıp ilgili dashboard üzerinden metriklerin geldiğini görebiliriz. Örnek ekran görüntüleri aşağıdaki gibi. Metrikler gayet yeterli.
Elasticsearch monitoring için en kullanışlı open-source ürünleri bir araya getirmeye çalıştık. Umarım faydalı olmuştur.
Kaynaklar;
https://grafana.com/grafana/dashboards/14191-elasticsearch-overview/
https://github.com/prometheus-community/elasticsearch_exporter
https://grafana.com/oss/prometheus/exporters/elasticsearch-exporter/