İçeriğe geç

(B) DevOps

Zabbix 7 Kurulumu: Template, Trigger ve SNMP İzleme

7 dk okuma
Zabbix kurulumu deneyimli sistem yöneticilerinin vazgeçilmez araçlarından biri. Açık kaynak dünyasının en kapsamlı izleme çözümü olan Zabbix, yedinci major sürümüyle birlikte performans iyileştirmeleri ve yeni özellikler getirdi.

Kurulum Öncesi Hazırlık

Zabbix 7.0 LTS, 4 Haziran 2024 tarihinde duyuruldu. Kurulum için Ubuntu 22.04 LTS veya Debian 12 tercih edilebilir. Bu işletim sistemlerinde Zabbix resmi deposu üzerinden kurulum yapmak en pratik yöntem. Öncelikle sistemin güncel olması gerekiyor:
apt update && apt upgrade -y
Sonra Zabbix deposu eklenir. Ubuntu 22.04 için depo paketi şu şekilde kurulur; Debian 12 için zabbix.com/download sayfasındaki ilgili paket kullanılır:
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu22.04_all.deb
dpkg -i zabbix-release_latest_7.0+ubuntu22.04_all.deb
apt update
Zabbix bileşenleri için gerekli paketler kurulmalı. Bunlar arasında web sunucusu (Apache2 veya Nginx), PHP ve veritabanı sunucusu (MySQL veya MariaDB) yer alıyor. Ubuntu'da Apache2 kullanacağımızı varsayalım:
apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent mariadb-server
Kurulum tamamlandıktan sonra MariaDB servisi başlatılmalı ve açılışta etkinleştirilmeli:
systemctl enable mariadb && systemctl start mariadb

Veritabanı Yapılandırması

Zabbix veritabanı, izleme verilerinin depolandığı kritik bileşen. Yeni bir veritabanı ve kullanıcı oluşturulmalı:
mysql -u root -p
MySQL konsolunda şu komutları çalıştırın:
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'sifreniz';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Şimdi Zabbix'in veritabanı şemasını import etmek gerekiyor. Bu dosya sistemde /usr/share/zabbix-sql-scripts/mysql/server.sql.gz konumunda bulunuyor:
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
Import işlemi birkaç dakika sürebilir. MySQL üzerinde binary log açıksa import öncesi SET GLOBAL log_bin_trust_function_creators = 1; çalıştırmak, işlem bitince bu ayarı sıfırlamak gerekiyor. Veritabanı yapısı oluşturulduktan sonra Zabbix sunucu yapılandırma dosyasına geçebilirsiniz.

Zabbix Sunucu Yapılandırması

Ana konfigürasyon dosyası /etc/zabbix/zabbix_server.conf konumunda. Bu dosyada veritabanı bağlantı parametreleri düzenlenmeli:
nano /etc/zabbix/zabbix_server.conf
Dosyada şu satırları bulun ve güncelleyin:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=sifreniz
Bu ayarlardan sonra Zabbix sunucusu başlatılabilir:
systemctl restart zabbix-server zabbix-agent
systemctl enable zabbix-server zabbix-agent
Servislerin çalışıp çalışmadığını kontrol etmek için:
systemctl status zabbix-server

Web Arayüzü Kurulumu

Zabbix'in güçlü web arayüzü tarayıcı üzerinden erişilebilir durumda. Apache2 kullanıyorsanız, yapılandırma dosyası zaten kurulumla birlikte geliyor. Tarayıcıda http://sunucu-ip/zabbix adresine gittiğinizde kurulum sihirbazı karşınıza çıkacak. İlk adımda dil seçimi yapılır. Türkçe seçeneği mevcut. Sonraki adımlarda ön koşul kontrolü yapılır; PHP ayarlarında bazı değerlerin güncellenmesi gerekebilir. Zabbix 7.0, PHP 8.0 ve üstünü bekliyor. Beklenen değerler:
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
Ubuntu 22.04 üzerinde ilgili dosya /etc/php/8.1/apache2/php.ini. Zabbix'in kendi Apache yapılandırması bu değerlerin çoğunu zaten içerir; eksik kalan tek parametre genellikle date.timezone olur. Değişikliklerin ardından Apache yeniden başlatılmalı:
systemctl restart apache2
Kurulum sihirbazını tamamladıktan sonra karşınıza giriş ekranı gelecek. Varsayılan kullanıcı adı Admin, şifre zabbix. İlk girişte şifreyi mutlaka değiştirin.

