Áú»¢¶Ä²©

This is a translation of the original English documentation page. Help us make it better.

16 Agent HTTP

Aper?u

Ce type d'¨¦l¨¦ment autorise l'interrogation des donn¨¦es ¨¤ l'aide du protocole HTTP/HTTPS. Le trap est ¨¦galement possible ¨¤ l¡¯aide de Áú»¢¶Ä²© Sender ou du protocole Áú»¢¶Ä²© Sender.

La v¨¦rification d'¨¦l¨¦ments HTTP est ex¨¦cut¨¦e par le serveur Áú»¢¶Ä²©. Toutefois, lorsque les h?tes sont surveill¨¦s par un proxy Áú»¢¶Ä²©, les v¨¦rifications d¡¯¨¦l¨¦ments HTTP sont ex¨¦cut¨¦es par le proxy.

Les v¨¦rifications d'¨¦l¨¦ments HTTP n'exigent pas que l'agent s'ex¨¦cute sur un h?te surveill¨¦.

L'agent HTTP prend en charge HTTP et HTTPS. Áú»¢¶Ä²© suivra ¨¦ventuellement les redirections (voir l¡¯option Suivre les redirections ci-dessous). Le nombre maximum de redirections est cod¨¦ en dur ¨¤ 10 (¨¤ l'aide de l'option cURL CURLOPT_MAXREDIRS).

Voir ¨¦galement les probl¨¨mes connus li¨¦s ¨¤ l'utilisation du protocole HTTPS.

Le serveur/proxy Áú»¢¶Ä²© doit ¨ºtre configur¨¦ initialement avec le support cURL (libcurl).

Configuration

Pour configurer un ¨¦l¨¦ment HTTP :

  • Allez dans : Configuration ¡ú H?tes
  • Cliquez sur ?±ô¨¦³¾±ð²Ô³Ù²õ dans la rang¨¦e de l'h?te
  • Cliquez sur Cr¨¦er un ¨¦l¨¦ment
  • Saisissez les param¨¨tres de l'¨¦l¨¦ment dans le formulaire

Tous les champs de saisie obligatoires sont marqu¨¦s d'un ast¨¦risque rouge.

Les champs qui n¨¦cessitent des informations sp¨¦cifiques pour les ¨¦l¨¦ments HTTP sont :

