Instrumentation automatique du site Web

Le site web Instana intègre automatiquement l'agent JavaScript au site afin de permettre sa surveillance. Cette mise en place automatique ne nécessite que quelques étapes de configuration et n'implique aucune modification du code du site web.

Pour plus d'informations, consultez la page consacrée à l'agent « JavaScript ».

Informations de support

La fonctionnalité d'instrumentation automatique du site Web n'est prise en charge que sur les serveurs Web suivants :
  • HTTPd Serveur : nécessite le capteur « HTTPd » 1.2.12 ou une version ultérieure. Cette autoPageDetection option est disponible pour le capteur HTTPd 1.2.19 et le capteur EUM 1.0.5.
  • Serveurs Tomcat (basés sur Jakarta) : seuls les types de contenu par défaut et le sélecteur matchExpressions dont la clé est url/path peuvent faire l'objet d'une instrumentation automatique. De plus, l'injection automatique de scripts EUM est ignorée pour les réponses HTML qui spécifient une taille fixe Content-Length, car la modification du corps de la réponse invalide la taille de contenu déclarée. Cette fonctionnalité est disponible sur Java Tracer 2.0.9.
Remarque : vous pouvez activer et désactiver séparément la surveillance des utilisateurs finaux (EUM) et le traçage de l' HTTPd, même si ces deux fonctionnalités partagent le même binaire en cours d'exécution pour la technologie surveillée. Mais si l'EUM est activé, cela permet également le traçage afin d'assurer une surveillance de bout en bout.

Activer l'instrumentation automatique du site web

Pour activer l'instrumentation automatique du site Web, procédez comme suit:

Étape 1 : Créer des sites web

Pour créer les sites Web que vous souhaitez surveiller, procédez comme suit:

  1. Dans l'interface utilisateur d' Instana, accédez à la section « Sites Web et applications mobiles », puis cliquez sur « Ajouter un site Web ».

  2. Saisissez le nom d'un site Web, puis cliquez sur « Ajouter un site Web ».

    Figure 1. Instana créer un site web
    Instana créer un site web
  3. Du Tout est prêt ! , notez les valeurs pour reportingUrl, keyet jsAgentUrl. Vous devez indiquer ces valeurs dans le fichier *instanaAgentDir*/etc/instana/configuration.yaml de configuration de l'agent Instana à l'étape 2.

    Figure 2. Instana Créer un site web prêt à l'emploi
    Instana Créer un site web prêt à l'emploi

Étape 2 : Modifier le fichier de configuration de l'agent

Modifiez le *instanaAgentDir*/etc/instana/configuration.yaml fichier de l'agent « Instana » dans lequel se trouve l' Apache HTTP Server. Les paramètres de configuration suivants pour l'instrumentation automatique des sites Web sont disponibles dans le configuration.yaml fichier de l'agent Instana :

