Derinlemesine Zabbix

Sunucuları ve sistemleri izlememize imkan veren ve açık kaynak olarak kullanılabilen Zabbix yazılımının nasıl kurulduğuna ve temel kullanım senaryolarına buradaki yazımda değinmiştim. Bu yazımda ise biraz daha detay kullanım senaryolarına değineceğim.

Problemleri İnceleme

Sistemlerimizde her zaman anlık problemleri takip etmeyiz. Bazı sorunların tespitinin yapılabilmesi için geçmişe dönük incelemelere ihtiyaç duyulabilir. Bu incelemeleri yapabileceğimiz adreslerden ilki Monitoring > Problems sekmesi.

Bu sekmede belirli filtreler uygulayıp sisteminiz genelindeki problemler üzerinde incelemeler yapabilirsiniz. Aşağıdaki filtrelerin ne anlama tek tek açıklamaya gerek olduğunu düşünmüyorum. Merak ettiğiniz bir filtre olursa yorum kısmından belirtebilirsiniz.

/img/yazilar/zabbix-5-0_2/Untitled%2044.png

Geçmişe dönük izleme yapabileceğimiz bir başka konum ise Monitoring > Latest data. Problems kısmında aslında bizim görüntülediklerimiz trigger tanımlarının tetiklenmiş olduğu değerledi. Burada ise host içerisinde tanımlanmış olan itemler özelinde incelemelerde bulunabiliyoruz. Listelenen Itemların sağ taraflarında bulunan Graph butonuna tıklarsanız seçtiğiniz item tarafından geçmiş dönük alınmış verileri görüntüleyebilirsiniz.

/img/yazilar/zabbix-5-0_2/Untitled%2045.png

/img/yazilar/zabbix-5-0_2/Untitled%2046.png

Eğer sağ üstte bulunan View as kısmını Graph seçeneğinden Values seçeneğine getirirseniz, alınan değerleri liste halinde gösterecektir. 500 latest values seçeneği ise item tarafından toplanan son 500 değeri listeler.

/img/yazilar/zabbix-5-0_2/Untitled%2047.png

Ağ Haritası Oluşturma

Zabbix’in beğendiğim özelliklerinden bir tanesi de ağ haritası oluşturmamıza izin vermesidir. Bu özellik sayesinde network topolojinizi görsel olarak oluşturabilir ve takibini yapabilirsiniz. Yeni bir ağ haritası oluşturmak için öncelikle Monitoring > Maps seçmesine giriyoruz ve Sağ üstte Bulunan Create map seçeneğine tıklıyoruz.

/img/yazilar/zabbix-5-0_2/Untitled%2048.png

Açılan menüde Map sekmesinde konfigürasyonlarımızı yaptıktan sonran Addbutonuna tıklayarak düzenlemeye geçebiliriz. Bu ayarları daha sonra Monitoring > Maps sekmesinde bulunan haritaların sağ taraflarında bulunan Properties butonuna tıklayarak da düzenleyebilriz. Sharing sekmesinde ise bu haritanın kimler tarafından görüntülenebileğini seçebiliriz.

/img/yazilar/zabbix-5-0_2/Untitled%2049.png

/img/yazilar/zabbix-5-0_2/Untitled%2050.png

Yukarıda görmüş olduğunuz gibi 800x600 piksel çalışma ortamımız açıldı. Buraya yen bir nesne eklemek için sol üstteki Map element kısmının yanında bulunan Add butonunu kullanıyoruz.

/img/yazilar/zabbix-5-0_2/Untitled%2051.png

Ekleyeceğimiz nesnenin ne iş yapacağına ne şekilde görüneceğine hatta etiketlerinin nerede konumlandırılacağına karar verebileceğimiz bir ekran açılıyor.

  • Type Nesnemizin tipini seçtiğimiz bölümdür. Varsayılan fotmatında gelir; Host, Host Group, Trigger ve Map tanımları yapabiliriz. Altındaki ayarlar da buna göre değişecektir.
  • Label Nesnemizi tanımlayan bir etikettir. Bunu istersek map ayarlarından Host label type kısmını Custom label seçeneği ile düzenleyerek macro tanımları ile kullanabiliriz.
  • Label location Etiketin bulunacağı konumu seçmemizi sağlar.
  • Application sadece host tanımlarında bulunan Application ‘lardaki triggerların problemlerini göstermesini sağlar.
  • Icons Hangi durumda hangi ikonun gösterileceğini seçebiliriz. Zabbix bize burada bulunan ikonların haricinde ikon ve gif ekleme imkanı veriyor.
  • Coordinates simetri takıntısı olanlar için (Mesela ben 🙂) nesnelerin yerlerini piksel piksel ayarlamamıza imkanı veriyor.
  • URLs kısmı ise üzerine tıklandığında listelenen bir URL listesi oluşturmamızı sağlıyor.

Ben neler yapılabileceğini göstermek amacıyla aşağıda bir sistem haritası hazırladım. Burada gördüğünüz gibi kabinet olarak konumlandırılmaya imkan verildiği gibi topolojik olarak da tasarımlar yapılmasını mümkün kılıyor.

/img/yazilar/zabbix-5-0_2/Untitled%2052.png

Haritamızı çok güzel bir şekilde özene bezene hazırladık. Fakat göz önünde olmadığı sürece hiçbir işe yaramaz. O halde sıra geldi oluşturduğumuz haritayı Dashboard’a eklemeye. Dashboard’da düzenleme moduna geçiyoruz ve Add widget butonunu tıklıyoruz. Type olarak Map seçip bu widgeta bir isim veriyoruz. En altta bulunan Map seçeneği ile de biraz önce oluşturduğumuz haritayı seçip Add butonun tıklıyoruz. Tebrik ederim bu kadar! 🙂

/img/yazilar/zabbix-5-0_2/Untitled%2053.png

/img/yazilar/zabbix-5-0_2/Untitled%2054.png

Objelerden herhangi birinde bir sorun olduğunda ise aşağıdaki gibi görünecektir. Tabi ki isterseniz objelerden birinde hata alındığında başka türlü şekil veya gif olarak görünmesini sağlayabilirsiniz. Her şey size kalmış.

/img/yazilar/zabbix-5-0_2/Untitled%2055.png

Discovery Rule Tanımlama

Discovery Rule kullanarak envanterinize yeni eklediğiniz sunucuları tek tek izleme ekranına eklemek zorunda kalmadan otomatize bir şekilde zabbix ekranlarına eklenmesini sağlayabilirsiniz. Sadece ekleme işlemi değil, hangi host group’a dahil olacak, hangi template’ler kullanılacak bunları seçmenizi sağlıyor. Discovery tanımları nasıl yapılır şimdi ona bakalım.

Öncelikle Configuration > Discovery sekmesinde sağ üstte Create discovery rule butonunu tıklıyoruz.

/img/yazilar/zabbix-5-0_2/Untitled%2056.png

Bu kısım, sunucularınızın hangi kriterlere göre nerede taranacağını tanımladığımız yerdir.

  • IP range kısmına aralarına virgül koyarak birden fazla IP aralığı tanımı yapabilirsiniz.
  • Update interval Kontrol sıklığını belirtir. Burada belirttiğimiz IP aralığını saatte bir kontrol yapılmasını istediğimizi söyledik.
  • Checks Bu aralıkta bir sunucu bulursa hangi parametre veya tanımın kontrol edileceğini seçtiğimiz kısımdır.
  • Device uniqueness criteria tekilliğin neye göre belirleneceğini belirttiğimiz kısımdır. Burada seçilen kriter eğer sistemde bulunursa üzerinde yeni bir işlem yapılmayacaktır.
  • Host name ve Visible name Host tanımlarında ilgili kısımların nasıl doldurulacağını seçtiğimiz kısımdır.

/img/yazilar/zabbix-5-0_2/Untitled%2057.png

Checks bölümünde Add butonuna tıkladıktan sonra nasıl bir kontrol yapmak istediğimizi giriyoruz. Ben burada system.uname parametresinin kontrol edilmesini istedim çünkü tanımlamaları yaparken eğer bulduğum sunucu bir Linux işletim sistemine sahipse uname çıktısından bunu yakalamak istiyorum. ( Bu kısımda girilen keylerin önceden agent üzerinde veya item olarak tanımlanmış olması gerekmektedir. Yoksa Zabbix agent bu parametrenin ne olduğunu anlayamayacaktır. system.uname varsayılan gelen bir parametredir.) Checks kısmında yer alan bilgiler aksiyon tanımları yaparken “Received Values” olarak karşımıza çıkacak.

/img/yazilar/zabbix-5-0_2/Untitled%2058.png

Yaptığım son tanımlamaları aşağıda görebilirsiniz. Burada tekillik kriterine IP adresini, hostname ve visible name kısımlarına ise Zabbix agenttan çekilecek olan hostname bilgisinin yazılmasını istedik. Eğer sunucularda Zabbix agent konfigürasyon dosyasında HostnameItem=system.hostname parametresini aktif ederseniz hostname bilgisi direk sunucunun kendisinden gelecek ve ayrıca bir tanım yapmanıza gerek kalmayacaktır.

