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

Die Funktion zur automatischen Instrumentierung der Website wird nur auf den folgenden Webservern unterstützt:
  • HTTPd Server : Erfordert den Sensor „ HTTPd “ ( 1.2.12 ) oder eine neuere Version. Die autoPageDetection Option 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/path kommen für die automatische Instrumentierung in Frage. Zudem wird die automatische Einfügung von EUM-Skripten bei HTML-Antworten übersprungen, die eine Content-Length feste 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.
Hinweis: Sie können die Endbenutzerüberwachung (EUM) und die „ HTTPd “-Ablaufverfolgung separat aktivieren und deaktivieren, auch wenn sie sich möglicherweise die prozessinterne Binärdatei für die überwachte Technologie teilen. Ist EUM jedoch aktiviert, ermöglicht es auch die Nachverfolgung, um eine durchgängige Überwachung zu erreichen.

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:

  1. Gehen Sie in der Benutzeroberfläche von „ Instana “ zu „Websites & Mobile Apps “ und klicken Sie auf „Website hinzufügen “.

  2. Geben Sie einen Website-Namen ein und klicken Sie auf „Website hinzufügen “.

    Abbildung 1. Instana Website erstellen
    Instana Website erstellen
  3. Von der Alles ist bereit! notieren Sie sich die Werte für reportingUrl, keyund jsAgentUrl. Sie müssen diese Werte in Schritt 2 in der *instanaAgentDir*/etc/instana/configuration.yaml Konfigurationsdatei des Instana -Agenten angeben.

    Abbildung 2. Instana Website erstellen
    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.

Hinweis: Das 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.

Hinweis: Im Gegensatz zur Anforderungsfilterung ist die Infrastrukturfilterung optional.

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:

  1. Überprüfen Sie, ob das EUM-Modul „ HTTPd “ (dem_module) von Ihrem „ HTTPd “-Server geladen wurde:

    httpd -M -f <HTTPd_CONF_FILE>
     
  2. Ändern Sie die Einstellung „ AddOutputFilterByType “ in Ihrer Konfigurationsdatei „ HTTPd “, um vor dem DEFLATE INSTANA_DEM_OUT Filter 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>
     
  3. Starten Sie Ihren „ HTTPd “-Server ordnungsgemäß neu.