NLog を使用して Amazon CloudWatch Logs で .NET アプリケーションのログ記録を設定する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

NLog を使用して Amazon CloudWatch Logs で .NET アプリケーションのログ記録を設定する

作成者:Bibhuti Sahu (AWS) and Rob Hill (AWS) (AWS)

環境:本稼働

テクノロジー: 管理とガバナンス DevOps、ウェブおよびモバイルアプリ

ワークロード:Microsoft

AWS サービス: Amazon CloudWatch Logs

[概要]

このパターンでは、NLog オープンソースのログ記録フレームワークを使用して、.NET アプリケーションの使用状況とイベントを Amazon CloudWatch Logs に記録する方法について説明します。 CloudWatch コンソールでは、アプリケーションのログメッセージをほぼリアルタイムで表示できます。メトリックスを設定し、「メトリクス」のしきい値を超えた場合に通知するように「アラーム」を設定することもできます。 CloudWatch Application Insights を使用すると、モニタリング対象のアプリケーションの潜在的な問題を示す自動ダッシュボードまたはカスタムダッシュボードを表示できます。 CloudWatch Application Insights は、アプリケーションとインフラストラクチャに関する進行中の問題をすばやく特定できるように設計されています。

CloudWatch Logs にログメッセージを書き込むには、 AWS.Logger.NLog NuGet パッケージを .NET プロジェクトに追加します。次に、 CloudWatch ログをターゲットとして使用するように NLog.config ファイルを更新します。

前提条件と制限

前提条件

  • アクティブなAWS アカウント

  • .NET ウェブアプリケーションまたはコンソールアプリケーション:

    • サポートされている.NET Framework バージョンまたは.NET Core バージョンを使用します。詳細については、「製品バージョン」を参照してください。

    • NLog を使用してログデータをアプリケーションインサイトのに送信します。

  • AWS サービスの IAM ロールを作成するアクセス許可。詳細については、「サービスロールのアクセス許可」を参照してください。

  • AWS サービスにロールを渡すためのアクセス許可。詳細については、Granting a user permissions to pass a role to an AWS service を参照してください。

製品バージョン

  • .NET Framework バージョン 3.5 またはそれ以降

  • .NET Core バージョン 1.0.1、2.0.0、またはそれ以降

アーキテクチャ

ターゲットテクノロジースタック

  • NLog

  • Amazon CloudWatch Logs

ターゲット アーキテクチャ

.NET アプリケーションのログデータを Amazon Logs に書き込む NLog ClodWatch のアーキテクチャ図。
  1. .NET アプリケーションは NLog ロギングフレームワークにログデータを書き込みます。

  2. NLog はログデータを Logs CloudWatch に書き込みます。

  3. CloudWatch アラームとカスタムダッシュボードを使用して、.NET アプリケーションをモニタリングします。

ツール

AWS サービス

  • Amazon CloudWatch Application Insights は、アプリケーションと基盤となる AWS リソースの状態をモニタリングするのに役立ちます。

  • Amazon CloudWatch Logs は、すべてのシステム、アプリケーション、および AWS のサービスからのログを一元化するのに役立ちます。これにより、ログをモニタリングし、安全にアーカイブできます。

  • AWS Identity and Access Management (IAM)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。

  • AWS Tools for PowerShell は、 PowerShell コマンドラインから AWS リソースのオペレーションをスクリプト化するのに役立つ PowerShell モジュールのセットです。

その他のツール

  • Logger.NLog は、ログデータをログに記録する NLog CloudWatch ターゲットです。

  • NLog」は .NET プラットフォーム用のオープンソースのロギングフレームワークで、データベース、ログファイル、コンソールなどのターゲットにログデータを書き込むのに役立ちます。

  • PowerShell は、Windows、Linux、macOS で実行される Microsoft の自動化および設定管理プログラムです。

  • Visual Studio」は、コンパイラー、コード補完ツール、グラフィカルデザイナー、およびソフトウェア開発をサポートするその他の機能を含む統合開発環境 (IDE) です。

ベストプラクティス

エピック

タスク説明必要なスキル

IAM ポリシーを作成します。

IAM ドキュメントの「JSON エディタを使ったポリシーの作成」の指示に従ってください。次の JSON ポリシーを入力します。このポリシーには、 CloudWatch ログにログの読み取りと書き込みを許可するのに必要な最小特権のアクセス許可があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:GetLogEvents", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:PutRetentionPolicy" ], "Resource": [ "*" ] } ] }
AWS 管理者、AWS DevOps

IAM ロールを作成します。

IAM ドキュメントの「AWS のサービスにアクセス許可を委任するロールの作成」の手順に従ってください。前に作成したポリシーを選択します。これは、ログ記録アクションを実行するために CloudWatch Logs が引き受けるロールです。

AWS 管理者、AWS DevOps

AWS Tools for をセットアップします PowerShell。

  1. 「 AWS Tools for のインストール PowerShell」のオペレーティングシステムの手順に従います。

  2. AWS Tools for PowerShell コマンドレットを使用して、アクセスキーとシークレットキーをプロファイルに保存します。手順については、AWS Tools for PowerShell ドキュメントの「プロファイルの管理」を参照してください。

AWS 全般
タスク説明必要なスキル

NuGet パッケージをインストールします。

  1. Visual Studio で [ファイル] を選択し、[プロジェクトまたはソリューションを開く] を選択します。

  2. NLog をインストールするプロジェクトを選択します。

  3. Visual Studio で、ツール、NuGet パッケージマネージャー、パッケージマネージャーコンソール を選択します。

  4. 次のコマンドを入力して、 AWS.Logger.NLog NuGet パッケージをインストールします。

    Install-Package AWS.Logger.NLog -Version 3.1.0
アプリ開発者

ロギングターゲットを設定します。

  1. NLog.config ファイルを開きます。

  2. ターゲット type には AWSTarget を入力します。

  3. ターゲット logGroup には、使用する「ロググループ」の名前を入力します。ロググループがまだ存在しない場合、指定した名前の新しいロググループが自動的に作成されます。

  4. ターゲット にはregion、 CloudWatch ログが設定されている AWS リージョンを入力します。

  5. ターゲット profile には、アクセスキーとシークレットキーを保存するために以前に作成したプロファイルの名前を入力します。

  6. NLog.config ファイルを保存して閉じます。

設定ファイルのサンプルについては、このパターンの「追加情報」セクションを参照してください。アプリケーションを実行すると、NLog はログメッセージを書き込み、 CloudWatch ログに送信します。

アプリ開発者
タスク説明必要なスキル

ロギングを検証する。

Logs ドキュメントの CloudWatch 「ログに送信されたログデータを表示する」の手順に従います。 CloudWatch .NET アプリケーションのログイベントが記録されていることを確認します。ログイベントが記録されていない場合は、このパターンの「トラブルシューティング」セクションを参照してください。

AWS 全般

.NET アプリケーションスタックを監視します。

ユースケース CloudWatch に応じて、 でモニタリングを設定します。CloudWatch Logs InsightsCloudWatch Metrics Insights 、および CloudWatch Application Insights を使用して、.NET ワークロードをモニタリングできます。アラートを受信できるように「アラーム」を設定したり、1 つのビューからワークロードを監視するためのカスタム「ダッシュボード」を作成したりすることもできます。

AWS 全般

トラブルシューティング

問題ソリューション

ログデータは CloudWatch ログに表示されません。

IAM ポリシーが Logs が引き受ける IAM CloudWatch ロールにアタッチされていることを確認します。手順については、「エピック」セクションの「アクセスとツールのセットアップ」セクションを参照してください。

関連リソース

追加情報

次に、サンプル NLog.config ファイルを示します。

<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" /> </configSections> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> </startup> <nlog> <extensions> <add assembly="NLog.AWS.Logger" /> </extensions> <targets> <target name="aws" type="AWSTarget" logGroup="NLog.TestGroup" region="us-east-1" profile="demo"/> </targets> <rules> <logger name="*" minlevel="Info" writeTo="aws" /> </rules> </nlog> </configuration>