/img/yazilar/zabbix-5-0_2/Untitled%2059.png

Discovery rule tanımlamamız bu kadar. Şimdi aksiyon alma vakti. Hatırlayacaksınız, Trigger aksiyon tanımlarını yaparken aşağıdaki sayfaya girmiştik. Şimdi ise Trigger actions başlığına tıklayarak Discovery actions sayfasına giriyoruz ve Create action butonuna tıklıyoruz.

/img/yazilar/zabbix-5-0_2/Untitled%2060.png

/img/yazilar/zabbix-5-0_2/Untitled%2061.png

Actions sekmesinde keşfedilmiş olarak gelen cihazlarımız arasında filtre uyguluyoruz. Yukarıda oluşturduğumuz “Zabbix Network” Discovery kuralına uyan sunucular içerisinde Linux parametresi geçen sunucuları seçiyoruz.

/img/yazilar/zabbix-5-0_2/Untitled%2062.png

/img/yazilar/zabbix-5-0_2/Untitled%2063.png

Son durum aşağıdaki gibi oldu. Burada yine triggerlar için action tanımı yaptığımız gibi önceliklendirme yapabiliyoruz.

/img/yazilar/zabbix-5-0_2/Untitled%2064.png

Operations sekmesinde, uyguladığımız filtrelere uyan cihazlara nasıl bir konfigürasyon yapılacağını seçiyoruz. Ben burada önce ekleneceği host gruplarını belirledim, daha sonra envanter bilgilerinin otomatik çekilebilmesi için inventory mode seçeneğini otomatiğe çektim. Eklenen sunucuların izlenebilmesi için gerekli olan parametrelerin ayarlanabilmesi için bir template ayarladım. Eğer istersek Send message seçeneği ile belirli bir kullanıcı veya kullanıcı grubuna mail de atabiliriz.

/img/yazilar/zabbix-5-0_2/Discovery10.png

/img/yazilar/zabbix-5-0_2/Untitled%2066.png

/img/yazilar/zabbix-5-0_2/Untitled%2067.png

/img/yazilar/zabbix-5-0_2/Untitled%2068.png

/img/yazilar/zabbix-5-0_2/Untitled%2069.png

Son tanımlamalarımız aşağıdaki gibi oldu. Artık envanterimize eklenen yeni sunucu ve cihazlarımız eğer belirlediğimiz kurallara uyuyorsa aşağıdaki konfigürasyonlar uygulanarak izlenmeye başlanacaktır.

/img/yazilar/zabbix-5-0_2/Untitled%2070.png

Kullanıcı Grupları

Her kullanıcı bir gruba ait olmalıdır. Bu gruplar sayesinde kullanıcı yetkilerini ve giriş yöntemlerini düzenleyebiliriz. Yeni bir kullanıcı eklemek için Administration > User Groups sekmesine gidiyoruz ve sağ üstte bulunan Create user group butonuna tıklıyoruz.

/img/yazilar/zabbix-5-0_2/Untitled%2071.png

Açılan User Group sekmesinde oluşturacağımız grubun ismini yazıyoruz ve ekleyeceğimiz kullanıcıları seçiyoruz. Frontend access kısmında bu gruba ait kullanıcıların Zabbix arayüzüne erişimi olup olmayacağı hakkında seçim yapabiliriz.

/img/yazilar/zabbix-5-0_2/Untitled%2072.png

Önemli gördüğüm noktalardan birisi olarak Permissions kısmında oluşturulan bu gruba sahip kullanıcıların ne gibi yetkilerinin olduğunu seçiyoruz. Burada verebileceğimiz yetkiler;

  • Read-write sunucu parametreleri üzerinde değişiklik yapabilir ve aldığı değerleri görüntüleyebilir.
  • Read parametrelerin aldığı değerleri görüntüleyebilir fakat değişiklik yapamaz
  • Deny Bu grupta bulunan sunucuların verilerin görüntülenmesi ve değiştirilmesi engellenir.
  • Include subgroups Zabbix de Host group’larda / karakteri ile alt gruplamalar tanımlayabilir, bu sayede bir host group ağacı oluşturabiliriz. Fakat bu gruplamalar sadece yazım gruplamasıdır. Birkaç yer dışında etki eden bir yer bulunmamaktadır. (Zabbix 5.0 öncesinde gruplama \ karakteri ile yapılmaktaydı.)

/img/yazilar/zabbix-5-0_2/Untitled%2073.png

