JAVA微服务场景下分布式日志收集排查问题实战

这篇具有很好参考价值的文章主要介绍了JAVA微服务场景下分布式日志收集排查问题实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题产生的根由?不同服务的日志存在哪里?我们怎么去排查线上问题?

问题场景:我们部署的java服务可能有几十个,不同的项目里面他是看不到别的服务的日志,只有服务的返回msg消息,相比传统的单体服务来说,排查问题和解决问题的原因相对比较复杂和麻烦,我们传统的单体项目的日志存txt文本,log文件,但是项目日志的文件太大了,几个G,十几个G的时候去打开日志特别慢,很不方便。

那么处理这种日志应该怎么做和设计一个日志搜索呢?

传统的解决办法,数据库记录错误日志,es索引写入,页面搜索,写硬盘定时清理,但是日志不仅仅分系统日志,服务日志,还有业务逻辑操作日志,系统日志等,从而加大了我们存储日志的内存空间和复杂度。

下面给大家讲解微服务下日志怎么使用,怎么查问题。

日志方案:

方案一:分布式日志搜集:ELK+kafka 或者ELK 这是最传统的方式。

方案二:filebeta+logstatsh+ES+web  这钟方式处理的日志一般是网络处理,filebeta支持大量批量文件读取和操作,从而大大加快文件写入,因为filebeta不存在数据会丢失的情况。

方案三:微服务网关拦截:统一请求分发,每一个请求抓取服务的日志返回和信息,写入硬盘或者表中,定时数据清洗。当然实际开发当中没有这么用,这种方式不推荐。

方案四:阿里云日志搜集:日志服务 SLS (我相信很多企业目前都是在用阿里的sls,因为用起来比较方便,我们只关心服务的部署,阿里云帮我们做日志搜集,其实日志和ELK类似都是走索引写入查询)

方案一和方案二 和方案三是目前企业用的比较多的,当然一个是花钱一个是自己搭建的,花钱的肯定用起来方便。

我们今天就实践操作讲解一下阿里云的日志服务 SLS怎么使用和查日志。

JAVA微服务场景下分布式日志收集排查问题实战

看这个图 来说这个是目前我们生产环境的sls日志服务查询出来一个月的日志量,那一般企业的日志量我相信过亿就不错了,这个是目前12百个服务部署到阿里云k8s容器上面。所以日志量很大。

下面我们来看sls日志如何使用操作?

搜索方式支持和数据库一样的操作,可以模糊查询和精确查询日志,不是等值查询,或和且的方式都可以。

 阿里云日志查询语法:

查询语法 (aliyun.com)(可以参考阿里云的语法使用)

我们按照服务名称或者ip + id编号,筛选时间或者搜索指定打印指定的日志名称。

服务名称 + 后台日志搜索  

JAVA微服务场景下分布式日志收集排查问题实战

JAVA微服务场景下分布式日志收集排查问题实战

这里由于有敏感数据就不贴出来了,搜索方式是这样,如果你想要统计分组也是可以的。

服务名称 + 后台日志+ 日志关键词+like+ 分组

服务名称 and api auth-center  response  or LIKE memberId GROUP unionId 

JAVA微服务场景下分布式日志收集排查问题实战

基于这种查询就能查到具体的日志输出了,如果你要聚合统计,你可以添加预查询

JAVA微服务场景下分布式日志收集排查问题实战

 预查询的方式就是message: returnMessage  这样

上下文浏览:

JAVA微服务场景下分布式日志收集排查问题实战

 上下文浏览代表是程序从上往下执行,那么0的下标代表当前位置,负数代表程序上面,正数代表程序还在往下面执行,排查问题的时候每一步都会有记录,这个很关键。也是能够快速排查到问题原因的。

当然还有一些日志统计,报表的,都可以通过控制台去处理筛选查看:

JAVA微服务场景下分布式日志收集排查问题实战

 日志聚类:

JAVA微服务场景下分布式日志收集排查问题实战

 

日志智能聚类(LogReduce)功能能将相似度高的数据聚合在一起,提取共同日志Pattern(模式),快速掌握日志全貌

主要功能和特性:

  • 支持任意格式日志:Log4J、Json、单行(syslog)
  • 亿级数据,秒级出结果
  • 日志经任意条件过滤后再Reduce
  • 对Reduce后Pattern,根据signature反查原始数据
  • 不同时间段Pattern比较
  • 动态调整Reduce精度

主要应用场景:

  • DevOps(问题定位、异常检测、版本回归等)
  • 安全、入侵检测

计费标准:

开启“日志聚类”功能后,索引总量会增加原始日志大小的10%

其实开启过后就是增加指定日志的聚合并且持久化操作,反正费用是不能少的

监听事件查询:

监听索引字段的事件查询,主要是以阿里云的字段

JAVA微服务场景下分布式日志收集排查问题实战 

 

JAVA微服务场景下分布式日志收集排查问题实战

当然还有数据加工的我就不演示了。

下面我们讲重点:其实sls服务也有查询不到问题的时候,那是必然的,你说你日志看到了但是没有看到别的服务的调用链路,这是关键,每一条执行日志都有一个 tid,tid是什么?tid就是链路调用的tranceid和spanId ,微服务分布式调用链路追踪请求服务的时候会传一个tranceid 从而帮助我们排查问题。

我们可以通过Sleuth + Zipkin 追踪日志记录。

我们这里采用Skywaking 。

JAVA微服务场景下分布式日志收集排查问题实战

 

https://github.com/apache/skywalking

感兴趣的可以去看看

JAVA微服务场景下分布式日志收集排查问题实战

搜索某一个错误的日志 

 

 JAVA微服务场景下分布式日志收集排查问题实战

原理也是通过tranceId去查询调用链路,服务的链路。 从而判断这个服务的接口是否成功,这样我们整个链路就可以知道哪里出了问题了。 Zipkin也是通过tranceId去查询日志。原理都是一样的。

 当然也可以java服务集成日志写入到es里面进行查询,通过服务名称,渠道,时间,log日志级别做成web页面查询也是可以的。

 ————没有与生俱来的天赋,都是后天的努力拼搏(我是小杨,谢谢你的关注和支持)文章来源地址https://www.toymoban.com/news/detail-434472.html

到了这里,关于JAVA微服务场景下分布式日志收集排查问题实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker搭建Elk+Kafka+Filebeat分布式日志收集系统

    目录 一、介绍 二、集群环境 三、ES集群 四、Kibana  五、Logstash 六、Zookeeper 七、Kafka 八、Filebeat 八、Nginx (一)架构图  (二)组件介绍 1.Elasticsearch 是一个基于Lucene的搜索服务器。提供搜集、分析、存储数据三大功能。它提供了一个分布式多用户能力的全文搜索引擎,基于

    2024年02月04日
    浏览(52)
  • 云原生可观测框架 OpenTelemetry 基础知识(架构/分布式追踪/指标/日志/采样/收集器)...

    OpenTelemetry 是一个开源的可观测性框架,由云原生基金会(CNCF)托管。它是 OpenCensus 和 OpenTracing 项目的合并。旨在为所有类型的可观测信号(如跟踪、指标和日志)提供单一标准。 https://opentelemetry.io https://www.cncf.io https://opencensus.io OpenTelemetry 指定了如何收集遥测数据并将其发送到

    2024年01月16日
    浏览(62)
  • docker搭建最新ELFK分布式日志收集系统(elasticsearch+logstash+filebeats+kibana7.16.1)

    随着分布式项目的集群部署,日志的存储也分散开来,在日后出现问题进行日志定位时就会出现很困难,服务器很多会做负载均衡,这样最终请求所落在的服务器也随机起来,所以好的方式就是集中收集起来,不需要一台一台服务器去查,方便查看。 ELFK是Elasticsearch+Logstash+F

    2024年02月08日
    浏览(49)
  • 在CSDN学Golang场景化解决方案(EFK分布式日志系统方案)

    在 Golang EFK 分布式日志系统方案中,ElasticSearch 是一个分布式搜索引擎和数据存储库,它可以用于存储和搜索大量的日志数据。以下是 ElasticSearch 分布式集群部署的步骤: 下载 ElasticSearch:从 ElasticSearch 官网上下载最新版本的 ElasticSearch。 解压缩并安装 ElasticSearch:将下载下来

    2024年02月14日
    浏览(44)
  • ZooKeeper的应用场景(命名服务、分布式协调通知)

    命名服务(NameService)也是分布式系统中比较常见的一类场景,在《Java网络高级编程》一书中提到,命名服务是分布式系统最基本的公共服务之一。在分布式系统中,被命名的实体通常可以是集群中的机器、提供的服务地址或远程对象等一这些我们都可以统称它们为名字(Name),

    2024年02月12日
    浏览(45)
  • 湛江阿里云代理商:阿里区块链分布式身份服务解决方案服务场景

    简介: 飞机@luotuoemo 本文由(阿里云代理商:【金推云】www.jintui.cn )撰写 阿里云是阿里巴巴集团旗下的全球领先的云计算及人工智能技术公司。其中,阿里云区块链分布式身份服务(BlockChain Trusted Identity Service,以下简称BTID)是阿里云自主研发的一款基于区块链技术的全新

    2024年04月17日
    浏览(49)
  • plumelog介绍与应用-一个简单易用的java分布式日志系统

    官方文档:http://www.plumelog.com/zh-cn/docs/FASTSTART.html 无代码入侵的分布式日志系统,基于log4j、log4j2、logback搜集日志,设置链路ID,方便查询关联日志 基于elasticsearch作为查询引擎 高吞吐,查询效率高 全程不占应用程序本地磁盘空间,免维护;对于项目透明,不影响项目本身运行

    2024年02月10日
    浏览(40)
  • 深度解析四大主流软件架构模型:单体架构、分布式应用、微服务与Serverless的优缺点及场景应用

    🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础入门篇)》学会Golang语言

    2024年02月06日
    浏览(56)
  • 存储、计算、分布式存储篇(收集整理适合小白)

    存储分类 块存储 需要格式化,将文件直接保存到磁盘上 文件存储 应用程序通过调用操作系统将文件保存到块存储进行持久化 Object对象存储 基于对象的存储,也可以被称为云存储,在对象存储系统中,文件没有多层级的文件结构,而是以存储空间的概念,文件被拆分为多个

    2024年02月05日
    浏览(55)
  • Java单体到分布式进阶,分布式到高可用进阶,单体到微服务进

    鹅厂实习第十周 研二下了论文没有实习没有怎么办 数据分析求职Happy Ending 献上我的面经和回答思路 求求大家投下我们鹅厂吧 五年职场人,今做面试官,我来揭秘大学生校招内幕! 五年职场人,今做面试官,我来揭秘大学生校招内幕! 京东Java实习一面 机械转码前端上岸,

    2024年03月08日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包