Bonjour à touts.
Petit nouveau sur ce forum, 3 ans d'expérience avec Zabbix.
Je travaille sur la version 4.2.0 de Zabbix serveur installé sur un CentOS 7.
J'essaie de monitorer un système distant via un API HTTPS.
Sur le même serveur que Zabbix, toutes mes demandes cli fonctionnent.
exemples de login au API en mode manuel (version écourtée):
$curl -X POST https://abx.com/api/Login -d '{"username":"mon_username","password":"monpasswor d"}'
Aucun problème, je reçoit une clef dans le header https que retoure le web server NGINX distant.
Dans Zabbix j'ai créer un http item qui recréer cette même requête. Dans cet item, j'ai demandé de convertir la réponse en format JSON, puisque la réponse est en text standard.
Avec 2 preposessing filtre (JSON PATH + Regex), j'arrive à isoler la clef... cool !
Nom de l'item : GetApiKey
Clef dans l'item: APIKEY
J'aimerais ré-utiliser cette dite clef qui se trouve dans un item pour pouvoir demander d'autres infos via le API du site web distant.
Exemple de demandes faites manuellement - réponse fonctionnelle !
$curl -X GET https://abx.com/api/ResourcesList -H "Key: .AspNetCore.Cookies=rt5nvRuhinfd-43jfn... etc...etc...etc.."
Dans Zabbix, j'ai créer un 2e http item qui recréer ma dernière demande, mais je dois passer comme paramètre dans les headers la celf de login.
-- Headers - Name - (premier champ): Key => Value (2e champ) : {GetApiKey.APIKEY} (pour faire une référence à mon premier item qui contient la clef).
Headers - Content-Type => application/json,charset=UTF-8
Headers - Accept => application/json
Dans le debug du serveur , je vois la demande suivante envoyé par Zabbix:
18967:20190405:171429.047 End of substitute_key_macros():SUCCEED data:'ResourcesList'
18967:20190405:171429.047 In substitute_simple_macros() data:'3s'
18967:20190405:171429.047 In substitute_simple_macros() data:'https://abx.com/api/ResourcesList'
18967:20190405:171429.047 In substitute_simple_macros() data:EMPTY
18967:20190405:171429.047 In substitute_simple_macros() data:'Key: {GetApiKey.APIKEY}
Content-Type: application/json,charset=UTF-8
Accept: application/json
18967:20190405:171429.047 In substitute_simple_macros() data:'401,200'
18967:20190405:171429.047 In substitute_simple_macros() data:EMPTY
18967:20190405:171429.047 In substitute_simple_macros() data:EMPTY
18967:20190405:171429.047 In substitute_simple_macros() data:EMPTY
18967:20190405:171429.047 In substitute_simple_macros() data:EMPTY
18967:20190405:171429.047 In substitute_simple_macros() data:EMPTY
18967:20190405:171429.047 In substitute_simple_macros() data:EMPTY
18967:20190405:171429.047 In get_value() key:'TrunkResourcesList'
18967:20190405:171429.047 In get_value_http() request method 'GET' URL 'https://abx.com/api/ResourcesList' headers 'Key: {GetApiKey.APIKEY}
Content-Type: application/json,charset=UTF-8
Accept: application/json' message body ''
Evidement, la réponse du site web :
]
18957:20190405:171430.025 query [txnlev:1] [insert into history_text (itemid,clock,ns,value) values (29099,1554498869,132679036,'HTTP/1.1 401 Unauthorized
Server: nginx
Date: Fri, 05 Apr 2019 21:14:29 GMT
Content-Length: 0
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Set-Cookie: CmmSession=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; samesite=lax
Set-Cookie: XSRF-TOKEN=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; samesite=lax
Set-Cookie: .AspNetCore.Cookies=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; samesite=lax
');
]
Donc, est-ce possible de créer une référence en utilisant le nom d'un autre item + key dans le champ Header? Est-ce ma méthode qui n'est pas bonne ??
J'ai essayé également avec un Discovery item, mais comme la réponse du site web n'est pas en format JSON, rien à faire...
Dans le discovery item http, il n'y a pas l'option de convertir la réponse en format JSON.
Merci.
Petit nouveau sur ce forum, 3 ans d'expérience avec Zabbix.
Je travaille sur la version 4.2.0 de Zabbix serveur installé sur un CentOS 7.
J'essaie de monitorer un système distant via un API HTTPS.
Sur le même serveur que Zabbix, toutes mes demandes cli fonctionnent.
exemples de login au API en mode manuel (version écourtée):
$curl -X POST https://abx.com/api/Login -d '{"username":"mon_username","password":"monpasswor d"}'
Aucun problème, je reçoit une clef dans le header https que retoure le web server NGINX distant.
Dans Zabbix j'ai créer un http item qui recréer cette même requête. Dans cet item, j'ai demandé de convertir la réponse en format JSON, puisque la réponse est en text standard.
Avec 2 preposessing filtre (JSON PATH + Regex), j'arrive à isoler la clef... cool !
Nom de l'item : GetApiKey
Clef dans l'item: APIKEY
J'aimerais ré-utiliser cette dite clef qui se trouve dans un item pour pouvoir demander d'autres infos via le API du site web distant.
Exemple de demandes faites manuellement - réponse fonctionnelle !
$curl -X GET https://abx.com/api/ResourcesList -H "Key: .AspNetCore.Cookies=rt5nvRuhinfd-43jfn... etc...etc...etc.."
Dans Zabbix, j'ai créer un 2e http item qui recréer ma dernière demande, mais je dois passer comme paramètre dans les headers la celf de login.
-- Headers - Name - (premier champ): Key => Value (2e champ) : {GetApiKey.APIKEY} (pour faire une référence à mon premier item qui contient la clef).
Headers - Content-Type => application/json,charset=UTF-8
Headers - Accept => application/json
Dans le debug du serveur , je vois la demande suivante envoyé par Zabbix:
18967:20190405:171429.047 End of substitute_key_macros():SUCCEED data:'ResourcesList'
18967:20190405:171429.047 In substitute_simple_macros() data:'3s'
18967:20190405:171429.047 In substitute_simple_macros() data:'https://abx.com/api/ResourcesList'
18967:20190405:171429.047 In substitute_simple_macros() data:EMPTY
18967:20190405:171429.047 In substitute_simple_macros() data:'Key: {GetApiKey.APIKEY}
Content-Type: application/json,charset=UTF-8
Accept: application/json
18967:20190405:171429.047 In substitute_simple_macros() data:'401,200'
18967:20190405:171429.047 In substitute_simple_macros() data:EMPTY
18967:20190405:171429.047 In substitute_simple_macros() data:EMPTY
18967:20190405:171429.047 In substitute_simple_macros() data:EMPTY
18967:20190405:171429.047 In substitute_simple_macros() data:EMPTY
18967:20190405:171429.047 In substitute_simple_macros() data:EMPTY
18967:20190405:171429.047 In substitute_simple_macros() data:EMPTY
18967:20190405:171429.047 In get_value() key:'TrunkResourcesList'
18967:20190405:171429.047 In get_value_http() request method 'GET' URL 'https://abx.com/api/ResourcesList' headers 'Key: {GetApiKey.APIKEY}
Content-Type: application/json,charset=UTF-8
Accept: application/json' message body ''
Evidement, la réponse du site web :
]
18957:20190405:171430.025 query [txnlev:1] [insert into history_text (itemid,clock,ns,value) values (29099,1554498869,132679036,'HTTP/1.1 401 Unauthorized
Server: nginx
Date: Fri, 05 Apr 2019 21:14:29 GMT
Content-Length: 0
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Set-Cookie: CmmSession=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; samesite=lax
Set-Cookie: XSRF-TOKEN=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; samesite=lax
Set-Cookie: .AspNetCore.Cookies=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; samesite=lax
');
]
Donc, est-ce possible de créer une référence en utilisant le nom d'un autre item + key dans le champ Header? Est-ce ma méthode qui n'est pas bonne ??
J'ai essayé également avec un Discovery item, mais comme la réponse du site web n'est pas en format JSON, rien à faire...
Dans le discovery item http, il n'y a pas l'option de convertir la réponse en format JSON.
Merci.

Comment