Tag Filter sekmesini kullarak da belirli bir host group içerisinde belirli etikete sahip sunuculara bu kullanıcı grubuna sahip kullanıcıların erişebilmesini sağlayabiliriz.

/img/yazilar/zabbix-5-0_2/Untitled%2074.png

Kendi Template’imizi Oluşturma

Template’ler aracılığı ile kolay bir şekilde birden fazla sunucuya item, trigger, macro, etiket vb. tanımları tek kalemden yapabiliriz. Şimdiye kadar hep önceden hazır olarak gelen template’lerden bahsettik. Zabbix hazır template’leri kullanmamıza izin vermesinin yanında kendi template’lerimizi de oluşturmamıza imkan verir. Kendi tamplate’imizi oluşturmak için öncelikle Configuration > Templates sekmesinden Create Template butonuna basıyoruz.

/img/yazilar/zabbix-5-0_2/Template1.png

İlk sekmesinde Template’imizin temel bilgilerini giriyoruz.

/img/yazilar/zabbix-5-0_2/Template2.png

Linked Templates sekmesinde ilişkilendireceğimiz template’leri seçiyoruz. İlişkilendirdiğimiz template’lerde bulunan tüm item ve trigger’ların hepsinin bu template içerisinde de bulunması için kullanmaktayız.

/img/yazilar/zabbix-5-0_2/Template3.png

Tags ve Macros sekmelerinde ise Etiket ve Macro tanımlamaları yapabiliriz.

/img/yazilar/zabbix-5-0_2/Template4.png

/img/yazilar/zabbix-5-0_2/Template5.png

Sıra geldi item ve triggerları oluşturduğumuz template’e eklemeye. Eklemek istediğimiz item’ı seçiyoruz ve copy butonuna tıklıyoruz.

/img/yazilar/zabbix-5-0_2/Template6.png

Gelen ekranda Target Type kısmında Templates seçeneğini seçiyoruz. Target kısmına da oluşturmuş olduğumuz template ismini yazıyoruz ve Copy butonuna tıklıyoruz.

/img/yazilar/zabbix-5-0_2/Template8.png

İşlem bu kadar. Eklediğimiz item artık yeni template’imizde artık. Oluşturduğumuzda sunucularda kullanılabilir durumda. İstersek oluşturduğumuz template’i diğer kullanıcılar ile de paylaşabiliriz.

/img/yazilar/zabbix-5-0_2/Template9.png

Kullanıcı Ekleme

Tetiklenen triggerların mail atabilmesi için öncelikle kullanıcı tanımlarını yapmamız gerekmektedir. Yeni bir kullanıcı oluşturmak için Administration > Users sekmesinden Create User butonuna tıklıyoruz.

/img/yazilar/zabbix-5-0_2/KullancEkleme1.png

User sekmesinde;

  • Alias kullanıcı girişi yaparken kullanılacak olan kullanıcı adıdır.
  • Groups kullanıcımızı dahil edeceğimiz kullanıcı gruplarını gösterir. Her kullanıcı en az bir gruba dahil olmalıdır.
  • Password kullanıcının sisteme giriş için kullanacağı parolası (Eğer LDAP kullanıyorsak burayı boş bırakabiliriz.)
  • Language Kullanıcı giriş yaptıktan sonra kullanılacak olan dil.
  • Theme kısmını kullanarak kullanıcıya ait tema belirleyebiliriz.
  • Auto-login kullanıcı giriş bilgilerinin tarayıcıya kaydedilmesini sağlar.
  • Auto-logout kullanıcı hesabının aktivitesi sonlandıktan sonra otomatik logout olmasını sağlar.
  • Refresh kullanıcı dashboardlarındaki varsayılan yenileme süresini belirlememizi sağlar.
  • Row per page listelediğimiz sayfalarda kullanıcı için her sayfada listelenecek satır sayısını belirtir.
  • URL kullanıcı sisteme giriş yaptıktan sonra yönlendirilecek olan sayfayı belirler.

/img/yazilar/zabbix-5-0_2/KullancEkleme2.png

Kullanıcı tanımı için gerekli bildirimleri girmemizin ardından kullanıcıya bir media tanımı yapmamız gerekiyor. Oluşturduğumuz kullanıcıya bir bildirim gönderileceği zaman burada belirlemiş olduğumuz media yöntemleri kullanılacaktır.

