资讯专栏INFORMATION COLUMN

Prometheus对比ELK的优劣

IT那活儿 / 2673人阅读
Prometheus对比ELK的优劣


点击上方蓝字关注我们




文章前言




如今,许多微服务都是由数百个组件组合而成,其中一个服务的故障可能导致整个系统崩溃。
当然,手动找到核心故障问题可能会很复杂和耗时。其中一个解决方案就是持续监控关键特征,如RAM使用、请求数量、异常数量和存储空间。因此,需要根据系统的关键特性设置一个警报系统。例如,当存储空间使用率达到80%时应该触发警报,以便运维开发人员可以在整个系统崩溃之前解决问题。
出于这些目的,应运而生了一些开源的监控系统和工具,比如Prometheus和ELK (Elasticsearch, Logstash, Kibana)。接下来我们将了解这两种监控系统的特性、优点、缺点、它们的差异/相似点、选择什么,以及为什么与这两种开源工具相比。


Prometheus 优缺点



Prometheus是一个开源的监视和警报系统,它从应用程序服务、服务器和其他目标源提取指标。
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不同点:

1Prometheus和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,每个产品都有自己的专长。
然而,这些工具都不是完美的监控工具。这两个程序都是开源的,因此很难安装和维护。




END



更多精彩干货分享

点击下方名片关注

IT那活儿

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129750.html

相关文章

  • 数人云工程师手记 | 容器日志管理实践

    摘要:容器内文件日志平台支持的文件存储是,避免了许多复杂环境的处理。以上是数人云在实践容器日志系统过程中遇到的问题,更高层次的应用包括容器日志分析等,还有待继续挖掘和填坑,欢迎大家提出建议,一起交流。 业务平台每天产生大量日志数据,为了实现数据分析,需要将生产服务器上的所有日志收集后进行大数据分析处理,Docker提供了日志驱动,然而并不能满足不同场景需求,本次将结合实例分享日志采集、存储以...

    saucxs 评论0 收藏0
  • 容器监控实践—Prometheus基本架构

    摘要:根据配置文件,对接收到的警报进行处理,发出告警。在默认情况下,用户只需要部署多套,采集相同的即可实现基本的。通过将监控与数据分离,能够更好地进行弹性扩展。参考文档本文为容器监控实践系列文章,完整内容见 系统架构图 1.x版本的Prometheus的架构图为:showImg(https://segmentfault.com/img/remote/1460000018372350?w=14...

    gghyoo 评论0 收藏0
  • 容器监控实践—Prometheus基本架构

    摘要:根据配置文件,对接收到的警报进行处理,发出告警。在默认情况下,用户只需要部署多套,采集相同的即可实现基本的。通过将监控与数据分离,能够更好地进行弹性扩展。参考文档本文为容器监控实践系列文章,完整内容见 系统架构图 1.x版本的Prometheus的架构图为:showImg(https://segmentfault.com/img/remote/1460000018372350?w=14...

    elina 评论0 收藏0
  • 【容器云UK8S】新手指导

    摘要:详细请见产品价格产品概念使用须知名词解释漏洞修复记录集群节点配置推荐模式选择产品价格操作指南集群创建需要注意的几点分别是使用必读讲解使用需要赋予的权限模式切换的切换等。UK8S概览UK8S是一项基于Kubernetes的容器管理服务,你可以在UK8S上部署、管理、扩展你的容器化应用,而无需关心Kubernetes集群自身的搭建及维护等运维类工作。了解使用UK8S为了让您更快上手使用,享受UK...

    Tecode 评论0 收藏0
  • 使用ELK处理Docker日志(二)

    摘要:环境要求由,和容器组成使用日志收集器将日志发送到。若使用自己的部署,分析和可视化日志的概念保持不变。日志可视化以索引数据为基础创建丰富的可视化和仪表板的能力而闻名,事实上,得到这些数据并不容易。 昨天小数分享的使用ELK处理Docker日志(一)很受欢迎,今天迫不及待的带来第二篇,侧重于分析和可视化,期待给您带来帮助:) 嘘,听说数人云工程师们在奥斯汀DockerCON2017买了D...

    LiveVideoStack 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<