Detaillierte Schritte zur Verwendung von Arthas in einem Docker-Container

Detaillierte Schritte zur Verwendung von Arthas in einem Docker-Container

Was kann Arthas für Sie tun?

Arthas ist das Open-Source-Java-Diagnosetool von Alibaba, das bei Entwicklern sehr beliebt ist.

Wenn Sie bei den folgenden Problemen nicht weiterwissen, kann Arthas Ihnen bei der Lösung helfen:

Aus welchem ​​JAR-Paket wird diese Klasse geladen? Warum werden verschiedene Arten von Ausnahmen gemeldet? Warum wird der von mir geänderte Code nicht ausgeführt? Liegt es daran, dass ich mich nicht verpflichtet habe? Falsche Filiale? Wenn ich auf ein Problem stoße und es nicht online debuggen kann, besteht dann die einzige Möglichkeit darin, Protokolle hinzuzufügen und sie erneut zu veröffentlichen? Es liegt ein Problem bei der Datenverarbeitung eines bestimmten Benutzers online vor, das jedoch nicht online behoben und nicht offline reproduziert werden kann! Gibt es eine globale Ansicht der Systemleistung? Gibt es eine Möglichkeit, den Ausführungsstatus der JVM in Echtzeit zu überwachen? Wie lassen sich Anwendungs-Hotspots schnell lokalisieren und Flammendiagramme erstellen? Wie findet man eine Instanz einer Klasse direkt aus der JVM?

Arthas unterstützt JDK 6+, Linux/Mac/Windows, verwendet den Befehlszeilen-Interaktionsmodus und bietet umfangreiche Tab -Autovervollständigungsfunktionen, um die Problemlokalisierung und -diagnose weiter zu erleichtern.

Spezifische Inhalte finden Sie in der offiziellen Dokumentation. Jeder Befehl enthält eine detaillierte Beschreibung: https://arthas.aliyun.com/doc/

Dieser Artikel stellt nicht die Verwendung von Arthas vor. Wir möchten hier darüber sprechen, wie man Arthas in unserem Docker-Container verwendet.

Da es ziemlich umständlich ist, arthas in einem Docker-Container zu verwenden, müssen wir die Container-ID finden, das gesamte arthas-Verzeichnis in den Container kopieren, den Container aufrufen, zum Benutzer des Zieldienstes wechseln und arthas starten. Diese Schritte sind für viele Studenten, die mit Linux-Befehlen und Docker-Befehlen nicht vertraut sind, nicht benutzerfreundlich.

Daher habe ich ein Skript geschrieben, das die obigen Schritte direkt ersetzen kann. Der Effekt ist in der folgenden Abbildung dargestellt:

Einfach den kompletten Servicenamen (hier den IMAGE-Namen des Containers) nach dem Skript eintragen und schon kann es genutzt werden. Einfach und bequem.

Verwendung: Zuerst müssen Sie arhas-bin.zip auf dem Linux-Server entpacken. Die entpackte Version ist die Arthas-Software. Stellen Sie sicher, dass Docker auf Ihrem Computer installiert ist

Download-Verzeichnis von arhas-bin.zip: https://github.com/alibaba/arthas/releases

Legen Sie das Skript arthasDocker.sh in das soeben entpackte Arthas-Verzeichnis, öffnen Sie das Skript, bearbeiten Sie die Variable ARTHAS_PATH und ändern Sie sie in das Verzeichnis, in dem Sie Arthas abgelegt haben.

Inhalt des Skripts arthasDocker.sh:

#!/bin/bash
#
# Autor: dijia478
# Datum: 20.8.2020 18:14:38
# desc: Dieses Skript muss im Verzeichnis arthas platziert und zusammen mit dem gesamten Verzeichnis in den Docker-Container kopiert werden. Der Hauptzweck besteht darin, den Benutzer des Zieldienstes im Container zu wechseln und Arthas zu starten

echo "Starten Sie die Abfrage der Prozess-ID und des Benutzers des Zieldienstes …"
PID=`ps -eo pid,Benutzer=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -o args | grep java | grep -v grep | awk '{print $1}'`
echo "Die Prozess-ID des Zieldienstes ist ${PID}"
USER=`ps -eo pid,user=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -o args | grep java | grep -v grep | awk '{print $2}'`
echo "Der Benutzer des Zieldienstes ist ${USER}"

wenn [[ ! -d "/home/${USER}" ]]
Dann
  mkdir -p /home/${USER}
  echo "Verzeichnis /home/${USER} erstellen"
fi
chmod 777 /home/${USER}

echo "Beginnen Sie mit dem Benutzerwechsel und starten Sie Arthas …"
# Der folgende Arthas-Pfad muss geändert werden und sollte mit dem startArthas.sh-Skript ARTHAS_PATH="/opt/arthas" übereinstimmen.
su ${USER} -c "java -jar ${ARTHAS_PATH}/arthas-client.jar 127.0.0.1 3658 -c 'stop'"
su ${USER} -c "java -jar ${ARTHAS_PATH}/arthas-boot.jar ${PID}"

