16 HTTP агент

Преглед

Овај тип ставке омогућава испитивање података коришћењем HTTP/HTTPSС протокола. Пресретање је такође могуће коришћењем услужног програма Zabbix пошиљаоца или Zabbix пошиљаоца протокол (за слање података на Zabbix сервер или прокси) или коришћење history.push API метода (за слање података на 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 код извршавања 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}, кориснички макрои, макрои за откривање ниског нивоа.
Ово поставља CURLOPT_URL cURL опција.
Query fields Променљиве за URL (погледајте изнад).
Наведено као атрибут и парови вредности.
Вредности се аутоматски кодирају у URL-у. Вредности из макроа се решавају и затим аутоматски кодирају URL-ом.
Подржани макрои: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, кориснички макрои, макрои за откривање ниског нивоа.
Ово поставља CURLOPT_URL cURL опција.
Request type Изаберите тип метода захтева: GET, POST, PUT or HEAD
Request body type Изаберите тип тела захтева:
Необрађени подаци - прилагођено тело HTTP захтева, макрои су замењени, али не врши се кодирање
** JSON подаци** - тело HTTP захтева у JSON формату. Макрои се могу користити као стринг, број, тачно и нетачно; Макрои који се користе као стрингови морају бити стављени у двоструке наводнике. Вредности из макроа се решавају и затим аутоматски избегавају. Ако "Content-Type" није наведен у заглављима, подразумевано ће бити "Content-Type: application/xml"

** 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}, кориснички макрои, макрои за откривање ниског нивоа.
Ово поставља CURLOPT_HTTPHEADER cURL опција.
Required status codes Листа очекиваних HTTP статусних кодова. Ако Zabbix добије код који није на листи, ставка ће постати неподржана. Ако је празно, провера се не врши.
На пример: 200,201,210-299
Подржани макрои на листи: кориснички макрои, макрои за откривање ниског нивоа.
Ово користи CURLINFO_RESPONSE_CODE cURL опција.
Follow redirects Означите поље за потврду да бисте пратили HTTP преусмеравања.
Ово поставља опцију cURL CURLOPT_FOLLOWLOCATION.
Retrieve mode Изаберите део одговора који мора да се преузме:
** Body** - тело само
** Headers** - само заглавља
Body and headers - тело и заглавља
Convert to JSON Заглавља се чувају као парови атрибута и вредности под кључем „заглавље“.< br>Ако се наиђе на '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** - Сажетак користи се аутентификација.
Ово поставља опцију cURL CURLOPT_HTTPAUTH.
* Username* Унесите корисничко име (до 255 знакова).
Ово поље је доступно ако је * HTTP аутентикација* постављена на Basic, NTLM, Kerberos или Digest. Подржани су кориснички макрои и макрои за откривање ниског нивоа.
* Password* Унесите корисничку лозинку (до 255 знакова).
Ово поље је доступно ако је * HTTP аутентификација* постављена на Basic, NTLM, Kerberos или Digest. Подржани су кориснички макрои и макрои за откривање ниског нивоа.
SSL verify peer Означите поље за потврду да бисте верификовали SSL сертификат веб сервера. Сертификат сервера ће аутоматски бити преузет са локације система сертификата (CA). Можете заменити локацију CA датотека користећи Zabbix сервер или прокси конфигурациони параметар SSLCALocation.<бр>Ово поставља CURLOPT_SSL_VERIFYPEER cURL опција.
SSL verify host Означите поље за потврду да бисте потврдили да је поље Common Name или се подудара поље Subject Alternate Namе сертификата веб сервера.
Ово поставља опцију cURL CURLOPT_SSL_VERIFYHOST.
SSL certificate file Назив датотеке SSL сертификата која се користи за аутентификацију клијента. Датотека сертификата мора бити у PEM 1 формату. Ако датотека сертификата садржи и приватни кључ, оставите поље датотеке 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 приватног кључа која се користи за аутентификацију клијента. Датотека приватног кључа мора бити у PEM 1 формату. Директоријум који садржи ову датотеку је одређен конфигурационим параметром Zabbix сервера или проксија SSLKeyLocation.
Подржани макрои: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, кориснички макрои, откривање ниског нивоа макрои.<бр>Ово поставља опцију cURL [CURLOPT_SSLKEY](http://curl.haxx.se/libcurl/c/CURLOPT_SSLKEY.html.
SSL key password Лозинку за датотеку приватног кључа SSL.
Подржани макрои: кориснички макрои, макрои за откривање ниског нивоа.
Ово поставља CURLOPT_KEYPASSWD cURLопција.
* Timeout* Zabbix неће потрошити више од подешеног времена на обраду URL-а (1 -600 секунди). У ствари, овај параметар дефинише максимално време за успостављање везе са URL-ом и максимално време за извођење HTTP захтева. Због тога Zabbix неће потрошити више од 2 к Timeout секунде на једну проверу.
Ово поставља опцију cURL CURLOPT_TIMEOUT .
За више информација о параметру Timeout погледајте општа ставка атрибути.
Enable trapping Са овим пољем за потврду означено, ставка ће такође функционисати као ставка трапера и прихватаће податке послате Zabbix серверу или проксију користећи Zabbix пошиљалац услужни програм или Zabbix пошиљалац протокол, или ће прихватити податке послате Zabbix серверу помоћу API методе history.push. За више информација о слању података погледајте: [Ставке за пресретање](/manual/config/items/itemtypes/trapper#sending-data.
Allowed hosts Видљиво само ако је означено поље за потврду Омогући привлачење.<br >Листа IP адреса раздвојених зарезима, опционо у CIDR нотацији или DNS именима.
Ако је наведено, долазне везе ће бити прихваћене само са домаћинима наведени овде.
Ако је подршка за IPv6 омогућена, онда се '127.0.0.1', '::127.0.0.1', '::фффф:127.0.0.1' третирају једнако и '::/0' ће дозволити било који IPv4 или IPv6 адреса.
'0.0.0.0/0' може да се користи да се дозволи било који IPv4 адреса.
Имајте на уму да су "IPv4-compatible IPv6 addresses" (префикс 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:дб8::/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

Примери

Пример 1

Шаљите једноставне GET захтеве за преузимање података из услуга као што је Elasticsearch:

  • Креирајте GET ставку са URL-ом: 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"
       }
  • Сада извуците број верзије користећи корак препроцесирања JSONPath: $.version.number
Пример 2

Шаљите једноставне POST захтеве за преузимање података са сервиса као што је Elasticsearch:

  • Креирајте POST ставку са URL-ом: http://localhost:9200/str/values/_search?scroll=10s
  • Конфигуришите следеће POST тело да бисте добили оптерећење процесора (просек 1 мин по језгру)
     {
            "query": {
            "bool": {
            "must": [{
            "match": {
            "itemid": 28275
            }
            }],
            "filter": [{
            "range": {
            "clock": {
            "gt": 1517565836,
            "lte": 1517566137
            }
            }
            }]
            }
            }
            }

-Примљено:

     {
            "_scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAAkFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAJRZZUTJWQVktVFNacU5nRHhlcEI0QUxRAAAAAAAAACYWWVEyVkFZLVRTWnFOZ0R4ZXBCNEFMUQAAAAAAAAAnFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAKBZZUTJWQVktVFNacU5nRHhlcEI0QUxR",
            "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
            }
            }]
            }
            }
  • Сада користите корак препроцесирања SONPath да бисте добили вредност ставке: $.hits.hits[0]._source.value
