翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 アプリケーションは NLog ロギングフレームワークにログデータを書き込みます。
NLog はログデータを Logs CloudWatch に書き込みます。
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) です。
ベストプラクティス
ターゲットロググループの「保存ポリシー」を設定します。これは NLog 設定の外部で行う必要があります。デフォルトでは、ログデータは無期限に CloudWatch Logs に保存されます。
「AWS アクセスキーを管理するためのベストプラクティス」を遵守します。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
IAM ポリシーを作成します。 | IAM ドキュメントの「JSON エディタを使ったポリシーの作成」の指示に従ってください。次の JSON ポリシーを入力します。このポリシーには、 CloudWatch ログにログの読み取りと書き込みを許可するのに必要な最小特権のアクセス許可があります。
| AWS 管理者、AWS DevOps |
IAM ロールを作成します。 | IAM ドキュメントの「AWS のサービスにアクセス許可を委任するロールの作成」の手順に従ってください。前に作成したポリシーを選択します。これは、ログ記録アクションを実行するために CloudWatch Logs が引き受けるロールです。 | AWS 管理者、AWS DevOps |
AWS Tools for をセットアップします 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 ログに表示されません。 | IAM ポリシーが Logs が引き受ける IAM CloudWatch ロールにアタッチされていることを確認します。手順については、「エピック」セクションの「アクセスとツールのセットアップ」セクションを参照してください。 |
関連リソース
ロググループとログストリームの操作 (Logs ドキュメント)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>