Merhaba;

En son sizlerle veritabanlarıyla ilgili yazımı paylaşmıştım. Bugün ise Zabbix ile ilgili yazmaya karar verdim. Farklı konularda yazmak çok hoşuma gidiyor. Doğrudan bağlantısı yokmuş gibi görünse de, aslına her farklı konudaki çalışma, sanki çok farklı konularmış gibi görünen diğer konuların daha hızlı kavranmasını sağlıyor. Hepimiz nasıl bir bütünün parçasıysak aslında teknoloji ile ilgili konularda bir anlamda öyle. Her biri, birine muhtaç, her biri diğerinin oluşumuna katkı sağlamakta. Donanım, kendini göstermek için işletim sistemine muhtaç, işletim sistemi gücünü, kalitesini göstermek için uygulamaya muhtaç; uygulama verilerini depolamak için bir veritabanına ihtiyaçlı. Veritabanı hatalarını anında farkeden ve üzerinde gerekli çalışmanın yapılmasını sağlayan izleme araçlarına müteşekkir. Velhasıl-ı kelam, farklı görünen tüm bu teknolojiler, birbirinin oluşumuna birer neden teşkil ediyor.

Bugünkü gözdem: Zabbix.

Zabbix, Alexei Vladishev tarafından oluşturulmuştur. Aktif olarak Zabbix SIA tarafından geliştirilmekte ve elbette desteklenmektedir. Zabbix için, kurumsal ölçekli, açık kaynak ve dağıtık mimaride bir izleme çözümüdür diyebiliriz. Zabbix, bir network’ün sayısız parametresini ve sunucuların, sanal makinelerin, uygulamaların, servislerin, veritabanlarının, web sitelerinin, bulutun ve daha pek çok yeni teknolojilerin istendiği şekilde sağlıklı çalışıp çalışmadığını izleyen bir yazılımdır. Zabbix, kullanıcıların hemen hemen her olay için e-posta tabanlı uyarıları yapılandırmasına olanak tanıyan esnek bir bilgilendirme mekanizması kullanır. Bu sayede ortamımızda oluşan sorunlara hızlı tepki vermemizi ve haliyle hızlı aksiyon almamızı sağlar. Zabbix, depolanan verileri kullanarak mükemmel raporlama ve veri görselleştirme özellikleri sunar. Bu yeteneği sayesinde Zabbix’i kapasite planlaması için de kullanabiliriz. Ticari destek, Zabbix firması ve dünya çapındaki iş ortakları tarafından sağlanır. Bu iş ortaklarından birisi de Gantek Teknoloji’dir.

Zabbix ile neler yapabiliriz bir bakalım.

Veri Toplama:

Kullanılabilirlik ve performans kontrolleri.

SNMP (hem yakalama (trapping) hem de yoklama (polling)), IPMI, JMX, VMware izleme desteği.

Sizin ortamınız için özelleştirdiğiniz controller.

İstenen aralıklarla istenen verilerin toplanması.

Tüm bu işlemler sunucu/proxy ve ajanlar tarafından gerçekleştirilir.

Esnek Eşik Değer Tanımlamaları:

“Triggers” olarak isimlendirilen esnek eşik değerler tanımlama yeteneği.

Yapılandırılabilir Uyarı Mekanizmazı:

Bildirimlerin gönderilmesi, alıcı ve medya türüne göre özelleştirilebilir.

Makro değişkenler kullanılarak bildirimler anlamlı ve yararlı hale getirilebilmektedir.

Uzak komut desteğini de içeren otomatik eylemlerin yapılabilmesi.

Gerçek Zamanlı Grafik:

İzlenen öğeler, grafik işlevselliği kullanılarak hemen grafik haline getirilebilir.

Web İzleme Yetenekleri:

Zabbix, bir web sitesindeki simüle edilmiş fare tıklamalarını izleyebilir, işlevselliği ve yanıt süresini kontrol edebilir.

Kapsamlı Görselleştirme Seçenekleri:

Birden çok öğeyi tek bir görünümde birleştirebilen özel grafikler oluşturma yeteneği sunar.

Network haritaları sağlar.

Pano (“dashboard”) tarzı genel bir bakış için özel ekranlar ve slayt gösterileri sunabilir.

Raporlama özelliği sağlar.

İzlenen kaynakların üst düzey (iş) görünümünü görme imkanı sağlar.

Geçmiş Veri Depolama:

bir veritabanında verileri depolayabilir.

Geçmişi yapılandırabilirsiniz.

Yerleşik temizlik (“house-keeping”) prosedürü sunar.

Kolay konfigürasyon:

İzlenen cihazları ana bilgisayar olarak ekleyebilme özelliği.

Ana bilgisayarlar veritabanına alındıktan sonra izleme başlatabilme.

İzlenen cihazlara şablon uygulayabilme.

Şablonların Kullanılabilmesi:

Şablonlarla grup kontrolleri yapabilme.

Şablonlar diğer şablonların özelliklerini devralabilir.

Network Keşfi:

Network cihazlarının otomatik keşfi.

Ajanların otomatik kayıt edilmesi.

Dosya sistemlerinin, ağ arayüzlerinin ve SNMP OID’lerin keşfi.

Hızlı Web Arayüzü:

PHP ile yazılmış web tabanlı bir ön uç (“frontend”).

Her yerden erişilebilir.

Denetim günlüğü özelliği.

Zabbix API:

Zabbix API, toplu manipülasyonlar, 3. taraf yazılım entegrasyonu ve diğer amaçlar için Zabbix’e programlanabilir arayüz sağlar.

İzin Sistemi:

Güvenli kullanıcı kimlik doğrulaması sağlar.

Belirli kullanıcılar belirli görünümlerle sınırlandırılabilir.

Tam özellikli ve kolayca genişletilebilir ajan mekanizması sunar.

İzleme Hedefleri:

Hem Linux hem de Windows ortamları için kullanılabilir.

İkili (“binary”) arka plan programları (“daemon”) sağlar.

Performans:

Performans ve küçük bellek alanı için C ile yazılmıştır.

Kolayca taşınabilir (“portable”).

Karmaşık ortamlara hazırdır ve uygundur.

Uzaktan İzleme:

Zabbix proxy kullanarak uzaktan izleme kolaylaştırılmıştır.

Zabbix nasıl bir mimari ile izleme fonksiyonlarını yerine getirir?

Sunucu (“Server”):

Zabbix sunucusu, ajanların kullanılabilirlik ve istatistiksel bilgileri raporladıkları merkezi bileşendir. Sunucu için özet olarak, tüm konfigürasyon, istatistik ve operasyonel verilerin depolandığı merkezi depodur diyebiliriz.

Veritabanı Depolama (“Database Storage”):

Tüm konfigürasyon bilgileri ve Zabbix tarafından toplanan veriler bir veritabanında tutulur.

Web Arayüzü (“Web Interface”):

Web tabanlı arayüz sayesinde Zabbix’e her yerden ve her platformdan kolayca erişilir. Arayüz, Zabbix sunucusunun bir parçasıdır ve genellikle (ancak zorunlu değildir) sunucunun çalıştığı aynı fiziksel makinede çalışır.

Proxy:

Zabbix proxy, Zabbix sunucusu adına performans ve kullanılabilirlik verilerini toplayabilir. Proxy, Zabbix dağıtımının isteğe bağlı bir parçasıdır; ancak tek bir Zabbix sunucusunun yükünü dağıtmak çok faydalıdır.

Ajan (“Agent”):

Zabbix ajanları, yerel kaynakları ve uygulamaları aktif bir şekilde izlemek ve toplanan verileri Zabbix sunucusuna rapor etmek için izleme hedeflerine yüklenir. Zabbix 4.4’ten bu yana, iki tür ajan bulunmaktadır: Zabbix ajanı (hafif, birçok platformda desteklenir, C ile yazılır) ve Zabbix ajanı 2 (ekstra esnek, Go’da yazılan eklentilerle kolayca genişletilebilir).

Veri Akışı (“Data Flow”):