/img/yazilar/zabbix-5-0_2/KullancEkleme3.png

  • Type Hangi media yönetemi kullanılarak bildirimde bulunacağımız seçiyoruz.
  • Send to gönderilen bildirimin hangi adrese gönderileceğini belirtiyoruz.
  • When active hangi gün ve saatler arasında bildirimde bulunulacağının seçimimim yapılmasını sağlar.
  • Use if severity ilgili kullanıcıya sadece belirli bir uyarı seviyesi bildirimlerin gitmesini istiyorsak buradan seçebiliriz.
  • Enabled girmiş olduğumuz bu kullanıcı mediasının aktif olarak mı yoksa pasif olarak mı oluşturulacağını belirttiğimiz alandır.

/img/yazilar/zabbix-5-0_2/KullancEkleme4.png

Burası oluşturduğumuz kullanıcılara yetki verdiğimiz alandır.

  • Zabbix User: Sistem üzerinde bulunan cihazlarda sadece görüntüleme yapabilen kullanıcı tipidir. Sunucu bilgilerini, item ve trigger değerlerini değiştirme yetkisi yoktur.
  • Zabbix Admin: Sistem üzerinde bulunan cihazlar üzerinde configürasyon değişikliğinin yapılmasına izin verilen kullanıcı tipidir.
  • Zabbix Super Admin: Zabbix altyapısına dair tüm ayarları yönetebilen kullanıcı tipidir.

LDAP Giriş Doğrulama Sistemi Entegrasyonu

/img/yazilar/zabbix-5-0_2/LDAPauthentication01.png

Eğer sistemimizde LDAP giriş doğrulama sistemi kullanıyorsak parola yönetim sistemimizi buraya entegre edebiliriz. Öncelikle Administration > Authentication sayfasında Authentication sekmesinde Default Authentication seçeneğini LDAP olarak değiştiriyoruz.

LDAP Settings sekmesinde LDAP sunucumuza ait gerekli bilgileri girdik. Altta bulunan test kısmından girdiğimiz sunucu bilgilerinin doğruluğunu kontrol edebiliriz.

/img/yazilar/zabbix-5-0_2/LDAPauthenticate.png

Script kullanma

Her zaman zabbix içerisinde kullandığımız item’lar yeterli gelmeyebilir veya özel bir komuttan aldığımız çıktıları izlemek isteyebiliriz. Bu işlem için sunuculardaki zabbix agent dosyalarında bir parametre ekleyerek gerçekleştirebiliyoruz.

Komutun çalıştırılacağı client üzerindeki zabbix agent konfigürasyon dosyasını (konfigürasyon dosyası; zabbix-agent için /etc/zabbix/zabbix_agent.conf, zabbix-agent2 için /etc/zabbix/zabbix_agent2.conf konumunda bulunmaktadır.) açıyoruz. Tanımlama yaparken kullanacağımız format;

UserParameter=<key>,<shell command>

key: item tanımlarken tanımlayıcı olarak kullanacağımız anahtar kelime

shell command: tanımlamanın yapıldığı sunucu üzerinde çalıştırmak istediğimiz komut

Örnek olarak /boot dizininin boyutunu takip eden item oluşturalım. Agent konfigürasyon dosyasına aşağıdaki satırı ekliyoruz.

UserParameter=bootsize,df -h | grep boot | awk '{ print $4 }' | awk -F'M' '{ print $1 }'

Sonrasında servisi restart etmemiz gerekiyor.

[root@zabbix-client burak]# service zabbix-agent2 restart
Redirecting to /bin/systemctl restart zabbix-agent2.service

Sıra uygulama tarafındaki konfigürasyonları yapmada.. Konfigürasyon dosyasını düzenlediğimiz sunucuya aşağıdaki gibi item tanımlaması yapıyoruz.

/img/yazilar/zabbix-5-0_2/ScriptTanmlama2.png

Item tanımlamasının yapılmasının ardından Test butonuna tıklayarak düzgün yapılandırmış mıyız kontrol edebiliriz.

/img/yazilar/zabbix-5-0_2/ScriptTanmlama3.png

Artık yapılandırmamızın doğru olduğunu gördükten sonra Add butonuna tıklayarak item oluşturmamızı tamamlayabiliriz. Monitoring > Latest sekmesinden gelen verilerin takibini yapabiliriz.

/img/yazilar/zabbix-5-0_2/ScriptTanmlama2%201.png

Yazımı okuduğunuz için çok teşekkür ederim. Yazımı faydalı bulduysanız paylaşmayı unutmayınız. Her türlü sorularınızı yorum kısmından veya iletişim kısmında bana sorabiliriniz. Sevgiler..

Yazımı beğendiniz mi? Yorum yapın.

©

2022

| Burak Kıymaz
Top