本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 設定 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日誌架構。
NLog 會將日誌資料寫入 CloudWatch Logs。
您可以使用 CloudWatch 警示和自訂儀表板來監控 .NET 應用程式。
工具
AWS 服務
Amazon CloudWatch Application Insights 可協助您觀察應用程式和基礎AWS資源的運作狀態。
Amazon CloudWatch Logs 可協助您集中所有系統、應用程式AWS和服務中的日誌,以便您可以監控日誌並安全地封存日誌。
AWS Identity and Access Management (IAM) 可協助您安全地管理 AWS 資源的存取權,方法是控制誰經過身分驗證並獲授權使用。
AWS 適用於 的工具 PowerShell是一組 PowerShell 模組,可協助您從 PowerShell 命令列編寫AWS資源操作的指令碼。
其他工具
Logger.NLog
是將日誌資料記錄到 CloudWatch Logs NLog的目標。 NLog
是 的開放原始碼記錄架構。NET 平台可協助您將日誌資料寫入目標,例如資料庫、日誌檔案或主控台。 PowerShell
是在 Windows、Linux 和 macOS 上執行的 Microsoft 自動化和組態管理程式。 Visual Studio
是整合的開發環境 (IDE),其中包含編譯器、程式碼完成工具、圖形設計師和其他支援軟體開發的功能。
最佳實務
設定目標日誌群組的保留政策。這必須在NLog組態之外完成。根據預設,日誌資料會無限期儲存在 CloudWatch 日誌中。
史詩
任務 | 描述 | 所需的技能 |
---|---|---|
建立IAM政策。 | 請遵循IAM文件中使用JSON編輯器建立政策中的指示。輸入下列政策,該JSON政策具有允許 CloudWatch Logs 讀取和寫入日誌所需的最低權限。
| AWS 管理員、 AWS DevOps |
建立 IAM 角色。 | 請遵循建立角色中的指示,將許可委派給文件中AWS的服務。 IAM選取您先前建立的政策。這是 CloudWatch Logs 執行記錄動作時所擔任的角色。 | AWS 管理員、 AWS DevOps |
設定 AWS的工具 PowerShell。 |
| 一般 AWS |
任務 | 描述 | 所需的技能 |
---|---|---|
安裝 NuGet 套件。 |
| 應用程式開發人員 |
設定記錄目標。 |
如需範例組態檔案,請參閱此模式的其他資訊區段。當您執行應用程式時, 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 區段中的設定存取權和工具一節。 |
相關資源
使用日誌群組和日誌串流 (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>