Zabbix’de veri akışı nasıl olur? Öneclikle bir “host” oluşturmamız gerekiyor. Ardından veriyi toplamak için bir öğe (“item”) oluşturmamız gerekir. Ardından bir tetikleyici (“trigger”) oluşturulur. Bir Eylem oluşturmak için tetikleyici olması gerekir. Örneğin Sunucu A’da CPU kullanımı çok yüksek olduğunda bir alarm almak istiyorsak; Server A için bir host girişi oluşturmamız gerekir. Ardından CPU’yu izleyen bir öğe oluşturmalıyız. Ardından CPU çok yüksek ise aktif hale geçecek bir tetikleyici olmalıdır. Ardındanda yapılacak eylemi (“action”) tanımlamalıyız. Örneğin bir e-posta gönderimi eylem olarak oluşturulabilir.

Yani akışı; “Host -> Item -> Trigger -> Action” olarak ifade edebiliriz. Başlangıçta aman ne çok şey oluşturmam gerekiyormuş gibi düşünebilirsiniz ama şablonların kullanımı ile bu süreç oldukça basit bir hale gelmektedir. Bu tasarım sayesinde oldukça esnek bir ortam oluşturmak mümkündür.

Zabbix prosesleri nelerdir?

Zabbix sunucusu bir arka plan programı yani “daemon” olarak çalışır. Temel bir Zabbix sunucusunun işleyişi üç farklı bileşene ayrılmıştır: Zabbix sunucusu, web ön ucu (“front-end”) ve veritabanı depolamasıdır (“database storage”). Zabbix için tüm yapılandırma bilgileri, hem sunucunun hem de web “front-end”in etkileşimde bulunduğu veritabanında saklanır. “Zabbix-server” bir “daemon” olarak çalıştığı için, “service zabbix-server start”, “/etc/init.d/zabbix-server start” veya “zabbix_server” çalıştırılabilir dosyayı çalıştırarak bu “daemon”ı başlatabilirsiniz. Zabbix sunucusu, “root” olmayan bir kullanıcı ile çalışacak şekilde tasarlanmıştır. Sunucu yapılandırma dosyasındaki ‘AllowRoot’ parametresini uygun şekilde değiştirirseniz ancak sunucuyu “root” olarak çalıştırabilirsiniz. Zabbix sunucunu aşağıda olan işletim sistemlerinde çalıştığı test edilmiştir.

Linux

Solaris

AIX

HP-UX

Mac OS X

FreeBSD

OpenBSD

NetBSD

SCO Open Server

Tru64/OSF1

Zabbix ajanı, yerel kaynakları ve uygulamaları (sabit sürücüler, bellek, işlemci istatistikleri vb.) aktif olarak izlemek için izlenecek hedef sistemlere yüklenir.

Ajan, operasyonel bilgileri yerel olarak toplar ve daha ileri işlemler için verileri Zabbix sunucusuna iletir. Arıza durumunda (belirlenen doluluğa ulaşmış sabit bir disk veya çökmüş bir uygulama servisi gibi), Zabbix sunucusu, arızayı bildirdiği makinenin yöneticilerini aktif olarak uyarabilmektedir.

Zabbix ajanları, istatistiksel bilgi toplamak için yerel sistem çağrılarını (“calls”) kullanabildiği için son derece verimlidir. Zabbix ajanları, pasif ve aktif kontroller gerçekleştirebilir. Pasif bir kontrolde, ajan bir veri talebine yanıt verir. Zabbix sunucusu (veya proxy), örneğin CPU yükü gibi verileri ister ve Zabbix ajanı sonucu geri gönderir. Aktif kontroller daha karmaşık işlemler gerektirmektedir. Ajan, bağımsız işlem için önce Zabbix sunucusundan bir öğe listesi alır. Ardından sunucuya yeni değerleri periyodik olarak gönderecektir. Zabbix ajanı aşağıda olan platformları destekler.

Linux

IBM AIX

FreeBSD

NetBSD

OpenBSD

HP-UX

Mac OS X

Solaris: 9, 10, 11

Windows: all desktop and server versions since XP

Zabbix ajanı da bir “daemon” olarak çalışır. Zabbix ajanı, UNIX üzerindeki, root olmayan bir kullanıcı ile çalışacak şekilde tasarlanmıştır. “service zabbix-agent start”, “/etc/init.d/zabbix-agent start” veya

“zabbix_agentd” çalıştırılabilir dosyası ile Zabbix ajanı çalıştırabilirsiniz.

Zabbix ajan 2, yeni nesil bir Zabbix ajanıdır ve Zabbix ajanı yerine kullanılabilir. Zabbix ajanı 2 aşağıdakiler için geliştirilmiştir:

