So verwenden Sie Docker zum Bereitstellen von Spring Boot und zum Herstellen einer Verbindung mit Skywalking

So verwenden Sie Docker zum Bereitstellen von Spring Boot und zum Herstellen einer Verbindung mit Skywalking

1. Übersicht

Ich studiere derzeit Skywalking. Ich plane, k8s zu verwenden, um Skywalking einzusetzen und die Anwendung im Pod mit Skywalking zu verbinden, um Service-Link-Tracking zu ermöglichen. Dieser Artikel stellt nicht die Bereitstellung und Verwendung von Skywalking in k8s vor, sondern zeigt zunächst, wie Skywalking manuell und in Docker verwendet wird. Während des gesamten Übungsprozesses habe ich viele Dokumente konsultiert und bin auf verschiedene Probleme gestoßen. Hier werde ich meinen eigenen Übungsprozess aufzeichnen, in der Hoffnung, Freunden mit denselben Bedürfnissen etwas Hilfe zu bieten.

1. Einführung ins Skywalking

SkyWalking ist ein beliebtes inländisches APM-Produkt (Application Performance Monitoring), das sich hauptsächlich an Anwendungen mit Microservices, Cloud Native und containerisierten (Docker, Kubernetes, Mesos) Architekturen richtet. Der Kern von SkyWalking ist ein verteiltes Tracing-System, das derzeit ein Top-Level-Projekt der Apache Foundation ist.

Eine ausführliche Einführung zum Skywalking finden Sie im offiziellen Dokument: Offizielle Skywalking-Website

2. Skywalking-Architektur

Logischerweise ist SkyWalking in vier Teile unterteilt: Probe, Plattform-Backend, Speicher und Benutzeroberfläche, wie in der folgenden Abbildung dargestellt:

bild.png

  • Die Sonden erfassen Daten und formatieren sie neu, damit sie den Anforderungen von SkyWalking entsprechen (verschiedene Sonden unterstützen unterschiedliche Quellen).
  • Das Plattform-Backend unterstützt Datenaggregation, -analyse und -streamverarbeitung und umfasst Traces, Metriken und Protokolle.
  • Speichergeräte speichern SkyWalking-Daten über offene/steckbare Schnittstellen. Sie können eine vorhandene Implementierung wie ElasticSearch, H2, MySQL, TiDB oder InfluxDB auswählen oder Ihre eigene entwickeln.
  • Die Benutzeroberfläche ist eine hochgradig anpassbare webbasierte Schnittstelle, die es SkyWalking-Endbenutzern ermöglicht, SkyWalking-Daten zu visualisieren und zu verwalten.

3. Wie meldet Skywalking automatisch Daten?

Bevor Sie die Link-Tracking-Konsole zum Verfolgen der Linkdaten einer Anwendung verwenden, müssen Sie die Anwendungsdaten über den Client an Link Tracking melden. SkyWalking meldet Java-Anwendungsdaten an die Link-Tracking-Konsole und muss zunächst die Tracking-Arbeit abschließen. SkyWalking unterstützt sowohl automatische Sonden (Dubbo, gRPC, JDBC, OkHttp, Spring, Tomcat, Struts, Jedis usw.) als auch manuelle Rückverfolgbarkeit (OpenTracing). Dieser Artikel stellt die Methode zum automatischen Vergraben von Punkten vor.

Das Prinzip der Skywalking-Meldedaten ist in der folgenden Abbildung dargestellt:

bild.png

2. Verwenden Sie Docker-Compose, um Skywalking-OAP-Server und Skywalking-UI zu installieren

Verwenden Sie den folgenden Befehl, um docker-compose unter Linux zu installieren:

yum install -y docker-compose

Verwenden Sie den folgenden Befehl, um skywalking-docker-compose.yaml zu erstellen:

vim skywalking-docker-compose.yaml

Hier starten wir einen standlone Container, der standardmäßig H2 zum Speichern von Daten verwendet. Wenn Sie anderen Speicher benötigen, können Sie die Einstellungen in der offiziellen Dokumentation nachlesen.
Der Inhalt der Datei skywalking-docker-compose.yaml ist wie folgt:

