MeterSphere 细说 MeterSphere 基于 Prometheus 实现的性能监控方案

MeterSphere · 2021年08月13日 · 2737 次阅读

根据官方文档,MeterSphere 性能压测中的监控数据收集采用了 Prometheus。但是它们是如何集成的?设计架构是如何设计的?很多人应该不清楚。这篇文章主要就是向大家介绍这相关的设计。

Prometheus 是什么?

Prometheus 是由 SoundCloud 开发的开源监控报警系统和时间序列数据库(TSDB)。Prometheus 在 2016 加入 CNCF(Cloud Native Computing Foundation), 是在 Kubernetes 之后的第二个由基金会主持的项目。总之很强大!!!

Prometheus 的自动发现模式

默认的配置方法下,在 Prometheus 系统中每加一台监控节点都需要修改配置文件和重启服务,这种方式繁琐而且容易出错。自动发现是指 Prometheus 自动对节点进行监控,不需要手动一个一个去添加。Prometheus 有多种自动发现能力,比如 file_sd_configs 基于文件自动发现、基于 Kubernetes 自动发现、基于 OpenStack 自动发现、基于 Consul 自动发现等。使用自动发现可以解决资源动态伸缩的监控问题。

MeterSphere 与 Prometheus 的集成

最终效果:MeterSphere 的性能测试在高级配置中,支持用户自定义添加被监控节点(被压测端),默认对 node-controller 节点进行监控。每次进行压测时会动态收集监控数据,如图:

  1. MeterSphere 中 Prometheus 的自动发现模式——Consul

通过打开 MeterSphere 中 Prometheus 的界面,我们可以查看具体的配置如下图。通过下图可以发现 MeterSphere 中 Prometheus 采用了 Consul 自动发现模式。

  1. 什么是 Consul?

Consul 是基于 GO 语言开发的开源工具,主要面向分布式、服务化的系统,提供服务注册、服务发现和配置管理的功能。Consul 提供服务注册/发现、健康检查、Key/Value 存储、多数据中心和分布式一致性保证等功能。Prometheus 通过 Consul 可以很方便地实现服务自动发现和维护,同时 Consul 支持分布式集群部署。Prometheus 与 Consul 集群二者结合起来,能够高效地进行数据维护的同时保证系统稳定。

  1. Consul 存于 MeterSphere 什么地方?

3.1 在 GitHub 上查看 MeterSphere 的源码:

https://github.com/metersphere/metersphere

3.2 通过 Prometheus 的 config 界面,可以发现 Consul 默认部署在 ms-server 容器中,可以通过 docker exec -it ms-server sh 进入容器查看。

3.3 MeterSphere 同时对 Consul 的 API 进行了封装和暴露,可通过界面右上角打开 MeterSphere 的 API。

查找到 catalog-api-controller 的 API 集:

  1. MeterSphere 如何进行监控数据的获取和处理?

通过以上的信息,我们理论上可以通过调用 API 来发现 MeterSphere 中被监控的机器数量。但在正常情况下,我们只能发现一条信息(利用 MeterSphere 的接口自动化能力进行获取被压测监控节点信息),如下:

原来 MeterSphere 对监控的数据的获取也是动态的(在进行性能压测的时候才会进行监控数据的获取),这样避免了大量获取了无用的监控数据信息,这点处理比较合理。重新来看架构关系图应该如下图,我们重新进行压测进行验证一次:

4.1 通过 MeterSphere API 动态发现目前获取监控数据的节点。

4.2 通过 Prometheus 能看到,已经自动发现与注册了被监控节点。

4.3 通过 Prometheus 也能查看到其他监控信息的图表。

在 MeterSphere 中配置监控

  1. 在 MeterSphere 的系统设置中,默认已经配置好了 Prometheus 信息,如下图:

  1. 在被压测服务器上安装 node-exporter

如果服务器已经存在,则不用安装。

下载安装包:

https://prometheus.io/download/

解压:

tar zxvf node_exporter-xxx.linux-amd64.tar.gz -C /opt/

mv /opt/node_exporter-xxx.linux-amd64 /opt/node_exporter

运行:

nohup /opt/exporter/node_exporter/node_exporter &

有兴趣的可以配置 systemd service

  1. MeterSphere 界面创建或者修改测试时候,在高级配置中添加被监控节点信息,如下:

未来扩展

在大规模压测的情况下,如果需要监控搜集大量集群的监控信息,可以将 Prometheus 和 Consul 通过集群的方式进行外置部署,从而提升性能和系统的健壮性。

编者注:本文作者为 MeterSphere 社区资深用户小刘。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册