使用 NLog 在 Amazon CloudWatch Logs 中为.NET 应用程序配置日志记录 - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 NLog 在 Amazon CloudWatch Logs 中为.NET 应用程序配置日志记录

创建者:Bibhuti Sahu(AWS)和 Rob Hill(AWS)(AWS)

环境:生产

技术:管理和治理 DevOps;Web 和移动应用程序

工作负载:Microsoft

AWS 服务:Amazon CloudWatch 日志

Summary

此模式描述了如何使用 NLog 开源日志框架在 Amazon Log CloudWatch s 中记录.NET 应用程序的使用情况和事件。在 CloudWatch 控制台中,您可以近乎实时地查看应用程序的日志消息。您还可以设置指标并配置警报,以便在超过指标阈值时通知您。使用 A CloudWatch pplication Insights,您可以查看显示受监控应用程序潜在问题的自动或自定义仪表板。 CloudWatch Application Insights 旨在帮助您快速隔离应用程序和基础架构中持续存在的问题。

要将日志消息写入 CloudWatch 日志,请将AWS.Logger.NLog NuGet 软件包添加到.NET 项目中。然后,更新NLog.config文件以使用 CloudWatch 日志作为目标。

先决条件和限制

先决条件

  • 一个有效的 Amazon Web Services account。

  • 一个 .NET Web 或控制台应用程序,它可以:

    • 使用支持的 .NET 框架或 .NET 核心版本。有关更多信息,请参阅产品版本

    • 使用 NLog 将日志数据发送到 Application Insights。

  • 为 Amazon Web Services 创建 IAM 角色的权限。有关更多信息,请参阅服务角色权限

  • 将角色传递给服务的权限。有关更多信息,请参阅向用户授予将角色传递给 Amazon Web Services 的权限

产品版本

  • .NET Framework 版本 3.5 或更高版本

  • .NET Core 版本 1.0.1、2.0.0 或更高版本

架构

目标技术堆栈

  • NLog

  • Amazon CloudWatch 日志

目标架构

NLog 将.NET 应用程序的日志数据写入 Amazon Lo ClodWatch gs 的架构图。
  1. .NET 应用程序将日志数据写入 NLog 日志框架。

  2. NLog 将日志数据写入 CloudWatch 日志。

  3. 您可以使用 CloudWatch 警报和自定义仪表板来监控.NET 应用程序。

工具

Amazon Web Services

其他工具

  • Logger.nlog 是一个 N Log 目标,用于将日志数据记录到日志中。 CloudWatch

  • NLog 是一个适用于 .NET 平台的开源日志框架,可帮助您将日志数据写入目标,例如数据库、日志文件或控制台。

  • PowerShell是一款在 Windows、Linux 和 macOS 上运行的微软自动化和配置管理程序。

  • Visual Studio 是一个集成式开发环境(IDE),包括编译器、代码完成工具、图形设计器和其他支持软件开发的功能。

最佳实践

操作说明

任务描述所需技能

创建一个 IAM 策略。

按照 IAM 文档中使用 JSON 编辑器创建策略中的说明进行操作。输入以下 JSON 策略,该策略具有允许 CloudWatch 日志读取和写入日志所需的最低权限。

{ "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 角色。

请按照 IAM 文档中的创建向 Amazon Web Services 委托权限的角色说明进行操作。选择您之前创建的策略。这是 Logs 在执行 CloudWatch 日志操作时所扮演的角色。

AWS 管理员,AWS DevOps

为其设置 AWS 工具 PowerShell。

  1. 按照安装适用的 AWS 工具中适用于您的操作系统的说明进行操作 PowerShell。

  2. 使用适用于 PowerShell cmdlet 的 AWS 工具将您的访问密钥和密钥存储在配置文件中。有关说明,请参阅 AWS 工具中的管理配置 PowerShell 文件以获取文档。

常规 AWS
任务描述所需技能

安装 NuGet 软件包。

  1. 在 Visual Studio 中,选择文件,然后选择打开项目或解决方案

  2. 选择要安装 NLog 的项目。

  3. 在 Visual Studio 中,选择工具NuGet 软件包管理器软件包管理器控制台

  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 会写入日志消息并将其发送到 Lo CloudWatch gs。

应用程序开发人员
任务描述所需技能

验证日志记录。

按照 “日志” 文档中查看发送到 CloudWatch 日志的日志数据中的 CloudWatch 说明进行操作。验证是否正在记录 .NET 应用程序的日志事件。如果未记录日志事件,请参阅此模式中的故障排除部分。

常规 AWS

监控 .NET 应用程序堆栈。

根据您的用例 CloudWatch 的需要在中配置监控。您可以使用 “CloudWatch 日志见解”、“CloudWatch 指标见解” 和 “CloudWatch 应用程序见解” 来监控您的.NET 工作负载。您还可以配置警报以接收警报,还可以创建用于从单一视图监控工作负载的自定义控制面板

常规 AWS

故障排除

问题解决方案

日志数据不会显示在 CloudWatch 日志中。

确保将 IAM 策略附加到 L CloudWatch ogs 担任的 IAM 角色。有关说明,请参阅操作说明部分的设置访问权限和工具部分。

相关资源

其他信息

以下为示例 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>