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

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

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

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

環境:生產

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

工作負載:Microsoft

AWS 服務:Amazon CloudWatch Logs

Summary

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

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

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶。

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

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

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

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

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

產品版本

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

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

架構

目標技術堆疊

  • NLog

  • Amazon CloudWatch 日誌

目標架構

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

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

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

工具

AWS 服務

其他工具

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

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

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

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

最佳實務

Epics

任務描述所需的技能

建立 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 DevOpsWord

建立 IAM 角色。

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

AWS 管理員、AWS DevOpsWord

設定 AWS 工具 for PowerShell。

  1. 請遵循安裝 AWS Tools for PowerShell 中作業系統的指示。

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

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

安裝 NuGet 套件。

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

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

  3. 在 Visual Studio 中,選擇 ToolsNuGet 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。

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

驗證記錄。

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

一般 AWS

監控 .NET 應用程式堆疊。

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

一般 AWS

故障診斷

問題解決方案

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

確定 IAM 政策已連接至 IAM Logs 擔任的 CloudWatch 角色。如需指示,請參閱 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>