Automatyczna instrumentacja serwisu WWW

Automatyczna instrumentacja serwisu WWW Instana umożliwia szybkie i łatwe monitorowanie serwisu WWW przez automatyczne wstrzyknięcie agentaJavaScript do serwisu WWW z minimalnymi krokami konfiguracji i bez zmian kodu serwisu WWW.

Ta funkcja jest dostępna tylko dla serwera Apache HTTP Server od czujnika HTTPd 1.2.12.

Uwagi: Monitorowanie użytkownika końcowego (EUM) i śledzenie HTTPd można włączać i wyłączać osobno, nawet jeśli mogą one współużytkować wewnątrzprocesowy plik binarny dla monitorowanej technologii. Jeśli jednak opcja EUM jest włączona, włącz również śledzenie, aby archiwizować monitorowanie na całej trasie.

Włączanie automatycznej instrumentacji serwisu WWW

Aby włączyć automatyczną instrumentację serwisu WWW, wykonaj następujące kroki:

Krok 1: Tworzenie serwisów WWW

Aby utworzyć serwisy WWW, które mają być monitorowane, wykonaj następujące kroki:

  1. W interfejsie użytkownika Instana przejdź do opcji Serwisy WWW i aplikacje mobilne i kliknij opcję Dodaj serwis WWW.

  2. Wprowadź nazwę serwisu WWW, a następnie kliknij opcję Dodaj serwis WWW.

    Witryna instana create

  3. Od Wszystko jest gotowe! zapisz wartości parametrów reportingUrl, keyi jsAgentUrl. Należy podać te wartości w pliku konfiguracyjnym <instana-agent-dir>/etc/instana/configuration.yaml agenta Instana w kroku 2.

    Instana tworzenie strony internetowej gotowy

Krok 2: Modyfikowanie pliku konfiguracyjnego agenta

Należy zmodyfikować plik <instana-agent-dir>/etc/instana/configuration.yaml agenta Instana, w którym znajduje się serwer Apache HTTP Server . Następujące ustawienia konfiguracyjne dla automatycznej instrumentacji serwisu WWW są dostępne w pliku configuration.yaml agenta 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/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.
#    #######################################################################################################
#    # 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/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.
#        #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/hostname'        # 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: 'Equals'         # Match expression operators: 'Contains', 'ContainsIgnoreCase', 'Equals',
#                                         #  'EqualsIgnoreCase', 'StartWith', and 'StartWithIgnoreCase'.
#              values:                    # List of match expression values.
#                - 'example.com'

Postępuj zgodnie z komentarzami w każdej linii, aby skonfigurować automatyczną instrumentację strony internetowej EUM. Patrz następujący przykład:

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

W tym przykładzie konfiguracja umożliwia monitorowanie serwisów WWW dla wszystkich żądań HTTP kierowanych do hosta o nazwie example.com. Wygenerowane sygnalizatory są wysyłane do serwisu WWW demo z kluczem YOURWEBSITEKEYHERE w adresie URL raportowania https://eum.example.com.

Po zapisaniu zmodyfikowanego pliku configuration.yaml automatycznie pobierany i instalowany jest moduł HTTPd EUM. Moduł można zweryfikować, sprawdzając plik instana_tracing.conf w katalogu konfiguracyjnym HTTPd.

Krok 3: Zrestartuj serwer WWW

Jeśli parametr autoRestart jest ustawiony na wartość true w śledzeniu HTTPd, nie trzeba ręcznie restartować serwera HTTP Server Apache .

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

W przeciwnym razie należy poprawnie zrestartować serwer Apache HTTP Server , aby załadować moduł EUM.

Krok 4: Sprawdzanie poprawności na panelu kontrolnym serwisu WWW

Upewnij się, że obciążenia są obecne w serwisie WWW, a następnie przejdź do panelu kontrolnego serwisu WWW w interfejsie użytkownika Instana, aby sprawdzić, czy dane monitorowania zostały odebrane.

Wyłączanie automatycznej instrumentacji serwisu WWW

Aby wyłączyć automatyczną instrumentację serwisu WWW, należy przekształcić w komentarz lub usunąć wszystkie wiersze pliku com.instana.plugin.eum w pliku configuration.yaml .

Przykłady wyrażeń zgodności

Przykłady filtrowania żądań na wielu hostach wirtualnych

W poniższych przykładach przedstawiono sposób definiowania wyrażeń zgodności w celu zapewnienia automatycznego instrumentowania serwisów WWW w przypadku wielu hostów VirtualHost w konfiguracji HTTPd serwera Apache .

Na przykład patrz następująca definicja VirtualHost :

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>

Przykład 1

Można użyć klucza url/hostname , aby dopasować ServerName , jak pokazano w następującej konfiguracji:

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'

W tej konfiguracji dane EUM dla żądań klienta hosta www.example.com są wyświetlane w panelu kontrolnym dla systemu website1 , a dane EUM dla żądań klienta hosta www.example.org są wyświetlane w panelu kontrolnym dla systemu website2.

Przykład 2

Można również użyć klucza url/filename , aby dopasować DocumentRoot , jak to pokazano w następującej konfiguracji:

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'

W tej konfiguracji dane EUM dla żądań klientów do dokumentów w produkcie /www/example1 są wyświetlane na panelu kontrolnym dla produktu website1 , a dane EUM dla żądań klientów do dokumentów w produkcie /www/example2 są wyświetlane na panelu kontrolnym dla produktu website2.

Przykład 3

Można również użyć klucza url/path do dalszego filtrowania żądań, które mają być monitorowane, jak pokazano w następującej konfiguracji:

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'

W tej konfiguracji dane EUM dla żądań klientów hosta www.example.com są dzielone na dwa serwisy WWW: website1 dla żądań, których adres URL zaczyna się od /products lub /carts i website3 dla żądań, których adres URL zaczyna się od /offers lub /employees. Dane EUM dla żądań klientów do dokumentów w programie /www/example2 są wyświetlane na panelu kontrolnym dla produktu website2.

Przykłady filtrowania infrastruktury

W poniższych przykładach przedstawiono sposób definiowania wyrażeń zgodności w celu zapewnienia automatycznego instrumentowania serwisów WWW w konkretnym wdrożeniu infrastruktury.

Uwaga: W przeciwieństwie do filtrowania żądań, filtrowanie infrastruktury jest opcjonalne.

Przykład 1: Konteneryzowany serwis WWW wdrożony na hoście

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'

W tej konfiguracji dane EUM dla żądań klienta hosta www.example.com są wyświetlane na panelu kontrolnym dla produktu containerized website , jeśli nazwa kontenera wdrażania serwisu WWW jest zgodna z nazwą example-app.

Przykład 2: Konteneryzowany serwis WWW wdrożony w środowisku 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'

W tej konfiguracji dane EUM dla żądań klienta hosta www.example.com są wyświetlane na panelu kontrolnym dla produktu k8s website , gdy serwis WWW jest wdrożony w kontenerze example-app w zasobniku example-pod przestrzeni nazw prod-example w środowisku Kubernetes .