Press ESC to close

HOW TO CREATE ELASTICSEARCH MONITOR DASHBOARD GRAFANA & PROMETHEUS

Prometheus, açık kaynak kodlu bir izleme ve alarm sistemidir. Sistemlerden, uygulamalardan ve veritabanlarından metrikleri toplayarak veritabanına kaydeder ve bu verileri analiz etmenizi sağlar. Prometheus, zaman serisi verilerini toplar ve verileri sorgulamak için PromQL adlı özel bir sorgulama dili kullanır. Elasticsearch ve PostgreSQL gibi veri kaynaklarının durumu, performansı ve diğer metriklerini sürekli olarak izlemek için idealdir.

Grafana, çeşitli veri kaynaklarını kullanarak etkileşimli grafikler ve panolar (dashboard) oluşturmanızı sağlayan bir görselleştirme aracıdır. Prometheus gibi izleme sistemlerinden veri alarak metrikleri görselleştirir. Grafana sayesinde, PostgreSQL ve Elasticsearch gibi sistemlerin performans metriklerini grafiklerle izleyebilir ve uyarılar alabilirsiniz.

PostgreSQL Metrikleri: Sorgu performansı, CPU kullanımı, bellek kullanımı, disk I/O, aktif bağlantı sayısı, gecikme süreleri vb.

Elasticsearch Metrikleri: Düğüm sağlığı, indeks boyutu, arama ve indeksleme oranları, bellek kullanımı, işlemci kullanımı, belge sayısı vb.

Öncelikle Prometeus Kurulumu Ve konfigürasyonunu yapıyoruz

# wget https://github.com/prometheus/prometheus/releases/download/v3.0.0-rc.0/prometheus-3.0.0-rc.0.linux-amd64.tar.gz

Dosyaları tardan çıkarıp binary lerini /usr/local/bin altına taşıyoruz

# mv prometheus-3.0.0-rc.0.linux-amd64/prometheus /usr/local/bin/
# mv prometheus-3.0.0-rc.0.linux-amd64/promtool /usr/local/bin/

Konfigürasyon dosyalarını ve dizinlerini lerini oluşturmamız gerekmekte.

# mkdir /etc/prometheus
# vi /etc/prometheus/prometheus.yml

global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'postgresql'
    static_configs:
    - targets: ['localhost:9187']
  - job_name: 'elasticsearch'
    static_configs:
    - targets: ['localhost:9200']

Prometheus servislerini oluşturalım

# vi /etc/systemd/system/prometheus.service

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file /etc/prometheus/prometheus.yml \
--storage.tsdb.path /var/lib/prometheus/ \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries

[Install]
WantedBy=multi-user.target

Prometheus servislerini enable yapıp çalıştırıyoruz.

# systemctl daemon-reload
# systemctl start prometheus
# systemctl enable prometheus
# systemctl status prometheus
● prometheus.service - Prometheus
   Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2024-11-10 19:00:15 UTC; 11s ago
 Main PID: 86454 (prometheus)
    Tasks: 8 (limit: 10910)
   Memory: 17.7M
   CGroup: /system.slice/prometheus.service
           └─86454 /usr/local/bin/prometheus --config.file /etc/prometheus/prometheus.yml --storage.tsdb.path /var/lib/prometheus/ 

Prometheus ekarnına http://ip_adress:9090 adresinden erişebiliriz

 

Grafana Kurulumu yapıyoruz öncelikle gpg key import ediyoruz, sonra grafayaı indiriyoruz

# wget -q -O gpg.key https://rpm.grafana.com/gpg.key
# rpm --import gpg.key

# vi /etc/yum.repos.d/grafana.repo

[grafana]
name=grafana
baseurl=https://rpm.grafana.com
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://rpm.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
# dnf install grafana
# systemctl enable  grafana-server
# systemctl start grafana-server

Grafana ekranına bağlanmak için http:_ip_address:3000 üzerinden aşağıdaki ekrana erişebiliriz, girişte şifre ekranına admin ve şifre olarak admin diye giriş yapabiliriz, ilk girişte hemen şire değiştirme ekranına atar bizi ve burada admin şifresini belirliyoruz.

