翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
を使用して 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書き込むアーキテクチャ図。](images/pattern-img/0ac9c3ad-2a28-415f-afc3-7fe3494b2b63/images/daea9f2f-7242-4ed2-843e-655d843dcfdf.png)
。NET アプリケーションはログデータをNLogログ記録フレームワークに書き込みます。
NLog はログデータを CloudWatch Logs に書き込みます。
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) です。
ベストプラクティス
ターゲットロググループの「保存ポリシー」を設定します。これは、 NLog設定の外部で実行する必要があります。デフォルトでは、ログデータは CloudWatch ログに無期限に保存されます。
AWS アクセスキーを管理するためのベストプラクティスに従ってください。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
IAM ポリシーを作成します。 | IAM ドキュメントのJSON「エディタを使用したポリシーの作成」の手順に従います。ログに CloudWatch ログの読み取りと書き込みを許可するのに必要な最小特権のアクセス許可を持つ次のJSONポリシーを入力します。
| AWS 管理者、 AWS DevOps |
IAM ロールを作成します。 | IAM ドキュメントの「 AWSサービスにアクセス許可を委任するロールの作成」の手順に従います。前に作成したポリシーを選択します。これは、ログ記録アクションを実行するために CloudWatch Logs が引き受けるロールです。 | AWS 管理者、 AWS DevOps |
AWS ツールをセットアップします PowerShell。 |
| 全般 AWS |
タスク | 説明 | 必要なスキル |
---|---|---|
NuGet パッケージをインストールします。 |
| アプリ開発者 |
ロギングターゲットを設定します。 |
設定ファイルのサンプルについては、このパターンの「追加情報」セクションを参照してください。アプリケーションを実行すると、 NLogはログメッセージを書き込み、 CloudWatch ログに送信します。 | アプリ開発者 |
タスク | 説明 | 必要なスキル |
---|---|---|
ロギングを検証する。 | Logs ドキュメントの CloudWatch 「ログに送信されたログデータの表示」の手順に従います。 CloudWatch . NETアプリケーションに対してログイベントが記録されていることを確認します。ログイベントが記録されていない場合は、このパターンの「トラブルシューティング」セクションを参照してください。 | 全般 AWS |
.NET アプリケーションスタックをモニタリングします。 | ユースケース CloudWatch に応じて、 でモニタリングを設定します。CloudWatch Logs Insights、CloudWatch Metrics Insights、および CloudWatch Application Insights を使用して、 ワークロードをモニタリングできます。NETアラートを受信できるように「アラーム」を設定したり、1 つのビューからワークロードを監視するためのカスタム「ダッシュボード」を作成したりすることもできます。 | 全般 AWS |
トラブルシューティング
問題 | ソリューション |
---|---|
ログデータは CloudWatch ログに表示されません。 | CloudWatch Logs が引き受けるIAMロールにIAMポリシーがアタッチされていることを確認します。手順については、「エピック」セクションの「アクセスとツールのセットアップ」セクションを参照してください。 |
関連リソース
ロググループとログストリームの使用 (CloudWatch ログドキュメント)
Amazon CloudWatch Logs と 。NETフレームワークのログ記録
(AWS ブログ記事)
追加情報
次に、サンプル 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>