热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

NETCore微服务之路:简单谈谈对ELK,Splunk,Exceptionless统一日志收集中心的心得体会

                              前言日志,一直以来都是开发人员和运维人员最关心的问题。开发人员可通过日志记录来协助问题定位,运维人员可通过日志发现系统隐


                                                           前言

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

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


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



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



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



 


日志的重要性和复杂性

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

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

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

 

(图片来源于谷歌,侵权立删)

 

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

 


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

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


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



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



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



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


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



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

感谢阅读。



推荐阅读
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 全面解析运维监控:白盒与黑盒监控及四大黄金指标
    本文深入探讨了白盒和黑盒监控的概念,以及它们在系统监控中的应用。通过详细分析基础监控和业务监控的不同采集方法,结合四个黄金指标的解读,帮助读者更好地理解和实施有效的监控策略。 ... [详细]
  • 本文详细介绍了如何在 Android 中使用值动画(ValueAnimator)来动态调整 ImageView 的高度,并探讨了相关的关键属性和方法,包括图片填充后的高度、原始图片高度、动画变化因子以及布局重置等。 ... [详细]
  • 该平台旨在为大型企业提供一个高效、灵活且可扩展的分布式微服务架构解决方案。它采用模块化、微服务化和热部署的设计理念,结合当前最先进且无商业限制的主流开源技术,如Spring Cloud、Spring Boot2、MyBatis、OAuth2和Element UI,实现前后端分离的系统管理平台。 ... [详细]
  • 科研单位信息系统中的DevOps实践与优化
    本文探讨了某科研单位通过引入云原生平台实现DevOps开发和运维一体化,显著提升了项目交付效率和产品质量。详细介绍了如何在实际项目中应用DevOps理念,解决了传统开发模式下的诸多痛点。 ... [详细]
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
  • Spring Cloud学习指南:深入理解微服务架构
    本文介绍了微服务架构的基本概念及其在Spring Cloud中的实现。讨论了微服务架构的主要优势,如简化开发和维护、快速启动、灵活的技术栈选择以及按需扩展的能力。同时,也探讨了微服务架构面临的挑战,包括较高的运维要求、分布式系统的复杂性、接口调整的成本等问题。最后,文章提出了实施微服务时应遵循的设计原则。 ... [详细]
  • 本文介绍了Java语言开发的远程教学系统,包括源代码、MySQL数据库配置以及相关文档,适用于计算机专业的毕业设计。系统支持远程调试,采用B/S架构,适合现代教育需求。 ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • andr ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • libsodium 1.0.15 发布:引入重大不兼容更新
    最新发布的 libsodium 1.0.15 版本带来了若干不兼容的变更,其中包括默认密码散列算法的更改和其他重要调整。 ... [详细]
  • 在本周的白板演练中,Apache Flink 的 PMC 成员及数据工匠首席技术官 Stephan Ewen 深入探讨了如何利用保存点功能进行流处理中的数据重新处理、错误修复、系统升级和 A/B 测试。本文将详细解释保存点的工作原理及其应用场景。 ... [详细]
author-avatar
耿睿---疯子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有