Áú»¢¶Ä²©

This is the documentation page for an unsupported version of Áú»¢¶Ä²©.
Is this not what you were looking for? Switch to the current version or choose one from the drop-down menu.

17 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 :

  • Aller dans : Configuration ¡ú H?tes
  • Cliquez sur ?±ô¨¦³¾±ð²Ô³Ù dans la rang¨¦e de l'h?te
  • Cliquez sur Cr¨¦er un ¨¦l¨¦ment
  • Entrez 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 les suivants :

Type ³§¨¦±ô±ð³¦³Ù¾±´Ç²Ô²Ô±ð³ú Agent HTTP ici.
°ä±ô¨¦ Entrez une cl¨¦ d'¨¦l¨¦ment unique.
URL URL pour se connecter et r¨¦cup¨¦rer les donn¨¦es. Par exemple :
https://www.google.com
http://www.zabbix.com/download
Les noms de domaine peuvent ¨ºtre sp¨¦cifi¨¦s en caract¨¨res Unicode. Ils sont automatiquement convertis au format 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 les Champs de requ¨ºtes pour l'encodage automatique des URLs.
Limit¨¦ ¨¤ 2048 caract¨¨res.
Macros support¨¦es : {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, macros utilisateur, macros de d¨¦couverte de bas niveau.
Ceci d¨¦finit l'option cURL .
Champs de requ¨ºte Variables pour l'URL (voir ci-dessous).
Sp¨¦cifi¨¦ sous forme de paires d'attributs et de valeurs.
Les valeurs sont automatiquement cod¨¦es par l'URL. Les valeurs des macros sont r¨¦solues puis encod¨¦es automatiquement par URL.
Macros support¨¦es : {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, macros utilisateur, macros de d¨¦couverte de bas niveau.
Ceci d¨¦finit l'option cURL .
Type de requ¨ºte ³§¨¦±ô±ð³¦³Ù¾±´Ç²Ô²Ô±ð³ú le type de m¨¦thode de requ¨ºte : GET, POST, PUT or HEAD
Expiration Áú»¢¶Ä²© ne passera pas plus de temps que pr¨¦vu ¨¤ traiter l¡¯URL (maximum 1 minute). En r¨¦alit¨¦, ce param¨¨tre d¨¦finit le d¨¦lai maximal de connexion ¨¤ l'URL et le d¨¦lai maximal d'ex¨¦cution d'une requ¨ºte HTTP. Par cons¨¦quent, Áú»¢¶Ä²© ne passera pas plus de 2xExpiration secondes sur une v¨¦rification.
Les suffixes temporels sont support¨¦s, ex : 30s, 1m.
Macros support¨¦es : macros utilisateur, macros de d¨¦couverte de bas niveau.
Ceci d¨¦finit l'option cURL .
Type du corps de la requ¨ºte ³§¨¦±ô±ð³¦³Ù¾±´Ç²Ô²Ô±ð³ú le type du corps de la requ¨ºte :
Donn¨¦es brutes - Corps de requ¨ºte HTTP personnalis¨¦, les macros sont substitu¨¦es mais aucun encodage n'est effectu¨¦
Donn¨¦es JSON - Corps de la requ¨ºte HTTP au format JSON. Les macros peuvent ¨ºtre utilis¨¦es comme cha?ne, nombre, vrai et faux ; les macros utilis¨¦es en tant que cha?nes doivent ¨ºtre plac¨¦es entre guillemets. Les valeurs des macros sont r¨¦solues puis ¨¦chapp¨¦es automatiquement. Si "Content-Type" n'est pas sp¨¦cifi¨¦ dans les en-t¨ºtes, il utilisera 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 en tant que n?ud de texte, attribut ou section CDATA. Les valeurs des macros sont r¨¦solues puis ¨¦chapp¨¦es automatiquement dans un n?ud de texte et un attribut. Si "Content-Type" n'est pas sp¨¦cifi¨¦ dans les en-t¨ºtes, la valeur par d¨¦faut sera "Content-Type: application/xml".
Remarque que la s¨¦lection de donn¨¦es XML n¨¦cessite libxml2.
Corps de la requ¨ºte Entrez le corps de la demande.
Macros support¨¦es : {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, macros utilisateur, macros de d¨¦couverte de bas niveau.
·¡²Ô-³Ù¨º³Ù±ð²õ ·¡²Ô-³Ù¨º³Ù±ð²õ HTTP personnalis¨¦s ¨¤ envoyer lors de l'ex¨¦cution d'une requ¨ºte.
Sp¨¦cifi¨¦ sous forme de paires d'attributs et de valeurs.
Macros support¨¦es : {HOST.IP}, {HOST.CONN}, {HOST. DNS }, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, macros utilisateur, macros de d¨¦couverte de bas niveau.
Ceci d¨¦finit l'option cURL .
Code d'¨¦tat requis Liste des codes d'¨¦tat attendus. Si Áú»¢¶Ä²© obtient un code qui ne figure pas dans la liste, l'¨¦l¨¦ment deviendra non support¨¦. Si vide, aucune v¨¦rification n'est effectu¨¦e.
Par exemple : 200,201,210-299
Macros support¨¦es dans la liste : macros utilisateur, macros de d¨¦couverte de bas niveau.
Ceci utilise l'option cURL .
Suivre les redirections Cochez la case pour suivre les redirections HTTP.
Cela d¨¦finit l'option cURL .
Mode de r¨¦cup¨¦ration S¨¦lectionner la partie de la r¨¦ponse ¨¤ r¨¦cup¨¦rer :
Corps - corps seulement
·¡²Ô-³Ù¨º³Ù±ð²õ - en-t¨ºtes seulement
Corps et en-t¨ºtes - coprs et en-t¨ºtes
Convertir en JSON Les en-t¨ºtes sont enregistr¨¦s sous forme de paires attribut et valeur sous la cl¨¦ "header".
Si 'Content-Type: application/json' est rencontr¨¦, le corps est enregistr¨¦ en tant qu'objet. Sinon, il est stock¨¦ sous forme de cha?ne. Par exemple :
Proxy HTTP Vous pouvez sp¨¦cifier un proxy HTTP ¨¤ utiliser, au format [protocol://][username[:password]@]proxy.mycompany.com[:port].
Le pr¨¦fix optionnel protocol:// peut ¨ºtre utilis¨¦ pour sp¨¦cifier des protocoles de proxy alternatifs (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.
Par d¨¦faut, le port 1080 sera utilis¨¦.
Si sp¨¦cifi¨¦, le proxy ¨¦crasera les variables d'environnement associ¨¦es au proxy, telles que http_proxy, HTTPS_PROXY. S'il n'est pas sp¨¦cifi¨¦, le proxy n'¨¦crase pas les variables d'environnement li¨¦es au proxy. La valeur entr¨¦e est transmise "telle quelle", aucune v¨¦rification de coh¨¦rence n'a lieu.
Vous pouvez ¨¦galement entrer une adresse proxy SOCKS. Si vous sp¨¦cifiez un protocole incorrect, la connexion ¨¦chouera et l'¨¦l¨¦ment ne sera plus support¨¦. En l'absence de protocole sp¨¦cifi¨¦, le proxy sera trait¨¦ comme un proxy HTTP.
Notez que seule l'authentification simple est prise en charge avec le proxy HTTP.
Macros support¨¦es : {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, macros utilisateur, macros de d¨¦couverte de bas niveau.
Ceci d¨¦finit l'option cURL .
Authentication HTTP Type d'identification :
Aucun - aucune authentification utilis¨¦e.
Basique - L'authentification basique est utilis¨¦e..
NTLM - L¡¯authentification NTLM ( est utilis¨¦e.
La s¨¦lection d'une m¨¦thode d'authentification fournira deux champs suppl¨¦mentaires pour la saisie d'un nom d'utilisateur et d'un mot de passe, les macros d'utilisateur et les macros de d¨¦couverte de bas niveau ¨¦tant prises en charge.
Ceci 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 ¨¤ l'¨¦chelle du syst¨¨me. Vous pouvez remplacer l'emplacement des fichiers de l'autorit¨¦ de certification ¨¤ l'aide du serveur Áú»¢¶Ä²© ou du param¨¨tre de configuration du proxy SSLCALocation.
Ceci d¨¦finit l'option cURL .
V¨¦rifier l'h?te SSL Cochez la case pour v¨¦rifier que le champ Nom commun ou le champ Autre nom sujet du certificat du serveur Web correspond.
Ceci d¨¦finit l'option 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 support¨¦es : {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, macros utilisateur, macros de d¨¦couverte de bas niveau.
Ceci 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 support¨¦es : {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, macros utilisateur, macros de d¨¦couverte de bas niveau.
Ceci d¨¦finit l'option cURL .
Mot de passe de la cl¨¦ SSL Mot de passe du fichier de cl¨¦ priv¨¦e SSL.
Macros support¨¦es : macros utilisateur, macros de d¨¦couverte de bas niveau.
Ceci d¨¦finit l'option cURL .
Activer les trap Si cette case est coch¨¦e, l'¨¦l¨¦ment fonctionnera ¨¦galement comme ¨¦l¨¦ment trappeur et acceptera les donn¨¦es envoy¨¦es ¨¤ cet ¨¦l¨¦ment par le sender Áú»¢¶Ä²© ou ¨¤ l'aide du protocole sender de Áú»¢¶Ä²©.
H?tes autoris¨¦s Visible uniquement si la case Activer les trap 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 que des h?tes list¨¦s ici.
Si la prise en charge IPv6 est activ¨¦e, '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' sont trait¨¦es de la m¨ºme mani¨¨re et '::/0' autorise toutes les adresses IPv4 ou 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 support¨¦es mais obsol¨¨tes par la .
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¨¦es dans ce champs.
Les macros d'h?tes : {HOST.HOST}, {HOST.NAME}, {HOST.IP}, {HOST.DNS}, {HOST.CONN} sont autoris¨¦es dans ce champs depuis Áú»¢¶Ä²© 4.0.2.

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

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

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

[1] Áú»¢¶Ä²© prend en charge les fichiers de certificat et de cl¨¦ priv¨¦e au format PEM uniquement. Si vos donn¨¦es de certificat et de cl¨¦ priv¨¦e sont dans un fichier au format PKCS #12 (g¨¦n¨¦ralement avec l'extension *.p12 ou *.pfx), vous pouvez g¨¦n¨¦rer le fichier PEM ¨¤ 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 statistiques en masse.

  • Configurez Nginx en suivant le .
  • Configurez un ¨¦l¨¦ment principal pour la collecte de donn¨¦es en bloc :

Exemple de sortie de statut de 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 des donn¨¦es.

  • Configurez un ¨¦l¨¦ment d¨¦pendant pour les demandes par seconde :

  • Exemple de pr¨¦traitement de valeur d'¨¦l¨¦ment d¨¦pendant avec une expression r¨¦guli¨¨re :

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