#EUM
#com.instana.plugin.eum:
#  instrumentation:
#    #contentTypes:                       # List of the 'Content-Type' values for matching requests that need to be instrumented,
#                                         #  default values in the list are 'text/html' and 'application/xhtml+xml'.
#    #  - 'text/html'
#    #  - 'application/xhtml+xml'
#    #aggressive: false                   # Indicates whether to instrument with the EUM JavaScript agent if Instana cannot determine
#                                         # the 'Content-Type' of the request, default is false.
#    #######################################################################################################
#    # Following parameters are used as common EUM monitoring configuration.
#    # They can be overwritten by specifying them in the website configuration.
#    #######################################################################################################
#    jsAgentUrl: 'https://eum.instana.io/1.7.2/eum.min.js' # EUM JavaScript agent download URL.
#    reportingUrl: <reportingUrl>                    # The URL to which to send website monitoring data to.
#    trackSessions: true                             # Indicates whether to enable session tracking, default is true.
#    autoPageDetection: true                         # Indicates whether to enable automatic page detection for single-page-application, default is true.
#    #######################################################################################################
#    # AutoPageDetection can be further customised to use url RegEx mapping rule or document title as page name.
#    # If the following parameters are enabled the priority of autoPageDetection will be:
#    # RegEx mapping rule > auto detect page title > regular automatic page detection
#    #autoPageDetectionRegex:                        # Indicates whether to match an array of RegExp objects to the URL of page change and replace them with the string provided.
#     #- ['/.*MappingRule.*/i', 'PageTitle String']
#     #- ['/.*aboutPage.*-([A-Za-z].*)/', 'About Page id: $1']
#    #autoPageDetectionPageTitle: false              # Indicates whether to enable document title as page name. Default value is false.
#    #######################################################################################################
#    integrityId: 'sha384-cgeSlevgebehPauohUhsnAeBrpjXzaj94mSv3L2EXjCQH0RRb9xSQ2ErGOWkthIJ' # The SHA value corresponding to the jsAgentUrl version for SRI enablement.
#    #######################################################################################################
#    # Following parameters are used to configure each monitored website.
#    # Optional parameters are commented out by default. Remove the hashtag (#) when needed.
#    #######################################################################################################
#    websites:
#      - name: <WEBSITE_NAME>             # Name of the website for the website configuration in Instana.
#        key: <WEBSITE_KEY>               # Monitoring key for the website configuration in Instana.
#        #enabled: true                   # Indicates whether to enable website monitoring on this website, default is true.
#        #reportingUrl: <reportingUrl>    # The URL to which to send website monitoring data to. Overwrites upper-level setting.
#        #jsAgentUrl: 'https://eum.instana.io/1.7.2/eum.min.js' # JavaScript agent download URL. Overwrites upper-level setting.
#        #trackSessions: true             # Indicates whether to enable session tracking, default is true. Overwrites upper-level setting.
#        #autoPageDetection: true         # Indicates whether to enable automatic page detection for single-page-application, default is true. Overwrites upper-level setting.
#        ##autoPageDetectionRegex:         # Indicates whether to set page title based on a specific RegEx mapping rule in automatic page detection. Overwrites upper-level setting.
#        ## - ['/.*MappingRule.*/i', 'PageTitle']
#        ## - ['/.*aboutPage.*-([A-Za-z].*)/', 'About Page id: $1']
#        ##autoPageDetectionPageTitle: false  # Indicates whether to enable document title as page name. Default value is false. Overwrites upper-level setting.
#        #integrityId: 'sha384-cgeSlevgebehPauohUhsnAeBrpjXzaj94mSv3L2EXjCQH0RRb9xSQ2ErGOWkthIJ' # The SHA value corresponding to the jsAgentUrl version for SRI enablement. Overwrites upper-level setting.
#        #mode: 'regular'                 # Mode for monitoring data transmission, default is 'regular'.
#                                         # Available mode is 'regular'.
#        selector:                        # List of match expressions to filter requests.
#          matchExpressions:              # When all match expressions are evaluated to true, the request is monitored.
#                                         # At least one match expression with the key of the 'url' catalog must be defined.
#            - key: 'url/path'            # Key specified in the <catalog>/<resource> format.
#                                         # Available catalogs in the key include 'url' for request filtering plus
#                                         #  'container' and 'k8s' for Web Server infrastructure filtering.
#                                         # Available keys:
#                                         #  'url/hostname', 'url/path', and 'url/filename'
#                                         #  'container/name' and 'container/imagename'
#                                         #  'k8s/namespace', 'k8s/podname', and 'k8s/containername'
#              operator: 'StartWith'      # Match expression operators: 'Contains', 'ContainsIgnoreCase', 'Equals',
#                                         #  'EqualsIgnoreCase', 'StartWith', and 'StartWithIgnoreCase'.
#              values:                    # List of match expression values.
#                - '/'
 

Suivez les commentaires de chaque ligne pour configurer l'instrumentation automatique du site Web EUM. Voir l'exemple suivant :

com.instana.plugin.eum:
  instrumentation:
    jsAgentUrl: 'https://eum.instana.io/1.7.2/eum.min.js'
    reportingUrl: 'https://eum.example.com'
    trackSessions: true
    integrityId: 'integrityId for version 1.7.2'
    websites:
      - name: demo
        key: YOURWEBSITEKEYHERE
        selector:
          matchExpressions:
            - key: 'url/hostname'
              operator: 'Equals'
              values:
                - 'example.com'
 

Dans cet exemple, la configuration active la surveillance du site web pour toutes les requêtes HTTP adressées au nom d'hôte example.com. Les balises générées sont envoyées au site demo web avec la clé YOURWEBSITEKEYHERE via l' URLhttps://eum.example.com.

Une fois le fichier configuration.yaml modifié enregistré, le module EUM « HTTPd » est automatiquement téléchargé et installé. Vous pouvez vérifier le module en consultant le instana_tracing.conf fichier situé dans le répertoire de configuration de HTTPd.

Étape 3 : Redémarrer le serveur web

Si autoRestart est défini sur true dans le suivi de l' HTTPd, vous n'avez pas besoin de redémarrer manuellement l' Apache HTTP Server.

com.instana.plugin.httpd:
  tracing:
    autoRestart: true
 

Sinon, redémarrez l' Apache HTTP Server.

Étape 4 : Vérifiez sur le tableau de bord du site web

Assurez-vous que les charges de travail sont bien présentes sur le site web. Go Accédez au tableau de bord du site web dans l'interface utilisateur d' Instana pour vérifier que les données de surveillance sont bien reçues.