Buradan sonra artık , prometheus exporterlar ile metriklerin prometheus a aktarılması , sonrasında da aktarılan bu verilerin grafanada görselleştirilmesi kısımlarını yapmalıyız, öncelikle elasticsearch için prometheus exporter 

Install Elasticsearch Exporter

Elasticsearch instance larından birisine exporter indiriyoruz, güncel exporter için https://github.com/prometheus-community/elasticsearch_exporter/releases 

# wget https://github.com/prometheus-community/elasticsearch_exporter/releases/download/v1.8.0/elasticsearch_exporter-1.8.0.linux-amd64.tar.gz

dosyaları dizine çıkaralım ve bir user oluşturalım

# tar -xvf elasticsearch_exporter-1.8.0.linux-amd64.tar.gz

# useradd --no-create-home --shell /bin/false elastic_search

Çıkarılan dosyayı servis olarak çalıştırılacağı dizin olan /ust/local/bin/ dizini altına gönderelim

# cd elasticsearch_exporter-1.8.0.linux-amd64

# ll
total 13316
-rw-r--r--. 1 1001 1002     7201 Sep 20 14:56 CHANGELOG.md
-rw-r--r--. 1 1001 1002    49644 Sep 20 14:56 dashboard.json
-rw-r--r--. 1 1001 1002     1805 Sep 20 14:56 deployment.yml
-rwxr-xr-x. 1 1001 1002 13500568 Sep 20 14:55 elasticsearch_exporter
-rw-r--r--. 1 1001 1002      979 Sep 20 14:56 elasticsearch.rules
-rw-r--r--. 1 1001 1002    11357 Sep 20 14:56 LICENSE
-rw-r--r--. 1 1001 1002    48214 Sep 20 14:56 README.md

# cp elasticsearch_exporter /usr/local/bin/

# chown elastic_search:elastic_search /usr/local/bin/elasticsearch_exporter

Şimdi elasticsearch _exporter servisini oluşturalım;

# vi /etc/systemd/system/elasticsearch_exporter.service

[Unit]
[Unit]
Description=Prometheus ES_exporter
After=local-fs.target network-online.target network.target
Wants=local-fs.target network-online.target network.target

[Service]
User=elastic_search
Nice=10
ExecStart=/usr/local/bin/elasticsearch_exporter --es.uri=http://elastic_search@localhost:9200 --es.all --es.indices --es.timeout 20s
ExecStop=/usr/bin/killall elasticsearch_exporter

[Install]
WantedBy=default.target
# systemctl daemon-reload
# systemctl enable elasticsearch_exporter
# systemctl start  elasticsearch_exporter

Elasticsearch exporter çalışıyor default portu 9114, bu http://_prometheus_ip_addr:9114 linkinden gelen metrikleri görebilirsiniz.

 

Exporter metriikleri gönderiri durumda şimdi prometheus ile bu metrikleri alıp kaydedelim. prometheus sunucusunda prometheus.yml dosyasını düzenleyelim

# vi /etc/prometheus/prometheus.yml

global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
   - job_name: 'elasticsearch_exporter'
    static_configs:
    - targets: ['elasticsearch_ip:9114']

Bunun ardından prometheus servislerini yeniden başlatmalıyız

# systemctl restart  prometheus.service

Prometheus arayüzünden elasticsearch_exporter sağlık durumuna bakabiliriz

artık bunu Grafana da görselleştirmemiz gerekmekte.

Elasticsearch In Grafana

Öncelikle grafana ekranına bağlanıp soldaki menülerden connection ve Data Source kısımlarını ayarlamamız lazım, Data source kısmımız yukarıda ayarladığımız Prometheus olacak

Ayarlarını yapıyoruz 

En altta kaydet ve test et kısmında bağlantı olduğunu gördüğümüzde data soruce tanımımız bitmiş oluyor. Ve görsel olarak gösterme kısmına geçiyoruz. New Dashbord diyerek devam etmeliyiz

 

Burada hazır template üzerinden gidilebilir , veya tamamen bu metriklerden kendi dashboard arayüzünüzü oluşturabilirsiniz, ayrıca template leride özelleştirebilirsiniz. Ben hazır basit bir tamplate olan Grafana ID 4358 olan template i grafana sitesinden json dosyasını indirip , kendi grafanama import ediyorum