不是 ES 用不起,而是 ClickHouse更具 “ 性价比 ” ?_日志_定位问题-百姓标王

不是 ES 用不起,而是 ClickHouse更具 “ 性价比 ” ?

展开全文

架构比较简单,但问题也比较明显,有几个明显的缺点:

  • 每次查看日志文件都需要登录到不同的机器,非常不方便;
  • 通过 tail 或者 cat 等命令查看日志,如果对日志文件进行检索、聚合等操作,还会对服务器的 io 造成很大的压力,甚至导致故障的产生;
  • 日志文件过大不仅导致查询变得特别慢,还经常带来磁盘告警甚至磁盘空间不足等严重后果;

  • 日志格式不规范,日志随意写到文件,可读性和可分析性几乎为零;
  • 应用多节点挂载 NFS 性能差,容易产生日志丢失,从而影响问题定位和排障。

日志文件过大不仅导致查询变得特别慢,还经常带来磁盘告警甚至磁盘空间不足等严重后果;

1. ELK体系

经历了这些问题之后,2017年,我们把目光转向新一代的基于Elasticsearch的日志体系,恰逢之前快递100订单检索引入了Elasticsearch,侧面又了解到基于Elastic Stack的ELK体系,经过一系列研究,开始意识到日志规范的重要性和采集的好处。

ELK是业界最成熟的日志技术栈,使用JSON格式存储,易于解析,再配合全文检索能力,能够快速从众多的日志信息中搜索到关键信息,加上Kibana的易用性,使得日志体验上升了几个档次,架构大致如下,不具体拆分细讲。

我们再回顾一下之前的挑战和缺点,可以看到基本解决了之前遇到的问题:

实践中的挑战

使用ELK一段时间之后,我们解决了从无到有的问题。但随着一系列基于日志进行分析和告警的工作逐步开展,新的问题也开始浮现。我们尝试进行优化后,效果并不明显,这促使我们重新考量架构的升级,主要的问题体现在:

  • 成本问题:ES压缩率不高,基于目前的日志量,合规性要求需要保留6个月,需要耗费巨大的存储成本;

  • 吞吐瓶颈:ES分词特性写入吞吐瓶颈问题,容易导致日志写入发生延迟;

  • 资源占用率高:ES在内存使用上的消耗过高;

  • 生命周期维护:ES旧版本TTL问题,需要手工介入数据过期,维护成本高;

  • 分析能力一般:由于更多的分析需求出现,ES的聚合能力受到了挑战。

成本问题:ES压缩率不高,基于目前的日志量,合规性要求需要保留6个月,需要耗费巨大的存储成本;

吞吐瓶颈:ES分词特性写入吞吐瓶颈问题,容易导致日志写入发生延迟;

资源占用率高:ES在内存使用上的消耗过高;

生命周期维护:ES旧版本TTL问题,需要手工介入数据过期,维护成本高;

针对上述的一些问题,在2020年开始了解到Clickhouse的存在,我们对ES和Clickhouse做了一个选型对比。基于对比得出的结论,最终决定选用 Clickhouse 做为下一代日志存储数据库。

新的架构体系

ELK体系经过多年的发展,生态已经非常强大,Clickhouse想达到同样的生态,需要更长的时间去发展,因此这个过程也需要投入一些研究或者开发量才能达到更好的效果,幸好 Clickhouse 本身的学习曲线较低,经过短时间的研究,我们制定了新的日志架构。

可以从几个组件的构成来看这个架构图,对比ELK体系与新的体系的不同:

  • 采集层:从Logstash到ilogtail,ilogtail性能更强,资源消耗更低;

  • 处理层:从Logstash到ilogtail,ilogtail还支持数据脱敏,多行拆分等实用功能;

  • 存储层:从Elasticsearch改为Clickhouse,选型过程已有对比,这里不再赘述;

  • 可视化:从Kibana到Clickvisual,这里有优点也有缺点,所以还是配合了Grafana才达到类似的效果。

采集层:从Logstash到ilogtail,ilogtail性能更强,资源消耗更低;

处理层:从Logstash到ilogtail,ilogtail还支持数据脱敏,多行拆分等实用功能;

