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

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

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

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

概要

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

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

前提条件と制限

前提条件

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

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

    • サポートされている を使用します。NETフレームワークまたは 。NETコアバージョン。詳細については、「製品バージョン」を参照してください。

    • を使用してNLog、Application Insights にログデータを送信します。

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

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

製品バージョン

  • 。NET フレームワークバージョン 3.5 以降

  • 。NET Core バージョン 1.0.1、2.0.0 以降

アーキテクチャ

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

  • NLog

  • Amazon CloudWatch ログ

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

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

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

  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 は、ログデータを CloudWatch Logs に記録する NLogターゲットです。

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

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

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

ベストプラクティス

エピック

タスク説明必要なスキル

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

IAM ドキュメントのJSON「エディタを使用したポリシーの作成」の手順に従います。ログに CloudWatch ログの読み取りと書き込みを許可するのに必要な最小特権のアクセス許可を持つ次のJSONポリシーを入力します。

{ "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 ツールをセットアップします PowerShell。

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

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

全般 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 ログに表示されません。

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

関連リソース

追加情報

次に、サンプル 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>