dockerを使用してTomcatをデプロイし、Skywalkingに接続する

dockerを使用してTomcatをデプロイし、Skywalkingに接続する

1. 概要

前回の記事では、docker を使用して Spring Boot をデプロイし、Skywalking に接続する方法を紹介し、docker-compose を使用して Skywalking を構築する方法について説明しました。この記事では、Skywalking の構築方法は紹介しません。ここでは、主に、docker を使用して Tomcat をデプロイし、サービス リンクの追跡のために Skywalking に接続する方法について記録します。

2. dockerを使用してTomcatをデプロイし、Skywalkingに接続する

以下は、Tomcat アプリケーションを Skywalking 公式 Web サイトに接続する方法の説明です。

詳細については、公式ウェブサイトをご覧ください:スカイウォーキングエージェント公式ウェブサイト

Linux の Tomcat 7 / Tomcat 8
tomcat/bin/catalina.shの最初の行に以下を追加します。

CATALINA_OPTS="$CATALINA_OPTS -javaagent:<skywalking-agent-path>"; エクスポート CATALINA_OPTS

Windows の Tomcat 7 / Tomcat 8
tomcat/bin/catalina.bat の最初の行に以下を追加します。

"CATALINA_OPTS=-javaagent:<skywalking-agent-path>" を設定します。

JARファイルまたはSpring Boot
アプリケーションの起動コマンド ラインに-javaagentパラメータを追加します。

java -javaagent:<skywalking-agent-path> -jar yourApp.jar

注意: -javaagentパラメータは -jar パラメータの前に指定する必要があります。

tomcat のデプロイには docker を使用しているため、 tomcat/bin/catalina.shファイルを変更する予定はありません。tomcat tomcat/bin/catalina.shファイルを確認すると、次の記述があります。

画像.png

下の図では、 setenv.shを読み取るスクリプトが定義されています。

画像.png

つまり、 catalina.shスクリプトで変数を設定しないでください。カスタム変数を分離するには、カスタム環境変数をCATALINA_BASE/bin/setenv.shファイルに配置する必要があります。さらに、テストの結果、環境変数メソッドを直接使用して設定できることがわかりました。以下では、両方の方法の構成について説明します。

1. setenv.shファイルにカスタム変数を記述する

まず、Skywalking エージェントをダウンロードする必要があります。エージェントのダウンロードについては、この記事の冒頭の記事を参照してください。次に、エージェントをアクセス可能なディレクトリに配置します。ここではテストを行っているため、エージェント ディレクトリを Dockerfile と同じディレクトリにコピーしました。Dockerfile Dockerfile内容は次のとおりです。

tomcatから

ラベル maintaner="xiniao"

コピーエージェント /usr/skywalking/agent

ワークディレクトリ /usr/local/tomcat/bin

実行 echo 'CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/skywalking/agent/skywalking-agent.jar";' > setenv.sh

ENV SW_AGENT_NAME="my-spring-demo" \
    SW_AGENT_COLLECTOR_BACKEND_SERVICES="127.0.0.1:11800"

ワークディレクトリ /usr/local/tomcat/webapps/ROOT

コピー target/my-spring-demo.war my-spring-demo.war

jar -xf my-spring-demo.war を実行します。

スカイウォーキング エージェントのその他の構成については、環境変数で定義できます。たとえば、ここでは、スカイウォーキングに表示されるサービス名をENV SW_AGENT_NAME="my-spring-demo"として指定し、スカイウォーキングのバックエンド サービス アドレスSW_AGENT_COLLECTOR_BACKEND_SERVICES="127.0.0.1:11800"指定します。スカイウォーキング UI にアクセスすると、次の内容が表示されます。

画像.png

2. 環境変数を使用してスカイウォーキングエージェントのパスを指定する

Dockerfile詳細な内容は次のとおりです。

tomcatから

ラベル maintaner="xiniao"

コピーエージェント /usr/skywalking/agent

ENV CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/skywalking/agent/skywalking-agent.jar" \
    SW_AGENT_NAME="my-spring-demo-env" \
    SW_AGENT_COLLECTOR_BACKEND_SERVICES="127.0.0.1:11800"

ワークディレクトリ /usr/local/tomcat/webapps/ROOT

コピー target/my-spring-demo.war my-spring-demo.war

jar -xf my-spring-demo.war を実行します。

イメージをビルドするには、次のコマンドを使用します。

次のコマンドを実行して、docker build -t my-spring-demo を実行します。

次のコマンドを使用してコンテナを実行します。

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