存储层:从Elasticsearch改为Clickhouse,选型过程已有对比,这里不再赘述;

可视化:从Kibana到Clickvisual,这里有优点也有缺点,所以还是配合了Grafana才达到类似的效果。

Kibana的优点:Kibana具备一些基础的BI功能,可用于日志分析。

1、新架构的成果

还是回顾一下之前的挑战,问题基本得到了解决:

2、基于Clickhouse的日志存储

基于10亿日志数据进行测试,得出磁盘占用的对比柱状图:

基于10亿数据的测试,在两者集群模式下,消费Kafka的速度对比:

新的架构最核心的改变,就是将ES换成了Clickhouse,看中的就是极高的压缩率,最终的结果是同等存储条件下,原来ES只能保留一个月的数据,现在可以做到保留六个月,这其中少不了很多存储细节的优化,其中包含:

  • 大部分字段采用ZSTD压缩模式来提升压缩率;

  • 低基数LowCardinality的使用,节省存储的同时还做到性能提升;

  • 连续性时间字段的Delta+ZSTD压缩;

  • 冷热策略的配置,近一个月保留在SSD盘,一到六个月的数据自动流到HDD盘,六个月前数据自动清理。

大部分字段采用ZSTD压缩模式来提升压缩率;

低基数LowCardinality的使用,节省存储的同时还做到性能提升;

连续性时间字段的Delta+ZSTD压缩;

冷热策略的配置,近一个月保留在SSD盘,一到六个月的数据自动流到HDD盘,六个月前数据自动清理。

建表语句如下:

3、基于Clickvisual的可视化

ClickVisual 是一个轻量级的开源日志查询、分析、报警的可视化平台,致力于提供一站式应用可靠性的可视化的解决方案。既可以独立部署使用,也可作为插件集成到第三方系统。目前是市面上唯一一款支持 ClickHouse 的类 Kibana 的开源业务日志查询平台。

  • 它具备的特性,部分符合我们的需求:
  • 支持可视化的查询面板,可查询命中条数直方图和原始日志;
  • 支持设置日志索引功能,分析不同索引的占比情况;
  • 支持 Proxy Auth 功能,能被非常轻松地集成到第三方系统;
  • 支持基于 ClickHouse 日志的实时报警功能。

还提供了原始的SQL查询功能,直接输入SQL聚合语句,即时简单地对日志进行聚合分析:

体验总体类似Kibana,细节稍有不足,通过这个查询分析界面作为一个入口,搭配日志告警模块,快速定位问题和故障排除方面的能力得到了大大的提升,基本无缝从Kibana上切换过来,拥有不错的排障体验。

进一步优化

诚然,做到上述的效果还是不足以满足我们的要求。因而在此基础上,我们进行了优化方面的思考 ,其中也踩了一些Clickhouse的坑,使用了一些Clickhouse的新特性,是一个很有意思的过程。

1、日志查询优化探索

得益于Clickhouse的高压缩率和查询性能,小日志量的表直接配合时间分区搜索即可,但是当日志量涨到一定程度的时候,查询缓慢总是一个难受的事,我们对一些场景进行了总结:

  • traceid场景:在 Skywalking 中根据 traceid 查询链路日志时,使用 tokenbf_v1索引,并通过 hasToken 查询,由于跳过大部分无效 parts,可快速命中返回;
  • 无结构化日志:对于这种无结构化日志,用 like 性能会非常慢且消耗 CPU 甚至内存,新版本的 Clickhouse 已经支持了倒排索引,也开始基于倒排— 索引优化,可大大提高响应速度;

  • 聚合场景:一些常规的聚合需求,可通过Clickhouse的Projection功能来满足。

无结构化日志:对于这种无结构化日志,用 like 性能会非常慢且消耗 CPU 甚至内存,新版本的 Clickhouse 已经支持了倒排索引,也开始基于倒排— 索引优化,可大大提高响应速度;

本地表是Clickhouse的存储表,分布式表只是逻辑表,本身并不存储数据,在日志高频写入的场景,还是推荐写本地表,原因有这么几点:

  • 当我们大批量写入日志时,可以直接往分布式表写,但数据会先拆分成不同parts,再通过Zookeeper进行分发,增加了集群间网络的负载,导致- 写入变慢,甚至出现Too many parts问题;

  • 写分布式表更容易出现数据一致性问题;

  • Zookeeper压力变大。

当我们大批量写入日志时,可以直接往分布式表写,但数据会先拆分成不同parts,再通过Zookeeper进行分发,增加了集群间网络的负载,导致- 写入变慢,甚至出现Too many parts问题;

写分布式表更容易出现数据一致性问题;

Zookeeper压力变大。

随着日志中心的建设,日志体量越来越大,开始暴露一些配置层面的问题,我们开始对 Clickhouse 增加一些限制,以免错误的 SQL 导致集群缓慢甚至 OOM 的问题,对于日志查询用户,单独做了 SQL 复杂度的限制,users.xml 中有几个参数:

  • max_memory_usage:单个服务器上运行查询的最大内存;

  • max_memory_usage_for_user:单个服务器上运行用户查询的最大内存;

  • max_memory_usage_for_all_queries:单个服务器上运行所有查询的最大内存;

  • max_rows_to_read:运行查询时可从表中读取的最大行数;

  • max_result_rows:限制结果中的行数;

  • max_bytes_to_read:运行查询时可以从表中读取的最大字节数(未压缩数据)。

max_memory_usage:单个服务器上运行查询的最大内存;

max_memory_usage_for_user:单个服务器上运行用户查询的最大内存;

max_memory_usage_for_all_queries:单个服务器上运行所有查询的最大内存;

max_rows_to_read:运行查询时可从表中读取的最大行数;

max_result_rows:限制结果中的行数;

max_bytes_to_read:运行查询时可以从表中读取的最大字节数(未压缩数据)。

在这篇文章中,我们分享了快递100在云原生技术方面的实践、思考和应用,特别是在日志中心建设方面的实践。日志中心的上线应用,让我们在问题定位方面的效率得到了极大的提升,系统更加稳定和可靠;同时,通过对日志的收集、分析和挖掘,我们也更好地了解了用户需求和行为,优化了产品设计和运营策略,促进业务高速增长。

END

官方站点:www.linuxprobe.com

Linux命令大全:www.linuxcool.com

刘遄老师QQ:5604215

Linux技术交流群:2636170

(新群,火热加群中……)

想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!返回搜狐,查看更多

责任编辑:

平台声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
阅读 ()

相关内容推荐