Désactivation de l'instrumentation automatique du site web

Pour désactiver l'instrumentation automatique du site Web, mettez en commentaire ou supprimez toutes les lignes de com.instana.plugin.eum dans le fichier configuration.yaml .

Exemples d'expressions de correspondance

Exemples de filtrage des requêtes sur plusieurs hôtes virtuels

Les exemples suivants montrent comment définir les expressions de correspondance afin de garantir que les sites Web soient automatiquement instrumentés lorsque vous disposez de plusieurs VirtualHost dans la configuration de Apache HTTPd.

Par exemple, voir la définition VirtualHost suivante:

Listen 80
<VirtualHost *:80>
    DocumentRoot "/www/example1"
    ServerName www.example.com

    # Other directives here
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/www/example2"
    ServerName www.example.org

    # Other directives here
</VirtualHost>
 

Exemple 1 : Utiliser l'URL/le chemin d'accès comme clé

Pour filtrer les demandes à surveiller, vous pouvez utiliser la clé url/path comme indiqué dans la configuration suivante:

com.instana.plugin.eum:
  instrumentation:
    jsAgentUrl: 'https://eum.instana.io/eum.min.js'
    reportingUrl: 'https://eum.example.com'
    trackSessions: true
    websites:
      - name: 'website1'
        key: 'WEBSITEKEY1'
        selector:
          matchExpressions:
            - key: 'url/path'
              operator: 'StartWith'
              values:
                - '/products'
                - '/carts'
      - name: 'website2'
        key: 'WEBSITEKEY2'
        selector:
          matchExpressions:
            - key: 'url/path'
              operator: 'StartWith'
              values:
                - '/offers'
                - '/employees'

 

Avec cette configuration, les données EUM pour les requêtes client dont le chemin URL commence par /products ou /carts est affiché sur le tableau de bord pour website1. Les données EUM relatives aux requêtes client dont le chemin d'accès URL commence par /offers ou /employees s'affichent sur le tableau de bord de website2.

Exemple 2 : Utiliser l'URL ou le nom de fichier comme clé

Vous pouvez également utiliser la clé url/filename pour faire correspondre le DocumentRoot , comme indiqué dans la configuration suivante:

com.instana.plugin.eum:
  instrumentation:
    jsAgentUrl: 'https://eum.instana.io/eum.min.js'
    reportingUrl: 'https://eum.example.com'
    trackSessions: true
    websites:
      - name: 'website1'
        key: 'WEBSITEKEY1'
        selector:
          matchExpressions:
            - key: 'url/filename'
              operator: 'StartWith'
              values:
                - '/www/example1'
      - name: 'website2'
        key: 'WEBSITEKEY2'
        selector:
          matchExpressions:
            - key: 'url/filename'
              operator: 'StartWith'
              values:
                - '/www/example2'
 

Avec cette configuration, les données EUM pour les demandes client aux documents dans /www/example1 sont affichées dans le tableau de bord pour website1et les données EUM pour les demandes client aux documents dans /www/example2 sont affichées dans le tableau de bord pour website2.

Exemple 3 : Utiliser l'URL ou le nom d'hôte comme clé

Pour faire correspondre le ServerName, vous pouvez utiliser la clé url/hostname comme indiqué dans la configuration suivante:

com.instana.plugin.eum:
  instrumentation:
    jsAgentUrl: 'https://eum.instana.io/eum.min.js'
    reportingUrl: 'https://eum.example.com'
    trackSessions: true
    websites:
      - name: 'website1'
        key: 'WEBSITEKEY1'
        selector:
          matchExpressions:
            - key: 'url/hostname'
              operator: 'Equals'
              values:
                - 'www.example.com'
      - name: 'website2'
        key: 'WEBSITEKEY2'
        selector:
          matchExpressions:
            - key: 'url/hostname'
              operator: 'Equals'
              values:
                - 'www.example.org'
 

Avec cette configuration, les données EUM pour les demandes client du serveur www.example.com sont affichées dans le tableau de bord pour website1et les données EUM pour les demandes client du serveur www.example.org sont affichées dans le tableau de bord pour website2.

Remarque : dans cette configuration url/hostname , ne correspond pas au nom d'hôte de la machine sur laquelle le serveur HTTPd est exécuté, mais à l'adresse ServerName de votre définition VirtualHost dans le fichier de configuration HTTPd.

Exemple 4 : Utilisation de plusieurs clés

Pour filtrer les demandes à surveiller, vous pouvez utiliser une combinaison de clés url/path, url/filenameet url/hostname , comme illustré dans la configuration suivante:

