Zabbix 3.4'ten itibaren, isteğe bağlı olarak tarihle ilgili veriler için alternatif bir depolama arka ucu kullanılabilir.
Bu seçeneğin avantajından yararlanmak için, kendi geçmiş hizmetinizi yazmalı ve sonra bu servisin kullanımını Zabbix sunucu yapılandırmasında belirtmelisimiz.
Öntanımlı olarak, tüm geçmiş değerleri, her farklı tür (imzasız sayılar, kayan noktalı sayılar, stringler, metinler ve kayıtlar) için geçmiş hizmetine gönderilir. Bu davranış, aşağıda açıklanan ek bir yapılandırma parametresiyle değiştirilebilir.
Geçmiş verileri, yeni gerçekleştirilen REST API'si aracılığıyla yapılandırılmış geçmiş hizmetine gönderilir ve oradan alınır. Geçmiş servisinin verileri nerede ve nasıl depoladığı geçmiş servisinin kendisine bağlıdır.
Zabbix tarafından yönetilen diğer tüm verilerin (tetikleyiciler, olaylar vb.) Zabbix veritabanında saklanmaya devam edeceğini unutmayın.
Zabbix 3.4'te bu özellik deneyseldir, dolayısıyla üretim ortamı için kullanılması önerilmez.
** Neden kendi geçmiş hizmetinizi yazasınız? **
Kullanıcıların kendi geçmişi hizmetlerini yazmalarına izin vermenin başlıca yararı, geçmiş verilerini Zabbix tarafından desteklenenlerin dışında depolama motorlarına depolamak için daha büyük bir esneklik ve kullanımı kolay bir API'dir. Bu, kullanıcıların verileri örneğin bir zaman serisi veritabanında (Whisperer, RRD, InfluxDB), NoSQL veritabanında (MongoDB, Apache Cassandra) veya Elasticsearch gibi bir arama motorunda depolamasına olanak tanır.
Geçmiş hizmetinin sorgulanması ve gösterge panosunda veri gösterilmesi için (Grafana gibi) üçüncü taraf araçları yapılandırmak da mümkündür. Bütün bunlar, bir REST API'sinin sağlayabileceği esneklik sayesinde gerçekleşir.
Geçmiş hizmeti özelliğini kullanmak için:
Bir kullanıcının geçmiş hizmeti özelliğini libCURL desteği olmadan kullanmaya çalışması durumunda, Zabbix sunucusu başlangıçta bir hata mesajı gösterecek ve çıkacaktır.
LibCURL, (OpenSSL veya mbed TLS gibi bir kitaplığın TLS desteğini kullanarak) https URL'lerini kullanabilir olsa bile, bu Zabbix 3.4 için test edilmemiştir. Şifreleme desteği, Zabbix 4.0 için üretim amaçlı olarak eklenecek ve test edilecektir.
Geçmiş hizmeti, yeni isteğe bağlı HistoryServiceURL yapılandırma parametresinde belirtilmiştir. Parametre, formdaki bir URL olmalıdır:
Bu tarih servisinin kökünü tanımlar. Zabbix sunucusu daha sonra bu URL'yi uygun API sürümüyle tamamlar ve eksik çağırır. Yani, örneğin:
Burada "http://my.history.service:8080/zabbix" hizmetin köküdür ve "/v1/history/float", Zabbix sunucusu tarafından REST API çağrısını gerçekleştirirken eklenecek kısmıdır.
HistoryServiceTypes parametresi, geçmiş hizmetine hangi tür veri gönderileceğini daha iyi kontrol etmek için kullanılabilir. Belli bir kurulumda, bir kullanıcı, "işaretsiz sayıları" ve "kayan noktalı sayıları", InfluxDB gibi bir zaman serisi veritabanında ve "kayıt", "metin" ve "karakter" gibi veri türlerini zabbix veritabanında depolamak isteyebilir. Bunu yapmak için HistoryServiceTypes parametresini aşağıdaki gibi ayarlayın:
Parametre ayarlanmazsa ve geçmiş hizmeti kullanılırsa öntanımlı değer şu şekilde olacaktır:
Böylece, tüm türler için tüm değerler geçmiş hizmetine gönderilir.
Bu kılavuzda API sürüm 1 açıklanmıştır. Her bir API, yolun ilk kısmı olarak bir 'API sürümü' tanımlayıcısı ile başlamalıdır. Bu sürümde yol şöyle olmalıdır:
Zabbix 3.4 için deneysel olan API, Zabbix 4.0'dan önce değiştirilebilir. Sürüm Zabbix 4.0 için de "v1" olarak kalacak.
Burada bildirilen API'ler, geçmiş servisi ile Zabbix sunucusu arasındaki doğru entegrasyon için gereklidir. Kullanıcılar, diğer programlarla daha kolay entegrasyon sağlamak için geçmiş hizmetinin sunduğu API'leri genişletebilir.
API'ler aşağıda listelenmiştir:
Geçmiş | Açıklama |
---|---|
POST v1/history/<değer türü> | Geçmiş servisine öğe verilerini kaydetme |
GET v1/history/<değer türü>/<itemid>?count=<sayı>&start=<saniye>&end=<saniye> | Tanımlı bir zaman damgası veya zaman aralığı öğesi için bir veya daha çok geçmiş değeri alın |
Değer türleri
URL'lerin bir parçası olarak 'değer türü' belirtilmiş olması gereken tüm isteklerin aşağıdaki değerlerden birine sahip olması gerekir:
unum
- işaretsiz tam sayıfloat
- kayan noktalı değerchar
- karakterlog
- kayıttext
- metinKod | Etken |
---|---|
200 | Tamam |
201 | Oluşturuldu |
400 | Kötü istek. Hatalı biçimlendirilmiş JSON |
404 | Bulunamadı. Varolmayan bir API için bir istek gerçekleştirildi |
408 | Zaman aşımı. İstemci isteği yerine getirmesi çok uzun sürdü |
500 | Dahili sunucu hatası. |
POST
Geçmiş servisine öğe geçmiş verilerini saklar
İstek gövdesi
"log" değeri türü için "value" alanı, aşağıdakilerden oluşan bir JSON alt nesnesi olacaktır:
"log" türünün dışındaki her şey için istek:
"log" tipi için istek:
[{
"itemid": 1234,
"value": "{
"timestamp": 0,
"source": "abc",
"severity": 0,
"logeventid": 0,
"value": "abc"
},
"sec": 0,
"ns": 0
}]
Veriler başarıyla saklanırsa API, bir 201 (oluşturuldu) HTTP kodu döndürmek ZORUNDADIR. Diğer hatalar için yukarıya bakın.
GET
Tanımlanmış bir zaman damgası veya zaman aralığı için bir öğenin bir veya daha çok geçmiş değerini alır.
Parametreler:
Yanıt gövdesi: öğe değerlerinin JSON dizisi
"log" değeri türü için "value" alanı, aşağıdaki JSON alt nesnelerinden biri olacaktır:
[{
"value": "{
"timestamp": 0,
"source": "abc",
"severity": 0,
"logeventid": 0,
"value": "abc"
},
"sec": 0,
"ns": 0
}]
Davranış:
API, hangi parametrelerin belirtildiğine bağlı olarak farklı davranıyor olacak. Aşağıdaki tabloda, parametrelerin belirtildiği tüm durumların ve kombinasyonlarının davranışları gösterilmektedir. Belirtilen bir parametre 'X' ile işaretlenmiştir:
başlangıç | bitiş | sayı | davranış |
---|---|---|---|
Öğe için saklanan tüm geçmiş değerlerini al. | |||
X | Başladıktan sonra saklanan tüm geçmiş değerini al | ||
X | Bitmeden önce saklanan tüm geçmiş değerini al | ||
X | X | Başlangıç ve bitiş arasında saklanan geçmiş değerlerinin tümünü al | |
X | Öğe için kayıtlı geçmiş değerlerini belirtilen sayıya kadar al. | ||
X | X | Başladıktan sonra saklanan geçmiş değerini belirtilen sayıya kadar al | |
X | X | Bitmeden önce saklanan geçmiş değerini belirtilen sayıya kadar al | |
X | X | X | Başlangıç ve bitiş arasında saklanan geçmiş değerlerini belirtilen sayıya kadar al |
Elde edilen değerlerin saniye alanına dayalı olarak sıralanması zorunludur.
Hata kodları için yukarıya bakın.