Automatische Instrumentierung der Website
Die Website „ Instana “ fügt automatisch den „ JavaScript “-Agenten in die Website ein, um die Website-Überwachung zu ermöglichen. Diese automatische Instrumentierung erfordert nur minimale Konfigurationsschritte und keine Änderungen am Website-Code.
Weitere Informationen finden Sie unter „ JavaScript -Agent “.
Unterstützungsinformationen
- HTTPd Server : Erfordert den Sensor „ HTTPd “ ( 1.2.12 ) oder eine neuere Version. Die
autoPageDetectionOption ist für den Sensor „ HTTPd “ ( 1.2.19 ) und den Sensor „EUM“ ( 1.0.5 ) verfügbar. - Tomcat-Server (auf Jakarta-Basis): Nur die Standard-Inhaltstypen und der Selektor „ matchExpressions “ mit dem Schlüssel „“
url/pathkommen für die automatische Instrumentierung in Frage. Zudem wird die automatische Einfügung von EUM-Skripten bei HTML-Antworten übersprungen, die eineContent-Lengthfeste Größe angeben, da eine Änderung des Antworttextes die angegebene Inhaltsgröße ungültig macht. Diese Funktion ist unter Java Tracer 2.0.9 verfügbar.
Automatische Instrumentierung der Website aktivieren
Führen Sie die folgenden Schritte aus, um die automatische Instrumentierung der Website zu aktivieren:
Schritt 1: Websites erstellen
Führen Sie die folgenden Schritte aus, um die Websites zu erstellen, die Sie überwachen wollen:
Gehen Sie in der Benutzeroberfläche von „ Instana “ zu „Websites & Mobile Apps “ und klicken Sie auf „Website hinzufügen “.
Geben Sie einen Website-Namen ein und klicken Sie auf „Website hinzufügen “.
Abbildung 1. Instana Website erstellen 
Von der Alles ist bereit! notieren Sie sich die Werte für
reportingUrl,keyundjsAgentUrl. Sie müssen diese Werte in Schritt 2 in der*instanaAgentDir*/etc/instana/configuration.yamlKonfigurationsdatei des Instana -Agenten angeben.Abbildung 2. Instana Website erstellen 
Schritt 2: Die Konfigurationsdatei des Agenten ändern
Ändern Sie die *instanaAgentDir*/etc/instana/configuration.yaml Datei des Instana -Agenten, in der sich die Datei „ Apache HTTP Server “ befindet. Die folgenden Konfigurationseinstellungen für die automatische Instrumentierung von Websites sind in der configuration.yaml Datei des Instana -Agenten verfügbar:
#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.
# - '/'
Folgen Sie den Kommentaren der einzelnen Zeilen, um die automatische Instrumentierung der EUM-Website zu konfigurieren. Sehen Sie sich das folgende Beispiel an:
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'
In diesem Beispiel ermöglicht die Konfiguration die Überwachung der Website für alle HTTP -Anfragen an den Hostnamen example.com. Die generierten Beacons werden zusammen mit dem Schlüssel an die demo Website YOURWEBSITEKEYHERE unter der Berichts- URL gesendet https://eum.example.com.
Nachdem Sie die geänderte configuration.yaml Datei gespeichert haben, wird das EUM-Modul „ HTTPd “ automatisch heruntergeladen und installiert. Sie können das Modul überprüfen, indem Sie die instana_tracing.conf Datei im Konfigurationsverzeichnis „ HTTPd “ einsehen.
Schritt 3: Starten Sie den Webserver neu
Wenn in der Protokollierung von „ HTTPdautoRestarttrue “ auf gesetzt ist, müssen Sie den Dienst „ Apache HTTP Server “ nicht manuell neu starten.
com.instana.plugin.httpd:
tracing:
autoRestart: true
Andernfalls starten Sie den „ Apache HTTP Server “ ordnungsgemäß neu, um das EUM-Modul zu laden.
Schritt 4: Überprüfen Sie dies im Dashboard der Website
Stellen Sie sicher, dass die Workloads auf der Website vorhanden sind. Go zum Dashboard der Website in der Benutzeroberfläche von „ Instana “, um zu überprüfen, ob die Überwachungsdaten empfangen werden.
Automatische Instrumentierung der Website deaktivieren
Um die automatische Instrumentierung der Website zu inaktivieren, müssen Sie alle Zeilen für com.instana.plugin.eum in der Datei configuration.yaml auf Kommentar setzen oder entfernen.
Beispiele für Ausdrucksübereinstimmungen
Beispiele für die Filterung von Anfragen auf mehreren virtuellen Hosts
Die folgenden Beispiele zeigen, wie Sie die Abgleichausdrücke definieren, um sicherzustellen, dass die Websites automatisch erfasst werden, wenn Sie mehrere VirtualHost in der Konfiguration von Apache HTTPd haben.
Sehen Sie sich beispielsweise die folgende VirtualHost -Definition an:
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>
Beispiel 1: URL/Pfad als Schlüssel verwenden
Um die zu überwachenden Anforderungen zu filtern, können Sie den Schlüssel url/path wie in der folgenden Konfiguration gezeigt verwenden:
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'
Bei dieser Konfiguration werden die EUM-Daten für Client-Anfragen mit einem /carts Pfad „ URL “, der mit /products oder beginnt, auf dem Dashboard für website1angezeigt. Die EUM-Daten für Client-Anfragen mit einem Pfad „ URL “, der mit /offers oder /employees beginnt, werden auf dem Dashboard für website2angezeigt.
Beispiel 2: URL/Dateiname als Schlüssel verwenden
Sie können auch den Schlüssel url/filename verwenden, um die DocumentRoot abzugleichen, wie in der folgenden Konfiguration gezeigt:
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'
Bei dieser Konfiguration werden die EUM-Daten für Clientanforderungen an die Dokumente in /www/example1 im Dashboard für website1angezeigt und die EUM-Daten für Clientanforderungen an die Dokumente in /www/example2 im Dashboard für website2.
Beispiel 3: URL/Hostname als Schlüssel verwenden
Für den Abgleich der ServerNamekönnen Sie den Schlüssel url/hostname wie in der folgenden Konfiguration gezeigt verwenden:
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'
Bei dieser Konfiguration werden die EUM-Daten für Clientanforderungen des Servers www.example.com im Dashboard für website1und die EUM-Daten für Clientanforderungen des Servers www.example.org im Dashboard für website2angezeigt.
url/hostname in dieser Konfiguration ist nicht der Hostname des Hosts, auf dem der Server „ HTTPd “ läuft, sondern die Adresse ServerName, die in der Konfigurationsdatei HTTPd unter der Definition VirtualHost angegeben ist.Beispiel 4: Verwendung mehrerer Schlüssel
Zum Filtern der zu überwachenden Anforderungen können Sie eine Kombination aus url/path-, url/filename-und url/hostname -Schlüsseln verwenden, wie in der folgenden Konfiguration dargestellt:
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'
Bei dieser Konfiguration werden die EUM-Daten für www.example.com Client-Anfragen an den Server auf zwei Websites aufgeteilt: website1 für Anfragen, deren URL mit /products oder /carts beginnt, und website3 für Anfragen, deren URL mit /offers oder /employeesbeginnt. Die EUM-Daten für Clientanforderungen an die Dokumente in /www/example2 werden im Dashboard für website2angezeigt.
Beispiele für die Infrastrukturfilterung
Die folgenden Beispiele zeigen, wie die Abgleichsausdrücke definiert werden müssen, um sicherzustellen, dass die Websites einer bestimmten Infrastrukturbereitstellung automatisch instrumentiert werden.
Beispiel 1: Containerisierte Website, die auf einem Host bereitgestellt wird
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'
Wenn bei dieser Konfiguration der Name des Websitebereitstellungscontainers mit example-appübereinstimmt, werden die EUM-Daten für Clientanforderungen des Servers www.example.com im Dashboard für containerized websiteangezeigt.
Beispiel 2: Containerisierte Website, die in der Umgebung „ Kubernetes “ bereitgestellt wurde
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'
Wenn bei dieser Konfiguration die Website im Container example-app im Pod example-pod des prod-example -Namensbereichs in der Kubernetes -Umgebung bereitgestellt wird, werden die EUM-Daten für Clientanforderungen des Servers www.example.com im Dashboard für k8s websiteangezeigt.
Arbeiten mit dem Modul „ Apache “ (mod_deflate)
Wenn die gzip-Komprimierung auf dem Server Apache HTTPd mit dem Modul mod_deflate aktiviert ist, passen Sie die Konfiguration von Apache an, um die automatische Instrumentierungsfunktion der Website zu nutzen.
Führen Sie die ersten 3 Schritte aus, wie im Abschnitt Aktivierung der automatischen Website-Instrumentierung beschrieben, und führen Sie dann die folgenden Schritte aus:
Überprüfen Sie, ob das EUM-Modul „ HTTPd “ (dem_module) von Ihrem „ HTTPd “-Server geladen wurde:
httpd -M -f <HTTPd_CONF_FILE>Ändern Sie die Einstellung „ AddOutputFilterByType “ in Ihrer Konfigurationsdatei „ HTTPd “, um vor dem
DEFLATEINSTANA_DEM_OUTFilter zu platzieren:<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>Starten Sie Ihren „ HTTPd “-Server ordnungsgemäß neu.