AWS Fargate 上の サービス のパフォーマンスを Dynatrace で監視・分析する方法


dynatrace の魅力の1つは、簡単なセットアップで、フルスタック監視できる所。ホストマシンにOneエージェントを1つインストールするだけ!

では、ホストのないFargateの場合は?

コンテナイメージの中にエージェントを埋め込みます。

以下、その設定手順になります ♪

前提条件

・ローカル環境に、Dockerクライアントバージョン17.05 以上がインストールされていること
・Dynatraceのテナントを持っていること (2週間フリートライアルできます)
・AWS Fargateが利用できること

Dockerバージョンの確認方法

docker --version

手順概要

  1. PaaSトークンの生成とコピー
  2. dockerfile の編集
  3. docker build
  4. FargateでDokcerイメージを実行

1. Environment ID と PaaSトークンの確認

Dynatraceメニュー ”Deploy Dynatrace" - "Set up PaaS integration" をクリック PaaS Token の ”Generate new token" をクリック。任意のトークン名を入力し "Generate" をクリック
ここに表示された、Environment ID と PaaSトークンを次で使いますので、この画面を開いておいてください。

2. dockerfile の編集

ターミナルやコマンドプロンプトなどで、以下を実行します。

docker login -u <environmentID> <テナントのURL>

<environmentID> は、先ほど確認したIDですが、URL先頭のID文字列でもあります。

例えば、URLが、https://abc12345.live.dynatrace.com だった場合、

docker login -u abc12345 abc12345.live.dynatrace.com

となります。

注意:Dynatrace Managedをお使いの方は、すみません、マニュアルをご参考ください

この後パスワード入力を求められますが、そのパスワードが先ほど確認した PaaSトークンになります。Loginできると”Login succeeded” と表示されます。

監視対象としたいコンテナの dockerfile を開き、FROM 以下に以下の2行を追加します。

COPY --from=<environment ID>.live.dynatrace.com/linux/oneagent-codemodules:<TECHNOLOGY> / /
ENV LD_PRELOAD /opt/dynatrace/oneagent/agent/lib64/liboneagentproc.so

<Technology>は、起動するサービスの種類(java, nodejs, php, go, nginx, apache, php)を指定しますが、何者か分からない場合は、all を使うこともできます。

例:Tomcatのサンプルアプリを起動するdockerfile

FROM tomcat:jdk11-corretto

COPY --from=<environment ID>.live.dynatrace.com/linux/oneagent-codemodules:java / /
ENV LD_PRELOAD /opt/dynatrace/oneagent/agent/lib64/liboneagentproc.so

WORKDIR /usr/local/tomcat/webapps
RUN curl -O http://tomcat.apache.org/tomcat-8.5-doc/appdev/sample/sample.war

EXPOSE 8080

CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]

3.docker build

最後にイメージを作ります。以下のコマンドを実行します。

docker build . -t <任意のイメージ名>

出来上がったイメージを、例えば以下の様にその場で実行すれば、

docker run -p 8080:8080 <作成したイメージ名>

ローカルのDockerコンテナ内で実行されているサービスをOneエージェントが監視し始めたことが、Dynatraceのコンソール上で確認できます。

このコンテナをリポジトリにpushし、Fargateから利用すれば、Fargate上で稼働するサービスのパフォーマンスを、エンドユーザーの画面上でのクリックからサービス内部のコールスタックまで、追跡できるようになります。

まとめ

上記ではコンテナにエージェントを差し込む方法について説明しましたが、FaragateでもEKSを使っているのであれば、クラスタにOneエージェントオペレータをインストールするだけで、クラスタ内で起動するサービス全てに自動でフルスタック監視が行われます。(別の記事としてポストする予定です)

コンテナ周りのエージェントのインストールは、下図のような包含関係になっていますので、システム構成に合わせて効率的にインストールできるかと思います。

最後にお知らせです!

5月15日 15時から Dynatrace ウェビナーを開催します!
今回のテーマはAWS!
AWS&Dynatraceユーザーのゲストも登場します!!
是非、ご参加ください!!!
詳細、登録はこちらから