Günümüzün teknoloji odaklı dünyasında sunucular işletmelerin, kuruluşların ve web sitelerinin sorunsuz işleyişini sağlamada çok önemli bir rol oynamaktadır. Ancak sunucuların sağlığı ve performansı hassas olabilir ve bu da potansiyel kesintilere, güvenlik ihlallerine ve verimsizliklere yol açabilir. Sunucu izlemenin devreye girdiği yer burasıdır. Bu yazıda sunucu izlemenin önemini keşfedeceğiz ve iki popüler izleme aracının (Grafana ve Prometheus) ayrıntılı kurulum sürecine dalacağız.
Sunucu izleme, anormallikleri tespit etmek, darboğazları belirlemek ve sorunları proaktif olarak çözmek için sunucu performansı ölçümlerini izleme ve analiz etme işlemidir.
Grafana ve Prometheus’a Giriş
Hızla gelişen teknoloji dünyasında, sistem yöneticileri, DevOps mühendisleri ve BT ekipleri, uygulamalarının ve altyapılarının güvenilirliğini ve performansını sağlama konusunda sürekli bir zorlukla karşı karşıyadır. Grafana ve Prometheus gibi izleme araçları, kritik ölçümlerin izlenmesi ve görselleştirilmesi için kapsamlı çözümler sağlamak üzere devreye giriyor. Bu girişte, izleme ve gözlemlenebilirlik alanında vazgeçilmez hale gelen iki güçlü araç olan Grafana ve Prometheus’un temel özelliklerini ve işlevlerini keşfedeceğiz.
Grafana nedir?
Grafana, kullanıcılara çeşitli kaynaklardan gelen verileri izlemek ve analiz etmek için özelleştirilebilir, gerçek zamanlı gösterge tabloları oluşturma olanağı sağlayan açık kaynaklı bir analiz ve görselleştirme platformudur. Başlangıçta Grafit metriklerini izlemek için tasarlanan Grafana, Prometheus, InfluxDB, Elasticsearch ve diğerleri dahil olmak üzere çok çeşitli veri kaynaklarını destekleyecek şekilde geliştirildi.
Prometheus nedir?
Prometheus, başlangıçta SoundCloud’da geliştirilen açık kaynaklı bir izleme ve uyarı araç setidir. Çeşitli kaynaklardan zaman serisi metriklerini toplamak, bunları verimli bir şekilde depolamak ve veri alımı ve analizi için PromQL adı verilen güçlü bir sorgulama dili sunmak üzere tasarlanmıştır.
Prometheus, SMNP gibi protokolleri veya bir tür aracı hizmeti kullanmaz. Bunun yerine, metrikleri http üzerinden bir istemciden (hedeften) alır (kazır) ve verileri, kendi DSL’sini kullanarak sorgulayabileceğiniz yerel zaman serisi veritabanına yerleştirir.
Prometheus, metriklerini Prometheus formatına dönüştürmek ve göstermek için istemcilerde kurulu ve yapılandırılmış dışa aktarıcıları kullanır. Prometheus sunucusu daha sonra ölçümler için dışa aktarıcıyı sıyırır.
Varsayılan olarak Prometheus, Prometheus sunucusundaki 9090 numaralı bağlantı noktasından erişilebilen bir kullanıcı arayüzüyle birlikte gelir. Kullanıcılar ayrıca kontrol panelleri oluşturma ve Grafana gibi favori görselleştirme yazılımlarını entegre etme olanağına da sahiptir.
Önemli terimlerden bazılarını özetleyelim:
- Prometheus Server : Alıntılanan metrikleri bir zaman serisi DB’sinde kazıyan ve saklayan ana sunucu.
- Scrape : Prometheus sunucusu, metrikleri almak için çekme yöntemini kullanır.
- Target : Prometheus, bilgi aldığı istemcilere sunuculuk yapar.
- Exporter : Mevcut metrikleri Prometheus biçimine dönüştüren ve dışa aktaran kitaplıkları hedefleyin.
- Alert Manager : Uyarıların işlenmesinden sorumlu bileşen.
Docker-compose dosyasını kullanarak Prometheus’u, Node aktarıcıyı ve grafanayı ayarlama
Adım 1: Docker’ı Yükleme
Docker Engine’i yeni bir ana makineye ilk kez kurmadan önce Docker deposunu kurmanız gerekir. Daha sonra Docker’ı depodan yükleyebilir ve güncelleyebilirsiniz.
sudo apt update
Daha sonra apt’nin paketleri HTTPS üzerinden kullanmasına izin veren birkaç önkoşul paketi yükleyin:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
Ardından resmi Docker deposunun GPG anahtarını sisteminize ekleyin:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Docker deposunu APT kaynaklarına ekleyin:
sudo add-apt-repository "deb [arch=amd64]
https://download.docker.com/linux/ubuntu focal stable"
Bu aynı zamanda paket veritabanımızı yeni eklenen depodaki Docker paketleriyle güncelleyecektir.
Varsayılan Ubuntu deposu yerine Docker deposundan yükleme yapmak üzere olduğunuzdan emin olun:
apt-cache policy docker-ce
Docker-ce’nin kurulu olmadığına ancak kurulum adayının Docker’dan olduğuna dikkat edin.
Son olarak Docker’ı yükleyin:
sudo apt install docker-ce
Dcoker durumunu kontrol edin:
sudo systemctl status docker
Başlangıçta herhangi bir imaj ve konteyner olmayacak.
İmajları görüntülemek için:
sudo docker images
Çalışan konteynerleri görüntülemek için:
sudo docker ps
Adım 2: Docker-Compose’u Yükleme
Docker-compose’u kurarken fazla bir şey yapmamıza gerek yok. Şu adımları uygulamanız yeterlidir:
sudo apt-get update -y
sudo apt-get install docker-compose -y
Yüklendikten sonra docker-compose sürümünüzü kontrol edin:
sudo docker-compose --version
Adım 3: Prometheus ve grafana’nın kurulumu:
Docker-compose kurulumunu yaptıktan sonra docker-compose.yml dosyasını kullanarak prometheus ve grafana kurulumunu kolaylıkla yapabiliriz. Bunu yaparken aynı zamanda ana makinemizi (sunucumuzu) da izlemeye çalışalım. Bunun için node_exporter’a ihtiyacımız var.
Docker-compose.yml’yi yapılandıralım ve konteynerlerimizi başlatalım
sudo mkdir prometheus
cd prometheus
sudo nano docker-compose.yml
Şimdi içine aşağıdaki kodu ekleyin:
version: '3.3'
volumes:
prometheus-data:
driver: local
grafana-data:
driver: local
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: unless-stopped
volumes:
- ./config:/etc/prometheus/
- prometheus-data:/prometheus
networks:
- prometheus-network
ports:
- "9090:9090"
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: unless-stopped
volumes:
- grafana-data:/var/lib/grafana
networks:
- prometheus-network
ports:
- "3000:3000"
node_exporter:
image: quay.io/prometheus/node-exporter:latest
container_name: node_exporter
command:
- '--path.rootfs=/host'
pid: host
ports:
- "9100:9100"
restart: unless-stopped
volumes:
- '/:/host:ro,rslave'
networks:
- prometheus-network
networks:
prometheus-network:
driver: bridge
Docker-compose dosyamızda:
version: Sürüm 3.3 belirtildi.
volumes: İki volume, prometheus-data ve grafana-data yerel olarak oluşturulmuştur. /var/lib/docker/volumes/ dizininde otomatik olarak oluşturulur.
services: İki hizmet prometheus ve grafana yaratılmıştır; Bunlar için sırasıyla image ve konteyner adı belirtilir.
restart: yeniden başlatma, durdurulmadığı sürece olarak ayarlanır; yani, konteyner yeniden başlatmadan önce çalışıyorsa, sistem yeniden başlatıldığında konteyner yeniden başlatılır.
volumes:
For Prometheus: — ./config:/etc/prometheus/ : config adlı bir klasör (şu anki Host/server klasörümüzün içinde) /etc/Prometheus (prometheus konteynerinin içinde) ile eşlenir – prometheus-data:/prometheus : Daha önce oluşturduğumuz prometheus birimimiz -veriler /Prometheus ile eşlenir (prometheus kabının içinde)
For grafana: — grafana-data:/var/lib/grafana : Daha önce oluşturduğumuz hacim grafana-verileri /var/lib/grafana ile eşlenir (grafana kabının içinde)
For node_exporter: — ‘/:/host:ro,rslave’ : Ana makinenin kök dizini, yani ‘/’, salt okunur modda bir slave olarak (node_exporter konteynerinin içinde) ‘/host’ olarak eşlenir.
pid: node_exporter’ın pid’i ana bilgisayarla paylaşılır. Bu süreç izleme için yapılır.
command: Node_exporter durumunda. ‘–path.rootfs=/host’ komutu belirtildi ve konteynerimiz başlatılırken yürütüldü. Ana makinemizin kök diskini izlemek için yapılır.
networks: Tüm konteynerler aynı ağda bulunur, yani prometheus ağı
ports: Bağlantı noktası eşlemesi ana bilgisayar bağlantı noktasından konteyner bağlantı noktasına yapılır.
networks: Sürücü modu köprü olan prometheus-network adında bir ağ tanımlanır.
Ayrıca Prometheus için bir config dosyasına ihtiyacımız var. Öyleyse onu yaratalım.
mkdir config
sudo nano config/prometheus.yml
İçine aşağıdaki kodu kopyalayın:
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds.
# scrape_timeout is set to the global default (10s).
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
external_labels:
monitor: 'codelab-monitor'
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['prometheus:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['node_exporter:9100']
Şimdi konteynerlerimize başlayalım:
docker-compose up --build –d
ve durumu kontrol edin:
docker ps
Her şey yolunda gidiyor gibi görünüyor. Şimdi Prometheus’a erişmek için http://yourserverip:9090/ adresine gidin:
Durum->hedefler’e gidin.
Burada hem prometheus hem de node_exporter hedeflerimizin çalıştığını görebiliyoruz. Bu, Prometheus’un bu uç noktalardan verileri toplayabileceği anlamına gelir. Ancak şimdilik prometheus’u tartışmayacağız. Prometheus’un kazıdığı metrikleri görüntülemek için grafana’yı kullanacağız.
Grafana sunucumuza giriş yapalım.
http://sunucunuzunipi:3000/ adresine gidin
Varsayılan kullanıcı adı ve şifre admin’dir.
Şimdi bir Prometheus veri kaynağı oluşturmanız gerekiyor:
- Kenar çubuğunu açmak için Grafana logosuna tıklayın.
- Bağlantı kenar çubuğunda “Veri Kaynakları”na tıklayın.
- “Yeni Ekle”yi seçin.
- Veri kaynağı olarak “Prometheus”u seçin.
- Prometheus sunucu URL’sini ayarlayın (bizim durumumuzda: http://prometheus:9090) Bu URL yalnızca grafana ve prometheus’un docker’da aynı ağda olması nedeniyle çalışır.
- Kaydet ve test et’e tıklayın.
Ayarlarınız şöyle görünmelidir:
Artık Prometheus tarafından toplanan bilgilerden ilk kontrol panelinizi oluşturmaya hazırsınız. Şimdi ana bilgisayar izleme için kontrol panelimizi ayarlayalım.
Grafana Dashboard Nasıl İçe Aktarılır?
Bir kontrol paneli, daha etkili ve standartlaştırılmış bir düzen kullanarak istemci düğümüne ilişkin istatistikleri görüntüler. Özel bir kontrol paneli oluşturmak kesinlikle mümkündür. Ancak Prometheus, Node Exporter istatistiklerini desteklemek için zaten bir kontrol paneli oluşturmuştur. Düğüm Aktarıcının Tam kontrol paneli, istemci düğümlerinden toplanan değerlerin çoğunun grafiğini düzgün bir şekilde gösterir. Bu önceden hazırlanmış kontrol panelini içe aktarmak, özel bir kontrol paneli oluşturmaktan çok daha az iş gerektirir.
- Grafana kontrol paneline gidin. Dört kareden oluşan Kontrol Paneli simgesini seçin ve + İçe Aktar’ı seçin.
- Grafana.com yoluyla içe aktar kutusuna 1860 kimliğini girin. Ardından Yükle düğmesini seçin.
- Bu kimlik, node_exporter kontrol panelinin tamamını grafana kontrol paneli kitaplığından dışa aktarmamıza yardımcı olur. https://grafana.com/grafana/dashboards/ adresinde daha fazla kontrol paneline göz atabilirsiniz.
- Yükleye tıklayın.
- Adı ayarlayın, doğru prometheus’u ayarlayın ve içe aktar’a tıklayın:
İçe aktardıktan sonra bir kontrol panelini görebilirsiniz. Bu kontrol paneli hazır bir kontrol panelidir ve birçok bilgiyi içerir.
Gösterge tablonuz CPU kullanımı, bellek kullanımı, ağ trafiği kullanımı vb. gibi çeşitli ölçümlerle birlikte yüklendi. İhtiyaç duyduğunuz şekilde keşfedebileceğiniz ve özelleştirebileceğiniz çok sayıda farklı ölçüm var.
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.