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
- HTTPd Serveur : nécessite le capteur « HTTPd » 1.2.12 ou une version ultérieure. Cette
autoPageDetectionoption 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/pathpeuvent 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 fixeContent-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.
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:
Dans l'interface utilisateur d' Instana, accédez à la section « Sites Web et applications mobiles », puis cliquez sur « Ajouter un site Web ».
Saisissez le nom d'un site Web, puis cliquez sur « Ajouter un site Web ».
Figure 1. Instana créer un site web 
Du Tout est prêt ! , notez les valeurs pour
reportingUrl,keyetjsAgentUrl. Vous devez indiquer ces valeurs dans le fichier*instanaAgentDir*/etc/instana/configuration.yamlde configuration de l'agent Instana à l'étape 2.Figure 2. 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.
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.
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 :
Vérifiez si le module EUM d' HTTPd (dem_module) est chargé par votre serveur HTTPd :
httpd -M -f <HTTPd_CONF_FILE>Modifiez le paramètre « AddOutputFilterByType » dans votre fichier de configuration « HTTPd » afin de le placer
INSTANA_DEM_OUTavant leDEFLATEfiltre :<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>Redémarrez votre serveur HTTPd en douceur.