Template Yapısı

Zabbix'te template, izleme konfigürasyonunu gruplandırmanın standart yolu. Bir template; item'ları, trigger'ları, grafikleri ve diğer yapılandırma öğelerini bir arada tutar. Template kullanımı, aynı konfigürasyonu birden fazla hosta uygulamayı kolaylaştırır. Yeni bir template oluşturmak için sol menüden Data collection ardından Templates seçilir. Sağ üstteki Create template butonuna tıklanır. Template adı ve gruplama için bir template group belirlenir. Bir template içinde tanımlanabilecek öğeler:
  • Items: Toplanan metrik veriler. CPU kullanımı, disk alanı, ağ trafiği gibi.
  • Triggers: Belirli koşullar gerçekleştiğinde üretilen uyarılar.
  • Graphs: Item verilerinin görselleştirilmesi.
  • Discovery rules: Otomatik keşif kuralları.
  • Web scenarios: HTTP izleme senaryoları.
Zabbix 7 ile birlikte gelen önceden tanımlanmış template'ler var. Linux için Linux by Zabbix agent, Windows için Windows by Zabbix agent template'leri en sık kullanılanlar. SNMP cihazları için de çeşitli vendor-specific template'ler mevcut.

Trigger Oluşturma

Trigger, bir item'ın değerine göre problem durumu oluşturan koşul tanımı. Örneğin disk kullanımı %90'ın üzerine çıktığında uyarı üretmek için trigger tanımlanır. Bir trigger oluşturmak için önce template seçilir, ardından Triggers sekmesine geçilir. Create trigger ile yeni trigger eklenir. İsim, önem derecesi ve ifade girilir. İfade örneği:
last(/Linux by Zabbix agent/vfs.fs.size[/,pused])>90
Bu ifade, bağlı hostun disk kullanımı itemının son değeri %90'ın üzerindeyse tetiklenir. Önem dereceleri bilinen şekilde: Not classified, Information, Warning, Average, High, Disaster. Zabbix 6.0 ile birlikte trigger fonksiyonları birleşik sözdizimine geçti; fonksiyonlar item referansını /host/key biçiminde alıyor. last(), nodata(), change() bu yapının yaygın örnekleri. Birden fazla koşulu birleştirmek için and, or operatörleri kullanılır.

SNMP İzleme Yapılandırması

SNMP, ağ cihazları ve sunucuların izlenmesinde standart protokol. Zabbix, SNMPv1, v2c ve v3'ü destekliyor. Switch, router, firewall gibi cihazları izlemek için SNMP en pratik yöntem. Zabbix sunucusu tarafında snmpwalk gibi test araçları ve MIB dosyaları için paketler kurulmalı:
apt install -y snmp snmp-mibs-downloader
İzlenecek Linux makinesinde ise SNMP daemon yapılandırılır. /etc/snmp/snmpd.conf dosyasında erişim için topluluk adı (community string) belirlenir:
rocommunity public 192.168.1.0/24
Bu satır, 192.168.1.0/24 ağından gelen SNMP isteklerine "public" topluluk adıyla yanıt verilmesini sağlar. Üretim ortamında daha güvenli bir topluluk adı kullanılmalı. Zabbix'te SNMP host eklemek için Data collection menüsünden Hosts seçilir. Sağ üstteki Create host ile yeni host eklenir. Host adı, görünen ad, gruplar ve SNMP arayüzü bilgileri girilir. SNMP arayüzü kısmında:
  • IP address: Cihazın IP adresi
  • DNS name: İsteğe bağlı
  • Connect to: IP veya DNS
  • Port: Varsayılan 161
  • SNMP version: v2c veya v3
  • Community: v2c için topluluk adı