Skywalking UI にアクセスすると、次のように監視情報が表示されます。

画像.png

要約する

この記事では主に、docker を使用して tomact をデプロイし、skywalking に接続する方法を紹介します。インターネット上に関連情報があまりないため、必要な人に少しでも役立つようにここに記録します。ここでもまだいくつか問題があります。たとえば、イメージ ファイルに skywalking エージェントを直接入力するのは使いにくいです。tomcat ベース イメージをカスタマイズし、ベース イメージに skywalking エージェントを入力できると思います。このようにして、すべての tomcat がこのベース イメージを参照してイメージを構築し、skywalking に接続できます。デプロイに k8s を使用する場合、ポッド内に初期コンテナを定義できます。ポッドが起動したら、初期コンテナ内の skywalking エージェントをアプリケーションにコピーします。次の記事では、k8s で skywalking を使用する方法と、ポッドアプリケーションを侵入せずに skywalking に接続する方法を紹介します。

これで、docker を使用して tomcat をデプロイし、skywalking に接続する方法についての記事は終了です。docker を使用して tomcat をデプロイし、skywalking に接続する方法についての関連コンテンツをさらにご覧になりたい場合は、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker を使用してプロジェクトを迅速にデプロイするための Spring Boot の手順を完了します。
  • SpringbootはDockerデプロイメントを統合し、Dockerイメージを構築する2つの方法を実装します。
  • Docker を使用して Spring Boot アプリケーションをデプロイする例
  • SpringbootプロジェクトのDockerデプロイメント実践の詳細な説明
  • Dockerfile を使用して SpringBoot プロジェクトをデプロイする方法
  • docker を使用して Spring Boot をデプロイし、Skywalking に接続する方法

<<:  ウェブデザインとは何か

>>:  CSS3 すりガラス効果

推薦する

フィボナッチ数列のJavaScript出力を実装する方法

目次トピック分析する基本的な解決策基本的な再帰再帰最適化要約するトピック私たちが答えなければならない...

JavaScript における var と let の違い

目次1. スコープはさまざまな方法で表現されます2. 変動昇進と非昇進の違い3. 一時的なデッドゾー...

jQuery カスタム虫眼鏡効果

この記事の例では、jQueryのカスタム虫眼鏡効果の具体的なコードを参考までに共有しています。具体的...

MySQL クエリにおける LIMIT の大きなオフセットによって引き起こされるパフォーマンス低下の分析

序文MySQLクエリはselectコマンドを使用し、limitとoffsetパラメータを使用して、指...

MySQL 8.0.18 はクローンプラグインを使用して MGR 実装を再構築します

3 ノード MGR 内の 1 つのノードに異常があり、MGR クラスターに再度追加する必要があるとし...

意外と知らないJSのループ速度テストのいろいろを徹底解説

目次序文1. forループ2. whileループとdo-whileループ3. forEach、map...

カルーセルバナーの自動回転効果を実現する純粋な CSS

さっそくコードを見てみましょう * { マージン: 0; パディング: 0; } 。容器 { マージ...

MySql でデータの重複挿入を回避する 3 つの方法

序文MySql で主キーの競合または一意キーの競合が発生した場合、挿入方法に応じてエラーを回避するた...

httpsウェブサイトにリファラーhttpsとhttpジャンプリファラーを送信させる方法

この記事では、HTTP プロトコルのリファラーのメタデータ パラメータの提案について説明します。この...

サーバーのDockerコンテナへのvscodeリモート接続を設定する方法

目次画像をプルするイメージを実行する(コンテナを生成する)コンテナを起動するコンテナに入るすべてのミ...

MySQLの論理アーキテクチャに関する深い理解

MySQL は現在、ほとんどの企業や事業体で使用されているデータベースです。MySQL が使用される...

CSS でレスポンシブ レイアウトを実装する方法

CSS でレスポンシブ レイアウトを実装するレスポンシブレイアウトは非常にハイエンドで難しいように思...

Nginx ロードバランシングとは何か、そしてそれをどのように設定するか

負荷分散とは負荷分散は主に、専用のハードウェア デバイスまたはソフトウェア アルゴリズムによって実現...

MySQL スロークエリログの役割と公開

序文MySQL スロー クエリ ログは、MySQL が提供するログ レコードの一種です。これは、応答...

Nginx で IP と IP 範囲をブロックする方法

前面に書かれたNginx は単なるリバース プロキシおよび負荷分散サーバーではなく、電流制限、キャッ...