Legen Sie das Skript startArthas.sh auf dem Linux-Server ab. Es wird empfohlen, es im Verzeichnis ~ abzulegen. Öffnen Sie das Skript, bearbeiten Sie die Variable ARTHAS_PATH und ändern Sie sie in das Verzeichnis, in dem Ihr Arthas abgelegt ist. Geben Sie dem Skript dann die Berechtigung zur Ausführung

Inhalt des Skripts startArthas.sh:

#!/bin/bash
#
# Autor: dijia478
# Datum: 18.9.2020 10:36:27
# desc: Der Hauptzweck dieses Skripts besteht darin, das Diagnosetool Arthas zu starten, um einen Java-Dienst in einem Docker zu diagnostizieren, wenn [[ ${1} == '' ]]
Dann
  echo "Bitte wählen Sie einen Dienst aus:"
  sudo docker ps | awk 'NR>1 {print $2}'
  Ausfahrt 0
fi

echo "Suche nach Container für Dienst ${1} wird gestartet …"
DOCKER_LIST=`sudo docker ps | awk 'NR>1 {print $2}'`
FLAGGE=0
für i in ${DOCKER_LIST[@]}
Tun
  wenn [[ ${i} == ${1} ]]
  Dann
    FLAG=1
    brechen
  fi
Erledigt

wenn [[ ${FLAG} == 0 ]]
Dann
  DOCKER_NAME=`sudo docker ps | awk 'NR>1 {print $2}' | grep ${1}`
  wenn [[ ${DOCKER_NAME} == '' ]]
  Dann
    echo "Der Container für diesen Dienst wurde nicht gefunden. Bitte wählen Sie den Dienst erneut aus:"
    sudo docker ps | awk 'NR>1 {print $2}'
  anders
    echo "Bitte geben Sie den vollständigen Namen des Dienstes ein:"
    sudo docker ps | awk 'NR>1 {print $2}' | grep ${1}
  fi

anders
  ID=`sudo docker ps --filter ancestor=${1} | awk '{print $1}' | sed -n '2p'`
  echo "Container ${ID} gefunden"

  echo "Beginnen Sie mit dem Kopieren von Arthas in den Container …"
  # Der folgende Arthas-Pfad muss geändert werden und sollte mit dem arthasDocker.sh-Skript ARTHAS_PATH="/opt/arthas" übereinstimmen.
  sudo docker exec -it ${ID} /bin/bash -c "rm -rf ${ARTHAS_PATH}"
  sudo docker cp ${ARTHAS_PATH} ${ID}:${ARTHAS_PATH}
  echo "Kopieren abgeschlossen"

  echo "Wird gleich in den Container eintreten..."
  sudo docker exec -it ${ID} /bin/bash -c "bash ${ARTHAS_PATH}/arthasDocker.sh"
fi

Führen Sie abschließend einfach das Skript startArthas.sh aus.

© Copyright-Erklärung Das Urheberrecht des Artikels liegt beim Autor. Nachdruck ist willkommen, allerdings muss der Originallink angegeben werden, andernfalls behalten wir uns das Recht vor, rechtliche Schritte einzuleiten. ENDE

Dies ist das Ende dieses Artikels zur Verwendung von Arthas in Docker-Containern. Weitere Informationen zur Verwendung von Arthas mit Docker 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:
  • Der Lambda-Ausdruck führt dazu, dass Arthas nicht neu definiert werden kann

<<:  Erfahrungsaustausch über die Priorität des Ladens von CSS-Stilen

>>:  MySQL 8.0 Upgrade-Erfahrung

Artikel empfehlen

Lösung für Win10 ohne Hyper-V

Suchen Sie immer noch nach einer Möglichkeit, Hyp...

Tutorial zur Installation von lamp-php7.0 in einer Centos7.4-Umgebung

Dieser Artikel beschreibt, wie lamp-php7.0 in ein...

So verwenden Sie vs2019 für die Linux-Remote-Entwicklung

Normalerweise gibt es bei der Entwicklung von Lin...

Bringen Sie Ihnen kostenlos bei, wie Sie AWS-Serverressourcen nutzen

AWS – Amazons Cloud-Computing-Serviceplattform Ic...

Grafisches Tutorial zur Installation von JDK1.8 unter CentOS7.4

Schritte zur Linux-Installation von JDK1.8 1. Übe...

Einführung und Verwendung des Javascript-Generators

Was ist ein Generator? Ein Generator ist ein Code...

Einige Vorschläge zur Lesbarkeit des Vue-Codes

Inhaltsverzeichnis 1. Nutzen Sie Komponenten sinn...

MySQL implementiert eine Lösung ähnlich der Oracle-Sequenz

MySQL implementiert Oracle-ähnliche Sequenzen Ora...

Vue implementiert mehrere Ideen zum Themenwechsel

Inhaltsverzeichnis Themen dynamisch ändern Die er...