TCP bağlantılarının sayısını azaltmak.

Daha fazla kontrol eşzamanlılığına sahip olmak.

Eklentilerle kolayca genişletilebilir olması.

Zabbix ajanı 2 aşağıda olan platformlarda desteklenir.

RHEL/CentOS 6, 7, 8

SLES 15 SP1+

Debian 9, 10

Ubuntu 18.04

Zabbix proxy, bir veya daha fazla izlenen cihazdan izleme verilerini toplayabilir ve bilgileri Zabbix sunucusuna gönderebilir. Toplanan tüm veriler yerel olarak tamponlanır ve ardından proxy’nin ait olduğu Zabbix sunucusuna aktarılır. Proxy konumlandırmak isteğe bağlı olmakla birlikte, tek bir Zabbix sunucusunun yükünü dağıtmak için çok faydalıdır. Yalnızca proxy’ler veri toplarsa, sunucu üzerindeki işlem daha az CPU ve disk I/O tüketmiş olur. Bir Zabbix proxy, uzak lokasyonların, şubelerin ve ağların merkezi olarak izlenmesi için ideal bir çözüm olarak karşımıza çıkmaktadır. Zabbix proxy, ayrı bir veritabanı gerektirmektedir. Zabbix proxy’de, “daemon” proses olarak çalışır. Dolayısıyla, sunucu ve ajan gibi yine benzer komutlarla başlatılabilir: “service zabbix-proxy start”, “/etc/init.d/zabbix-proxy start” ve “zabbix_proxy” çalıştırılabilir dosyası. Zabbix proxy, “root” kullanıcısı olmayan bir kullanıcı ile çalıştırılacak şekilde tasarlanmıştır.

JMX uygulamalarını izlemek için yerel destek, Zabbix 2.0’dan beri mevcuttur. Bu destek, “Zabbix Java gateway” adlı bir Zabbix arka plan programı (“daeomon”) ile sağlanmaktadır. Zabbix Java gateway, Java ile yazılmış bir arka plan programıdır. Bir ana bilgisayardaki belirli bir JMX sayacının değerini bulmak için Zabbix sunucusu, ilgili uygulamayı uzaktan sorgulamak için JMX yönetim API’sini kullanan “Zabbix Java gateway”i sorgular. Uygulama herhangi bir ek yazılıma ihtiyaç duymamaktadır. Uygulamanın sadece komut satırında “-Dcom.sun.management.jmxremote” seçeneği ile başlatılması gerekir.

Diğer bir bileşen, “Zabbix sender”dır. Performans verilerini işlenmek üzere Zabbix sunucusuna göndermek için kullanılabilen bir komut satırı yardımcı programıdır.

Zabbix get ise Zabbix ajanı ile iletişim kurmak ve ajandan gerekli bilgileri almak için kullanılabilen bir komut satırı yardımcı programıdır. Bu yardımcı program genellikle Zabbix ajanlarının sorunlarının giderilmesi için kullanılmaktadır.

“zabbix_js”den de bahsetmeden olmaz. Gömülü komut dosyası (betik) testi için kullanılabilen bir komut satırı yardımcı programıdır.

Zabbix’in kurulumunu 4 farklı şekilde yapabilirsiniz.

https://www.zabbix.com/documentation/current/manual/installation/install_from_packages#from_distribution_packages dağıtım paketlerini indirebilir ve gereklilikleri karşılayarak kurulumu yapabilirsiniz.

https://www.zabbix.com/documentation/current/manual/installation/install#installation_from_sources açık kaynak kodunu indirip, kendiniz derleyerek kurabilirsiniz.

Zabbix, her bir bileşen için “Docker imajı” sağlamaktadır. Zabbix bileşenleri MySQL ve PostgreSQL veritabanlarını, Apache2 ve Nginx web sunucu desteğini içerir. Zabbix bileşenleri Ubuntu, Alpine Linux ve CentOS temel imajlarıyla sağlanır.

Zabbix’i, “appliance”ını indirerek hızlıca kurabilirsiniz. https://www.zabbix.com/download_appliance adresinden indirme işlemini yapabilirsiniz. “Appliance”, CentOS 8 (x86_64) İşletim sisteminde Zabbix 5.0.0 sürümü ile birlikte gelmektedir. Zabbix “appliance” aşağıda olan formatlarda sunulmaktadır.

