热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用Prometheus打造企业分布式监控平台(1)--扩展性

Prometheus是CNCF基金会管理的一个开源监控项目,由于其良好的架构设计和完善的生态,迅速成为了监控领域事实上的标准,尤其是在云原生领域。随着深入地了解Prometheus,你会发现一些非常好的功能:

利用Prometheus 打造企业分布式监控平台(1)--扩展性

Prometheus是CNCF基金会管理的一个开源监控项目,由于其良好的架构设计和完善的生态,迅速成为了监控领域事实上的标准,尤其是在云原生领域。

随着深入地了解Prometheus,你会发现一些非常好的功能:

  • 服务发现使配置更加容易。Prometheus支持consul,etcd,kubernetes以及各家公有云厂商自动发现。对于监控目标动态发现,这点特别契合Cloud时代,应用动态扩缩的特点。我们无法想象,在Cloud时代,需要运维不断更改配置。
  • 开源社区建立了数百个exporter。基本上涵盖了所有基础设施和主流中间件。
  • 工具库可从您的应用程序获取自定义指标。基本上主流开发语言都有对应的 工具 库。
  • 它是CNCF旗下的OSS,是继Kubernetes之后的第二个毕业项目。Kubernetes已经与Promethues深度结合,并在其所有服务中公开了Prometheus指标。
  • Pushgateway,Alermanager等组件,基本上涵盖了一个完整的监控生命周期。

利用Prometheus 打造企业分布式监控平台(1)--扩展性

对于一家小型单位,Prometheus足够了。几乎不需要任何的开发,就足以应对所有监控需求。

我们都知道Prometheus,自身的时序数据库TSDB是一个单机的数据库,不支持分布式是其天生的劣势。当你的 metrics 数量足够多的时候,单机Prometheus就显得捉襟见肘。您的Prometheus服务器开始崩溃,大多时候是内存问题。Prometheus中的内存使用量与存储的时间序列数量成正比,并且随着时间序列数量的增加,Prometheus会OOM。具有数百万个指标的Prometheus可以使用超过100GB的RAM,很多时候我们受限制于一些主机本身的大小,我们无法不断的通过纵向调整机器大小来解决这个问题。

因此解决Prometheus的扩展性,是打造企业分布式监控平台的关键。

如何解决Prometheus的扩展性

联邦

官方的解决方案是集群联邦,主要提供了分层联邦和跨服务联邦。

分层联邦

分层联邦允许 Prometheus 能够扩展到十几个数据中心和上百万的节点。在此场景下,联邦拓扑类似一个树形拓扑结构,上层的 Prometheus 服务器从大量的下层 Prometheus 服务器中收集和汇聚的时序数据。

利用Prometheus 打造企业分布式监控平台(1)--扩展性

跨服务联邦

在跨服务联邦中,一个服务的 Prometheus 服务器被配置来提取来自其他服务的 Prometheus 服务器的指定的数据,以便在一个 Prometheus 服务器中对两个数据集启用告警和查询。

利用Prometheus 打造企业分布式监控平台(1)--扩展性

这两种联邦,其实有很大的问题,本质上Prometheus的单机能力依旧没有得到解决。

拆分

拆分永远是解决问题的一个好思路。尤其是当你的场景是,不需要一个全局的监控视图。

我们可以根据环境(test,uat, prod)或是业务类型(基础设施,中间件,业务),甚至是根据部门类型来拆分。

利用Prometheus 打造企业分布式监控平台(1)--扩展性

当然可以通过grafana配置不同的数据源,给使用方营造一种整体的假象。

利用Prometheus 打造企业分布式监控平台(1)--扩展性

但是这种方案,会带来很多问题:

  • 随着你metrics量的增加,切分的维度会越来越细。
  • 缺乏一个全局的视图,我们仍然无法跨不同集群查询服务,并且无法真正执行全局查询。
  • 给统一报警增加了困难。
  • 如果群集是动态的或变化的,则每次群集中部署Prometheus时,您通常都需要实现一种自动向Grafana添加数据源的方法。

长期存储

Prometheus社区也意识到了同样的问题,于是提供了远程读写两个接口,让大家可以使用一些社区的时序数据库方案,来扩展prometheus。

当前,有几个提供长期存储(LTS)的开源项目,而这些社区项目则领先于其他项目:Cortex,Thanos或M3。

利用Prometheus 打造企业分布式监控平台(1)--扩展性

当然这些项目实现的方式是不同的,均有不同的优势和劣势,需要大家根据自己单位实际的场景需求来选择。

诸如Thanos,最终的储存是S3等对象存储,整体架构比较复杂。

M3db社区活跃度不够,文档比较少,但是M3db相比其他几个,是典型的时序数据库。

Influxdb集群版本没有开源。

Victoria 数据是没有副本的。

我曾经在生产环境中,使用过Clickhouse作为长期存储。该解决方案存在的问题是,Clickhouse并发查询能力比较低,导致查询的时候慢。当然写入倒是没有什么大的问题。

采集端hash mod

尤其当Prometheus部署到kubernetes当中,并且我们使用了Prometheus的kubernetes sd 服务发现时,当我们集群变得非常大的时候,单台的Prometheus采集能力也成为一个瓶颈。此时,我们可以使用hash mod, 对采集任务进行分片。

利用Prometheus 打造企业分布式监控平台(1)--扩展性

总结

本文是利用Prometheus 打造企业分布式监控平台系列中的第一篇文章。主要讲了Prometheus的可扩展性上的一些解决方案。其实没有百分百完美的方案,大家需要根据自己metrics的数量来选择最合适自己的方案。


以上所述就是小编给大家介绍的《利用Prometheus 打造企业分布式监控平台(1)--扩展性》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 我们 的支持!


推荐阅读
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • GAMETECH腾讯云游戏行业技术沙龙成都站圆满落幕
    11月13日,由腾讯云主办、游戏茶馆协办的2020年首场GAME-TECH腾讯云游戏行业技术沙龙在成都圆满落幕。本次沙龙邀请了腾讯云游戏行业解决方案总监宋永周、腾讯云游戏行业高级解决方案架构师曾梓恩、腾讯云游戏行业高级产品架构师郑晓曦、腾讯云游戏行业高级解决方案架构师温球良和天美L1(王者荣耀)服务器技术副总监杨光,为参会同行们带来了干货满满的技术建议。本文介绍了腾讯云游戏云的优势和为不同游戏研运场景提供的服务。腾讯云在中国游戏云服务市场领跑,成为众多游戏开发者的合作伙伴。 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
author-avatar
皓月当空668
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有