日志分析工具
1 日志管理工具
日志管理工具有Splunk、Sumo Logic、LogStash、GrayLog、Loggly和PaperTrails
等等,数不胜数。日志就像石油,我们一直想摆脱它,却一直没有做到。
为了处理日益增长的数据,近年来出现了一大批分析和管理日志的工具,开发和管理人员能够借助这些工具来了解增长的数据。在这篇文章中,我将站在开发者的角度,分析一下这些工具的特点。
1.1 Splunk
作为这个领域中最大的工具,决定将 Splunk
做一个单独的分类。并不是说这个工具是最好的,而是对这个产品给予肯定,因为它从本质上创造了一个新的领域。
1.1.1 优点
在这个领域内功能最齐全的可能就是 Splunk
了。它有数百个来分析各种形式日志信息的程序——从安全领导到商业分析,再到底层监控。Splunk
的搜索和图表工具如此丰富,没有通过它(UI和API)得不到的数据。
1.1.2 缺点
Splunk
主要有两个缺点。第一,这个因素可能有些主观,我觉得这个解决方案太复杂了。如果要在一个高度复杂的环境中部署,就需要安装和配置一个专用集群。作为一个开发者,通常会因为这点而不把这个方案作为第一选择。
第二个缺点是它太昂贵了。要支持一个真实世界的软件,可能会花费一万多美金,这很可能就意味着你需要从其他地方削减预算,这样开发进程就慢了
1.2 Sumo Logic
Sumo
是在 Splunk
的基础上建立的 SaaS
版本,它沿用了 Splunk
早期的一些特性和视觉效果。不得不说,SL
今天已经发展成了一个成熟的企业级日志管理工具。
1.2.1 优点
SL
具备对数据简化、查找、制表等功能。可能是 SaaS
型的日志分析工具中功能最多的了。同样,作为 SaaS
型,SL 还具有安装简单,操作简单等优点。最吸引人的地方是,你可以建立一个基线,当一个事件(像是一个新版本首次上线或者恶意的请求等)使一些重要的指标发生了变化时,你可以收到动态通知。
1.2.2 缺点
由于这是通过 SaaS
的方式进行日志分析的,所以你必须将大量的数据上传至服务器进行分析,这就可能产生一些问题:
- 作为一个开发者,如果要分析的日志涉及到敏感信息或者 PII 你要确保做好了屏蔽。
- 在日志生成的时间与日志上传至服务的时间之间可能存在一些冲突。
- 在你的机器上回多出来几个 GB 的开销用于上传日志,不过这取决于你日志的吞吐量。
1.3 Loggly
Loggly
也是一个健壮的日志分析工具,强调简洁朴素让开发者用起来方便。
1.3.1 优点
SL 注重的是企业级别的应用和安全性,而 Loggly
却将重点放在了帮助开发者查找和修复操作性的问题上。因为操作界面非常友好,自定义性能和开发者仪表盘这种东西非常简单。并且它的价格透明,入门方便。
1.3.2 缺点
不要奢望 Loggly
具备成熟的架构、安全和分析解决方案。Loggly
不具备取证和监控基础架构,它仅仅是帮助开发者处理应用服务器数据的一个工具。除此之外的其他事情就需要你自己去做了。
1.4 PaperTrails
PaperTrails
擅长从多台机器上查找日志,并提供一个合并的窗口,使用起来很方便。鉴于你是从云端追踪日志,所以你离他们不会太远。
1.4.1 优点
PT
就是这么一个工具。通过它你可以从一个窗口轻松的查找多台机器上的日志。用户操作本身就像你机器上的日志,搜索命令也一样。它致力于将日志管理变得简单、易用,可以优雅地处理。而且它还不算很贵。
1.4.2 缺点
PT 是基于文本格式的。如果需要支持先进的集成、预测和报告功能,就显得力不从心了。
1.5 Storm
这是 Splunk
的兄弟, Splunk
的服务器上提供托管。
1.5.1 优点
Storm
让你无需安装软件,就能体验 Splunk
的完整版的功能。
1.5.2 缺点
Storm
不是商业的,所以流量有限。可以将其视作一个 Splunk
的限制版本,无需部署即可帮助新产品测试。 新服务Splunk Cloud
,致力于提供 Splunk SaaS
的完整体验。
1.6 Logstash
Logstash
是一款收集和管理日志的开源工具。它用到了一些其他的开源的资源:使用 ElasticSearch
来索引和查找数据,使用 Kibana
制表和可视化处理。他们联合起来,组成一个强大的日志管理解决方案。
1.6.1 优点
作为一个开源的解决方案,Logstash
允许用户有更大的定制空间,而且很便宜。Logstash
用了三个成熟的开源部件——都受到了很好的维护——组成一个强大的可扩展的软件包。由于开源,安装和使用和非常方便。
1.6.2 缺点
由于 Logstash
从本质上来说是三个部件的堆砌,所以需要面对三个不同的产品。这就意味着扩展也变得很复杂。Logstash
的过滤器是用 Ruby
写的,Kibana
是用纯 Javascript
写的,而 ElasticSearch
也有自己的 REST
接口和 JSON
模板。
当你转向产品时,还需要将三个不同的工具部署到服务器上,无疑增加了复杂度。
1.7 Graylog2
Graylog2
用 MongoDB
和 ElasticSearch
支持的用来存储与搜索日志错误的工具。它致力于帮助开发者找到并修复程序中的错误。
在这一方面,还有 fluentd
和 Kafka
也是专注于存储日志的
1.8 Takipi for Logs
虽然这篇文章不是关于 Takipi 的,但是它有一项特性,你也许会发现和日志有关。
对于日志分析工具来说,最大的缺点就是你必须要有日志可以分析。从集成开发环境的角度看,如果没有异常报告,或者没有错误信息的数据,你就没办法知道哪里出问题了,这样世界上任何工具都帮不了你了!Debug 就卡在这里了
在 Takipi
的一项优势就是可以跳过日志文件,进入到调试信息中。这样你就能看到真实的源代码和错误范围的变量了
Takipi
会报告所有的异常和错误,并且告诉你哪里出错了,即使是多线程或者是发生在多台机器上