编程技术分享平台

网站首页 > 技术教程 正文

一个完美的分布式监控系统-普罗米修斯Prometheus

xnh888 2025-01-19 01:07:46 技术教程 31 ℃ 0 评论

相信很多的DevOps工程师和SRE工程师对于Prometheus普罗米修斯应该是不陌生的,Prometheus是在2012年的时候,由SoundCloud所创建,作为目前比较热门的分布式监控系统之一,Prometheus是完全开源的,并且被很多的大厂所使用,可以通过非常简单的部署操作来完成对于整个业务系统的监控。

普罗米修斯盗取火种的故事相信大家都应该听说过,盗取火种为人间带来的光和热。而Prometheus在希腊神话中的意义就是有先见之明的意思。下面我们就来详细介绍一下关于Prometheus监控系统到底为我们带来哪些好的服务呢

Prometheus的介绍

下面这张图是网上比较经典的一张架构图,Prometheus是一个基于时间发展序列的数据,而它又不仅仅只有时间序列数据库服务。它其中还包含了很多的内容提供了整个的服务监控生态技术体系。

Prometheus主要是用来对于应用服务基础设施进行监控,包括对于服务器的监控、对于数据库的监控、对于VPS等的监控,几乎是支持应用服务的基础设施都可以用Prometheus来进行监控。

可以通过Prometheus的简单配置,通过HTTP调用的方式来实现对于基础设施运行情况数据获取。例如假设有一个服务是192.168.1.200:8080,在这个应用服务上存在一个公开的服务信息调用接口192.168.1.200:8080/monitor,而Prometheus就可以通过这个URL,在给定的时间间隔内,对目标服务信息进行获取分析。

工作原理

在Prometheus可以通过如下的几种方式来实现对于服务信息的获取。在Prometheus中采用了键值对的方式来对监控数据进行了存储。通过这种方式可以快捷高效的获取服务信息。并且在后续的计算分析中,实现快速定位,快速计算。

通过应用自己提供的URL服务信息接口,通过定时调用的方式来将数据加入到监控系统中。

通过云厂商提供的内置的Prometheus程序,对服务进行监控,例如对Linux服务器的节点信息进行导出,对于数据库的数据处理日志的导出,以及对于NGINX的代理信息的导出等等操作来完成对于应用的监控。

还有就是通过Pushgateway;如下图所示,有些应用系统是不会直接由公开的信息调用接口的,所以需要通过Pushgateway进行处理,从这里我们也可以看到Prometheus其实都是很主动的向各个服务去要数据,而不是像我们一般见到的数据都是应用主动推送的。这样做有什么好处呢?

Push和Pull有什么区别?

Prometheus需要重点关注的就是它会对目标进行一个主动的筛选,如下图所示,InfluxDB数据库需要将数据主动推送到其中进行使用。

对于推模式和拉模式各有各的优势。Prometheus中使用拉模式,那么使用拉模式有什么优势呢?

  • 1、可以实现对于应用监控的集中控制;由Prometheus对目标主动发起查询操作,所以整个的对于系统信息的获取都是在服务端完成,而不是在各个目标上配置来完成,而Prometheus数据获取的频率,获取那些信息完全也是由服务端来决定。
  • 2、对于传统的主动推送的方式,可能会导致推送数据过多,导致服务器端瘫痪,或者是由于无法推送数据导致客户端数据采集受到影响虽然这个影响不大,但是还是会存在。相比而言服务端主动调用可以控制服务调用的频率,方便快捷。

Prometheus监控生态

如图所示,Prometheus以时间序列数据库为支持,实现了数据可视化、数据处理与分析、告警消息推送等功能。

通过Alertmanager将服务告警信息发送到运维人员手中。

通过Grafana、Kibana等可视化手段,将服务监控数据以UI的方式展示出来。

通过动态服务发现机制来实现了对于目标的主动监控、主动清退等操作。

通过一系列的操作来完成整个服务监控生态的建设。随着技术的不断发展,Prometheus开始不断地进入到DevOps行业中,并且在DevOps领域中出现了很多的解决方案。例如上面图中展示就是阿里云监控业务架构图

总结

上面我们简单入门了Prometheus,随着云原生技术的不断发展,DevOps的发展,Prometheus在DevOps领域也展现出其独有的优势。在云基础背景下Prometheus的使用相比于其他的解决方案,更加灵活易用,成为了分布式服务体系中比较理想的应用监控方案。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表