Bu yazıda, Zabbix Server ile Patroni API'sini kullanarak patroni API'si için;
- template group oluşturma,
- host group oluşturma,
- template oluşturma,
- oluşturulan template'a host ekleme,
- eklenen host'a item ekleme,
- eklenen iteme processing ekleme
ve son olarakta patroni API'sinden gelen verileri görüntüleyip yazıyı tamamlayacağız.
1. Template Group Oluşturma
Data collection > Template groups kısmının sağ üstünde yer alan create template group butonuna tıklıyoruz.
2. Template Group'a İsim Verme
Açılan pencereden oluşturacağımız group adını belirliyoruz. Ben bu örnek için "Templates/Patroni PostgreSQL Cluster" yazdım.
3. Host Group Oluşturma
Data collection > Host groups kısmının sağ üstünde yer alan create host group butonuna tıklıyoruz.
4. Host Group'a İsim Verme
Açılan pencereden oluşturacağımız group adını belirliyoruz. Ben bu örnek için "Patroni postgresql clusters" yazdım.
Host Group'u eklendi
5. Template Oluşturma
Data collection > Templates kısmının sağ üstünde yer alan create template butonuna tıklıyoruz.
6. Oluşturulacak Template Bilgilerini Girme
Açılan pencereden oluşturacağımız Template adını belirliyoruz. Ben bu örnek için Template name kısmına "patroni node1 health check" yazdım. Template groups kısmına ise oluşturduğumuz template grubunu girdim.
7. Oluşturulan Template İçin Host Oluşturma
Eklenen template'in host kısmına tıklıyoruz.
açılan ekrandan sağ üstte yer alan create host butonuna tıklıyoruz.
8. Oluşturulacak Host'un Bilgilerini Girme
Bu Ekranda Host name, Templates, Host groups, interfaces alanlarını dolduruyoruz.
9. Oluşturulan Host'a İtem Ekleme
oluşturulan hostun items kısmına tıklyıoruz
açılan penceredenin sağ üstünde yer alan "Create item" butonuna tıklıyoruz.
10. Oluşturulacak İtem'ın Bilgilerini Girme
Name, Type, Key, Type of information, URL kısımlarını dolduruyoruz.
Bu örnekte ben;
Name: patroni node1 replication state
Type: HTTP agent
Key: http_data_replication_state
Type of information: Numeric(unsigned)
URL: http://node1ipadresi:8008/patroni
olarak girdim.
Patroni endpoint'ine http isteği atıp patroninin sağlık durumunu json formatında alacağız. Burada patronimizden gelen verileri json formatında almak istiyorsanız Type of information kısmına Text girmelisiniz. Ama ben patroninin bu json verisinin state durumunu alıp bu bilgiyi int türünden kaydedeğim için Numeric(unsigned) olarak girdim.
11. Oluşturulacak İtem'e Preprocessing Ekleme
Eğer gelen veriyi ön işleme adımına sokacaksanız preprocessing eklemelisiniz. Burada state durumu "running" mi değil mi? bilgisini int türünden tutmak istediğim için aşağıdaki gibi yapılandırdım.
Gelen JSON objesinden replication_state durumunu alacağımız için
JSONPath seçiyoruz ve parametresine $.replication_state yazıyoruz.
Gelen state durumu streaming olup olmadığını tespit etmek için Regular expression seçiyoruz ve parametre kısmına ^streaming$ yazıyoruz. Streaming olmaması durumunu ele almak için Custom of fail işlemini aktif hale getirip set to value kısmına 0 yazıyoruz.
12. Eklenen Item'den Gelen Verileri Görüntülemek
Gelen verileri görüntüleyebilmek için eklenen itemin sol kısmında yer alan ... butonuna tıklayıp 500 lates values kısmına tıklıyoruz.
Böylelikle patroni apisinden gelen veriler için template oluşturup zabbixte görüntülemiş olduk.
Patroni hakkında daha fazla bilgi için Patroni Nedir? başlıklı yazıma göz atabilirsiniz.
Patroni kurulumu hakkında bilgi almak için Patroni ve Etcd Kullanarak Cluster Yapılandırması başlıklı yazıma göz atabilirsiniz.