Prometheus, metriklerini zaman serisi verileri olarak toplar ve saklar; yani metrik bilgileri, etiket adı verilen isteğe bağlı anahtar/değer çiftlerinin yanı sıra kaydedildiği zaman damgasıyla birlikte saklanır. Metrikler sayısal ölçümlerdir; zaman serileri, değişikliklerin zaman içinde kaydedildiği anlamına gelir. Kullanıcıların ölçmek istediği şey uygulamadan uygulamaya farklılık gösterir. Bir web sunucusu için istek süreleri olabilir, bir veritabanı için aktif bağlantı sayısı veya aktif sorgu sayısı vb. olabilir.
Metrikler, uygulamanızın neden belirli bir şekilde çalıştığını anlamada önemli bir rol oynar. Bir web uygulaması çalıştırıyorsanız ve uygulamanın yavaş olduğunu fark ederseniz. Başvurunuzda neler olduğunu öğrenmek için bazı bilgilere ihtiyacınız olacak. Örneğin istek sayısı fazla olduğunda uygulama yavaşlayabilir. İstek sayısı ölçümüne sahipseniz nedenini tespit edebilir ve yükü kaldıracak sunucu sayısını artırabilirsiniz.
Bu kılavuzda prometheus’u docker ve docker-compose ile nasıl çalıştıracağımızı öğreneceğiz.
Docker ve docker compose’un kurulu olduğundan emin olun
Prometheus’u çalıştırmak için docker’ı kullanacağımız için yüklü ve çalışır durumda olması önemlidir. Lütfen docker’ın kurulu olduğundan emin olun.
Sürümü kontrol ederek docker’ın beklendiği gibi çalıştığını doğrulayın:
$ docker version
Client: Docker Engine - Community
Version: 20.10.17
API version: 1.41
Go version: go1.17.11
Git commit: 100c701
Built: Mon Jun 6 23:02:46 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.17.11
Git commit: a89b842
Built: Mon Jun 6 23:00:51 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.6
GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version: 1.1.2
GitCommit: v1.1.2-0-ga916309
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Daha sonra docker-compose’un kurulu olduğundan emin olun. Docker compose, python pip paketi olarak mevcuttur. Python ve pip’in kurulu olduğundan emin olun ve ardından şu komutla docker-compose’u kurun:
sudo pip3 install docker-compose
Prometheus’u Docker ile çalıştırma
Tüm Prometheus hizmetleri Quay.io veya Docker Hub’da Docker görüntüleri olarak mevcuttur.
Prometheus’u Docker’da çalıştırmak, docker run -p 9090:9090 prom/prometheus kadar basittir. Bu, Prometheus’u örnek bir yapılandırmayla başlatır ve 9090 numaralı bağlantı noktasında gösterir.
Kullanmak için bazı temel konfigürasyonlara ihtiyacınız olacak. Bunu mevcut dizine prometheus.yml olarak kaydedin:
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
Prometheus görüntüsü, gerçek ölçümleri depolamak için bir birim kullanır. Üretim dağıtımları için, Prometheus yükseltmelerindeki verilerin yönetimini kolaylaştırmak amacıyla adlandırılmış bir birimin kullanılması önemle tavsiye edilir.
Kendi yapılandırmanızı sağlamak için çeşitli seçenekler vardır. İşte iki örnek.
Birimler ve bağlama montajı
Aşağıdakileri çalıştırarak prometheus.yml dosyanızı ana bilgisayardan bağlayın:
docker run \
-p 9090:9090 \
-v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus:latest
Veya şunu çalıştırarak prometheus.yml içeren dizini /etc/prometheus’a bağlayın:
docker run \
-p 9090:9090 \
-v /path/to/config:/etc/prometheus \
prom/prometheus:latest
Sistemimdeki çıktı bu:
$ docker run \
-p 9090:9090 \
-v ./prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus:latest
Unable to find image 'prom/prometheus:latest' locally
latest: Pulling from prom/prometheus
50e8d59317eb: Pull complete
b6c3b3e34d73: Pull complete
c25d1f04e478: Pull complete
cf87de5429d8: Pull complete
f30143b595e6: Pull complete
9d4045bcdf1f: Pull complete
11e771ad0e20: Pull complete
26449787f2fa: Pull complete
9d2e147a0f6b: Pull complete
fecd900b3277: Pull complete
e18940bc0d33: Pull complete
76c3b14215ee: Pull complete
Digest: sha256:f4c5fa1018a5c15f81250b8122f36f90146d5c2b323f9ec1f41d1b36dc0e7cb9
Status: Downloaded newer image for prom/prometheus:latest
Özel imaj
Ana bilgisayardaki bir dosyayı yönetmekten ve onu bağlamadan bağlamaktan kaçınmak için, yapılandırma görüntüye eklenebilir. Yapılandırmanın kendisi oldukça statikse ve tüm ortamlarda aynıysa bu işe yarar.
Bunun için Prometheus konfigürasyonuna ve Dockerfile’a sahip yeni bir dizin oluşturun:
FROM prom/prometheus
ADD prometheus.yml /etc/prometheus/
Şimdi onu derleyin ve çalıştırın:
docker build -t my-prometheus .
docker run -p 9090:9090 my-prometheus
Daha gelişmiş bir seçenek, yapılandırmayı başlangıçta bazı araçlarla dinamik olarak oluşturmak veya hatta bir arka plan programının periyodik olarak güncellemesini sağlamaktır.
Prometheus’u Docker Compose ile çalıştırma
Dağıtımları oluşturmamızı, güncellememizi ve yönetmemizi kolaylaştırmak için yukarıdaki talimatları bir docker oluşturma dosyasına ekleyebiliriz. Docker Compose, çok kapsayıcılı Docker uygulamalarını tanımlamaya ve çalıştırmaya yönelik bir araçtır. Compose ile uygulamanızın hizmetlerini yapılandırmak için bir YAML dosyası kullanırsınız. Daha sonra tek bir komutla tüm hizmetleri konfigürasyonunuzdan oluşturur ve başlatırsınız.
Docker-compose.yaml dosyasına aşağıdakini ekleyin:
version: '3.9'
services:
prometheus:
image: prom/prometheus:latest
restart: always
ports:
- 9090:9090
volumes:
- type: bind
source: ./prometheus.yml
target: /etc/prometheus/prometheus.yml
Bu dosyayı prometheus.yml yapılandırma dosyasının bulunduğu dizine kaydedin.
Artık hizmetleri bu komutla açabilirsiniz:
docker-compose up -d
Sistemimdeki çıktı bu:
$ docker-compose up -d
Creating network "prom_default" with the default driver
Creating prom_prometheus_1 ... done
Artık süreçleri kontrol edebilirsiniz:
$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------
prom_prometheus_1 /bin/prometheus --config.f ... Up 0.0.0.0:9090->9090/tcp,:::9090->9090/tcp
Yukarıdakilerden hizmetin 9090 numaralı bağlantı noktasında çalışır durumda olduğunu görebiliriz. Prometheus uç noktasına erişmek için http://server_ip:9090 adresini ziyaret edin.
Yazının orijinalini buradan okuyabilirsiniz.