AI Ön İzleme
Bu içerik sana uygun mu? Kısa ön izleme ile hızlıca karar ver.
Merhabalar,
Bu rehberde, iki Ubuntu sunucusu üzerinde Zabbix’i PostgreSQL ile birlikte kuruyor ve Grafana ile entegre ediyoruz. Resmî paket depolarını ekledikten sonra veritabanı, web arayüzü ve Grafana veri kaynağını adım adım yapılandırıyoruz.
Son olarak Zabbix sunucusunun uptime metriğini iki arayüzde karşılaştırarak entegrasyonu doğruluyoruz. Kurulum sırasında veritabanı kimlik bilgilerini ve karşılaştığımız bazı bağlantı güvenliği seçeneklerini de açıklıyoruz.
🔗 Yardımcı Linkler
- Bu bölümde paylaşılan bir link bulunmamaktadır.
Video Anlatımı


Bu videoyu izleyebilmeniz için çerezlere izin vermeniz gerekir.
Kullanılan Komutlar
Paket listesini güncelleme
sudo apt updatePostgreSQL veritabanı kurulumu
sudo apt install -y postgresqlZabbix deposunu sisteme ekleme
wget https://repo.zabbix.com/zabbix/7.4/release/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.4+ubuntu26.04_all.deb
sudo dpkg -i zabbix-release_latest_7.4+ubuntu26.04_all.debYeni depo listesini güncelleme
sudo apt updateZabbix bileşenlerini kurma
sudo apt install zabbix-server-pgsql zabbix-frontend-php php8.5-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2Zabbix sürümünü doğrulama
zabbix_server --versionVeritabanı kullanıcısı oluşturma
sudo -u postgres createuser --pwprompt zabbixZabbix veritabanını oluşturma
sudo -u postgres createdb -O zabbix -E UTF8 -T template0 zabbixBaşlangıç veritabanı tablolarını yükleme
zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbixZabbix sunucu ayarlarını düzenleme
sudo nano /etc/zabbix/zabbix_server.confNginx frontend ayarlarını düzenleme
sudo nano /etc/zabbix/nginx.confServisleri etkinleştirme ve yeniden başlatma
sudo systemctl enable zabbix-server zabbix-agent2 nginx php8.5-fpm
sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.5-fpmZabbix servis durumunu kontrol etme
sudo systemctl status zabbix-server --no-pagerGerekli araçları sisteme yükleme
sudo apt-get install -y apt-transport-https wget gnupgGrafana GPG anahtarını ekleme
sudo mkdir -p /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/grafana.asc https://apt.grafana.com/gpg-full.key
sudo chmod 644 /etc/apt/keyrings/grafana.ascGrafana deposunu ekleyip güncelleme
echo "deb [signed-by=/etc/apt/keyrings/grafana.asc] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt-get updateGrafana paketini kurma
sudo apt-get install grafanaGrafana servisini başlatma ve etkinleştirme
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-serverMini Sınav
Tam Transkript
Zabbix ve Grafana ile izleme
Merhabalar, Techaptic kanalına hoş geldiniz. Bugün, altyapı izleme tarafında oldukça yaygın olarak kullanılan Zabbix izleme yazılımının kurulumunu gerçekleştireceğiz. Bildiğiniz gibi Zabbix bir open source uygulama ve arkasında da ciddi bir topluluğa sahip. Ürünün içerisinde hali hazırda gelen oldukça güzel araçlar mevcut. Fakat biz bunları özellikle görselleştirmeler tarafında bir iki tık daha ileriye götürebilmek için Zabbix’le beraber Grafana’yı da kuracağız. Özellikle bir izleme yazılımında dashboardlar oldukça büyük bir öneme sahiptir.
Çünkü gerek sistem yöneticilerinin gerekse de NOC veya operasyon ekiplerinin hızlı ve doğru karar alabilmesini sağlayacak özet ekranlara ihtiyaçları vardır. Grafana burada Zabbix ile oldukça uyumlu çalışarak API’ler üzerinden çektiği verileri kendi dashboard’larında oldukça esnek biçimde göstermemize imkân sağlıyor. Biz de gerek ortamlarımızda bu yapının nasıl kurulacağını sizlere anlatmak, gerekse de sonraki videolarımız için temel oluşturması amacıyla bu iki yazılımın adım adım kurulumunu gerçekleştirip birbirleriyle entegrasyonunu sağlayacağız.
Laboratuvar ortamı ve kaynak planı
Bunun için VMware sanal ortamımda iki adet Ubuntu sunucu hazırladım. Biri Zabbix uygulamasını PostgreSQL veritabanıyla birlikte barındırırken diğeri de Grafana’ya ayrıldı. Zabbix Server ile veri tabanını aynı sunucuda çalıştırmak küçük ve orta ölçekli yapılar için oldukça pratiktir. Ve genellikle ihtiyaçlarının, çoğunu karşılayacaktır. Ancak host ve izleme metriklerinin ve veri toplama sıklığının arttığı daha büyük yapılarda veri tabanının yükünü başka bir sunucuya taşınması gerekebilir. Ayrıca Zabbix sunucusunda donanım kaynağı olarak 8 GB RAM, 2 vCPU ve 80 GB disk ayarladık. Grafana’da ise 4 GB RAM, 2 vCPU ve 30 GB disk bulunuyor.
Bunlar her ortam için kesin veya minimum değerler değildir. Bu yüzden farklı ortamlar, ortama ve ihtiyaçlara göre değişiklik gösterebilir.
SSH hazırlığı
Şimdi kurulum işlemlerine geçebiliriz. Genel olarak bu uygulamaların kurulumları, belirli komut ya da komut setlerinin çalıştırılmasıyla gerçekleştiriliyor. Ben özellikle bu komutları web sitemizde de paylaşıyor olacağım. İsterseniz ilgili makaleden bu bilgilere ulaşabilirsiniz. İlk olarak kurulumu Zabbix sunucusundan başlayalım. Daha önceden ben sunucularda sabit bir IP tanımlayıp SSH erişimini açmıştım. Sanal ortamda yazılar biraz küçük. Ve sizlerin de bu komutları daha iyi görebilmesi için anlatımı Windows Terminal üzerinden gerçekleştireceğim. Önce hızlıca bu iki sunucuya bir SSH bağlantısı yapayım.
PostgreSQL ve Zabbix paketlerinin kurulumu
Zabbix’in şu anki kararlı ve güncel versiyonu 7.4 ve biz de bu versiyonu kullanacağız. Yalnız öncesinde veri tabanını kurup yapılandırmamız gerekiyor. Bundan önce sudo apt update ile güncel paket listesini indirelim. Sonrasında da PostgreSQL kurulumunu gerçekleştirelim. Bu işlem PostgreSQL’in bağımlı olduğu paketleri de sistemimize yükleyecek. İşlem tamamlandı. Şimdi ise Zabbix kurulumunda ilgili paketleri Ubuntu’nun kendi deposu yerine Zabbix’in resmî deposundan çekebilmek için bir komut seti çalıştıracağız. Bunu 7.4 versiyonu için hazırladık.
Eğer ortamınızda Zabbix’in farklı bir versiyonunu yükleyecekseniz ilgili komut setini uyarlamanız gerekmektedir. Ortamımıza yeni bir depo eklediğimiz için paket listesini yeniden güncelleyeceğiz. sudo apt update diyelim. Ve tekrardan paket listesini güncelleyelim. Şimdi ise Zabbix’le beraber Nginx’i ve Agent 2 gibi bileşenleri tek bir komutla kuracağız. Bunun için şunu çalıştıralım. Bu da tamam. Hızlıca Zabbix versiyonunu kontrol edelim. 7.4.15 gözüküyor. Her şey yolunda. Buraya kadar uygulama ve veri tabanının kurulumunu gerçekleştirdik.
Veritabanı ve Zabbix yapılandırması
Şimdi bu ikisinin arasındaki yapılandırma ayarlarına geçelim. Önce PostgreSQL tarafında zabbix adında bir veritabanı kullanıcısı oluşturalım. Böylelikle Zabbix uygulaması bu hesabı kullanarak kendi veritabanına veri yazabiliyor olacak. Bu hesap için ayrıca bir şifre tanımlamamız gerekiyor. Burada şifreyi yazarken ekranda görünmemesi normal. Bu kullanıcı adı ve şifreyi bir kenara not edelim. Çünkü sonradan Zabbix sunucusunu yapılandırırken DB entegrasyonu için bu bilgilere girmemiz istenecek. Şimdi PostgreSQL’de Zabbix ortamı için bir veri tabanı oluşturacağız. Ve oluşturduğumuz kullanıcıya da bu DB için yetki vereceğiz.
Bunun için şu komutu çalıştıralım. Burada iki ayrı zabbix değeri görüyoruz. Ortadaki veri tabanının kullanıcı adını gösterirken satır sonundaki zabbix oluşturacağımız veritabanının kendi adı olacak. Ve buradaki -O parametresiyle bu kullanıcıya veritabanının sahipliğini vermiş oluyoruz. Şu an veri tabanını oluşturduk ama içi boş. Bunun için Zabbix paketi ile birlikte gelen başlangıç tablolarını içerisine aktarmamız gerekiyor. Bunun için de şu komutu çalıştıralım. Şimdi DB tarafında yaptığımız bu ayarların Zabbix uygulamasında tanımlanması gerekiyor. Bunun için nano ile Zabbix’in config dosyasını açalım.
Biz bu videoda Zabbix sunucusunun varsayılan olarak beklediği veritabanı ve kullanıcı adı bilgilerini yani her ikisi için de zabbix’i kullandık. Eğer kendi ortamınızda bu bilgileri farklı tanımlayacaksanız bu dosyada ilgili alanları doğru biçimde güncellediğinizden emin olun. Biz bu örnek altyapıda sadece şifreyi değiştireceğiz. Biraz aşağı indiğimizde DB User bölümünün altında DB Password bölümü var. Bunun başındaki yorum işaretini kaldıralım ve ilgili şifreyi girelim. Bu ayarları yaptıktan sonra Ctrl+X ile dosyayı kaydedip çıkalım. Burası tamam.
Nginx yapılandırması
Şimdi Nginx tarafına geçiyoruz. Kurulumu bu bileşene dahil ederek yapmıştık zaten. Şimdi ise Zabbix Frontend’in hangi sunucu ve port üzerinden yayınlanacağını belirleyeceğiz. Bunun için tekrardan nano kullanarak Nginx’in config dosyasını açalım. Öncelikle en üstte yer alan listen ve server_name değerlerinin başındaki yorum işaretlerini kaldıralım. Ve buradaki bilgileri ortamımıza göre özelleştirelim. Ben bu ortam için Listen satırındaki 8080 portunu kullanacağım. Dolayısıyla burada bir değişiklik yapmıyorum. Ama Server Name kısmını Zabbix sunucusunun IP adresi olarak değiştireceğim. Ve bu şekilde kaydedeceğim.
Şimdi sunucu yeniden başladığında bu servislerin de otomatik olarak başlamasını sağlayacağız. Ve yaptığımız ayarların devreye girmesi için de servisleri yeniden başlatacağız. Bunun için şu komutları çalıştıralım. Ben arayüze geçmeden önce servisin bir durumunu da kontrol etmek istiyorum. Bunun için şu komutu çalıştıracağım. Servis çalışıyor gözüküyor.
Zabbix web kurulum sihirbazı
Şimdi ise arayüze geçebiliriz. Bunun için tarayıcıda HTTP üzerinden 8080 portuna erişim sağlayalım. Zabbix’in karşılama ekranı çıktı. İleri diyelim. Burada ön gereksinimler açısından bir eksiğimizin olmaması gerekiyor. Hızlıca bir kontrol edelim. Sorun yok gibi. Bu şekilde tekrardan ileri diyelim. Şimdi veri tabanı ayarlarımızı yapılandıracağız. Veri tabanı tipimiz doğru gözüküyor. PostgreSQL kalacak. Zabbix ile aynı sunucuyu kurduğumuz için database host bölümünde değiştirmemize gerek yok. Ayrıca portumuz 0 olarak kalabilir. Çünkü database için ayrı bir port tanımlamadık.
Veri tabanı adımız da doğru ama siz ortamlarınızı değiştirdiyseniz burayı da güncelleyin lütfen. Şema bilgisi olarak bir değer girmemize gerek bulunmuyor.
Veritabanı kimlik doğrulaması ve güvenlik seçenekleri
Yaptığımız ayarlarla da kimlik bilgileri düz yazı tutulacak şekilde yapılandırdık. Ama ortamınızda HashiCorp veya CyberArk Vault’ları kullanıyorsanız bu şifreyi daha güvenli bir şekilde saklayabilirsiniz. Tabii her ne kadar Zabbix bunları desteklese de her ortamda bu ürünler olmayabilir. Burada şöyle bir ek bilgi de vereyim. Eğer yapınız şu an kurguladığımız gibi Zabbix ile PostgreSQL veri tabanını aynı sunucuda barındıracak şekilde tasarlandıysa dördüncü bir seçeneğimiz daha oluyor. O da veritabanı parolası kullanmadan uygulamayı veritabanıyla konuşturmak.
PostgreSQL varsayılan olarak Peer Authentication dediğimiz bir kimlik doğrulama yöntemini destekliyor. Bu ne demek? Veritabanına yapılan yerel bağlantılarda parolaya bakmak yerine bağlantıyı yapan prosesin kullanıcı kimliğini kernel üzerinden doğrulayabiliyor. Yani burada Zabbix’in saklaması gereken bir veritabanı parolası bulunmuyor. Bunun yerine PostgreSQL bağlantının gerçekten izin verdiğimiz Linux kullanıcısından geldiğini kontrol edebiliyor. Öncelikle bunun için PostgreSQL tarafında bazı ek kimlik doğrulama ayarlarının yapılması gerekiyor. Ayrıca bunun her ortam için daha güvenli bir yöntem olduğunu söylemek doğru olmaz.
Çünkü burada güveni parola yerine işletim sistemindeki kullanıcı kimliğine taşımış oluyoruz. Ama bana göre aynı sunucuda çalışan böyle bir yapıda parolanın config dosyasında düz yazı olarak tutulmasından çok daha temiz bir alternatif. Bu bilgiyle beraber yapılandırmamıza devam edelim. Kullanıcı adı ve şifre bilgilerimizi burada tanımlayalım tekrardan. Bu arada neden hem config dosyasında hem de bu arayüzde bu bilgileri ayrı ayrı belirtiyoruz? Asıl neden şu Zabbix Server ile Web Frontend’in iki ayrı bileşen olması.
Zabbix Server yapılandırma dosyasının içerisinde yaptığımız ayarlar Zabbix Server servisinin PostgreSQL’e bağlanması için kullanılırken burada yaptığımız bilgiler PHP tabanlı Zabbix Frontend’in veri tabanına erişebilmesi için gerekli. Bu yüzden aslında biz iki farklı işlev için bu ayarları yapmış oluyoruz. Bu ek bilgiyle beraber bir sonraki adıma geçebiliriz.
Zabbix ayarlarının tamamlanması ve ilk oturum
Zabbix Server Name kısmına bir isim verelim. Ben klasik Zabbix kullanacağım burada. Time Zone bilgimi de kendime göre düzenleyeceğim. Burada özellikle Encrypt Connections from Web Interface seçeneğini seçmeyeceğiz. Çünkü bu seçenek tarayıcının Zabbix arayüzüne yaptığı HTTP bağlantısını HTTPS’e çevirmiyor. Bunun yerine Zabbix Frontend ile Zabbix Server arasındaki iletişimi TLS ile şifrelemek için kullanılıyor. Bunun için de ayrı bir sertifika yapılandırması gerekiyor. Bizim frontend’imiz ve Zabbix Server aynı makinede çalıştığından bu yapıda kapalı bırakacağım ve bu şekilde ileri diyorum.
Bu sayfada yaptığımız ayarlarla ilgili özet bilgiler gösteriliyor. Bir sorun gözükmüyor. Bu şekilde ileri deyip kurulumu bitirebiliriz. Şimdi arayüzde bir oturum açalım. Zabbix’in varsayılan kullanıcı adı baş harfi büyük admin ve şifresi de küçük harflerle zabbix’tir. Hepsi küçük olacak şekilde. Özellikle production ortamında güvenlik nedeniyle oturum açıldıktan sonra bu şifrenin değiştirilmesi gerekiyor. Bunu tavsiye ederim. Çünkü varsayılan kurulumlarda bu kullanıcı adı şifre standarttır. Gördüğünüz gibi arayüz de geldi. Bazı izleme metriklerinin ürünün dashboard’ına yansıdığını görüyoruz. Zabbix tarafı tamamlandı diyebiliriz.
Grafana kurulumu
Şimdi Grafana tarafına geçelim. Tekrardan terminali açalım. Burada Grafana’yı bir deb paketiyle tek seferde kurmayacağım. Önce Grafana’nın resmî deposunu kullanmak için şu komutu çalıştıralım. Böylelikle güncellemeleri de ilgili depodan alabiliriz. Şimdi Grafana deposu için GPG anahtarını sisteme ekleyelim. GPG yani GNU Privacy Guard nedir? Linux sistemlerde paketlerin dijital imzalarını doğrulamak için yaygın olarak kullanılan bir araçtır aslında. Böylece APT, yani Advanced Package Tool, bu depodan aldığı bilgilerin Grafana tarafından imzalandığını doğrulayacak. Ve indirdiği paketlerin güvenilir depodaki bilgilerle eşleştiğini kontrol edecek.
Biz böyle bir ayarı Zabbix’te yapmadık. Çünkü depo yapılandırmasını Zabbix’in resmî release paketini kullanarak yapmıştık. Grafana ise depo ve imza anahtarını ayrı olarak eklememizi istiyor. Bu yüzden GPG anahtarını ayrıca tanımlamış olduk. Son olarak Grafana’nın kararlı, yani stable kanalını sisteme tanımlayalım. Diğer build’leri kullanmayacağız. Bunu da yaptıktan sonra şimdi Grafana kurulumuna geçebiliriz. Bu da bitti. Şimdi Grafana servisini başlatalım. Ve Zabbix sunucusunda yaptığımız gibi sunucu yeniden başlatıldığında da otomatik olarak çalıştırabilmesini sağlayalım. Şimdi arayüze geçip Grafana’da oturum açabiliriz.
HTTP üzerinden varsayılan 3000 portunu kullanarak erişim yapacağız. Onun için yeni bir sekme açalım. Grafana’da varsayılan oturum açma bilgileri küçük harflerle admin-admin’dir. Burada Zabbix’ten farklı olarak sistem bizden hemen şifreyi değiştirmemizi ister. Hemen yeni bir şifre tanımlayalım. Ve gördüğünüz gibi arayüze erişim sağlayabildik.
Zabbix–Grafana entegrasyonu
Şimdi Zabbix ile Grafana’yı entegre edeceğiz. Bunun için önce Grafana arayüzünden Zabbix eklentisini kuralım. Burada sol tarafta Plugins diye bir bölüm var. Buraya tıkladıktan sonra arama bölümünden Zabbix’i seçelim. Sonra sağ üst taraftan Install deyip eklentiyi aktif hale getirelim. Sonraki aşamada Connections altındaki Data Sources bölümüne gidelim. Ve burada Add Data Source diyelim. Tekrardan Zabbix’i aratalım. Burada URL bilgisi olarak sunucunun yalnızca web adresini değil API uç noktasını göstereceğiz. Bunun için önce URL bilgisini girelim. Port bilgisi ile beraber. Sonra da sonuna api_jsonrpc.php diyelim.
Altındaki Authentication bölümünü kullanmayacağız. Çünkü burası genel HTTP katmanı için kullanılıyor. Zabbix API kimlik doğrulamasını Zabbix Connection bölümünden yapacağız. Dolayısıyla Zabbix Connection altındaki Authentication Type’ı User and Password olarak seçip Zabbix’in kimlik bilgilerine girelim buraya. Bunun dışında ek bir ayar yapmamıza gerek yok. Bu haliyle Save and Test diyebiliriz. Evet yaptığımız test işlemi başarılı olmuş. Ve bu haliyle ayarlarımızı kaydetmiş olduk. Bu noktadan sonra açıkçası farklı bir yapılandırma adımımız kalmadı.
Dashboard üzerinden veri doğrulama
Yalnız ben videoyu sonlandırmadım. Bu noktadan sonra Grafana’nın Zabbix API üzerinden izleme verilerini gerçekten çekebildiğini küçük bir örnekle göstermek istiyorum sizlere. Grafana’nın içerisinde Zabbix için hazır olarak gelen birkaç tane dashboard bulunur. Bunu şuradaki dashboard sekmesinden görebiliriz. Şu an Zabbix sadece kendisini izliyor. Bu yüzden Zabbix Server Dashboard’u içeri alalım. Sonra Zabbix arayüzüne gidip her iki tarafta da doğrulayacağımız bir metrik bulalım. Burada sol tarafta monitoring sekmesinin altında Latest Data diye bir bölüm var. Buraya gelelim. Host kısmından Zabbix’i bulalım.
Ve Name kısmından örnek bir metrik girelim. Ben uptime’ı gireceğim bu örnekte. Ve bunu filtreleyeceğim. Şu anki son değer Zabbix sunucu için 32 dakika 39 saniye olarak gözüküyor. Hemen bu bilginin Grafana’ya yansıyıp yansımadığını kontrol edelim. Tekrardan Grafana arayüzüne gidiyoruz. Ve Zabbix Server Dashboard’a tıkladığımızda burada hazır bazı metrikler var. Burada gördüğünüz gibi uptime bilgisi de az önce gördüğümüz bilgiye oldukça yakın. Bu şekilde çapraz kontrolle verilerin çekildiğinden emin olmuş olduk. Tabi kurumsal ortamlarda bu hazır dashboardlar çoğu zaman olduğu gibi kullanılmıyor.
İzlenen sistemlere ve ihtiyaçlara göre hem metriklerin hem de görselleştirmenin özelleştirilmesi gerekir. Bu yüzden gerek Zabbix tarafındaki izleme ayarlarını, gerekse de Grafana dashboardlarını gerçek senaryolar üzerinden işleyeceğimiz ayrı videolar çekiyor olacağız. Bu videomuzun da sonuna geldik. Bir sonrakinde görüşmek dileğiyle. Hoşçakalın.
Değerlendirme
'ta yorum yapın



