暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Prometheus对比ELK的优劣

IT那活儿 2023-05-09
309
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!



前 言



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

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

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



Prometheus 优缺点



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

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

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

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

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

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

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

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

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


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

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

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



ELK特性



ELK栈是三种开源工具的组合,形成了一个日志管理平台,专门搜索、分析和可视化来自不同系统的日志。
1. Logstash的特性
  • 1)提供带有管理用户界面(UI)的数据管道工具,允许用户使用单个UI控制部署。

  • 2)集中处理数据。

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

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

  • 5)从IP地址破译地理坐标。

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

2. Elasticsearch的特性

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

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

  • 2)提供全文搜索。

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

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

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

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

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

3. Kibana特性

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



ELK优缺点



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

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

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

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

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

  • 6)能够垂直和水平缩放。
2. ELK的缺点
  • 1)不能快速安装使用。有时,公司需要快速解决其问题,但安装、设置和调优ELK系统可能需要大量时间。

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



Prometheus vs ELK对比



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

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

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

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

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

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

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

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

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

  • 8)ELK,以及普罗米修斯,可以与许多不同的系统集成。有大量的工具用于与不同的数据库、存储、api、其他监控系统和硬件相关的集成进行集成。
2. 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使用场景



1. 使用ELK的场景示例
  • 1)正在进行事件日志记录。

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

  • 3)需要长期的数据存储。

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

  • 5)需要一个集群解决方案。
2. 使用prometheus的场景示例
  • 1)主要是做度量指标。

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

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


结 论:

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

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


END



本文作者:陈 翔(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论