Skip to main content

Bonjour,

Comment interroger une API avec une clé API svp , et récupérer une valeur svp.

en CLI pas de soucis :

Mais impossible dans le plugin http-jason-content :  j’ai une erreur 401,

ou mettre le clé aPI svp ?

Merci d’avance

cordialement

hello

you have 2 options, either put it in the header with the right syntax (like how you put it in your curl command with -H….

or follow this guide ; HTTP Collections tutorial - How to monitor an API | Community

(it’s a bit complex and a bit confusing if you don’t know how api are working, this example is connecting to the centreon api which has a specific way to authenticate, and uses a login api call that gives you a token, and their tutorial explains how to make multiple requests that chains one another, in your case it will be simpler as you have your api key and don’t need the login request, you will need to adapt)

in this 2nd method, the goal is to create a JSON file to parameter the query as centreon needs it, and gives this json file to the check_http mode “collection”


Hi @Richard23 

In addition to what @christophe.niel-ACT said, as documented here you may also add the appropriate header to the EXTRAOPTIONS macro: --header=’X-Auth-Key:XXXXXXXXXX’ 

 


Merci beaucoup pour vos retour,

Sa fonctionne bien, avec --header=’X-Auth-Key:XXXXXXXXXX’ 

Par contre je rencontre une difficulté,  

 

je veut récupérer “seal_state” sur mon API : 

{
    "seal_state": "unsealed",
    "encryption_mode": "passphrase"
}

 

si c’est unsealed c’est ok

si c’est sealed c’est pas bon 

 

je ne trouve pas la syntaxe a mettre dans la commande pour l’argument: --critical-string='sealed'

 

C’est toujours KO, puisqu’il trouve toujours la chaine de caractère “sealed” !

 Auriez vous une solution ou une syntaxe particulière pour solutionner ce probleme svp ?

Merci à vous :)

Cordialement


the issue could be that “unsealed” is containing the string “sealed”, so it’s matching and will give you critical

https://github.com/centreon/centreon-plugins/blob/790c96d3ac09d37055746981f56cbd982cbd6433/src/apps/protocols/http/mode/jsoncontent.pm#L259C24-L259C26

the check is using “=~” which is a matching operator (or “contains”), not a exact match.

try adding ^ and $ around your search value like this ^sealed$

it’s the regex code for start string and end string

 


C’est parfait :)

cela fonctionne Nikel, un grand merci à toi Christophe..

je me note sa dans un coin pour plus tard,  j’ai chercher un bon moment ..

 

Cordialement


To properly use the json-content mode, you should use the LOOKUP macro with this value: .seal_state

to focus only on the value of the seal_state attribute and the CRITICALSTRING macro with this value: ^sealed$ to match only sealed as a whole word.


Reply