使用 設定 Amazon CloudWatch Logs 中 .NET 應用程式的記錄 NLog - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 設定 Amazon CloudWatch Logs 中 .NET 應用程式的記錄 NLog

由 Bibhuti Sahu (AWS) 和 Rob Hill (AWS) (AWS) 建立

環境:生產

技術:管理和治理 DevOps;Web 和行動應用程式

工作負載:Microsoft

AWS 服務:Amazon CloudWatch Logs

Summary

此模式說明如何使用NLog開放原始碼記錄架構,在 Amazon CloudWatch Logs 中記錄 .NET 應用程式用量和事件。在 CloudWatch 主控台中,您可以近乎即時地檢視應用程式的日誌訊息。您也可以設定指標和設定警示,以便在超過指標閾值時通知您。使用 CloudWatch Application Insights,您可以檢視自動或自訂儀表板,以顯示受監控應用程式的潛在問題。 CloudWatch Application Insights 旨在協助您快速隔離應用程式和基礎設施的持續問題。

若要將日誌訊息寫入 CloudWatch 日誌,請將AWS.Logger.NLog NuGet 套件新增至 .NET 專案。然後,您更新 NLog.config 檔案以使用 CloudWatch Logs 作為目標。

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶。

  • 符合下列條件的 .NET Web 或主控台應用程式:

    • 使用支援的 。NET 架構或 。NET 核心版本。如需詳細資訊,請參閱產品版本

    • 使用 NLog將日誌資料傳送至 Application Insights。

  • 為 AWS服務建立IAM角色的許可。如需詳細資訊,請參閱服務角色許可

  • 將角色傳遞至 AWS服務的許可。如需詳細資訊,請參閱授予使用者將角色傳遞至AWS服務 的許可

產品版本

  • 。NET 架構 3.5 版或更新版本

  • 。NET 核心版本 1.0.1、2.0.0 或更新版本

架構

目標技術堆疊

  • NLog

  • Amazon CloudWatch Logs

目標架構

將 .NET 應用程式的日誌資料NLog寫入 Amazon ClodWatch Logs 的架構圖。
  1. .NET 應用程式會將日誌資料寫入NLog日誌架構。

  2. NLog 會將日誌資料寫入 CloudWatch Logs。

  3. 您可以使用 CloudWatch 警示和自訂儀表板來監控 .NET 應用程式。

工具

AWS 服務

其他工具

  • Logger.NLog 是將日誌資料記錄到 CloudWatch Logs NLog的目標。

  • NLog 是 的開放原始碼記錄架構。NET 平台可協助您將日誌資料寫入目標,例如資料庫、日誌檔案或主控台。

  • PowerShell 是在 Windows、Linux 和 macOS 上執行的 Microsoft 自動化和組態管理程式。

  • Visual Studio 是整合的開發環境 (IDE),其中包含編譯器、程式碼完成工具、圖形設計師和其他支援軟體開發的功能。

最佳實務

史詩

任務描述所需的技能

建立IAM政策。

請遵循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 管理員、 AWS DevOps

建立 IAM 角色。

請遵循建立角色中的指示,將許可委派給文件中AWS的服務。 IAM選取您先前建立的政策。這是 CloudWatch Logs 執行記錄動作時所擔任的角色。

AWS 管理員、 AWS DevOps

設定 AWS的工具 PowerShell。

  1. 請遵循安裝適用於 AWS的工具 PowerShell中有關作業系統的指示。

  2. 使用 AWS Tools for PowerShell cmdlets 將存取金鑰和秘密金鑰存放在設定檔中。如需指示,請參閱 PowerShell 文件AWS工具中的管理設定檔

一般 AWS
任務描述所需的技能

安裝 NuGet 套件。

  1. 在 Visual Studio 中,選擇檔案 ,然後選擇開啟專案或解決方案

  2. 選擇您要安裝 的專案NLog。

  3. 在 Visual Studio 中,選擇 Tools NuGet Packit Manager Package 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,輸入已設定 CloudWatch 日誌AWS的區域。

  5. 針對目標 profile,輸入您先前為存放存取金鑰和秘密金鑰而建立的設定檔名稱。

  6. 儲存並關閉 NLog.config 檔案。

如需範例組態檔案,請參閱此模式的其他資訊區段。當您執行應用程式時, NLog會寫入日誌訊息並將其傳送至 CloudWatch Logs。

應用程式開發人員
任務描述所需的技能

驗證記錄。

請遵循在日誌文件中檢視傳送至 CloudWatch 日誌的日誌資料中的指示。 CloudWatch 驗證日誌事件是否正在為 .NET 應用程式記錄。如果未記錄日誌事件,請參閱此模式中的疑難排解一節。

一般 AWS

監控 .NET 應用程式堆疊。

CloudWatch 依您的使用案例所需在 中設定監控。您可以使用 CloudWatch Logs Insights CloudWatch Metrics Insights CloudWatch Application Insights 來監控您的 .NET 工作負載。您也可以設定警示,以便接收警示,並且可以建立自訂儀表板,以從單一檢視監控工作負載。

一般 AWS

故障診斷

問題解決方案

日誌資料不會出現在 CloudWatch 日誌中。

確定IAM政策已連接至 CloudWatch Logs 擔任IAM的角色。如需指示,請參閱 Epics 區段中的設定存取權和工具一節。

相關資源

其他資訊

以下是範例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>