开源日志聚合系统盘点(1)

无论你从事什么业务,你的软件应用程序和基础设施都会产生日志,记录谁在所述系统上做了什么活动。

对于个人而言,你的 PC、笔记本、手机、路由器等等,时刻都在产生一种叫日志的东西,以及事件,你的上网浏览记录、你的粘贴板,你安装了哪些应用、哪些APP,尽管你可能从来就不会去触碰它,无论你是否感觉到了它的存在,它就在那里!

而对于企业用户,在分布式数据处理中,一个常见的挑战是收集来自不同计算节点的日志,并将它们组织起来,以便以后可以有效地搜索,以达到监控和调试的目的。

使用 Linux 和 Mac 操作系统的多半是运维和开发人员,很多人可能都有这样的经历:为了修复一个关键的生产问题,在多个服务器上无望地翻阅日志文件,面对 /var/log 目录下的那些各种实时更新的、巨大的或归档的文件中的时候,无望到完全失去自我!

当然,如果您使用 Windows 系统,遇到系统故障的时候,有人可能会打开 Windows 事件查看器查看一下,好像这一般也帮不上什么。最终的结果一般都是重装系统,便利的系统安装工具甚至让你几分钟就可以装好系统,这比排查问题要轻快多了。

那么,日志系统到底要如何做、如何管理和利用,才能帮助迅速排查和定位问题、发挥其价值呢?

是个大课题!

对于个人或家庭用户,我想需要的是一个能洞察一些活动的、直观的系统监控和管理工具,具备多端适应能力,在遇到紧急状况的时候,能够以最快的方式通知用户,当然最好是开源的,还没打完前面几个字我就清醒地认识到——这绝对是痴心妄想!根本就没有这样的存在!

而对于企业用户,情况要好得多。

日志聚合——收集来自不同来源的日志以提供整个系统的整体视图。

目前市场上有几种现成的日志聚合解决方案:

  • ELK Stack:Elasticsearch、Logstash 和 Kibana;
  • EFK Stack:ElasticSearch、Fluentd 和 Kibana;
  • TIG Stack:Telegraf、InfluxDB 和 Grafana;
  • GEM Stack:Graylog、 Elasticsearch 和 MongoDB;

一线可视化大厂 Grafana 也推出了自己的日志组合,基于 Loki 的日志栈由3个组件组成:

  • promtail 是代理,负责收集日志并发送给 Loki。
  • loki 是主服务器,负责存储日志和处理查询。
  • Grafana,负责查询和显示日志。

也有基于 ClickHouse 这样的 OLAP 数据库的解决方案,搭配 Logstash、Vector 等收集器,和 Grafana \ Superset 等来做可视化。个人 比较推崇这种解决方案,做日志监控的同时,连着分析也一起做了。实现起来不复杂,实际使用存储空间比较节省。

当然包治百病的“万能药”是没有的,没有一个明确的解决方案适用于各种应用,不同的日志处理方案可能更适合某些用例。接下来如有时间再介绍。

喜歡:
0
標簽:
去到頂部