あっと言う間に12月も半分が過ぎてしまいました。早いですよね〜
でもまだAdvent Calendarエントリ続けますよ!カワノです!よろしくお願いします。
そんなわけで、この記事はInstana Observability Advent Calendar 2024 19日目のエントリになります。
はじめに
皆さん、.NETなアプリケーションの可視化ってしてますか?
じつは私のお客様はJavaがほとんどで、たまにNode.jsやPythonがいる程度です。
私自信、2020年頃に前職で.NETを触っていたころを最後に情報アップデートをしておらず、ちょうどAdvent Calendarのネタ何にしよう?と考えていたところなので 久しぶりにちょっと触ってみようと思います。
環境
気軽に触りたかったので、Azureに最小限の環境を作りました。
- インスタンスタイプ:Standard_F2s_v2
- CPU:2Core
- メモリ:4GB
- Disk:130GB
- OS:Windows Server 2019 Datacenter
IISセットアップ
テストアプリケーション作成、デプロイ
今回は .NET Framework と .NET Core それぞれのアプリケーションを作成してみます。
作成手順はdotnetな記事たくさんあるので、省きます。
※) ちなみに、アプリケーションは業務外に個人スキルアップを目的として作成しています。
.NET Framework / ASP.NET MVC
伝統的なASP.NET MVCテンプレートアプリケーションを作成しました。
.NET Framework のバージョンは 4.7.2 です。
.NET Core / ASP.NET Core
最新の.NETって 9 までバージョンアップしてるんですね!
.NET 9は リリースされたばかりということなので、今回は.NET 8でアプリを構築しました。
ポーリングスクリプト
Instanaで可視化するために、テストアプリケーションに定期的にアクセスするPowershellスクリプトを実行します。
あまり考えていません。ひたすらアクセスしているだけです。
while ($true) {curl.exe -m 1 -s -o NUL -w "%{http_code}" http://localhost/webapp1;start-sleep 1}
while ($true) {curl.exe -m 1 -s -o NUL -w "%{http_code}" http://localhost/webapp2;start-sleep 1}
Instana Agentセットアップ
Windows インストーラを使いました。Linuxワンライナーも簡単ですが、こちらも簡単ですね。Configuration入力がちょっと手間ですけど。
導入後は instana-agent.exe と InstanaPCP.exe が稼動していることを確認できました。
Instana 導入直後の状況
Instana Agentは導入されていますが、設定ファイル(Configuration.yaml)は設定変更していません。
その状態でどこまで参照できるでしょうか?
インフラストラクチャ
以下の情報を見ることができます。
- ホスト(OS)
- IIS
- Instana Agent
- .Net Frameworkアプリ (DefaultAppPool)
- powershell (curlを定期実行しているコマンドプロンプト)
アプリケーション
ASP.NET .Net Framework Webアプリケーションは可視化されていますが、
ASP.NET Core Webアプリケーションは可視化されていません。
ちなみに、デフォルトのサービス名は {region}-{hostname}
ですね。
今回の環境は region: japaneast
, hostname: win-app1
なので japaneast-win-app1
と表示されています。
サービス名規則と変更方法については、Instanaの下記ドキュメントを参照ください。
IIS上の ASP.NET Core Webアプリケーションの可視化
IIS上の.NET Framework ASP.NET Webアプリは追加設定なしにすぐに可視化されますが、.NET Core ASP.NET Coreアプリは設定が必要なため、可視化されていません。
.NET Coreアプリも可視化しましょう。
準備
- Instana Agentと Instana PCPプロセスが起動していることを確認します
これは一番最初に確認しているので、省略します。 - nugetコマンドが事項できること
以下よりnugetをダウンロードします。インストーラとかじゃなくて、exe単体っていう潔さ...
https://dist.nuget.org/win-x86-commandline/latest/nuget.exe
Instana パッケージのダウンロード と配置
アプリのリビルド、コンパイルができる方向け
アプリのリビルドができる方は、nugetで以下の2つのライブラリをアプリに導入しビルドしてください。
- Instana.Tracing.Core
- Instana.Tracing.Core.Rewriter.Windows
できない方は、以下の作業を実施ください。
Instana パッケージのダウンロード
以下のコマンドを実行して、Instanaパッケージをダウンロードします
nuget install Instana.Tracing.Core
nuget install Instana.Tracing.Core.Rewriter.Windows
(Core が COre になっちゃってますがご愛嬌ということで...)
Instanaパッケージを配置
※) この作業は必須ではありません。次のパス通しをちゃんと実施すればOKですがごちゃごちゃするので合わせます。
nuget installを実行したフォルダにて、以下を実行します(パスは変わるので適宜置き換えてご参照ください)
nuget installを実行したフォルダ
dllをアプリにコピー実行
copy Instana.Tracing.Core.1.286.3\lib\netstandard2.0\* C:\inetpub\wwroot\webapp2
mkdir C:\inetpub\wwroot\webapp2\instana_tracing
copy Instana.Tracing.Core.Rewriter.Windows.1.286.3\contentFiles\any\any\instana_tracing C:\inetpub\wwroot\webapp2\instana_tracing
アプリの設定にInstanaパッケージを追記
アプリのWeb.config に、環境変数として以下の設定を追記し、アプリケーションを再起動します。
注1) 相対パスではなく絶対パスで記載してください
注2) Web.configの編集が不可な場合、環境変数に同様の設定を行うことができます。
可視化確認
ASP.NET .NET Framework Webアプリだけではなく、ASP.NET Core Webアプリも可視化されました!
(パスの規則が.NET Frameworkとあっておらず微妙ですが)
また、インフラストラクチャでも.NET Frameworkアプリだけではなく、.NET Coreアプリも認識されていますね!
最後に
.NET Frameworkアプリは追加設定なしでInstanaで可視化可能ですが、.NET Coreアプリは追加設定が必要です。
最近のアプリケーションは.NET Coreが主流ですので、.NETアプリをInstanaで可視化する際は、nugetでInstanaライブラリを導入することを念頭に置いていただければ幸いです!
それでは!