Version: '3'
Leistungen:
  oap:
    Bild: Apache/Skywalking-OAP-Server:8.4.0-ES6
    Containername: oap
    Neustart: immer
    Häfen:
      - 11800:11800 # Der Port, an den der Agent Daten meldet, dies ist der gRPC-Port - 12800:12800 # Der Port, an den die Benutzeroberfläche Daten liest, dies ist der HTTP-Port skywaling-ui:
    Bild: Apache/Skywalking-ui:8.4.0
    Containername: Benutzeroberfläche
    hängt ab von:
      -oap
    Links:
      -oap
    Häfen:
      -8088:8080
    Umfeld:
      – SW_OAP_ADDRESS=oap:12800

Verwenden Sie den folgenden Befehl, um mit dem Skywalking zu beginnen:

docker-compose -f skywalking-docker-compose.yaml up -d

Verwenden Sie den folgenden Befehl, um das Startprotokoll anzuzeigen:

docker-compose -f skywalking-docker-compose.yaml Protokolle -f

Besuchen Sie nach dem erfolgreichen Start: http://localhost:8088. Sie können die folgende Schnittstelle sehen:

bild.png

3. Verbinden Sie Spring Boot manuell mit Skywalking

1. Skywalking Agent herunterladen

Download-Adresse der offiziellen Skywalking-Website: http://skywalking.apache.org/downloads/
bild.png
bild.png

Ich habe apache-skywalking-apm-8.4.0.tar.gz hier heruntergeladen. Sie können es auch im Linux-System herunterladen und entpacken, indem Sie den folgenden Befehl ausführen:

wget https://archive.apache.org/dist/skywalking/8.4.0/apache-skywalking-apm-8.4.0.tar.gz

tar -zxvf apache-skywalking-apm-8.4.0.tar.gz

Die Verzeichnisstruktur nach der Dekomprimierung sieht wie folgt aus:

bild.png

Die Beschreibung des Agentenverzeichnisses lautet wie folgt:

bild.png

2. Das Spring Boot-Projekt meldet automatisch Daten

Um die Daten des Spring-Boot-Projekts zu melden, müssen Sie den Skywalking-Zugriffspunkt und den Dienstnamen konfigurieren. Die Konfiguration kann folgendermaßen erfolgen:

Ändern der Konfigurationsdatei

Öffnen Sie die zuvor heruntergeladene Datei agent/config/agent.config und suchen Sie die folgenden beiden Konfigurationen:

# Der Dienstname in der Benutzeroberfläche
agent.service_name=${SW_AGENT_NAME:Ihr_Anwendungsname}

# Backend-Dienstadressen.
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}

Konfigurieren Sie es einfach entsprechend der tatsächlichen Situation. Nachdem die Konfigurationsänderung abgeschlossen ist, können Sie das Spring-Boot-Projekt mit dem folgenden Befehl starten:

java -javaagent:<skywalking-agent-pfad> -jar spring-boot-demo

Bitte ersetzen Sie es durch den absoluten Pfad von skywalking-agent.jar im Agent-Ordner.
Beachten Sie, dass der Parameter -javaagent vor dem Parameter -jar stehen muss.

Konfiguration über Befehlsparameter

Der Dienstname kann durch Hinzufügen des Parameters -Dskywalking.agent.service_name in der Befehlszeile zum Starten der Anwendung hinzugefügt werden.
Der Skywalking-Zugriffspunkt kann den Parameter -Dskywalking.collector.backend_service in der Befehlszeile zum Starten der Anwendung hinzufügen.
Der vollständige Befehl lautet wie folgt:

java -javaagent:<skywalking-agent-path> -Dskywalking.agent.service_name=<Servicename> -Dskywalking.collector.backend_service=<Backend-Service-Adressen> -jar IhreApp.jar

Konfigurieren Sie die Startparameter in Idea

In VM options der Idea-Startkonfigurationsoptionen können wir außerdem Folgendes konfigurieren:

bild.png

Nachdem die Konfiguration abgeschlossen ist, können Sie das Projekt starten und die folgenden Informationen auf der Konsole sehen:

bild.png

Überprüfen Sie die Skywalking-Konsole, und es sind keine Daten vorhanden, da Sie zuerst auf die Schnittstelle zugreifen müssen, bevor Sie die Daten an die Konsole melden können. Indem Sie die Testschnittstelle kontinuierlich aufrufen und die Konsole erneut überprüfen, können Sie unseren Anrufstatus sehen, wie in der folgenden Abbildung dargestellt:

bild.png

4. Verwenden Sie Docker, um Spring Boot bereitzustellen und eine Verbindung zu Skywalking herzustellen

Hier ist das Basisimage von Spring Boot skywalking-base , das openjdk11 und skywalking-agent enthält. Detaillierte Informationen finden Sie im folgenden Referenzdokument.

bild.png

Der Inhalt des Dockerfile für Spring Boot ist wie folgt:

VON apache/skywalking-base:8.4.0-es6
ARBEITSVERZEICHNIS /app
KOPIEREN target/spring-demo-0.0.1-SNAPSHOT.jar spring-demo-0.0.1-SNAPSHOT.jar
ENV SW_AGENT_COLLECTOR_BACKEND_SERVICES="127.0.0.1:11800" \
    SW_AGENT_NAME="meine-Spring-Demo-Test-adfasdf"


CMD java -javaagent:/skywalking/agent/skywalking-agent.jar \
         -jar spring-demo-0.0.1-SNAPSHOT.jar

Hier werden Umgebungsvariablen verwendet, um benutzerdefinierte Parameter für Skywalking festzulegen. Weitere Konfigurationen von Umgebungsvariablen finden Sie in der Datei agent/config/agent.config .

Erstellen Sie das Image mit dem folgenden Befehl:

Docker-Build -t Spring-Boot-Demo.

Starten Sie das Image mit dem folgenden Befehl:

docker run --rm -p 8080:8080 spring-boot-demo

Nach dem erfolgreichen Start können Sie auf die Testadresse zugreifen und zur Skywalking-Konsole gehen, um zu prüfen, ob Daten gemeldet wurden. Wenn keine Daten gemeldet wurden, müssen wir das Protokoll des Skywalking-Agenten überprüfen. Sie können die Fehlerinformationen in agent/logs/skywalking-api.log überprüfen.

Referenzdokumentation

Offizielle Skywalking-Dokumentation
Apache SkyWalking Docker-Dateien
Melden Sie Java-Anwendungsdaten über SkyWalking

Dies ist das Ende dieses Artikels über die Verwendung von Docker zum Bereitstellen von Spring Boot und zum Herstellen einer Verbindung mit Skywalking. Weitere relevante Inhalte zum Bereitstellen von Spring Boot durch Docker zum Herstellen einer Verbindung mit Skywalking finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • So verpacken Sie das Docker-Image, übertragen es auf den Remote-Server und stellen es auf k8s bereit
  • So stellen Sie K8s in Docker bereit
  • Implementierung der K8S-Bereitstellung eines Docker-Containers
  • Docker-Lernhinweise zur K8S-Bereitstellungsmethode
  • Skywalking: Containerisierte Bereitstellung von Docker-Images zum Erstellen von K8s vom Test bis zur Verfügbarkeit

<<:  Tools zum Konvertieren statischer Websites in RSS

>>:  Die Verwendung von FrameLayout in sechs Layouts

Artikel empfehlen

So implementieren Sie das MySQL-Umschalten des Datenspeicherverzeichnisses

So implementieren Sie das MySQL-Umschalten des Da...

So stellen Sie mit C++ eine Verbindung zu MySQL her

C++ stellt zu Ihrer Information eine Verbindung z...

Der gesamte Prozessdatensatz der rekursiven Komponentenkapselung von Vue3

Inhaltsverzeichnis Vorwort 1. Rekursive Komponent...

Detaillierte Erklärung des Abstandsproblems zwischen IMG-Tags

Grundlegende Analyse des IMG-Tags: In HTML5 beste...

So führen Sie SCSS in ein React-Projekt ein

Laden Sie zuerst die Abhängigkeiten herunter Garn...

Perfekte Lösung für das Problem des CSS-Hintergrundbildpfads im Webpack

Innerhalb des Style-Tags der Vue-Komponente befin...

Eine kurze Analyse der parallelen WriteSet-Replikation von MySQL

【Historischer Hintergrund】 Ich arbeite seit drei ...

Website User Experience Design (UE)

Ich habe gerade einen von JunChen verfassten Beitr...

Beispielcode für HTML-Formularkomponente

HTML-Formulare werden verwendet, um verschiedene ...

Transkript der Implementierung berechneter Vue-Eigenschaften

In diesem Artikel wird das Implementierungszeugni...