Merhaba arkadaşlar, bugün sizlere MySQL, MariaDB veya PostgreSQL gibi veritabanı sunucularınızı profesyonel seviyede izlemenizi sağlayacak, tamamen ücretsiz ve açık kaynaklı bir araç olan Percona Monitoring and Management (PMM) kurulumunu anlatacağım. Benim de uzun süredir kullandığım bu araç, sunucularınızın performansını, sorgularınızı, bağlantılarınızı ve daha birçok metriği tek bir panodan takip etmenizi sağlıyor. Özellikle yavaş sorgu analizi ve kapasite planlaması için vazgeçilmez bir yardımcı.
PMM Bileşenleri ve Kurulum Öncesi
PMM temel olarak iki ana bileşenden oluşuyor. Birincisi, izlenecek sunucuya kurulan ve metrikleri toplayan PMM İstemcisi (PMM Client). İkincisi ise bu toplanan verileri depolayıp, güzel bir web arayüzünde sunan PMM Sunucusu (PMM Server). PMM Sunucusu'nu kendi sunucunuzda çalıştırabileceğiniz gibi, Percona'nın bulut hizmetini de kullanabilirsiniz. Bugün en yaygın yöntem olan Docker ile kendi sunucumuzda PMM Server'ı ayağa kaldıracağız.
Kuruluma başlamadan önce, PMM Sunucusu için ayıracağınız makinede Docker ve Docker Compose'un kurulu olduğundan emin olun. Ayrıca, izlemek istediğiniz veritabanı sunucunuzda root veya yeterli yetkilere sahip bir kullanıcı erişiminiz olmalı.
1. Adım: PMM Sunucusunu Docker ile Çalıştırma
Öncelikle PMM verilerini kalıcı hale getirmek için bir dizin oluşturalım ve Docker Compose dosyamızı yazalım. Ben genelde /opt/pmm-data gibi bir yol kullanıyorum.
Şimdi aşağıdaki içeriğe sahip bir `docker-compose.yml` dosyası oluşturalım. Bu dosya, en son sürüm PMM2'yi çalıştıracak.
Dosyayı kaydettikten sonra, konteyneri ayağa kaldıralım.
Bu işlem, ilk seferde imajı indireceği için biraz zaman alabilir. Konteyner çalıştıktan sonra, tarayıcınızdan `https://SUNUCU_IP_ADRESINIZ` adresine giderek PMM panosuna ulaşabilirsiniz. Varsayılan giriş bilgileri kullanıcı adı: admin, şifre: admin'dir. İlk girişte şifrenizi değiştirmeniz güvenlik için şart!
2. Adım: PMM İstemcisini Veritabanı Sunucusuna Kurma
Şimdi sıra, izleyeceğimiz MySQL/MariaDB sunucusuna PMM istemcisini kurmaya geldi. Percona'nın resmi reposunu ekleyerek kurulum yapalım. Aşağıdaki komutları sırayla çalıştırın.
Kurulum tamamlandıktan sonra, istemciyi daha önce ayağa kaldırdığımız PMM Sunucusuna bağlamamız gerekiyor. Bunun için `pmm-admin config` komutunu kullanacağız.
Bu komutta dikkat etmeniz gereken iki nokta var:
1. `PMM_SUNUCU_IP_ADRESI` yazan yere, 1. adımda kurduğunuz PMM Server'ın IP adresini yazmalısınız.
2. `--server-insecure-tls` parametresi, otomatik oluşturulan sertifikayı kullandığımız için eklenmiştir. Üretim ortamlarında kendi geçerli SSL sertifikanızı kullanmanızı şiddetle tavsiye ederim.
3. Adım: MySQL İzleme Ajanını Eklemek ve Güvenlik
PMM istemcisi kuruldu, ancak henüz MySQL'den metrik toplamıyor. Bunun için MySQL sunucusunda PMM'nin bağlanabileceği bir kullanıcı oluşturmalı ve ajanı eklemeliyiz. ÖNCE MySQL konsoluna bağlanıp aşağıdaki gibi bir kullanıcı oluşturalım.
Şu ayara çok dikkat etmelisiniz: Kullanıcı şifresini kesinlikle güçlü ve özgün bir şifre ile değiştirin. Bu kullanıcı sunucunuz hakkında çok detaylı bilgiye erişebilir.
Şimdi terminale dönüp, PMM istemcisine MySQL servisini ekleyelim. Bu komut, `mysql` adında bir servis oluşturacak ve yukarıda oluşturduğumuz kullanıcı ile bağlanacak.
`--query-source=slowlog` parametresi, yavaş sorgu loglarını da toplamak için önemli. Eğer slow log aktif değilse, PMM bunu otomatik yapılandırabilir.
4. Adım: Panoyu Kullanmak ve Optimizasyon
Her şey tamam! Artık PMM web arayüzüne (`https://PMM_SUNUCU_IP_ADRESI`) gidip, sol menüden MySQL Overview veya Query Analytics gibi panellere tıklayabilirsiniz. Query Analytics bölümü özellikle çok güçlüdür, hangi sorgunun ne kadar sürede çalıştığını, ne sıklıkta çağrıldığını ve hangi tabloyu kilitleyip yavaşlattığını görebilirsiniz.
Performans takibi yaparken, CPU/RAM kullanımı, bağlantı sayısı, InnoDB buffer pool hit ratio ve slow query sayısı gibi metriklere öncelikle bakın. Anormal bir yükselme gördüğünüzde, Query Analytics ile sorunlu sorguyu hızlıca tespit edebilirsiniz.
Sonuç ve Tavsiyeler
PMM, özellikle birden fazla veritabanı sunucusunu merkezi olarak izlemek isteyenler için bulunmaz bir nimet. Kurulumu oldukça basit ve sunduğu görselleştirmeler gerçekten işlevsel. Benim sunucu grubumda tüm kritik MySQL instance'ları bu şekilde izleniyor ve proaktif müdahale şansı tanıyor.
Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? PMM dışında tercih ettiğiniz başka bir izleme aracı var mı? Kurulum sırasında yaşadığınız bir sorun veya eklemek istediğiniz bir ipucu olursa, aşağıya yorum olarak yazabilirsiniz. Hep birlikte öğrenelim.
PMM temel olarak iki ana bileşenden oluşuyor. Birincisi, izlenecek sunucuya kurulan ve metrikleri toplayan PMM İstemcisi (PMM Client). İkincisi ise bu toplanan verileri depolayıp, güzel bir web arayüzünde sunan PMM Sunucusu (PMM Server). PMM Sunucusu'nu kendi sunucunuzda çalıştırabileceğiniz gibi, Percona'nın bulut hizmetini de kullanabilirsiniz. Bugün en yaygın yöntem olan Docker ile kendi sunucumuzda PMM Server'ı ayağa kaldıracağız.
Kuruluma başlamadan önce, PMM Sunucusu için ayıracağınız makinede Docker ve Docker Compose'un kurulu olduğundan emin olun. Ayrıca, izlemek istediğiniz veritabanı sunucunuzda root veya yeterli yetkilere sahip bir kullanıcı erişiminiz olmalı.
Öncelikle PMM verilerini kalıcı hale getirmek için bir dizin oluşturalım ve Docker Compose dosyamızı yazalım. Ben genelde /opt/pmm-data gibi bir yol kullanıyorum.
Bash:
sudo mkdir -p /opt/pmm-data
cd /opt/pmm-data
Şimdi aşağıdaki içeriğe sahip bir `docker-compose.yml` dosyası oluşturalım. Bu dosya, en son sürüm PMM2'yi çalıştıracak.
YAML:
version: '3'
services:
pmm-server:
image: percona/pmm-server:2
container_name: pmm-server
restart: always
ports:
- "443:443"
volumes:
- /opt/pmm-data:/srv
environment:
- ENABLE_BACKUP_MANAGEMENT=1
Dosyayı kaydettikten sonra, konteyneri ayağa kaldıralım.
Bash:
sudo docker-compose up -d
Bu işlem, ilk seferde imajı indireceği için biraz zaman alabilir. Konteyner çalıştıktan sonra, tarayıcınızdan `https://SUNUCU_IP_ADRESINIZ` adresine giderek PMM panosuna ulaşabilirsiniz. Varsayılan giriş bilgileri kullanıcı adı: admin, şifre: admin'dir. İlk girişte şifrenizi değiştirmeniz güvenlik için şart!
Şimdi sıra, izleyeceğimiz MySQL/MariaDB sunucusuna PMM istemcisini kurmaya geldi. Percona'nın resmi reposunu ekleyerek kurulum yapalım. Aşağıdaki komutları sırayla çalıştırın.
Bash:
wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
sudo dpkg -i percona-release_latest.generic_all.deb
sudo apt-get update
sudo apt-get install -y pmm2-client
Kurulum tamamlandıktan sonra, istemciyi daha önce ayağa kaldırdığımız PMM Sunucusuna bağlamamız gerekiyor. Bunun için `pmm-admin config` komutunu kullanacağız.
Bash:
sudo pmm-admin config --server-url=https://admin:admin@PMM_SUNUCU_IP_ADRESI --server-insecure-tls
Bu komutta dikkat etmeniz gereken iki nokta var:
1. `PMM_SUNUCU_IP_ADRESI` yazan yere, 1. adımda kurduğunuz PMM Server'ın IP adresini yazmalısınız.
2. `--server-insecure-tls` parametresi, otomatik oluşturulan sertifikayı kullandığımız için eklenmiştir. Üretim ortamlarında kendi geçerli SSL sertifikanızı kullanmanızı şiddetle tavsiye ederim.
PMM istemcisi kuruldu, ancak henüz MySQL'den metrik toplamıyor. Bunun için MySQL sunucusunda PMM'nin bağlanabileceği bir kullanıcı oluşturmalı ve ajanı eklemeliyiz. ÖNCE MySQL konsoluna bağlanıp aşağıdaki gibi bir kullanıcı oluşturalım.
SQL:
CREATE USER 'pmm'@'localhost' IDENTIFIED BY 'Güclü_Bir_Sifre_Buraya' WITH MAX_USER_CONNECTIONS 10;
GRANT SELECT, PROCESS, REPLICATION CLIENT, RELOAD, BACKUP_ADMIN ON . TO 'pmm'@'localhost';
FLUSH PRIVILEGES;
Şu ayara çok dikkat etmelisiniz: Kullanıcı şifresini kesinlikle güçlü ve özgün bir şifre ile değiştirin. Bu kullanıcı sunucunuz hakkında çok detaylı bilgiye erişebilir.
Şimdi terminale dönüp, PMM istemcisine MySQL servisini ekleyelim. Bu komut, `mysql` adında bir servis oluşturacak ve yukarıda oluşturduğumuz kullanıcı ile bağlanacak.
Bash:
sudo pmm-admin add mysql --username=pmm --password=Güclü_Bir_Sifre_Buraya --query-source=slowlog --service-name=mysql-localhost
`--query-source=slowlog` parametresi, yavaş sorgu loglarını da toplamak için önemli. Eğer slow log aktif değilse, PMM bunu otomatik yapılandırabilir.
Her şey tamam! Artık PMM web arayüzüne (`https://PMM_SUNUCU_IP_ADRESI`) gidip, sol menüden MySQL Overview veya Query Analytics gibi panellere tıklayabilirsiniz. Query Analytics bölümü özellikle çok güçlüdür, hangi sorgunun ne kadar sürede çalıştığını, ne sıklıkta çağrıldığını ve hangi tabloyu kilitleyip yavaşlattığını görebilirsiniz.
Performans takibi yaparken, CPU/RAM kullanımı, bağlantı sayısı, InnoDB buffer pool hit ratio ve slow query sayısı gibi metriklere öncelikle bakın. Anormal bir yükselme gördüğünüzde, Query Analytics ile sorunlu sorguyu hızlıca tespit edebilirsiniz.
PMM, özellikle birden fazla veritabanı sunucusunu merkezi olarak izlemek isteyenler için bulunmaz bir nimet. Kurulumu oldukça basit ve sunduğu görselleştirmeler gerçekten işlevsel. Benim sunucu grubumda tüm kritik MySQL instance'ları bu şekilde izleniyor ve proaktif müdahale şansı tanıyor.
Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? PMM dışında tercih ettiğiniz başka bir izleme aracı var mı? Kurulum sırasında yaşadığınız bir sorun veya eklemek istediğiniz bir ipucu olursa, aşağıya yorum olarak yazabilirsiniz. Hep birlikte öğrenelim.