VMWare (.vmx)

Open virtualization format (.ovf)

Microsoft Hyper-V 2012 (.vhdx)

Microsoft Hyper-V 2008 (.vhd)

KVM, Parallels, QEMU, USB stick, VirtualBox, Xen (.raw)

KVM, QEMU (.qcow2)

Zabbix’i en güvenli şekilde kurmak için önerilen pratikleri takip etmek önemli olacaktır. https://www.zabbix.com/documentation/current/manual/installation/requirements/best_practices

Zabbix, kullanıcı hesapları her zaman mümkün olduğunca en az ayrıcalıkla çalıştırılmalı ilkesini benimsemiştir. ‘Zabbix’ kullanıcısına fazladan izinler verilmesi, yapılandırma dosyalarına erişmesine ve altyapının genel güvenliğini tehlikeye atabilecek işlemleri yürütmesine neden olabilir. Varsayılan yapılandırmada, Zabbix sunucusu ve Zabbix ajanı işlemleri bir ‘zabbix’ kullanıcısını paylaşır. Ajanın sunucu yapılandırmasındaki hassas bilgilere (ör. Veritabanı oturum açma bilgileri) erişemediğinden emin olmak istiyorsak, ajanı farklı bir kullanıcı olarak çalıştırmamız gerekir.

Şekil 1.’de Zabbix’e login ekranını görüyorsunuz. Varsayılan kullanıcı Admin ve şifre ise zabbix’dir. Bu kullanıcı ile giriş yaptığınız zaman “Zabbix superuser” olmuş oluyorsunuz.

No alt text provided for this image

Şekil 1. Zabbix hoş geldin ekranı.

Zabbix’e login olduktan sonra, Şekil 2.’de olan pano (“dashboard”) ekranı karşınıza gelecektir.

No alt text provided for this image

Şekil 2. Zabbix dashboard.

“Zabbix administrators” grubu altında kendime bir kullanıcı oluşturuyorum. “Permissions”  sekmesinden kendimi “Super admin” yapıyorum. “Media” sekmesinden, notifikasyon gönderim metodu seçmeniz gerekiyor, Şekil 3.

No alt text provided for this image
No alt text provided for this image
No alt text provided for this image
No alt text provided for this image
No alt text provided for this image
No alt text provided for this image

Şekil 3. Yeni kullanıcı oluşturmak.

Kullanıcı oluşturduktan sonra ilk “host”u ekleyelim, Şekil 4.

Ubuntu “host”umuza Zabbix ajanını yüklememiz ve konfigürasyonu yapmamız gerekiyor. /etc/zabbix/zabbix_agentd.conf dosyasında, Zabbix sunucu IP’sini de set ettik, Şekil 4.

No alt text provided for this image
No alt text provided for this image

Şekil 4. Ubuntu sunucusuna Zabbix ajanının kurulması ve aktif hale getirilmesi.

Ajan kurulumu yapıldıktan sonra, Zabbix Web GUI’den aşağıdaki ekranlarda görüldüğü gibi “host”a ilişkin değerler girilir. Bu sunucu için kendimize uygun şablonu da seçtik, “Linux by Zabbix agent”. Ardından “host”ekranından, “Availability” kolonunda, “ZBX”’i yeşil olarak gördük. Yani, “host” kullanılabilir ve metriklerin kontrolü başarılı (“host is available, a metric check has been successful”), Şekil 5.

No alt text provided for this image
No alt text provided for this image
No alt text provided for this image

Şekil 5. Zabbix’e “host” eklenmesi.

Zabbix ile ilgili yazdığım bu ilk bölümde, Zabbix ile ilgili genel bilgilendirme yaptım ve kullanıcı ve bir host ekledim. İkinci bölümde Zabbix ile ilgili hem daha detaylı teknik bilgiler aktaracağım hem de yine GUI üzerinden çalışmalar yapıyor olacağız.

Asiye Yiğit – 27 Aralık 2020 Pazar

Kaynakça:

https://www.zabbix.com/documentation/current/manual/appliance

https://www.zabbix.com/documentation/current/manual/introduction/about