Пример 3

Провера да ли је Zabbix API жив, користећи apiinfo.version.

  • Конфигурација ставке:

Обратите пажњу на употребу POST методе са JSON-ом подаци, постављање заглавља захтева и тражење да се врате само заглавља:

  • Претходна обрада вредности ставке са регуларним изразом да би се добио HTTP код:

  • Провера резултата у Најновији подаци:

Пример 4

Преузимање информација о времену повезивањем на јавни сервис OpenWeatherMap.

-Конфигуришите главну ставку за масовно прикупљање података у једном JSON-у:

Обратите пажњу на употребу макроа у пољима упита. Погледајте OpenweathermapAPI да бисте сазнали како да их попуните.

Пример JSON-а враћен као одговор на HTTP агент:

{
            "body": {
            "coord": {
            "lon": 40.01,
            "lat": 56.11
            },
            "weather": [{
            "id": 801,
            "main": "Clouds",
            "description": "few clouds",
            "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-а.

  • Конфигуришите пример зависне ставке за влажност:

Друге временске метрике као што је 'Температура' се додају на исти начин.

  • Вредност ставке зависне од узорка препроцесирање са JSONPath:

-Проверите резултат временских података у Најновији подаци :

Пример 5

Повезивање на страницу статуса Нгинк-а и групно добијање његових метрика.

-Конфигуришите главну ставку за масовне податке збирка:

Пример излаза статуса Nginx стубића:

Активне везе: 1 Активне везе: сервер прихвата руковане захтеве 52 52 52 Читање: 0 Писање: 1 Чекање: 0

Следећи задатак је да конфигуришете зависне ставке које издвајају податке.

  • Конфигуришите пример зависне ставке за захтеве у секунди:

  • Пример предобраде вредности зависне ставке са регуларним изразом server accepts handled requests\s+([0-9]+) ([0-9]+) ([0-9]+):

-Проверите комплетан резултат из стуб модула у Најновијем подаци: