您当前的位置: 首页 >  微服务

杨林伟

暂无认证

  • 2浏览

    0关注

    3337博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

微服务轮子项目(07) - 日志解决方案设计

杨林伟 发布时间:2020-12-14 10:09:35 ,浏览量:2

文章目录
    • 1. 引言
    • 2. 企业级日志解决方案设计
    • 3. ELK常见部署架构
      • 3.1 Logstash作为日志收集器
      • 3.2 Logstash作为日志收集器
      • 3.3 引入缓存队列的部署架构
    • 4 总结

1. 引言

前面主要讲解了服务认证架构的设计,有兴趣的童鞋可以参考下:

  • 《微服务轮子项目(03) - 服务认证架构设计(有网络隔离)》
  • 《微服务轮子项目(04) - 服务认证架构设计(无网络隔离)》
  • 《微服务轮子项目(05) - 服务认证架构设计(token自动续签)》
  • 《微服务轮子项目(06) - 服务认证架构设计(URL级权限控制)》

使用如下几张图总结(下图与本文无关,主要是总结前面章节讲解的内容,可以直接跳过):

  • 有网络隔离:在这里插入图片描述
  • 无网络隔离(优化前):在这里插入图片描述
  • 无网络隔离(优化后):在这里插入图片描述
  • token自动续签:在这里插入图片描述
  • url级别权限控制:在这里插入图片描述
2. 企业级日志解决方案设计

下面先附上一张解决方案图: 在这里插入图片描述 说明:

  • filebeat:部署在每台应用服务器、数据库、中间件中,负责日志抓取与聚合日志
  • 日志聚合:把多行日志合并成一条,例如exception的堆栈信息等
  • logstash:通过各种filter结构化日志信息,并把字段transform成对应的类型
  • elasticsearch:负责存储和查询日志信息
  • kibana:通过ui展示日志信息、还能生成饼图、柱状图等
3. ELK常见部署架构 3.1 Logstash作为日志收集器

这种架构是比较原始的部署架构,在各应用服务器端分别部署一个Logstash组件,作为日志收集器,然后将Logstash收集到的数据过滤、分析、格式化处理后发送至Elasticsearch存储,最后使用Kibana进行可视化展示,这种架构不足的是:Logstash比较耗服务器资源,所以会增加应用服务器端的负载压力。

在这里插入图片描述

3.2 Logstash作为日志收集器

该架构与第一种架构唯一不同的是:应用端日志收集器换成了Filebeat,Filebeat轻量,占用服务器资源少,所以使用Filebeat作为应用服务器端的日志收集器,一般Filebeat会配合Logstash一起使用,这种部署方式也是目前最常用的架构。

在这里插入图片描述

3.3 引入缓存队列的部署架构

该架构在第二种架构的基础上引入了Kafka消息队列(还可以是其他消息队列),将Filebeat收集到的数据发送至Kafka,然后在通过Logstasth读取Kafka中的数据,这种架构主要是解决大数据量下的日志收集方案,使用缓存队列主要是解决数据安全与均衡Logstash与Elasticsearch负载压力。

在这里插入图片描述

4 总结

以上三种架构总结:

  • 第一种部署架构由于资源占用问题,现已很少使用
  • 目前使用最多的是第二种部署架构
  • 至于第三种部署架构个人觉得没有必要引入消息队列,除非有其他需求,因为在数据量较大的情况下,Filebeat使用压力敏感协议向LogstashElasticsearch 发送数据。如果 Logstash 正在繁忙地处理数据,它会告知Filebeat减慢读取速度。拥塞解决后,Filebeat将恢复初始速度并继续发送数据。
关注
打赏
1662376985
查看更多评论
立即登录/注册

微信扫码登录

0.0575s