LoginSignup
0
0

More than 5 years have passed since last update.

Linux Docker コンテナに New Relic .NET Coreエージェントをインストールする方法

Posted at

公式ドキュメントに記載されていますが、まず.NET CoreおよびDockerコンテナ利用時の前提条件を確認しましょう。

.NET Coreエージェントの互換性と要件
Install on Docker container

主だった条件としては次のものがあります。

  • .NET Core 2.0以降。ただし、tiered complicationは無効化されます。
  • ASP.NET CoreでKestrelで動かす必要があります。Kestrelでない場合はカスタムインストゥルメンテーションを行う必要がありますが、こちらは別の記事にしたいと思います。
  • エージェントはアプリと同じコンテナにインストール必要があります
  • 必須の環境変数を設定する必要があります。この例ではDockerfileに全て指定していますが、起動時でも構いません。
  • エージェントのファイルは.NET Coreプロセスからアクセスできる必要があります
  • ブラウザモニタリングは自動では有効化されません。こちらも別の記事で説明します。
  • (上のドキュメントにはないですが).NET Core Profile APIを利用しているため、Profile APIを使う他のソフトウェアを同時に使うことはできません。Profile APIを使うものは、例えばスナップショットデバッガーがあります。

エージェントは https://download.newrelic.com/dot_net_agent/latest_release/ からディストリに適したインストーラー形式を選び、インストールします。Microsoftが提供しているASP.NET Coreのコンテナにインストールする場合のDockerfileは次のようになります。

Dockerfile
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base
ENV CORECLR_ENABLE_PROFILING=1 \
CORECLR_PROFILER={36032161-FFC0-4B61-B559-F6C5D41BAE5A} \
CORECLR_NEWRELIC_HOME=/usr/local/newrelic-netcore20-agent \
CORECLR_PROFILER_PATH=/usr/local/newrelic-netcore20-agent/libNewRelicProfiler.so \
NEW_RELIC_LICENSE_KEY=<New Relicライセンスキー> \
NEW_RELIC_APP_NAME=<アプリの名前>
ARG NewRelic=./newrelic
COPY $NewRelic ./newrelic

RUN dpkg -i ./newrelic/newrelic-netcore20-agent*.deb
COPY newrelic.config /usr/local/newrelic-netcore20-agent/

WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS publish
WORKDIR /src
COPY . .
RUN dotnet publish <csprojファイルのパス> -c Release -o /app

FROM base As final
WORKDIR /app
COPY --from=publish /app /app
ENTRYPOINT [ "dotnet", "<publishしたdllのファイル名>" ]

ディストリはDebianベースなので*.debのインストーラーをDockerfileのあるディレクトリの.newrelicディレクトリに配置しています。Dockerのビルドの制約上、Dockerfileおよびそれ以下のディレクトリと別の場所にあるファイルはCOPYできないので注意してください。newrelic.configを編集したい場合はインストールした後に生成されるデフォルトのconfifgを上書きして対応します。この場合、このDockerイメージ内全体に適用されます。例えば、ログレベルと出力先を変更したい場合は以下のように変更したnewrelic.configを用意します。コンソールに出力することで、docker logsコマンドで確認できるようになります。

newrelic.config
<configuration xmlns="urn:newrelic-config" agentEnabled="true">
    <log level="debug" console="true"/>
<!--以下略-->

Dockerfile内のポート開放やdotnet publishなどは適宜書き換えてください。これで、docker buildして実行すれば監視されるはずです。New Relic上にメトリクスが表示されない場合はログを確認してみましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0