±Ê²¹°ù²¹³¾¨¨³Ù°ù±ð Description
Type ³§¨¦±ô±ð³¦³Ù¾±´Ç²Ô²Ô±ð³ú Agent HTTP ici.
°ä±ô¨¦ Entrez une cl¨¦ d'¨¦l¨¦ment unique.
URL URL de connexion et de r¨¦cup¨¦ration des donn¨¦es. Par exemple :
https://www.example.com
http://www.example.com/download
Les noms de domaine peuvent ¨ºtre sp¨¦cifi¨¦s en caract¨¨res Unicode. Ils sont automatiquement convertis en punycode en ASCII lors de l'ex¨¦cution de la v¨¦rification HTTP.
Le bouton * Analyser* peut ¨ºtre utilis¨¦ pour s¨¦parer les champs de requ¨ºte facultatifs (comme ?name=Admin&password=mypassword) de l'URL, en d¨¦pla?ant les attributs et les valeurs dans Champs de requ¨ºte pour l'encodage automatique des URL.
Limit¨¦ ¨¤ 2 048 caract¨¨res.
Macros prises en charge : {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST. NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros utilisateur, macros de d¨¦couverte de bas niveau.
Ceci d¨¦finit l'option de cURL.
Champs de requ¨ºte Variables pour l'URL (voir ci-dessus).
Sp¨¦cifi¨¦es en tant que paires d'attributs et de valeurs.
Les valeurs sont automatiquement cod¨¦es en URL. Les valeurs des macros sont r¨¦solues puis automatiquement cod¨¦es en URL.
Macros prises en charge : {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM .ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros utilisateur, macros de d¨¦couverte de bas niveau.
Ceci d¨¦finit l'option de cURL.
Type de requ¨ºte ³§¨¦±ô±ð³¦³Ù¾±´Ç²Ô²Ô±ð³ú le type de m¨¦thode de requ¨ºte : GET, POST, PUT ou HEAD
Ex?ration Áú»¢¶Ä²© ne passera pas plus que le temps d¨¦fini sur le traitement de l'URL (1-60 secondes). En fait, ce param¨¨tre d¨¦finit le temps maximum pour ¨¦tablir une connexion ¨¤ l'URL et le temps maximum pour effectuer une requ¨ºte HTTP. Par cons¨¦quent, Áú»¢¶Ä²© ne passera pas plus de 2 secondes de d¨¦lai d'attente sur une v¨¦rification.
Les suffixes temporels sont pris en charge, par ex. 30s, 1m.
Macros prises en charge : macros utilisateur, macros de d¨¦couverte de bas niveau.
Cela d¨¦finit l'option de cURL.
Type du corps de la requ¨ºte ³§¨¦±ô±ð³¦³Ù¾±´Ç²Ô²Ô±ð³ú le type de corps de la requ¨ºte :
Donn¨¦es brutes : corps de la requ¨ºte HTTP personnalis¨¦, les macros sont remplac¨¦es mais aucun encodage n'est effectu¨¦
Donn¨¦es JSON : corps de la requ¨ºte HTTP dans Format JSON. Les macros peuvent ¨ºtre utilis¨¦es comme cha?ne, nombre, vrai et faux ; les macros utilis¨¦es comme cha?nes doivent ¨ºtre plac¨¦es entre guillemets doubles. Les valeurs des macros sont r¨¦solues puis automatiquement ¨¦chapp¨¦es. Si "Content-Type" n'est pas sp¨¦cifi¨¦ dans les en-t¨ºtes, il sera par d¨¦faut "Content-Type : application/json"
Donn¨¦es XML - Corps de la requ¨ºte HTTP au format XML. Les macros peuvent ¨ºtre utilis¨¦es comme n?ud de texte, attribut ou section CDATA. Les valeurs des macros sont r¨¦solues puis automatiquement ¨¦chapp¨¦es dans un n?ud de texte et un attribut. Si "Content-Type" n'est pas sp¨¦cifi¨¦ dans les en-t¨ºtes, il sera par d¨¦faut "Content-Type : application/xml"
Notez que la s¨¦lection de Donn¨¦es XML n¨¦cessite libxml2.
Corps de la requ¨ºte Saisissez le corps de la requ¨ºte.
Macros prises en charge : {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM. ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros utilisateur, macros de d¨¦couverte de bas niveau.
·¡²Ô-³Ù¨º³Ù±ð²õ ·¡²Ô-³Ù¨º³Ù±ð²õ HTTP personnalis¨¦s qui seront envoy¨¦s lors de l'ex¨¦cution d'une requ¨ºte.
Sp¨¦cifi¨¦s sous forme de paires d'attributs et de valeurs.
Macros prises en charge : {HOST.IP}, {HOST.CONN}, {HOST.DNS} , {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros utilisateur, macros de d¨¦couverte de bas niveau.
Ceci d¨¦finit l'option de cURL.
Codes d'¨¦tat requis Liste des codes d'¨¦tat HTTP attendus. Si Áú»¢¶Ä²© obtient un code qui ne figure pas dans la liste, l'¨¦l¨¦ment ne sera plus pris en charge. Si vide, aucune v¨¦rification n'est effectu¨¦e.
Par exemple : 200,201,210-299
Macros prises en charge dans la liste : macros utilisateur, macros de d¨¦couverte de bas niveau.
Cela utilise l'option de cURL.
Suivre les redirections Cochez la case pour suivre les redirections HTTP.
Cela d¨¦finit l'option cURL .
Mode de r¨¦cup¨¦ration ³§¨¦±ô±ð³¦³Ù¾±´Ç²Ô²Ô±ð³ú la partie de la r¨¦ponse ¨¤ r¨¦cup¨¦rer :
Corps - corps uniquement
·¡²Ô-³Ù¨º³Ù±ð²õ - en-t¨ºtes uniquement
Corps et en-t¨ºtes - corps et en-t¨ºtes
Convertir en JSON Les en-t¨ºtes sont enregistr¨¦s en tant que paires d'attributs et de valeurs sous la cl¨¦ "en-t¨ºte".
Si 'Content-Type : application/json' est rencontr¨¦, le corps est enregistr¨¦ en tant qu'objet, sinon il est stock¨¦ en tant que cha?ne, par exemple :
Proxy HTTP Vous pouvez sp¨¦cifier un proxy HTTP ¨¤ utiliser, en utilisant le format [protocol://][username[:password]@]proxy.example.com[:port].
Le pr¨¦fixe facultatif protocol:// peut ¨ºtre utilis¨¦ pour sp¨¦cifier des protocoles proxy alternatifs (par exemple https, socks4, socks5 ; voir la ; le support du pr¨¦fixe de protocole a ¨¦t¨¦ ajout¨¦ dans cURL 7.21.7. Sans protocole sp¨¦cifi¨¦, le proxy sera trait¨¦ comme un proxy HTTP. Si vous sp¨¦cifiez le mauvais protocole, la connexion ¨¦chouera et l'¨¦l¨¦ment ne sera plus pris en charge.
Par d¨¦faut, le port 1080 sera utilis¨¦.
Si sp¨¦cifi¨¦, le proxy ¨¦crasera les variables d'environnement li¨¦es au proxy comme http_proxy, HTTPS_PROXY. S'il n'est pas sp¨¦cifi¨¦, le proxy n'¨¦crasera pas les variables d'environnement li¨¦es au proxy. La valeur saisie est transmise "telle quelle", aucune v¨¦rification d'int¨¦grit¨¦ n'a lieu.
Notez que seule l'authentification simple est prise en charge avec le proxy HTTP.
Macros prises en charge : {HOST.IP}, {HOST.CONN} , {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros utilisateur, macros de d¨¦couverte de bas niveau.<br >Cela d¨¦finit l'option cURL .
Authentification HTTP Type d'authentification :
Aucun - aucune authentification utilis¨¦e.
Basique - l'authentification de base est utilis¨¦e.
NTLM - NTLM () est utilis¨¦.
Kerberos - L'authentification Kerberos est utilis¨¦e. Voir aussi : Configuration de Kerberos avec Áú»¢¶Ä²©.
Digest - L'authentification Digest est utilis¨¦e.
La s¨¦lection d'une m¨¦thode d'authentification fournira deux champs suppl¨¦mentaires pour entrer un utilisateur nom et mot de passe, o¨´ les macros utilisateur et les macros de d¨¦couverte de bas niveau sont prises en charge.
Cela d¨¦finit l'option cURL .
V¨¦rifier le pair SSL Cochez la case pour v¨¦rifier le certificat SSL du serveur Web. Le certificat du serveur sera automatiquement extrait de l'emplacement de l'autorit¨¦ de certification (CA) ¨¤ l'¨¦chelle du syst¨¨me. Vous pouvez remplacer l'emplacement des fichiers CA ¨¤ l'aide du serveur Áú»¢¶Ä²© ou du param¨¨tre de configuration du proxy SSLCALocation.
Cela d¨¦finit l'option cURL .
V¨¦rifier l'h?te SSL Cochez la case pour v¨¦rifier que le champ Common Name ou le champ Subject Alternate Name du certificat de serveur Web correspond.
Cela d¨¦finit l'option de cURL.
Fichier de certificat SSL Nom du fichier de certificat SSL utilis¨¦ pour l'authentification du client. Le fichier de certificat doit ¨ºtre au format PEM1. Si le fichier de certificat contient ¨¦galement la cl¨¦ priv¨¦e, laissez le champ Fichier de cl¨¦ SSL vide. Si la cl¨¦ est crypt¨¦e, sp¨¦cifiez le mot de passe dans le champ Mot de passe de la cl¨¦ SSL. Le r¨¦pertoire contenant ce fichier est sp¨¦cifi¨¦ par le serveur Áú»¢¶Ä²© ou le param¨¨tre de configuration du proxy SSLCertLocation.
Macros prises en charge : {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME }, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros utilisateur, macros de d¨¦couverte de bas niveau.
Cela d¨¦finit l'option cURL .
Fichier de cl¨¦ SSL Nom du fichier de cl¨¦ priv¨¦e SSL utilis¨¦ pour l'authentification du client. Le fichier de cl¨¦ priv¨¦e doit ¨ºtre au format PEM1. Le r¨¦pertoire contenant ce fichier est sp¨¦cifi¨¦ par le serveur Áú»¢¶Ä²© ou le param¨¨tre de configuration du proxy SSLKeyLocation.
Macros prises en charge : {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME }, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros utilisateur, macros de d¨¦couverte de bas niveau.
Cela d¨¦finit l'option cURL .
Mot de passe de la cl¨¦ SSL Mot de passe du fichier de cl¨¦ priv¨¦e SSL.
Macros prises en charge : macros utilisateur, macros de d¨¦couverte de bas niveau.
Cela d¨¦finit l'option cURL .
Activer les traps Avec cette case coch¨¦e, l'¨¦l¨¦ment fonctionnera ¨¦galement comme ¨¦l¨¦ment de trappeur et acceptera les donn¨¦es envoy¨¦es ¨¤ cet ¨¦l¨¦ment par l'exp¨¦diteur Áú»¢¶Ä²© ou en utilisant le protocole d'exp¨¦diteur Áú»¢¶Ä²©.
H?tes autoris¨¦s Visible uniquement si la case Activer les traps est coch¨¦e.
Liste des adresses IP d¨¦limit¨¦es par des virgules, ¨¦ventuellement en notation CIDR, ou noms d'h?te.
Si sp¨¦cifi¨¦, les connexions entrantes ne seront accept¨¦es qu'¨¤ partir des h?tes r¨¦pertori¨¦s ici.
Si la prise en charge d'IPv6 est activ¨¦e, alors '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' sont trait¨¦s de la m¨ºme mani¨¨re et '::/0' autorisera tout IPv4 ou Adresse IPv6.
'0.0.0.0/0' peut ¨ºtre utilis¨¦ pour autoriser n'importe quelle adresse IPv4.
Notez que les "adresses IPv6 compatibles IPv4" (pr¨¦fixe 0000::/96) sont prises en charge mais obsol¨¨tes par .
Exemple : Server=127.0.0.1, 192.168.1.0/24, 192.168.3.1-255, 192.168.1- 10.1-255, ::1,2001:db8::/32, zabbix.domain
Les espaces et les macros utilisateur sont autoris¨¦s dans ce champ.
Les macros d'h?te : {HOST.HOST}, {HOST.NAME}, {HOST.IP}, {HOST.DNS}, {HOST.CONN} sont autoris¨¦s dans ce champ.

Si le champ Proxy HTTP est laiss¨¦ vide, une autre fa?on d'utiliser un proxy HTTP consiste ¨¤ d¨¦finir des variables d'environnement li¨¦es au proxy.

Pour HTTP - d¨¦finissez la variable d'environnement http_proxy pour l'utilisateur du serveur Áú»¢¶Ä²©. Par exemple:
http_proxy=http://proxy_ip:proxy_port.

Pour HTTPS - d¨¦finissez la variable d'environnement HTTPS_PROXY. Par exemple:
HTTPS_PROXY=http://proxy_ip:proxy_port. Plus de d¨¦tails sont disponibles en ex¨¦cutant la commande shell : # man curl.

[1]Áú»¢¶Ä²© prend en charge les fichiers de certificat et de cl¨¦ priv¨¦e au format PEM uniquement. Si vous avez votre certificat et vos donn¨¦es de cl¨¦ priv¨¦e dans un fichier au format PKCS #12 (g¨¦n¨¦ralement avec l'extension *.p12 ou *.pfx), vous pouvez g¨¦n¨¦rer le fichier PEM ¨¤ partir de celui-ci ¨¤ l'aide des commandes suivantes :

openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem
       openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes  -out ssl-cert.key

Exemples

Exemple 1

Envoyez des requ¨ºtes GET simples pour extraire des donn¨¦es de services tels que Elasticsearch :

  • Cr¨¦er un ¨¦l¨¦ment GET avec l'URL : localhost:9200/?pretty
  • Notez la r¨¦ponse :

{ "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" }

  • Extrayez maintenant le num¨¦ro de version en utilisant une ¨¦tape de pr¨¦traitement JSONPath : $.version.number
Exemple 2

Envoyez des requ¨ºtes POST simples pour extraire des donn¨¦es de services tels que Elasticsearch :

  • Cr¨¦ez un ¨¦l¨¦ment POST avec l'URL : http://localhost:9200/str/values/_search?scroll=10s
  • Configurez le corps POST suivant pour obtenir la charge du processeur (moyenne 1 min par c?ur)

{ "query": { "bool": { "must": [{ "match": { "itemid": 28275 } }], "filter": [{ "range": { "clock": { "gt": 1517565836, "lte": 1517566137 } } }] } } }

  • Re?u :

{ "_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 } }] } }

  • Utilisez maintenant une ¨¦tape de pr¨¦traitement JSONPath pour obtenir la valeur de l¡¯¨¦l¨¦ment: $.hits.hits[0]._source.value
Exemple 3

V¨¦rifier si l'API Áú»¢¶Ä²© est vivant en utilisant apiinfo.version.

  • Configuration de l'¨¦l¨¦ment :

Notez l'utilisation de la m¨¦thode POST avec les donn¨¦es JSON, la d¨¦finition des en-t¨ºtes de requ¨ºte et le renvoi des en-t¨ºtes uniquement :

  • Pr¨¦traitement de la valeur d'¨¦l¨¦ment avec une expression r¨¦guli¨¨re pour obtenir le code HTTP :

  • V¨¦rification du r¨¦sultat dans Derni¨¨res donn¨¦es :

Exemple 4

R¨¦cup¨¦ration des informations m¨¦t¨¦orologiques en se connectant au service public Openweathermap.

  • Configurez un ¨¦l¨¦ment principal pour la collecte de donn¨¦es en bloc dans un seul JSON :

Notez l'utilisation de macros dans les champs de requ¨ºte. Reportez-vous ¨¤ l'API pour savoir comment les remplir.

Exemple de code JSON renvoy¨¦ en r¨¦ponse ¨¤ l'agent 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
        }
       }

La t?che suivante consiste ¨¤ configurer les ¨¦l¨¦ments d¨¦pendants qui extraient les donn¨¦es du JSON.

  • Configurez un ¨¦l¨¦ment d¨¦pendant pour l'humidit¨¦ :

D'autres m¨¦triques m¨¦t¨¦orologiques telles que 'Temp¨¦rature' sont ajout¨¦es de la m¨ºme mani¨¨re.

  • Exemple de pr¨¦traitement de la valeur de l'¨¦l¨¦ment d¨¦pendant avec JSONPath :

  • V¨¦rifiez le r¨¦sultat des donn¨¦es m¨¦t¨¦orologiques dans Derni¨¨res donn¨¦es :

Exemple 5

Connexion ¨¤ la page d'¨¦tat de Nginx et obtention de ses m¨¦triques en masse.

  • Configurez Nginx en suivant le [guide officiel] (https://nginx.ru/en/docs/http/ngx_http_stub_status_module.html).
  • Configurez un ¨¦l¨¦ment principal pour la collecte de donn¨¦es en masse?:

Exemple de sortie d'¨¦tat du stub Nginx?:

Active connections: 1 Active connections:
       server accepts handled requests
       52 52 52 
       Reading: 0 Writing: 1 Waiting: 0

La t?che suivante consiste ¨¤ configurer les ¨¦l¨¦ments d¨¦pendants qui extraient les donn¨¦es.

  • Configurez un exemple d'¨¦l¨¦ment d¨¦pendant pour les requ¨ºtes par seconde?:

  • Exemple de pr¨¦traitement de la valeur de l'¨¦l¨¦ment d¨¦pendant avec une expression r¨¦guli¨¨re le serveur accepte les requ¨ºtes trait¨¦es\s+([0-9]+) ([0-9]+) ([0-9]+)?:

  • V¨¦rifiez le r¨¦sultat complet du module stub dans Derni¨¨res donn¨¦es?: