Prometheus对比ELK的优劣

Prometheus对比ELK的优劣

转载来源:https://www.modb.pro/db/162914

文章前言

如今,许多微服务都是由数百个组件组合而成,其中一个服务的故障可能导致整个系统崩溃。

当然,手动找到核心故障问题可能会很复杂和耗时。其中一个解决方案就是持续监控关键特征,如RAM使用、请求数量、异常数量和存储空间。因此,需要根据系统的关键特性设置一个警报系统。例如,当存储空间使用率达到80%时应该触发警报,以便运维开发人员可以在整个系统崩溃之前解决问题。

出于这些目的,应运而生了一些开源的监控系统和工具,比如Prometheus和ELK (Elasticsearch, Logstash, Kibana)。接下来我们将了解这两种监控系统的特性、优点、缺点、它们的差异/相似点、选择什么,以及为什么与这两种开源工具相比。

Prometheus 优缺点

Prometheus是一个开源的监视和警报系统,它从应用程序服务、服务器和其他目标源提取指标。

img

Prometheus的优点:

1. 提供给Kubernetes极其强大的服务发现功能,查找所有服务,并从Prometheus端点提取指标。

2. 即使基础设施的其他部分都坏了,prometheus也能正常工作。不需要安装agent—Prometheus已经可以提取指标了。

3. 不需要多而繁杂的设置。

4. 允许快速宕机发现。当系统无法从已知的监视源获得请求时,可以很快发现服务中断。

5. 提供了一个函数式查询语言PromQL,它允许我们实时选择和聚合时间序列数据。它可以应用子查询、函数和操作符。它可以根据标签进行过滤和分组,并使用正则表达式来改进匹配和过滤。

6. 确保简单的重新配置。配置可以通过命令行更改。例如,不可变的系统参数,如存储位置或要保存在磁盘和内存中的数据量,以及配置文件,如作业、实例或要加载的规则文件。修改配置会自动申请所有监控服务。

7. Prometheus对被监视的服务和网络的负载很低,因为指标在生成、转换为可读格式时存储在内存中,并且无论生成多少事件,Prometheus都按请求接收它们(默认每15秒一次)。

8. prometheus架构设计系统提供了操作的简单性。受限于单节点,Prometheus避免了集群,因为集群会带来操作的复杂性。

Prometheus的缺点:

1. 监控限制(增加服务器存储容量或限制指标数量所需)。

2. 不提供可靠的长期数据存储、异常检测、水平伸缩和用户管理。基本上,这些需求对于大型企业环境是至关重要的。

3. prometheus不是一个仪表盘解决方案。Prometheus Expression Browser提供了简单的可视化,但是在使用Prometheus进行监视时,需要使用Grafana作为仪表板来提供可视化监控。

ELK:三种开源工具特性

ELK栈是三种开源工具的组合,形成了一个日志管理平台,专门搜索、分析和可视化来自不同系统的日志。

Logstash的特性:

1. 提供带有管理用户界面(UI)的数据管道工具,允许用户使用单个UI控制部署。

2. 集中处理数据。

3. 收集和分析大量的结构化和非结构化数据和事件。

4. 提供插件连接到各种类型的输入源和平台。

5. 从IP地址破译地理坐标。

6. 可以接收来自一个或多个源的日志和事件,然后处理并将它们转换为一个或多个存储。

Elasticsearch的特性:

**Elasticsearch是ELK栈的核心。**它是一个提供分布式数据存储的NoSQL数据库。它通过提供不同的查询类型(如结构化、非结构化和度量数据)来提供详细的分析。

1. 提供搜索引擎/搜索服务器的可能性。

2. 提供全文搜索。

3. 使用标准的RESTful API和JSON,因为它是基于Apache Lucene的。

4. 提供无模式、REST和JSON分布式数据存储。

5. 提供水平可伸缩性、可靠性和实时搜索功能。

6. 使用索引进行搜索,提高搜索速度。

7. 提供安全、监控、报警、异常检测、异常预测、图形探测、报表等功能。

Kibana特性:

Kibana是一个可视化工具,与Elasticsearch和Logstash配套使用。Kibana是用于Elasticsearch日志的最佳可视化工具,但数据也可以从Elasticsearch导出到Grafana,以实现更高级的指标可视化。Kibana已经完全设置好了所有你需要处理Elasticsearch可视化的东西。

ELK优缺点

ELK的优点:

1. 通过一个ELK实例提供对分布式系统深入的了解,而不需要连接到数百个日志数据源。

2. 基于Java开发的Elasticsearch几乎可以兼容所有平台。

3. Elasticsearch是实时的。这意味着只需几秒钟就可以浏览添加的文档。

4. Elasticsearch支持多种语言的客户端,如Java、Python、.net、SQL和PHP。

5. 为不同的编程和脚本语言提供了一堆sdk。

6. 能够垂直和水平缩放。

