Овај тип ставке омогућава испитивање података помоћу HTTP/HTTPS протокола. Заробљавање је такође могуће коришћењем услужног програма Zabbix sender или Zabbix sender protocol (за слање података на Zabbix сервер или прокси), или коришћењем API методе history.push
(за слање података на Zabbix сервер).
Провере HTTP ставки извршава Zabbix сервер. Међутим, када хостове прати Zabbix прокси, провере HTTP ставки извршава прокси.
Провере HTTP ставки не захтевају да било који агент ради на хосту који се прати.
HTTP агент подржава и HTTP и HTTPS. Zabbix ће опционо пратити преусмеравања (погледајте опцију Прати преусмеравања испод). Максималан број преусмеравања је чврсто кодиран на 10 (користећи cURL опцију CURLOPT_MAXREDIRS).
Zabbix сервер/прокси мора бити иницијално конфигурисан са cURL (libcurl) подршком.
HTTP провере се извршавају асинхроно - није потребно добити одговор на један захтев пре него што се покрену друге провере. DNS решавање је такође асинхроно.
Максимална конкурентност асинхроних провера је 1000 (дефинисано помоћу MaxConcurrentChecksPerPoller).
Број асинхроних HTTP агентских полера је дефинисан параметром StartHTTPAgentPollers.
Функција cURL трајних веза је додата HTTP агентским проверама од Zabbix 7.0.
Да бисте конфигурисали HTTP ставку:
Сва обавезна поља за унос су означена црвеном звездицом.
Поља која захтевају специфичне информације за HTTP ставке су:
Parameter | Description |
---|---|
* Type* | Овде изаберите HTTP агент. |
* Key* | Унесите јединствени кључ ставке. |
URL | URL за повезивање и преузимање података. На пример: https://www.example.com http://www.example.com/download Имена домена могу бити наведена у Unicode знаковима. Они се аутоматски конвертују у ASCII помоћу punycode-а приликом извршавања HTTP провере. Дугме Parse може се користити за одвајање опционих поља упита (као што је ?name=Admin&password=mypassword) од URL-а, премештајући атрибуте и вредности у Поља упита за аутоматско кодирање URL-а. Ограничено на 2048 знакова. Подржани макрои: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, кориснички макрои, макрои за откривање ниског нивоа. Ово подешава cURL опцију CURLOPT_URL. |
Query fields | Променљиве за URL (видети горе). Наведено као парови атрибута и вредности. Вредности се аутоматски кодирају URL-ом. Вредности из макроа се разрешавају, а затим аутоматски кодирају URL-ом. Подржани макрои: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, кориснички макрои, макрои за откривање ниског нивоа. Ово подешава cURL опцију CURLOPT_URL. |
Request type | Изаберите тип методе захтева: GET, POST, PUT или HEAD |
Request body type | Изаберите тип тела захтева: Необрађени подаци - прилагођено тело HTTP захтева, макрои се замењују, али се не врши кодирање JSON подаци - тело HTTP захтева у JSON формату. Макрои се могу користити као стринг, број, тачно и нетачно; макрои који се користе као стрингови морају бити окружени двоструким наводницима. Вредности из макроа се разрешавају, а затим аутоматски излазе. Ако "Content-Type" није наведен у заглављима, онда ће подразумевано бити "Content-Type: application/json" XML подаци - тело HTTP захтева у XML формату. Макрои се могу користити као текстуални чвор, атрибут или CDATA одељак. Вредности из макроа се разрешавају, а затим аутоматски излазе у текстуални чвор и атрибут. Ако "Content-Type" није наведен у заглављима, онда ће подразумевано бити "Content-Type: application/xml" Напомена да избор XML података захтева libxml2. |
Request body | Унесите тело захтева. Подржани макрои: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, кориснички макрои, макрои за откривање ниског нивоа. |
* Headers* | Прилагођена HTTP заглавља која ће бити послата приликом извршавања захтева. Наведена као парови атрибута и вредности. Подржани макрои: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, кориснички макрои, макрои за откривање ниског нивоа. Ово подешава cURL опцију CURLOPT_HTTPHEADER. |
Required status codes | Листа очекиваних HTTP статусних кодова. Ако Zabbix добије код који није на листи, ставка ће постати неподржана. Ако је празна, провера се не врши. На пример: 200,201,210-299 Подржани макрои на листи: кориснички макрои, макрои за откривање ниског нивоа. Ово користи cURL опцију CURLINFO_RESPONSE_CODE. |
Follow redirects | Означите поље за потврду да бисте пратили HTTP преусмеравања. Ово подешава cURL опцију CURLOPT_FOLLOWLOCATION. |
Retrieve mode | Изаберите део одговора који треба преузети: Тело - само тело Заглавља - само заглавља Тело и заглавља - тело и заглавља |
Convert to JSON | Заглавља се чувају као парови атрибута и вредности под кључем "заглавље". Ако се наиђе на „Content-Type: application/json“, онда се тело чува као објекат, у супротном се чува као стринг, на пример: ![]() |
HTTP proxy | Можете навести HTTP прокси који ће се користити, користећи формат [protocol://][username[:password]@]proxy.example.com[:port] .Опционални префикс protocol:// може се користити за навођење алтернативних прокси протокола (нпр. https, socks4, socks5; погледајте документацију; подршка за префикс протокола је додата у cURL 7.21.7). Ако није наведен протокол, прокси ће се третирати као HTTP прокси. Ако наведете погрешан протокол, веза ће бити неуспешна и ставка ће постати неподржана.Подразумевано ће се користити порт 1080. Ако је наведен, прокси ће преписати променљиве окружења повезане са проксијем као што су http_proxy, HTTPS_PROXY. Ако није наведен, прокси неће преписати променљиве окружења повезане са проксијем. Унета вредност се прослеђује "каква јесте", не врши се провера исправности. Напомена да је само једноставна аутентификација подржана са HTTP проксијем. Подржани макрои: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, кориснички макрои, макрои за откривање ниског нивоа. Ово подешава cURL опцију CURLOPT_PROXY. |
HTTP authentication | Изаберите опцију аутентификације: Ниједна - аутентификација се не користи; Основна - користи се основна аутентификација; NTLM - користи се NTLM (Windows NT LAN Manager) аутентификација; Kerberos - користи се Kerberos аутентификација (видети такође: Конфигурисање Kerberos-а помоћу Zabbix-а); Digest - користи се Digest аутентификација. Ово подешава cURL опцију CURLOPT_HTTPAUTH. |
User name | Унесите корисничко име (до 255 знакова). Ово поље је доступно ако је HTTP аутентификација подешена на Основну, NTLM, Kerberos или Digest. Подржани су кориснички макрои и макрои за откривање ниског нивоа. |
* Password* | Унесите корисничку лозинку (до 255 знакова). Ово поље је доступно ако је HTTP аутентификација подешена на Basic, NTLM, Kerberos или Digest. Подржани су кориснички макрои и макрои за откривање ниског нивоа. |
SSL verify peer | Означите поље за потврду да бисте верификовали SSL сертификат веб сервера. Сертификат сервера ће се аутоматски преузети са локације системског ауторитета за сертификате (CA). Можете заменити локацију CA датотека користећи Zabbix сервер или параметр конфигурације проксија SSLCALocation. Ово подешава cURL опцију CURLOPT_SSL_VERIFYPEER. |
SSL verify host | Означите поље за потврду да бисте проверили да ли се поље "Заједничко име" или поље "Алтернативно име субјекта" сертификата веб сервера подудара. Овим се подешава cURL опција CURLOPT_SSL_VERIFYHOST. |
SSL certificate file | Назив SSL датотеке сертификата која се користи за аутентификацију клијента. Датотека сертификата мора бити у PEM1 формату. Ако датотека сертификата садржи и приватни кључ, оставите поље SSL датотеке кључа празно. Ако је кључ шифрован, наведите лозинку у пољу "Лозинка SSL кључа". Директоријум који садржи ову датотеку је одређен параметром конфигурације Zabbix сервера или проксија SSLCertLocation. Подржани макрои: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, кориснички макрои, макрои за откривање ниског нивоа. Ово подешава cURL опцију CURLOPT_SSLCERT. |
SSL key file | Назив SSL датотеке са приватним кључем која се користи за аутентификацију клијента. Датотека са приватним кључем мора бити у PEM1 формату. Директоријум који садржи ову датотеку је одређен параметром конфигурације Zabbix сервера или проксија SSLKeyLocation. Подржани макрои: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, кориснички макрои, макрои за откривање ниског нивоа. Ово подешава cURL опцију CURLOPT_SSLKEY. |
SSL key password | Лозинка за датотеку приватног SSL кључа. Подржани макрои: кориснички макрои, макрои за откривање ниског нивоа. Ово подешава cURL опцију CURLOPT_KEYPASSWD. |
* Timeout* | Zabbix неће потрошити више од подешеног времена на обраду URL-а (1-600 секунди). Заправо, овај параметар дефинише максимално време за успостављање везе са URL-ом и максимално време за извршавање HTTP захтева. Стога, Zabbix неће потрошити више од 2 x Временско ограничење секунде на једну проверу. Ово подешава cURL опцију CURLOPT_TIMEOUT. За више информација о параметру Временско ограничење, погледајте општи атрибути ставке. |
Enable trapping | Када је ова кућица означена, ставка ће такође функционисати као ставка за хватање и прихватаће податке послате на Zabbix сервер или прокси користећи услужни програм Zabbix пошиљалац или Zabbix sender протокол, или ће прихватати податке послате на Zabbix сервер користећи API метод history.push . За више информација о слању података, погледајте: Име за хватање. |
Allowed hosts | Видљиво само ако је означено поље за потврду Омогући преклапање. Листа IP адреса раздвојених зарезима, опционо у CIDR нотацији, или DNS имена. Ако је наведено, долазне везе ће бити прихваћене само са хостова наведених овде. Ако је омогућена подршка за IPv6, онда се "127.0.0.1", "::127.0.0.1", "::ffff:127.0.0.1" третирају једнако и "::/0“ ће дозволити било коју IPv4 или IPv6 адресу. „0.0.0.0/0“ се може користити за омогућавање било које IPv4 адресе. Имајте на уму да су "IPv4-компатибилне IPv6 адресе" (префикс 0000::/96) подржане, али су застареле према RFC4291. Пример: 127.0.0.1, 192.168.1.0/24, 192.168.3.1-255, 192.168.1-10.1-255, ::1,2001:db8::/32, mysqlserver1, zabbix.example.com, {HOST.HOST} Размаци и кориснички макрои су дозвољени у овом пољу. Макрои домаћина: {HOST.HOST}, {HOST.NAME}, {HOST.IP}, {HOST.DNS}, {HOST.CONN} су дозвољени у овом пољу. |
Ако је поље HTTP proxy остављено празно, други начин за коришћење HTTP проксија је подешавање променљивих окружења везаних за прокси.
За HTTP - подесите променљиву окружења http_proxy
за корисника Zabbix сервера. На пример:
http_proxy=http://proxy_ip:proxy_port
.
За HTTPS - подесите променљиву окружења HTTPS_PROXY
. На пример:
HTTPS_PROXY=http://proxy_ip:proxy_port
. Више детаља је доступно покретањем команде шелла: # man curl.
[1] Zabbix подржава датотеке сертификата и приватног кључа само у PEM формату. Уколико имате податке о сертификату и приватном кључу у PKCS #12 формату датотеке (обично са екстензијом *.p12 или *.pfx), можете генерисати PEM датотеку из ње користећи следеће команде:
openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes -out ssl-cert.key
Шаљите једноставне GET захтеве за преузимање података из услуга као што је Elasticsearch:
localhost:9200/?pretty
{
"name" : "YQ2VAY-",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "kH4CYqh5QfqgeTsjh2F9zg",
"version" : {
"number" : "6.1.3",
"build_hash" : "af51318",
"build_date" : "2018-01-26T18:22:55.523Z",
"build_snapshot" : false,
"lucene_version" : "7.1.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You know, for search"
}
$.version.number
Пошаљите једноставне POST захтеве за преузимање података из сервиса као што је Elasticsearch:
http://localhost:9200/str/values/_search?scroll=10s
{
"query": {
"bool": {
"must": [{
"match": {
"itemid": 28275
}
}],
"filter": [{
"range": {
"clock": {
"gt": 1517565836,
"lte": 1517566137
}
}
}]
}
}
}
{
"_scroll_id": „DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAAakFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAJRZZUTJWQVktVFNacU5nRHhlcEI0QUxRAAAAAAAAACYWWVEyVkFZLVRTWnFOZ0R4ZXBCNEFMUQAAAAAAAAAnFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAKBZZUTJWQVktVFNacU5nRHhlcEI0QUxR“,
"took": 18,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1.0,
"hits": [{
"_index": "dbl",
"_type": "values",
"_id": "dqX9VWEBV6sEKSMyk6sw",
"_score": 1.0,
"_source": {
"itemid": 28275,
"value": "0.138750",
"clock": 1517566136,
"ns": 25388713,
"ttl": 604800
}
}]
}
}
$.hits.hits[0]._source.value
Провера да ли је Zabbix API жив, користећи apiinfo.version.
Обратите пажњу на употребу POST методе са JSON-ом подаци, постављање заглавља захтева и тражење да се врате само заглавља:
Преузимање информација о времену повезивањем са јавним сервисом Openweathermap.
Обратите пажњу на употребу макроа у пољима упита. Погледајте Openweathermap API за информације о томе како их попунити.
Пример JSON-а враћен као одговор HTTP агенту:
{
"body": {
"coord": {
"lon": 40.01,
"lat": 56.11
},
"weather": [{
"id": 801,
"main": "Облаци",
"description": "мало облака",
"icon": "02n"
}],
"base": "stations",
"main": {
"temp": 15.14,
"pressure": 1012.6,
"humidity": 66,
"temp_min": 15.14,
"temp_max": 15.14,
"sea_level": 1030.91,
"grnd_level": 1012.6
},
"wind": {
"speed": 1.86,
"deg": 246.001
},
"clouds": {
"all": 20
},
"dt": 1526509427,
"sys": {
"message": 0.0035,
"country": "RU",
"sunrise": 1526432608,
"sunset": 1526491828
},
"id": 487837,
"name": "Stavrovo",
"cod": 200
}
}
Следећи задатак је конфигурисање зависних ставки које извлаче податке из JSON-а.
Остале метеоролошке метрике, као што је 'Температура', додају се на исти начин.
Повезивање са Nginx статусном страницом и добијање њених метрика у групи.
Пример излаза статуса Nginx заграде:
Активне везе: 1 Активне везе: server accepts handled requests 52 52 52 Читање: 0 Писање: 1 Чекање: 0
Следећи задатак је конфигурисање зависних ставки које извлаче податке.
сервер прихвата обрађене захтеве\s+([0-9]+) ([0-9]+) ([0-9]+)
: