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

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

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

作成者: Bibhuti Sahu (AWS) と 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 Logs をターゲットとして使用するように NLog.config ファイルを更新します。

前提条件と制限

前提条件

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

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

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

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

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

  • AWS サービスにロールを渡すアクセス許可。詳細については、AWS サービスにロールを渡すアクセス許可をユーザーに付与する」を参照してください。

製品バージョン

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

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

アーキテクチャ

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

  • NLog

  • Amazon CloudWatch ログ

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

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

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

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

ツール

AWS サービス

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

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

  • AWS Identity and Access Management (IAM) は、誰を認証し、誰に使用を認可するかを制御することで、AWS リソースへのアクセスを安全に管理するのに役立ちます。

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

その他のツール

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

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

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

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

ベストプラクティス

エピック

タスク説明必要なスキル

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

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

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

IAM ロールを作成します。

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

AWS 管理者、 DevOpsAWS

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 Package ManagerPackage Manager Console を選択します。

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

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

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

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

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

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

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

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

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

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

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

ロギングを検証する。

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

一般的なAWS

.NET アプリケーションスタックをモニタリングします。

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

一般的なAWS

トラブルシューティング

問題ソリューション

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

IAM ポリシーが、 CloudWatch Logs が引き受ける 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>