👉aws with prometheus
Discovery
- job_name: 'ec2'
ec2_sd_configs:
- access_key: AIADFGHK6QLLVDF1B6U
secret_key: H5cIdfGzbxG3ql64h65u5nd6rfy5ZbiXZ/JjgA82
region: ap-south-1
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:
sudo apt update
Node Exporter'ı
apt
ile kurmak için aşağıdaki komutu çalıştırın:sudo apt install prometheus-node-exporter
Kurulum tamamlandıktan sonra, Node Exporter otomatik olarak başlatılacaktır.
relabel_configs
- job_name: 'ec2'
ec2_sd_configs:
- access_key: AIADFGHK6QLLVDF1B6U
secret_key: H5cIdfGzbxG3ql64h65u5nd6rfy5ZbiXZ/JjgA82
region: ap-south-1
relabel_configs:
- source_labels: [__meta_ec2_public_ip]
regex: '(.*)'
replacement: '${1}:9100'
target_label: __address__
Ö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
- job_name: 'keep_and_drop'
file_sd_configs:
- files:
- /etc/prometheus/file_sd_config2.yml
refresh_interval: 30s
relabel_configs:
- source_labels: [environment]
regex: production
action: keep
file_sd_config2.yml
- targets:
- 10.90.0.145:9100
labels:
environment: production
job: node-exporter
- targets:
- 10.90.0.145:9100
labels:
environment: staging
job: node-exporter
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
- job_name: 'keep_and_drop'
file_sd_configs:
- files:
- /etc/prometheus/file_sd_config2.yml
refresh_interval: 30s
relabel_configs:
- source_labels: [environment]
regex: production
action: drop
file_sd_config2.yml
- targets:
- 10.90.0.145:9100
labels:
environment: production
job: node-exporter
- targets:
- 10.90.0.145:9100
labels:
environment: staging
job: node-exporter
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
Was this helpful?