com.instana.plugin.eum:
  instrumentation:
    jsAgentUrl: 'https://eum.instana.io/eum.min.js'
    reportingUrl: 'https://eum.example.com'
    trackSessions: true
    websites:
      - name: 'website1'
        key: 'WEBSITEKEY1'
        selector:
          matchExpressions:
            - key: 'url/hostname'
              operator: 'Equals'
              values:
                - 'www.example.com'
            - key: 'url/path'
              operator: 'StartWith'
              values:
                - '/products'
                - '/carts'
      - name: 'website3'
        key: 'WEBSITEKEY3'
        selector:
          matchExpressions:
            - key: 'url/hostname'
              operator: 'Equals'
              values:
                - 'www.example.com'
            - key: 'url/path'
              operator: 'StartWith'
              values:
                - '/offers'
                - '/employees'
      - name: 'website2'
        key: 'WEBSITEKEY2'
        selector:
          matchExpressions:
            - key: 'url/filename'
              operator: 'StartWith'
              values:
                - '/www/example2'

 

Avec cette configuration, les données EUM relatives aux requêtes des clients adressées au serveur www.example.com sont réparties entre deux sites web : l'un website1 pour les requêtes dont l' URL commence par /products ou /carts et l'autre website3 pour celles dont l' URL commence par /offers ou /employees. Les données EUM pour les demandes du client aux documents dans /www/example2 sont affichées dans le tableau de bord pour website2.

Exemples de filtrage au niveau de l'infrastructure

Les exemples suivants montrent comment définir les expressions de correspondance afin de garantir que les sites web d'un déploiement d'infrastructure spécifique soient automatiquement instrumentés.

Remarque : contrairement au filtrage des requêtes, le filtrage de l'infrastructure est facultatif.

Exemple 1 : Site web conteneurisé déployé sur un serveur

com.instana.plugin.eum:
  instrumentation:
    jsAgentUrl: 'https://eum.instana.io/eum.min.js'
    reportingUrl: 'https://eum.example.com'
    trackSessions: true
    websites:
      - name: 'containerized website'
        key: 'WEBSITEKEY1'
        selector:
          matchExpressions:
            - key: 'url/hostname'
              operator: 'Equals'
              values:
                - 'www.example.com'
            - key: 'container/name'
              operator: 'Equals'
              values:
                - 'example-app'
 

Avec cette configuration, lorsque le nom du conteneur de déploiement de site Web correspond à example-app, les données EUM pour les demandes client du serveur www.example.com sont affichées dans le tableau de bord pour containerized website.

Exemple 2 : Site web en conteneurs déployé dans l'environnement Kubernetes

com.instana.plugin.eum:
  instrumentation:
    jsAgentUrl: 'https://eum.instana.io/eum.min.js'
    reportingUrl: 'https://eum.example.com'
    trackSessions: true
    websites:
      - name: 'k8s website'
        key: 'WEBSITEKEY1'
        selector:
          matchExpressions:
            - key: 'url/hostname'
              operator: 'Equals'
              values:
                - 'www.example.com'
            - key: 'k8s/namespace'
              operator: 'Equals'
              values:
                - 'prod-example'
            - key: 'k8s/podname'
              operator: 'Equals'
              values:
                - 'example-pod'
            - key: 'k8s/containername'
              operator: 'Equals'
              values:
                - 'example-app'
 

Avec cette configuration, lorsque le site Web est déployé dans le conteneur example-app sur le pod example-pod de l'espace de nom prod-example dans l'environnement Kubernetes , les données EUM pour les demandes client du serveur www.example.com sont affichées dans le tableau de bord pour k8s website.

Utilisation du module mod_deflate d' Apache

Si la compression gzip est activée sur le serveur Apache HTTPd à l'aide du module mod_deflate, mettez à jour la configuration de Apache afin d'utiliser la fonctionnalité d'instrumentation automatique du site web.

Effectuez les 3 premières étapes comme décrit dans la section activation de l'instrumentation automatique du site web, puis effectuez les étapes suivantes :

  1. Vérifiez si le module EUM d' HTTPd (dem_module) est chargé par votre serveur HTTPd :

    httpd -M -f <HTTPd_CONF_FILE>
     
  2. Modifiez le paramètre « AddOutputFilterByType » dans votre fichier de configuration « HTTPd » afin de le placer INSTANA_DEM_OUT avant le DEFLATE filtre :

    <IfModule mod_deflate.c>
      <IfModule mod_filter.c>
        AddOutputFilterByType INFLATE;INSTANA_DEM_OUT;DEFLATE text/html text/plain text/xml text/css text/javascript
        AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
        AddOutputFilterByType DEFLATE application/rss+xml
        AddOutputFilterByType DEFLATE application/wasm
        AddOutputFilterByType DEFLATE application/xml
      </IfModule>
    </IfModule>
     
  3. Redémarrez votre serveur HTTPd en douceur.