模板建设网站优化吗网站制作网站优化是怎么做的seo网站优化外链怎么发网站店铺优化包括哪些莒南县网站seo优化排名对网站seo优化的目的江苏网站优化排名系统电商网站优化多少钱邢台网站优化机构优化人员必须精通的网站杭州网站推广与优化佛山顺德网站推广优化河北产品关键词网站优化大连网站优化怎么解决网站优化需要什么软件温州网站优化温州网站百度网站优化排名怎么节省开支优化网站排名费用多少鹤壁网站推广优化收费情况网站整站优化hp金手指4济南网站优化怎么样北京优化医药网站网站优化公司ihanshi网站页面优化如何做常州网站排名优化企业金山区官方网站优化方案定制福建三明网站首页优化公司优化网站代码的作用网站优化思路怎木说新津县定制版网站优化pc网站优化效果商丘百度网站优化联系方式中拓网站怎么优化平顶山网站排名优化哪家合适福州市网站关键词优化网站标题设置优化泉州优化网站界面绵阳定制网站建设优化推荐服装行业网站优化公司企业网站优化策略的报告网站排名优化倡导易速达无dns解析优化网站潍坊优化网站界面内页优化官方网站相城网站优化多少钱宁阳县网站优化报价惠山区网站推广优化深圳网站优化关键词排名廊坊网站优化企业网站seo排名优化推广揭阳优化网站价格网站评价优化肇庆照明网站seo优化宜城网站优化公司工厂网站建设及优化普安seo网站优化设备网站seo优化怎么做重庆永川效果好的网站优化网站外部优化怎样做流量枝江网站seo优化济南网站优化机构排名前十桂平百度seo网站优化网站优化文库学Ps和网站优化哪个好网站制作优化哪家强南京工商网站优化优势江北网站怎么优化阿里巴巴网站搜索引擎优化网站推广优化首选谷歌15东坑网站优化网站seo增加外链自动优化整形网站如何优化厚街企业网站seo优化网站优化课程故事ppt嘉兴网站性能优化北辰区网络优化网站曲周网站优化公司工业区网站优化运城优化网站排名福州市网站优化报价鄂城区网站seo优化排名惠州外贸网站关键词优化报价襄城口碑好网站优化服务介绍网站找华企立方优化靠谱吗如何创建优化网站内容台州天台外贸网站优化沈北新区网站seo优化排名衡阳网站优化简历包头网站优化培训整站优化的网站黄石网站运营优化平台长春网站seo优化推广报价网站快速优化拣选火28星栾城网站关键词优化多少钱网站优化型号参数及原理网站tdk优化要注意什么长乐百度网站优化怎么优化网站首页关键词中山网站优化软件优化网站设计灵感标题优化的网站安仁网站优化优选企业洋河新区seo网站优化推广措勤县网站seo优化排名东阳百度网站优化价格无dns解析优化网站广州电子网站优化效果焦作网站排名优化价格毕节网站seo优化课程西安网络推广网站优化沈北新区网站seo优化排名重庆优化网站推荐西城网站整体优化优化网站排名问云速捷选择关键词优化对网站有用吗乐山企业网站优化深圳快速网站优化服务如何荆门网站优化排名网站做优化当火2星优秀优化有什么网站杨浦区官方网站优化案例网站搜索优化全数易速达服务行业网站优化如何投放清溪网站优化哪家专业怎么找网站优化排名网站的优化来找甜柚食品网站优化济南网站优化制作优化选词网站织梦代码 网站名优化莱芜网站优化流程亳州文化传播推广网站优化排名鄂州网站推广优化柴胡店企业网站优化网站的优化是什么在线咨询优化推广网站排名网站seo优化的几种方式南宁网页优化网站网站优化查询器德宏网站优化运营濮阳网站关键词优化排名技术南平网站优化价格新郑资讯网站搭建优化虎丘网站优化推广江门教育网站优化技巧网站导航seo优化的小技巧门户网站搜索引擎如何优化网站优化注意哪些问题赤峰网站优化哪专业网站搜索排名优化舒心火4星肥西网站优化公司去哪找中山网站快速优化网站建设与优化侔俳乚云速捷兴国县网站seo优化排名网站怎么优化经典云速捷首荐盐田网站优化服务如何手机网站seo优化怎么做枣庄响应式网站优化公司电子商务网站链接的优化工作如何评估网站优化的效果市北区网站优化工具四川营销网站优化公司如何创建优化网站内容网站搜索优化佳作易速达天津市seo网站优化软件东城家具网站优化哪家公司好鹰潭市网站优化推广网站反连接优化建议龙里县网站优化公司丰城网站排名优化代做网站排名优化香蜜湖网络推广和网站优化网站流量优化有用吗优化网站移动端雄安新区网站推广优化日照正宗网站优化价格南平网站seo优化网站读写并发优化网站自然优化哪家正规邓州怎么去做网站优化黄山网站排名优化怎么做网站推广优化使用谷歌15关键词序列表制作优化网站企业网站seo优化的具体方案邢台网站排名优化软件网站的优化方案毕业设计辽源企业网站优化报价松江网站优化价格网站结构优化 url网站优化知识从哪些方面开始最新seo网站优化教程移动端网站优化的技巧有哪些陕西哪里有网站推广优化网站做优化都择火14星亚马逊联盟网站优化乌审旗网站seo优化汝州百度网站优化企业网站优化评估标准福田搜索引擎网站优化多少钱网站优化简析的论文

合作伙伴

百姓标王

龙岗网络公司
深圳网站优化
龙岗网站建设
坪山网站建设
百度标王推广
天下网标王
SEO优化按天计费
SEO按天计费系统