日志收集短期发展史
日志的查看和告警是日志收集最核心的两个原因之一,通常99%的日志都是无用的,除非这些日志被用来做数据聚合环比数据分析。而传统的ELK,无论是Logstash还是ES都是非常消耗系统资源的应用,大规模场景中,要即时消费kafka的数据是一件不太容易的事情。
观测性
我们知道,现在的大多数应用皆是分布式或者微服务。微服务架构是让开发人员能够更快构建和发布,而随着服务进一步扩张,我们越发的不清楚服务运行的状态。
而opentelmetry是来解决这种问题手段之一,微服务扩展后自己的服务和服务依赖之间的关系,通过可观察的方式使开发和维护都能够获得对系统的可见性。为了具备这种能力,系统就需要具备观测行。
观测性是用来描述对系统所发生情况的理解程度,正常运行还是已经停止,用户察觉是变快还是变慢。如何构建KPI和SLA约定指标,或者说能够接受怎么样的最坏状态。能够回答如上的这些问题,并且能够指出问题。理想情况下在中断服务之前快速响应并且快速解决。
而在术语上,观测性分为:事件日志,链路追踪和聚合指标。如果听到这个,让我们想起了最近的开源领域一些状态,或许就明白了,他们在做什么
小米夜莺监控Nightingale在2023.7月底发布了V6版,转而构建可观测性平台。
需要时刻掌握运行状态,可能是无法避免浪费,云产品提供了昂贵的观测平台服务:阿里云的商用产品arms和腾讯的商用产品
介绍到这里,我想今天的主题是从日志发展作为开始,而结束必然是与事件日志(logs),链路追踪(traces)和聚合指标(metrics)有关。
ELK的开始
最早的ELK日志收集逻辑如下
后来Graylog也成为更多的选择。而随着容器的发展,收集端logstash显然不够轻量,作为收集段fluentd,Fluent-bit用插件的方式比logstash更加轻便。而日志告警除开logstash,就是es插件。
但是,他们都有一个同样的问题,假如你只愿意收集某一些日志,而不是所有的日志 ,无论是Logstash还是fluentd,Fluent-bit都i不会很 轻松,你需要配置一些过滤规则或者标签,而整个配置清单至少需要100行上下。而在中间的插曲是阿里开源的 log-point,log-pilot不在对所有的pod收集,你可以通过传入环境变量的方式进行选择,这与早期阿里的平台收集日志是一样
但是好景不长,log-pilot突然就停更了,它不在支持新特性和变化。事情在短期内由回到了开源领域的fluentd。而在这个 过程中 ,有一家石墨公司推出了clickvisual,它不在使用es,而是clickhouse,因此在同配置下它的集群性能超过了ES集群
并且,clickhouse的数据很容易通过ttl来进行修改删除过期数据。但是clickvisual的产品是自己公司内部使用,而后免费开源出来的,因此它的界面似乎并没有获得广大用户青睐,clickvisual社区比较清淡。但是维护人员很活跃。
当然,这并没有完。除了上述这些,log-pilot在停更的2年后,阿里随后推出了新的开源项目ilogtail,但是ilogtail似乎和log-pilot的宿命一样,ilogtail的社区更多时候永远慢一些 ,无论是补丁还是PR合并,以及ISSUE回复,这让社区旁观的人仍然会认为这依旧是一个 KPI产品。
而在ilogtail出现的同时,另一个 loggie-io悄然出现,loggie-io是网易公司的日志收集端, loggie-io与clickvisual一样,都是商业公司内部的产品,而后进行开源公开。而clickvisual和 loggie-io的维护者相对要活跃,因此使用者居多。并且 loggie-io成功了接替了没有log-pilot这些日志的空白。并且 loggie-io提供了更多的使用功能 。此时的拓扑如下
而在这其中,唯一没有被取代的是logstash, logstash是老牌日志处理中最关键的一环,他几乎包含了所有能够被用到的功能他都有。但是Datadog公司的vector出现后,logstash有了被替代的可能。
vector是由rust编写,相比较java 的logstash使用资源更小,vector能够替代logstash的日志收集,中转,过滤,处理。它几乎可以替代logstash.
事情到了 这里 并没有完,VictoriaLogs还没有结束,而github上openobserve通过不到一年的时间收获6K星,它的出现对标了es和kibana,因为它可以同时替代es和kibana。并声称与 Elasticsearch 相比,后者可以将日志存储成本降低约 140 倍。支持日志、指标、跟踪(Opentelemetry),集群支持S3,警报和查询, SQL 和 PromQL。或许是得益于openobserve的parquet,openobserve声称单机每天可以处理超过 2 TB 的数据。Mac M2的处理速度为约 31 MB/秒,即每分钟处理 1.8 GB,每天处理 2.6 TB。
而这种情况在上一次这样的描述的是vm存储TimescaleDB相比。而且openobserve与vm的存储都是无状态的,尽管他们并不相同 ,但他可以仍然水平扩展,这样一来,这一切就更加明显了。