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 すりガラス効果

推薦する

Nexus を使用して jar パッケージをプライベート サーバーに追加する方法

なぜ Nexus プライベート サーバーを構築する必要があるのでしょうか。その理由は非常に簡単です。...

MySQL の複合インデックスはどのように機能しますか?

目次背景複合インデックスを理解する左端一致原則フィールド順序の影響複合インデックスは単一のインデック...

HTML の 2 つのタブ ナビゲーション間の競合の解決方法

まず問題の説明から始めましょう:同じページで、1 つのタブに float:left が必要で、もう ...

弾力性のあるナビゲーション効果を実現するJavaScript

この記事では、弾性ナビゲーション効果を実現するためのJavaScriptの具体的なコードを参考までに...

iptables の再起動後に Docker の iptables ルールの完全なプロセスが失われる

原因と結果1. ansibleコマンドを使用してジャンプサーバー上のマシンBをテストすると、次のエラ...

MySql データベースにおける単一テーブル クエリと複数テーブル結合クエリの効率の比較

この間、プロジェクトに取り組んでいるときに、データ間の接続が非常に複雑なモジュールに遭遇しました。テ...

MySqlのインストールとログインの詳細な説明

LinuxにMySQLがすでにインストールされているかどうかを確認する sudo service m...

MySQL で datetime 型のデフォルト値を設定する方法

Navicat クライアントを通じてデフォルトの日時値を変更する際に問題が発生しました。データベース...

JavaScript 日付ツールの概要

ユーティリティ = { /** * 死亡年ですか? * @return {Boolse} true...

MySQLは集計関数を使用して単一のテーブルをクエリします

集計関数データセットに作用し、そのデータセットの値を返します。 count: 統計結果のレコード数。...

Msyql トランザクション分離について知っておくべきこと

トランザクションとは何ですか?トランザクションは、データベース管理システムの実行プロセスにおける論理...

CSS 画面サイズ適応実装例

CSS 画面サイズの適応を実現するには、まず CSS3 @media メディア クエリを導入する必要...

Vue+element はローカル検索機能付きのドロップダウン メニューを実装します

必要:バックエンドは配列オブジェクトを返し、それがフロントエンドで配列に結合されます。配列は名前に従...

Vue3.0はチェックボックスコンポーネントのカプセル化を実装します

この記事では、チェックボックスコンポーネントのカプセル化を実装するためのvue3.0の具体的なコード...

React Native JSIはRNとネイティブ通信のサンプルコードを実装します

目次JSIとはJSIの違いiOS で JSI を使用するiOS 設定RN側の構成jsはパラメータ付き...