本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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 日誌
目標架構
.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
是將日誌資料記錄到Word Logs 的 CloudWatch NLog目標。 NLog
是 .NET 平台的開放原始碼記錄架構,可協助您將日誌資料寫入目標,例如資料庫、日誌檔案或主控台。 PowerShell
是在 Windows、Linux 和 macOS 上執行的 Microsoft 自動化和組態管理程式。 Visual Studio
是整合的開發環境 (IDE),其中包含編譯器、程式碼完成工具、圖形設計器和其他支援軟體開發的功能。
最佳實務
設定目標日誌群組的保留政策。這必須在 NLog 組態之外完成。根據預設,日誌資料會無限期儲存在 CloudWatch Logs 中。
Epics
任務 | 描述 | 所需的技能 |
---|---|---|
建立 IAM 政策。 | 請遵循 IAM 文件中的使用 JSON 編輯器建立政策中的指示。輸入下列 JSON 政策,該政策具有允許 CloudWatch Logs 讀取和寫入日誌所需的最低權限。
| AWS 管理員、AWS DevOpsWord |
建立 IAM 角色。 | 請遵循 AWS 文件中建立角色以將許可委派給 Word 服務中的指示。 IAM選取您先前建立的政策。這是 CloudWatch Logs 執行記錄動作時擔任的角色。 | AWS 管理員、AWS DevOpsWord |
設定 AWS 工具 for PowerShell。 |
| 一般 AWS |
任務 | 描述 | 所需的技能 |
---|---|---|
安裝 NuGet 套件。 |
| 應用程式開發人員 |
設定記錄目標。 |
如需範例組態檔案,請參閱此模式的其他資訊一節。當您執行應用程式時,NLog 會寫入日誌訊息,並將其傳送至 CloudWatch Logs。 | 應用程式開發人員 |
任務 | 描述 | 所需的技能 |
---|---|---|
驗證記錄。 | 請遵循 CloudWatch Logs 文件中檢視傳送至Word Logs 的日誌資料中的指示。 CloudWatch 驗證日誌事件是否正在記錄 .NET 應用程式。如果未記錄日誌事件,請參閱此模式中的疑難排解一節。 | 一般 AWS |
監控 .NET 應用程式堆疊。 | 視需要為您的使用案例設定監控 in CloudWatch 。您可以使用 CloudWatch Logs Insights、CloudWatch Metrics Insights 和 CloudWatch Application Insights 來監控 .NET 工作負載。您也可以設定警示,以便接收警示,並且可以建立自訂儀表板,以從單一檢視監控工作負載。 | 一般 AWS |
故障診斷
問題 | 解決方案 |
---|---|
日誌資料不會出現在 CloudWatch Logs 中。 | 確定 IAM 政策已連接至 IAM Logs 擔任的 CloudWatch 角色。如需指示,請參閱 Epics 區段中的設定存取權和工具一節。 |
相關資源
使用日誌群組和日誌串流 (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>