NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

在.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:39597

评论

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

Gitlab 中 Github import 功能存在远程代码执行漏洞

墨菲安全

2022年中国小微信贷市场发展分析

易观分析

市场分析 小微信贷 易观

画出“伦勃朗光线”:vivo的夜色4K探索之旅

脑极体

自从外包干了七年,废了.....!

退休的汤姆

Java 面经 社招 Java工程师 秋招

业务出海必答题,融云全球通信网络技术挑战破解实践

融云 RongCloud

浅谈 malloc 函数在单片机上的应用

矜辰所致

malloc 内存管理 8月月更

“似水无形” 的小程序化技术

Speedoooo

小程序 小程序管理平台 轻应用 快应用 小程序平台

MobTech ShareSDK Android端微信分享小程序

MobTech袤博科技

微信小程序 android sdk

将 SAP Spartacus 作为 feature module 进行 Lazy Load 延迟加载时遇到的注入错误分析

Jerry Wang

typescript 前端开发 angular Spartacus 8月月更

激动!开启轻量化虚拟直播时代!

IT资讯搬运工

Docker下Prometheus和Grafana三部曲之一:极速体验

程序员欣宸

Grafana Prometheus 8月月更

打造耳聪目明的MES系统,你准备好了吗?

科技怪咖

1 分钟在 Serverless 上部署现代化 Deno Web 应用

阿里巴巴中间件

阿里云 Serverless 云原生

大型LED显示屏怎样做好保养维护

Dylan

LED显示屏 led显示屏厂家

企业统一门户 | WorkPlus深度集成,优化企业管理模式

WorkPlus

基础+进阶+源码+实战,阿里SpringCloud Alibaba全解手册限时开源~

Java全栈架构师

程序员 面试 微服务 架构师 SpringCloud

全网独一份!清华大牛联合众多一线大厂架构师整合的Java面试突击手册开源

程序员小毕

程序员 程序人生 JVM 高并发 java面试

面试半月,阿里三面挂在微服务,我整个人直接麻了

Java永远的神

程序员 微服务 程序人生 Java 面试 架构师

离谱了!腾讯数据库专家耗费几个月编写了这份 604 页的 Oracle+MySQL 学习指南手册

了不起的程序猿

Java MySQL JAVA开发 java程序员

马蹄链Dapp系统开发部署技术

薇電13242772558

dapp

105份墨天轮“国产化迁移”干货文档汇总(含TiDB、openGauss、上云等)

墨天轮

数据库 阿里云 TiDB 国产数据库 达梦

万物皆可集成系列:低代码释放用友U8+深度价值(2)—数据拓展应用

葡萄城技术团队

低代码 用友

B站基于Iceberg+Alluxio助力湖仓一体项目落地实践

Alluxio

B站 iceberg Alluxio 湖仓一体 8月月更

本周四晚19:00知识赋能第七期第3课丨OpenHarmony WiFi扫描仪实现

OpenHarmony开发者

OpenHarmony

2022年十大知名堡垒机品牌你真的知道吗?

行云管家

网络安全 数据安全 堡垒机 堡垒机品牌

旺链科技荣登“长三角产业区块链企业30强”!

旺链科技

区块链 产业区块链 创新应用

蛇行矩阵 蛇形填数 回形取数 蛇行系类(C语言详解+图解)

Five

c 算法题 8月月更

秋招涨薪攻略!拿着GitHub标星80k的阿里性能优化笔记,把项目优化个遍

退休的汤姆

Java 阿里 社招 Java工程师 秋招

SpringBoot 整合 数据库连接池(Druid、HicariCP、C3P0等等)

SpringBoot 2 Druid 8月月更

KusionStack 在蚂蚁集团的探索实践 (上)

SOFAStack

开源 技术分享 蚂蚁集团 Kusion kusionstack

打补丁是什么意思?如何快速对云主机批量打补丁?用什么软件?

行云管家

运维 云主机 IT运维 打补丁

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