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