ELK的缺点:

1. 不能快速安装使用。有时,公司需要快速解决其问题,但安装、设置和调优ELK系统可能需要大量时间。

2. 需要花费大量的时间来提供可靠性。由于Logstash和Elasticsearch是内存密集型的,需要做很多工作来防止Elastic节点宕机。公司需要一个专家团队来保证可靠性和弹性。

Prometheus vs ELK对比

Prometheus和ELK这两种监控系统,都有类似的目的。他们的目标是检测问题、调试和解决问题。但是这些系统使用不同的方法来完成这项任务。

最大的区别是ELK专门处理日志,而Prometheus专门处理度量。大多数主要产品都需要使用ELK和Prometheus,每个产品都有自己的特色。

Prometheus vs ELK共同点:

1. Prometheus和ELK都是开源软件。这两个项目都有大量活跃的开发人员和用户社区。

2. 这两种监控系统都可以作为云服务使用,也可以在现场操作。

3. 这两个系统都使用RESTful HTTP/JSON API访问方法。

4. 系统支持相同范围的编程语言:. net、Java、Python、Ruby。

5. 这两个系统都使用分片方法在不同的节点上存储不同的数据。

6. 这两个系统都支持不同的提醒选项,集成了电子邮件、Slack或PageDuty。

7. Prometheus和ELK采用复制的方式在多个节点上冗余存储数据。

8. ELK,以及普罗米修斯,可以与许多不同的系统集成。有大量的工具用于与不同的数据库、存储、api、其他监控系统和硬件相关的集成进行集成。

Prometheus vs ELK不同点:

1. Prometheus和ELK栈之间的主要区别在于这两个系统的使用范围。Prometheus用于量度收集、各种系统监视和基于这些量度设置警报。ELK用于获取所有类型的数据,基于这些数据执行不同类型的分析、搜索和可视化。

2. Prometheus使用TimeSeries DBMS作为它的主要数据库模型。ELK栈的主要数据库模型是一个搜索引擎,它支持使用反向索引存储不同的非结构化数据类型,允许非常快速的全文搜索。

3. 这两个系统使用不同类型的查询。Prometheus使用自己的PromQL,它实际上非常简单且功能强大。ELK提供了基于JSON的特定于领域的查询语言。Elasticsearch还提供了使用类似sql的查询的特性。

4. ELK使用无模式的数据模式。而Prometheus存储由指标名称和键/值对标识的数据。

5. ELK从不同的来源收集各种日志,分析并存储它们。Prometheus通过在HTTP上的pull方法以标准格式收集指标。

6. 在ELK栈中,可以存储不同类型的数据,如数字、字符串、布尔值、二进制值等等。这可以让你以更有效的方式保存、分析和使用数据,而不管数据是什么。Prometheus存储命名时间序列的数字示例。

7. 与Prometheus相比,ELK提供了更长期的数据保留。Prometheus在实例中本地存储数据,默认为15天。默认的15天可以配置为任意值,最小值为2小时。当然,在较长时间内,本地Prometheus实例中的长期存储变得很困难。在一个节点上存储和计算数据使操作更容易,但也使扩展和确保高可用性变得更难。因此,Prometheus并没有优化为一个长期的度量存储。

8. 额外付费的ELK包,也就是所谓的X-Pack,提供了更多的服务:Kibana和Elasticsearch的身份验证和授权,Elasticsearch是一个增强功能的警报系统。机器学习部分提供异常检测和预测。

9. Kibana允许分析数据中的关系(例如显示相关产品),并可视化这些关系。Prometheus在它的列表中没有这样的扩展特性,所有的分析都必须通过Grafana进行。

10. Elasticsearch使用一种叫做反向索引的结构,允许非常快速的全文搜索。

11. Elasticsearch Stack的安全特性非常广泛。系统为正确的人提供了正确的访问权限。一些特性包括加密通信(使用SSL/TLS证书进行流量加密)、基于角色和基于属性的访问控制、字段和文档级安全、ip过滤、审计日志记录等。

Prometheus vs ELK使用场景

使用ELK的场景示例:

1. 正在进行事件日志记录。

2. 需要处理大量的日志数据。

3. 需要长期的数据存储。

4. 需要对一个特定的事件有深刻的见解。

5. 需要一个集群解决方案。

使用prometheus的场景示例:

1. 主要是做度量指标。

2. 需要简单地设置监视和绘图工具。

3. 需要跨各种来源进行告警。

结论

虽然Prometheus和Elasticsearch是用于监视基础设施和警报的非常相似的工具,但这些系统通常用于不同的任务。**最大的区别是ELK专门处理日志,**而Prometheus专门处理度量指标。大多数主要产品都需要同时使用ELK和Prometheus,每个产品都有自己的专长。

然而,这些工具都不是完美的监控工具。这两个程序都是开源的,因此很难安装和维护。


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注