👉aws with prometheus
Discovery
Yukarıdaki prometheus yapılandırması, Prometheus'un "ec2" olarak adlandırılan bir işi (job) tanımladığını göstermektedir. Bu iş, Prometheus tarafından izlenen EC2 sunucuları (Amazon Elastic Compute Cloud) hedef olarak kullanır.
ec2_sd_configs
bölümü, EC2 hedeflerinin nasıl keşfedileceğini belirtir. Bu örnekte, erişim anahtarı (access_key
) ve gizli anahtar (secret_key
) kullanılarak belirli bir bölgeye (region
) erişim sağlanır. Bu bilgiler, Prometheus'un AWS API'lerine istek göndererek EC2 sunucuları keşfetmesine yardımcı olur.
Bu yapılandırma, Prometheus'un EC2 sunucuları hedef alarak performans metriklerini toplamasını ve izlemesini sağlar. Prometheus, bu ölçümleri kullanarak sunucuların durumunu analiz edebilir, uyarılar oluşturabilir ve metrik verilerini kullanıcıya sunabilir.
Yukarıdaki yapılandırmayı prometheus.yml dosyamıza ekleyip, prometheus servisini restart ettikten sonra, prometheus admin arayüzünde, Service discovery kısmına "ec2" sunucularımıza ait bilgilerin ulaşması gerekmektedir.
AWS tarafında ec2 sunucularımız mevcut ise, aşağıdaki görüntü de görebileceğiniz gibi, sunucuya ait verilerin ulaşması gerekmektedir.
Node Exporter
Eğer EC2 sunucusunda bir Debian veya Ubuntu tabanlı işletim sistemi kullanıyorsanız, Prometheus Node Exporter'ı apt
paket yöneticisi aracılığıyla kurabilirsiniz.
EC2 sunucusunda ssh ile bağlanın.
Aşağıdaki komutu kullanarak paket deposunu güncelleyin:
Node Exporter'ı
apt
ile kurmak için aşağıdaki komutu çalıştırın:Kurulum tamamlandıktan sonra, Node Exporter otomatik olarak başlatılacaktır.
relabel_configs
Yukarıdaki yml, Prometheus’un AWS’de bulunan EC2 sunucularını otomatik olarak keşfetmesini ve onları metrik toplamak için hedef olarak eklemesini sağlıyor. relabel_configs bölümü ise hedeflerin adreslerini EC2 sunucularının Public IP adresleri ve 9100 portu ile değiştiriyor. Böylece Prometheus, hedeflerin /metrics yolundan veri alabiliyor.
Özetle, ec2_sd_configs: parametresi hem EC2 sunucularını keşfedip hem de target olarak ekliyor. relabel_configs: parametresi ise targetların etiketlerini değiştirmek için kullanılıyor. Bu sayede, Prometheus'un targetlara nasıl ulaşacağını ve onları nasıl tanımlayacağını belirleyebiliyoruz. Örneğin, bu tanım özelinde relabel_configs: parametresi, targetların adreslerini EC2 sunucularının private IP adreslerinin bulunduğu etikete, ec2 sunucunun public ip adresini ve 9100 portunu ekliyor. Böylece Prometheus, targetların /metrics yolundan veri alabiliyor.
Relabeling KEEP and DROP
Prometheus'un scrape ettiği hedeflerle ilgili olarak "relabel" işlemleri yapabiliriz. Bu relabel işlemleri, hedeflerin etiketlerini değiştirmek, düzenlemek veya filtrelemek için kullanılır. Bu işlemler, Prometheus'un metrikleri gruplamasını ve işlemesini kolaylaştırır.
"relabel" işlemlerinin içinde "drop" ve "keep" adı verilen iki önemli işlem bulunur:
drop
: Belirli bir kurala uyan hedefleri bırakır (silmez). Örneğin, bir hedefin belirli bir etiketi varsa veya belirli bir etiket değerine sahipse, bu hedefleri "drop" işlemiyle çıkarabiliriz. Bu sayede, bu hedeflerin metrikleri scrape edilmez ve Prometheus tarafından işlenmez.keep
: Belirli bir kurala uyan hedefleri korur (silmez). Örneğin, bir hedefin belirli bir etiketi varsa veya belirli bir etiket değerine sahipse, bu hedefleri "keep" işlemiyle koruyabiliriz. Bu sayede, sadece bu kurala uyan hedeflerin metrikleri scrape edilir ve Prometheus tarafından işlenir.
Keep;
prometheus.yml
file_sd_config2.yml
Bu örnekte, prometheus.yml
dosyasında keep_and_drop
adında bir scrape işi (job
) ve bu iş için file_sd
hedefleri tanımlanmıştır. file_sd_configs
bölümünde file_sd_config2.yml
dosyasının yolu belirtilmiştir ve refresh_interval
değeri 30 saniye olarak ayarlanmıştır.
relabel_configs
bölümünde, environment
etiketi production
olan hedefler korunacak (keep) şekilde belirtilmiştir. Yani sadece production
ortamında çalışan hedefler scrape edilecektir. Diğer tüm hedefler, bu işlem sonucunda çıkarılacaktır.
file_sd_config2.yml
dosyasında, hedefler ve ilgili etiketler YAML formatında tanımlanmıştır. İki hedef grubu bulunmaktadır. İlk hedef grubu 10.90.0.145:9100
adresinde çalışan node-exporter
işini temsil eder ve environment
etiketi production
olarak ayarlanmıştır. İkinci hedef grubu da aynı hedefi ve etiketi (environment: staging
) kullanmaktadır.
Sonuç olarak, Prometheus, prometheus.yml
dosyasında tanımlanan scrape işini (job) yürütecek ve file_sd_config2.yml
dosyasında tanımlanan hedefleri kontrol ederek işleyecektir. relabel_configs
bölümünde belirtilen kurallara göre sadece production
ortamında çalışan hedefler scrape edilecek ve diğerleri çıkarılacaktır.
Drop;
prometheus.yml
file_sd_config2.yml
Bu örnekte, prometheus.yml
dosyasında keep_and_drop
adında bir scrape işi (job
) ve bu iş için file_sd
hedefleri tanımlanmıştır. file_sd_configs
bölümünde file_sd_config2.yml
dosyasının yolu belirtilmiş ve refresh_interval
değeri 30 saniye olarak ayarlanmıştır.
relabel_configs
bölümünde, source_labels
özelliği kullanılarak environment
etiketi production
olan hedefler çıkarılır (drop). Yani sadece environment: production
olan hedefler scrape edilmeyecek ve Prometheus tarafından işlenmeyecektir.
file_sd_config2.yml
dosyasında, hedefler ve ilgili etiketler YAML formatında tanımlanmıştır. İki hedef grubu vardır. Her iki hedef grubu da aynı node-exporter
işini temsil eder, ancak environment
etiketi farklıdır. İlk hedef grubu environment: production
etiketine sahipken, ikinci hedef grubu environment: staging
etiketine sahiptir.
Sonuç olarak, Prometheus, prometheus.yml
dosyasında tanımlanan scrape işini (job) yürütecek ve file_sd_config2.yml
dosyasında tanımlanan hedefleri kontrol ederek işleyecektir. relabel_configs
bölümünde belirtilen kurala göre sadece environment: production
olan hedefler çıkarılacak ve scrape edilmeyecektir.
Last updated