前言

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

微服务架构日渐火热,在享受微服务带来的种种好处的同事,也要承担她所带来的各种困扰。因为系统不再是一个独立的个体,而是分部到不同地方、不同宿主、不同区段单独的服务个体(节点),他散落,不统一,那么,当某个节点出现问题,如何快速定位,将是一个挑战。你总不可能说我把每个节点的日志都查一遍吧。那么,这个问题可以这样描述:

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

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

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

日志的重要性和复杂性

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

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

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

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

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

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

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

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

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

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

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

  • 日志采集:使用哪种日志组件来作为采集,.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。

原文地址:https://www.cnblogs.com/SteveLee/p/MicroService_Logs.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

NET Core微服务之路:简单谈谈对ELK,Splunk,Exceptionless统一日志收集中心的心得体会...相关推荐

  1. NET Core微服务之路:实战SkyWalking+Exceptionless体验生产下追踪系统

    前言 当一个APM或一个日志中心实际部署在生产环境中时,是有点力不从心的. 比如如下场景分析的问题: 从APM上说,知道某个节点出现异常,或延迟过过高,却不能及时知道日志反馈情况,总不可能去相应的节点 ...

  2. .NET Core微服务之路:文章系列和内容索引汇总 (v0.52)

    原文:.NET Core微服务之路:文章系列和内容索引汇总 (v0.52) 微服务架构,对于从事JAVA架构的童鞋来说,早已不是什么新鲜的事儿,他们有鼎鼎大名的Spring Cloud这样的全家桶框架 ...

  3. .NET Core微服务之路:文章系列和内容索引汇总 (v0.53)

    微服务架构,对于从事JAVA架构的童鞋来说,早已不是什么新鲜的事儿,他们有鼎鼎大名的Spring Cloud这样的全家桶框架支撑,包含微服务核心组件如 1. Eureka:实现服务注册与发现. 2. ...

  4. .NET Core微服务之路:不断更新中的目录 (v0.42)

    原文:.NET Core微服务之路:不断更新中的目录 (v0.42) 微服务架构,对于从事JAVA架构的童鞋来说,早已不是什么新鲜的事儿,他们有鼎鼎大名的Spring Cloud这样的全家桶框架支撑, ...

  5. NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成...

    原文:NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成 本篇内容属于非实用性(拿来即用)介绍,如对框架设计没兴趣的朋友,请略过. 快一个月没有写博 ...

  6. .NET Core微服务之路:基于Consul最少集群实现服务的注册与发现(一)

    原文:.NET Core微服务之路:基于Consul最少集群实现服务的注册与发现(一) Consul介绍 Consul是HashiCorp公司推出的开源工具[开源地址:https://github.c ...

  7. .NET Core微服务之路:基于Ocelot的API网关实现--http/https协议篇

    前言 最近一直在忙公司和私下的兼职,白天十个小时,晚上四个小时,感觉每天都是打了鸡血似的,精神满满的,连自己那已经学打酱油的娃都很少关心,也有很长一段时间没有更新博客了,特别抱歉,小伙伴们都等得想取关 ...

  8. NET Core微服务之路:基于Ocelot的API网关实现--http/https协议篇

    前言 最近一直在忙公司和私下的兼职,白天十个小时,晚上四个小时,感觉每天都是打了鸡血似的,精神满满的,连自己那已经学打酱油的娃都很少关心,也有很长一段时间没有更新博客了,特别抱歉,小伙伴们都等得想取关 ...

  9. .NET Core微服务之路:让我们对上一个Demo通讯进行修改,完成RPC通讯

    最近一段时间有些事情耽搁了更新,抱歉各位了. 上一篇我们简单的介绍了DotNetty通信框架,并简单的介绍了基于DotNetty实现了回路(Echo)通信过程. 我们来回忆一下上一个项目的整个流程: ...

最新文章

  1. 在失败中学习,MIT新研究显示,机器可以像婴儿一样学会理解人类目标
  2. 用脑电波玩游戏,这款VR体验逆天了
  3. 第2期 | 国内脑机接口领域专家教授汇总(修改)
  4. 如何屏蔽PHP浏览器头信息X-Powered-By
  5. 如何让PHP运行更高效
  6. matlab 程序设计
  7. ue4导入倾斜摄影_干货 | 6款倾斜摄影裸眼3D采集软件推荐给大家
  8. Linux 进程管理与监控(supervisor and monit)
  9. sa无法映射到数据 报错:创建对于用户sa失败
  10. Dubbo的SPI机制对比传统的SPI做了哪些改进?Dubbo的IOC和AOP
  11. 使用rsync工具构建php项目管理平台
  12. HTML5 nav元素
  13. 【华为云技术分享】如何让敏捷回顾会议更有效果,这样做就对了
  14. openfire的搭建与运行(转)
  15. Java的GUI的学习五(窗体事件)
  16. Power BI 数据分析基础
  17. android拒绝服务攻击,Android移动设备上的DDOS攻击
  18. 2014年服装设计短训班(周末班)招生简章-北京服装学院培训中心
  19. [机器学习与scikit-learn-33]:算法-回归-通过PolynomialFeatures实现数据的升维
  20. VRP远程管理(华为设备telnet登录密码配置与测试环境搭建)——在物理机上创建回环网卡及eNSP模拟器与物理机实现连接通信

热门文章

  1. User Stories - 最佳实践 (Best Practices)
  2. EventBus的实现
  3. zabbix 3.0.0beta1安装-centos6.8版本
  4. [新手学go]关于go语言中的变量重复声明
  5. 如何在已安装TMG2010服务器上安装Symantec Backup Exec 2010 Remote Agent
  6. Windows Azure 社区新闻综述(#69 版)
  7. python实例32[简单的HttpServer]
  8. c#使用PdfiumViewer展示、打印pdf文档
  9. AspNetCore在docker部署时遇到一个小坑
  10. 只要300页!火遍全网的NET6+linux知识手册!拿走不谢!