.NET Core 微服务:ELK,Splunk,Exceptionless统一日志收集

2019 年 3 月 10 日 DotNet

(给DotNet加星标,提升.Net技能


转自:李知洲

cnblogs.com/SteveLee/p/MicroService_Logs.html


前言


日志,一直以来都是开发人员和运维人员最关心的问题。开发人员可通过日志记录来协助问题定位,运维人员可通过日志发现系统隐患,故障等定位问题。如果你的系统中没有日志,就像一个断了线的风筝,你永远不知道它会的落脚点(故障点)在什么地方。当然,你说你不用日志,非要用调试模式来一个一个的排查和验证问题,那这将是非常疯狂的。


微服务架构日渐火热,在享受微服务带来的种种好处的同事,也要承担她所带来的各种困扰。


因为系统不再是一个独立的个体,而是分部到不同地方、不同宿主、不同区段单独的服务个体(节点),他散落,不统一,那么,当某个节点出现问题,如何快速定位,将是一个挑战。你总不可能说我把每个节点的日志都查一遍吧。


那么,这个问题可以这样描述:


  • 如何及时采集每个节点的日志?


  • 如何将日志进行及时汇总?


  • 如何将汇总的日志进行有利(快速)的分析(检索)?

 

日志的重要性和复杂性


说道日志的重要性,我相信没有任何开发人员和运维人员认为他不重要,正如“前言”所提,这个世界没有这样疯狂的人。


再论日志的复杂性,日志保存了当前系统中各种功能的记录,正如你去一家医院的体检单,上面清晰的记录了你各项生命特征信息、以及不同的指标。日志文件在应用系统中的作用就如同体检单,它反应了系统的健康状态、系统的操作事件、系统的变更状况。


日志种类繁杂,一个健壮的系统可能会有着各种各样的日志信息。



单单上面一张图片,可以显示出六种日志类型,那还有我们开发的日志呢,比如调试,运行,错误,一般信息等等等。如此多种多样的日志,哪些是我们所需要的,都是在架构中需要考虑的问题。

 

微服务的日志中心架设流程


我们先了解一下微服务中的体系(结构):


  • 域:一个域是一套注册中心、配置中心、监控中心、网关等等组成的结构体系,一个域中可以有多个系统。


  • 系统:一个系统相当于一个容器集群,这个容器系统内可以部署多个应用节点。


  • 节点:实现了微服务的轻耦合节点(应用)。


当然,理解这些是不够的架构设计的,我们还需要了解整个日志收集中的每个流程:


  • 日志选择:确定哪些日志类型需要进行收集分析,比如调试,网络等等类型。


  • 日志采集:使用哪种日志组件来作为采集,.NET上常用有Nlog和Log4net。


  • 日志缓冲:使用Kafka或RabbitMQ来缓冲日志收集的大量请求。


  • 日志筛选:筛选(过滤)哪些日志类型将要被存储,提前埋点。


  • 日志存储:日志的统一存储,例如ES(Elasticsearch)。


  • 日志检索:日志的快速检索功能,例如ES(Elasticsearch)。


  • 日志展现:日志的UI展现,例如KI(Kibana),或自定义WEB站点。

 

日志中心


在日志中心的方案上,由于日志收集没有语言依赖性,我们可以通过混合使用不同语言的组件来收集日志。


ELK(Elasticsearch + Logstash + Kibana),java开源日志收集平台,名声赫赫,我们只需要配置采集组件的远程对接即可进行存储。


如你更倾向于日后微服务的其他所有组件都是Java(比如Spring Boot)的,可使用steeltoe来完成你的梦想。(笔者并未深入研究ELK,只是实现了日志的提交和展现)


特点:开源,免费



Splunk:使用 Splunk 可收集、索引和利用所有应用程序、服务器和设备生成的快速移动型计算机数据。


使用Splunking处理计算机数据,可让您在几分钟内解决问题和调查安全事件--| 这解释太官方,公司目前用的就是Splunk。


特点:企业版收费,上手困难。


 

Exceptionless:原生.NET平台上开发的一套开源日志收集中心,支持托管或自行部署,并且新版里面还有一些非常简单的APM,比如死链、耗时。


特点:托管收费,界面清晰易懂,最重要的是.NET且开源



总结


本篇简单的介绍了日志收集的重要性,和设计流程,并简单的展示了三个常见平台的主界面,下一篇我们重点介绍Exceptionless。


推荐阅读

(点击标题可跳转阅读)

.NET Core开发BT Tracker服务器

.NET开源快速开发框架Colder发布

.NET Core下支持分表分库、读写分离的通用Repository


看完本文有收获?请转发分享给更多人

关注「DotNet」加星标,提升.Net技能 

喜欢就点一下「好看」呗~

登录查看更多
2

相关内容

盛庞卡公司(英语:Splunk;NASDAQ: SPLK)为美国一家跨国大数据企业,提供领先的运维智能平台。客户可使用Splunk 来搜索、监测、分析和可视化机器数据。
COVID-19文献知识图谱构建,UIUC-哥伦比亚大学
专知会员服务
41+阅读 · 2020年7月2日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
160+阅读 · 2020年5月14日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
【WWW2020-微软】理解用户行为用于文档推荐
专知会员服务
34+阅读 · 2020年4月5日
【2020新书】Kafka实战:Kafka in Action,209页pdf
专知会员服务
65+阅读 · 2020年3月9日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
94+阅读 · 2019年12月4日
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
DataCanvas周晓凌:如何为用户提供最佳体验的实时推荐系统
DataCanvas大数据云平台
5+阅读 · 2018年11月12日
.NET Core 环境下构建强大且易用的规则引擎
基于 Storm 的实时数据处理方案
开源中国
4+阅读 · 2018年3月15日
五步帮你实现用户画像的数据加工
云栖社区
6+阅读 · 2018年2月4日
一个人的企业安全建设之路
FreeBuf
5+阅读 · 2017年7月7日
Graph Analysis and Graph Pooling in the Spatial Domain
VrR-VG: Refocusing Visually-Relevant Relationships
Arxiv
6+阅读 · 2019年8月26日
Arxiv
3+阅读 · 2019年3月1日
Arxiv
8+阅读 · 2018年2月23日
VIP会员
相关VIP内容
相关资讯
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
DataCanvas周晓凌:如何为用户提供最佳体验的实时推荐系统
DataCanvas大数据云平台
5+阅读 · 2018年11月12日
.NET Core 环境下构建强大且易用的规则引擎
基于 Storm 的实时数据处理方案
开源中国
4+阅读 · 2018年3月15日
五步帮你实现用户画像的数据加工
云栖社区
6+阅读 · 2018年2月4日
一个人的企业安全建设之路
FreeBuf
5+阅读 · 2017年7月7日
Top
微信扫码咨询专知VIP会员