Host kaydedildikten sonra SNMP item'ları eklenir. Bir item oluştururken Type alanında SNMP agent seçilir. SNMP OID kısmına izlenecek metriğin OID değeri girilir. Örneğin sistem uptime izlemek için:
sysUpTimeInstance
veya sayısal OID:
1.3.6.1.2.1.1.3.0
Zabbix'in önceden tanımlı SNMP template'leri var. Cisco, Juniper, HP gibi vendor'lar için hazır template'ler mevcut. Bu template'ler yaygın OID'leri otomatik izler. Yeni bir cihaz eklerken uygun template'i seçmek yeterli.

Önemli Yapılandırma İpuçları

Veritabanı performansı kritik. Büyük ortamlarda PostgreSQL tercih edilebilir. Housekeeping ayarları, tarihli verilerin ne kadar süre saklanacağını belirler. Agent yapılandırması da önemli. /etc/zabbix/zabbix_agentd.conf dosyasında Server ve ServerActive parametreleri Zabbix sunucusunun IP adresini göstermeli. Pasif kontroller için Server, aktif kontroller için ServerActive kullanılır. Güvenlik duvarı kullanılıyorsa, Zabbix port'ları açılmalı. Zabbix agent 10050, Zabbix server 10051 port'unu kullanır. SNMP 161 port'u da erişilebilir olmalı. Zabbix 7, kurumsal düzeyde izleme ihtiyaçlarını karşılayacak yeteneklere sahip. Template ve trigger yapısı, büyük altyapılarda tutarlı konfigürasyon yönetimi sağlar. SNMP desteği sayesinde ağ cihazları tek merkezden izlenebilir. İlk kurulum birkaç saat sürebilir ancak altyapınızı sağlıklı şekilde izlemeye başladığınızda bu yatırım kendini amorti eder.

Açık kaynak

GitHub projeleri

Tümünü gör
wireguard-server-panel

WireGuard VPN sunucu paneli - İstemci yönetimi, QR kodları ve trafik istatistikleri için kendi sunucunuzda barındırılan web kullanıcı arayüzü (fork, aktif olarak geliştirilmekte)

Go

Laravel-NDFirewall

Rota Kapsamlı Laravel WAF - RCE, SQLi, XSS ve SSRF algılama özelliklerine sahip hafif bir Web Uygulaması Güvenlik Duvarı

PHP

Trustsslroot

Tek komutla çalışan özel PKI oluşturucu - Kendi kendini imzalayan kök CA ve sertifikaları anında oluşturun

Go

node_exporter

Hafif sistem metrikleri aktarıcısı - Güvenli erişim kontrolüne sahip, Linux için durum bilgisi barındırmayan tek ikili dosyalı izleme hizmeti

Rust

ipReconary

IP keşif ve alt ağ analiz aracı - Hızlı ağ taraması ve IP istihbarat toplama

Rust

Cloudfiltred

Cloudflare IP beyaz liste güvenlik duvarı - 80/443 numaralı bağlantı noktalarını yalnızca Cloudflare IP’leriyle sınırlayarak kaynak sunucunuzu doğrudan saldırılara karşı koruyun

Rust

LoadAlertTracker

Hafif sistem yükü izleme arka plan programı - Eşik değerleri aşıldığında Telegram, Discord ve Mattermost üzerinden gerçek zamanlı uyarılar

Rust

ctCertWatch

Sertifika Şeffaflığı günlüğü izleyicisi - Kimlik avı alan adlarını, marka taklitçiliğini ve yetkisiz SSL sertifikalarını gerçek zamanlı olarak tespit eder

Rust

DDNS-FW

Dinamik DNS Güvenlik Duvarı - DDNS aracılığıyla değişen IP adreslerini takip edin ve güvenli erişim kontrolü için güvenlik duvarı kurallarını otomatik olarak güncelleyin

Rust