写点什么

在.NET Core 环境下对日志和指标进行集中化管理(二)

  • 2019-12-23
  • 本文字数:3023 字

    阅读完需:约 10 分钟

在.NET Core 环境下对日志和指标进行集中化管理(二)

下面介绍了如何使用.NET CORE + LOG4NET 来与 CloudWatch 进行集成。


为了运行在 EC2 上的应用程序拥有访问 CloudWatch 的权限,使用 AWS IAM 为 EC2 配置一个角色,使得其拥有 CloudWatch 的访问权限。

1.跳转到 IAM 控制台

2.选择角色选项卡并创建角色

3.选择 AWS 服务,并选中 EC2 以便于角色附加到 EC2 上。然后点击下一步。

4.点击创建策略,并跳转到 JSON 编辑器。


5.粘贴以下 Json 文本到到编辑器中。

Json


{    "Version": "2012-10-17",    "Statement": [        {            "Sid": "VisualEditor0",            "Effect": "Allow",            "Action": [                "cloudwatch:PutMetricData",                "logs:CreateLogGroup"            ],            "Resource": "*"        },        {            "Sid": "VisualEditor1",            "Effect": "Allow",            "Action": "logs:PutLogEvents",            "Resource": "arn:aws:logs:*:*:log-group:*:log-stream:*"        },        {            "Sid": "VisualEditor2",            "Effect": "Allow",            "Action": "logs:CreateLogStream",            "Resource": "arn:aws:logs:*:*:log-group:*"        }    ]}
复制代码


__

6.审核策略并创建策略

7.回到角色部分,在刷新策略选择器之后,搜索刚刚创建的策略。

8.审核并设置信角色名: “role-cloud-watch-logs”


*** 如果您的 EC2 已经拥有相应的角色,请添加 CloudWatch 和 CloudWatch Logs 的 Write 权限。


完成权限设定后,可以启动一台 EC2 作为测试环境,并附加 role-cloud-watch-logs.


下面的步骤将阐述如何使用 Log4Net 来收集日志


  • 使用 dotnet core cli / Visual Studio 创建或者打开一个项目.

  • 在 Nuget 中添加 Logger.Log4net.



  • 配置 Log4net.config


C#


<?xml version="1.0" encoding="utf-8" ?><configuration>  <log4net>    <appender name="awscwlogappender" type="AWS.Logger.Log4net.AWSAppender,AWS.Logger.Log4net">      <LogGroup>scrapycorefundamental</LogGroup>      <Region>ap-southeast-1</Region>      <layout type="log4net.Layout.PatternLayout">        <conversionPattern value="%date [%thread] %-5level %logger [%type] - %message%newline" />      </layout>    </appender>    <root>      <level value="ALL" />      <appender-ref ref="awscwlogappender"/>    </root>  </log4net></configuration>
复制代码


  • 在程序配置好 LogRepo,以及打日志代码。


C#


using System;using log4net;namespace dotnet_core_cw.Logs{    public class LogsDemo    {        ILog logger = LogManager.GetLogger(typeof(LogsDemo));        public LogsDemo()        {        }        public void PrintLog()        {            for(int i= 0; i < 100; i++)            {                logger.Debug($"This is log {i}");                logger.Info($"This is log {i}");            }        }    }}
复制代码


  • 编译并上传到到 EC2 中,运行该程序。

  • 运行完成后,就可以在 cloudwatch 中看到打印的日志。



日志组除了方便查看之外,还可以设置 Expire 来管理日志的生命周期,减少日志存储的费用。



也可以与 S3 和 Elasticsearch 进行无缝集成,完成更多分析功能和转储需求。



收集完日志后,可以使用日志分析工具来扫描日志分析对日志进行分析。 进入日志 Insight 中输入一些查询指令,就可以分析出您关心的日志指标。



演示需要,这里搜索了所有包含 DEBUG 的标签的日志来做指标。



通过添加到仪表板的按钮加入到仪表板进行持续观察。



以上这种日志指标观察方式为非侵入式观察,无需应用程序代码编写。通过日志分析形成观测指标。


如果项目需要通过日志来形成指标并报警,可以使用 CloudWatch Logs 中的创建指标功能。


  • 选择中一个日志组,并创建指标过滤器。



  • 输入匹配项之后可以使用样例日志进行测试



  • 将日志指标打入到指定的指标名称空间



  • 回到指标面板中对应的名称空间,就可以看到相应的指标



  • 通过设定指标的阈值来进行警报设定,并触发一定的运维事件。如,增加机器或者发送消息通知运维人员等。


如果项目中需要对应用程序做为侵入式指标观察。则可以按照通过调用 AWS CloudWatch SDK 来进行日志收集。


(1)在项目中使用 nuget 添加 CloudWatch。



(2)安装完成之后就可以直接调用 SDK 来写入指标。


C#


using Amazon.CloudWatch;using Amazon.CloudWatch.Model;using System;using System.Threading;
namespace dotnet_core_cw.Metric{ public class MetricDemo { IAmazonCloudWatch cloudwatch; public MetricDemo() { cloudwatch = new AmazonCloudWatchClient(region:RegionEndpoint.APSoutheast1); } public void PrintMetric() { Random random = new Random(); while (true) { Thread.Sleep(100);
cloudwatch.PutMetricDataAsync(new PutMetricDataRequest() {Namespace="DEMO", MetricData= new System.Collections.Generic.List<MetricDatum>() { new MetricDatum() { Unit= StandardUnit.Count, MetricName="DemoMetric", Value =random.Next(0,100) } } }).Wait(); } } }}
复制代码


(3)代码运行之后可以看到 CloudWatch 中多了一个命名空间。



(4)稍等几分钟之后,进入到这个命名空间中,就可以看到 DemoMetric 指标已经生成,并且有数据。



通过以上几种方式,可以在应用程序中收集相应的指标来进行观测和预警。

总结

本文介绍了在.NET Core 环境下如何进行日志集中化管理。


(1)如何通过.NET Core,log4net 与 CloudWatch 进行集成。


  • 配置 CloudWatch 权限

  • 安装 Log4Net-Logger.Log4net…

  • 配置 log4Net 使用 Logger.Log4net…


(2)如何通过 CloudWatch Insight 进行日志分析和指标化。CloudWatch Log Insight 是一个可以对日志进行动态分析的组件,通过 CloudWatch Log Insight 可以快速地从海量数据中搜索到关键信息的一个工具,也可以通过 CloudWatch Log Insight 来形成非侵入式可观测指标。


(3)如何通过.NET Core 的环境下如何进行指标收集。


  • 配置 CloudWatch 权限

  • 在程序中进行指标收集代码编码。

  • 在 CloudWatch 查看对应指标。


(4)使用 Amazon CloudWatch 的指标监控警报功能来对指标进行持续监控,当发现指标异常的时候出发一些行为来通知到运维人员或者完成自动化运维的动作,减少运维人员的负担,增加整个系统的健壮性。


(5)使用 Amazon CloudWatch 的日志文件导出和流式导出功能,方便企业进行日志审计以及不同日志系统通过 Elasticsearch 进行日志聚合分析。


作者介绍:


!



### [](https://amazonaws-china.com/cn/blogs/china/tag/%E9%BB%84%E9%87%91%E5%B3%B0/)
AWS解决方案架构师,负责基于AWS云计算方案架构的咨询和设计,在国内推广AWS云平台技术和各种解决方案。多年分布式系统开发架构经验
复制代码


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/centralized-management-of-logs-and-metrics-in-the-net-core-environment/


2019-12-23 17:39768

评论

发布
暂无评论
发现更多内容

分库分表的 21 条法则,hold 住!

小小怪下士

Java MySQL 程序员 分库分表

20 分钟搭建互动教室,实现多人实时互动白板协作丨RTE 开发实战课 • 第三期

声网

我以为我对Mysql很熟,直到遇到了阿里这份笔记

做梦都在改BUG

Java MySQL 数据库

深入理解 synchronized 的锁升级

做梦都在改BUG

Java synchronized 锁升级

Amazon EKS 上有状态服务启用存储加密

亚马逊云科技 (Amazon Web Services)

亚马逊云科技

华为数据中心产业论坛 | 打造低碳、绿色数据中心,构建新型数字产业能源基础设施

Geek_2d6073

明道云开放日上海站开启报名

明道云

声网自研编码器 a264 & a265:更优画质更低能耗,进一步适配实时互动场景需求

声网

软件测试 | SQLite管理工具

测吧(北京)科技有限公司

测试

飞桨EasyDL月刊:4月功能全新升级,模型训练步骤缩短63%

飞桨PaddlePaddle

飞桨 EasyDL

碉堡了!阿里架构师手打的Java10W字面经,已经助我拿了6个offer

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

山东移动:全业务域核心系统升级,实现大幅降本增效

OceanBase 数据库

数据库 oceanbase

VictoriaMetrics常见性能问题排查

天翼云开发者社区

vm 架构设计

时序数据库中的乱序问题-写不动的老程序员带你解读

Greptime 格睿科技

云原生 时序数据库 国产时序数据库 乱序数据

一周狂赚50万,GPT-4帮你在线“脱单”,AI女友按分钟收费,男友高达数量1000+

加入高科技仿生人

人工智能 AI 低代码 ChatGPT GPT-4

共享电动车制造的厂家有哪些?要注意什么

共享电单车厂家

共享电动车厂家 共享电单车生产 共享电动车制造 本铯电动车厂家

一文看懂THD布局要求

华秋PCB

PCB 布局 PCB设计 布线 波峰焊

MatrixGate 5.0 性能再升级,加载速度提升三倍!

YMatrix 超融合数据库

数据库 开源数据库 超融合数据库

2023升级版Java面试八股文核心笔记,7天内拿下那该死的offer

开心学Java

Java 面试 java面试 Java八股文

一图看懂一体化数据安全平台 uDSP

原点安全

数据治理 数据安全 数据安全法 信息泄露 个人信息安全

如何简单快捷的使用上ChatGPT?

Ricky

人工智能 openai ChatGPT

低代码开发平台 重塑数字医疗生产力

力软低代码开发平台

IPv6 无状态地址如何自动配置?

天翼云开发者社区

IP 网络

软件测试 | 安装PyMySQL

测吧(北京)科技有限公司

行业实践专栏上线|互娱领域专家解读 Flink 企业应用实践

Apache Flink

大数据 flink 实时计算

创建各种类型的3D模型:Rhino 7中文激活版

真大的脸盆

Mac Mac 软件 三维建模 建模软件 3d建模

openEuler 成功适配 LeapFive InFive Poros 开发板

openEuler

Linux 操作系统 openEuler 开发板 risc-v

MySQL的varchar存储原理:InnoDB记录存储结构

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

YMatrix 5.0 故障自动转移功能新实现,运维更方便!

YMatrix 超融合数据库

数据库 时序数据库 超融合数据库 YMatrix

NLP 入门导论

小付聊测试

AI 入门 nlp

软件测试 | 配置MySQL

测吧(北京)科技有限公司

测试

在.NET Core 环境下对日志和指标进行集中化管理(二)_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章