当您在云服务器(ECS)中部署业务时,允许接入托管 Prometheus,实现对 ECS 实例基础资源和业务的监控。本文为您介绍如何监控 ECS 实例中搭建的业务。
背景信息
当您的应用(例如:数据库、中间件等)部署在 ECS 实例中时,由于应用可能分散部署在一个或多个 VPC 内,且每个 VPC 内也有可能配置了多个 ECS 实例。此时,为了保证应用工作正常,您需要实现对这些 ECS 实例、基础组件和业务应用本身进行统一的观测。
基于应用本身的特点,托管 Prometheus 支持如下方法实现 ECS 实例和应用的观测:
- 对于符合云原生的组件或应用,由于直接提供了符合 Prometheus 要求的 Metrics 端口,因此可以直接接入托管 Prometheus,实现指标的观测。
- 对于一些传统应用和中间件,由于没有提供用于 Prometheus 监控的接口,也不支持 Prometheus 数据格式。您可以在 VPC 内的 ECS 实例上,部署对应的 exporter,然后接入托管 Prometheus,完成服务发现和指标观测。
说明
- 本文以部署在 ECS 实例中的 RabbitMQ 为例,介绍如何观测 ECS 实例中部署的应用。在 ECS 实例中搭建 RabbitMQ 的方法,请参见 搭建 RabbitMQ。
前提条件
- 托管 Prometheus 和云服务器,必须在相同地域。
- 已创建托管 Prometheus 工作区,详情请参见 创建工作区。
操作步骤
步骤一:配置安全组
为了保证托管的采集器能够正确采集到 ECS 实例的监控数据,您需要首先配置指标采集使用的安全组。步骤如下:
- 在安全组列表中,单击 创建安全组,配置托管采集器使用的安全组。该安全组会在配置集成任务时,绑定在托管采集器的 Pod 网卡上,允许托管采集器访问指定的目标 IP 网段和端口。
- 在 访问规则 中,选择 出方向,单击 添加规则,配置托管采集器的安全规则。其中,目的 IP 地址为采集目标所在的网段,例如172.16.0.0/12,端口号为 TCP 协议9419端口。
-
- 配置 ECS 实例使用的安全组,本文以 Default 安全组为例。在 入方向规则中,添加规则,放通指标采集端口。其中,源地址为上文中配置的采集器的安全组,端口为 TCP9419端口。
-
说明
您也可以创建一个新的安全组,并将托管采集器和 ECS 实例均加入到该安全组。此时,无需配置新的访问规则,新创建安全组中的默认的出规则和入规则,即可实现托管采集器和 ECS 实例之间的互访。
步骤二:在 ECS 实例中部署 rabbitmq_exporter
为了保证托管采集器能够正确的采集到 ECS 实例中 RabbitMQ 的指标,需要在 ECS 实例中安装 rabbitmq_exporter。
- 执行以下命令,下载 rabbitmq_exporter。
wget https://github.com/kbudde/rabbitmq_exporter/releases/download/v1.0.0-RC19/rabbitmq_exporter_1.0.0-RC19_linux_amd64.tar.gz
- 执行以下命令,解压 rabbitmq_exporter 安装包。
tar -zxvf rabbitmq_exporter_1.0.0-RC19_linux_amd64.tar.gz
- 在 ECS 实例中创建 rabbitmq_exporter 的配置文件config.example.json,并完成配置。
sudo vi config.example.json
配置文件中的内容如下:
"rabbit_url": "http://127.0.0.1:15672",
"cert_file": "client-cert.pem",
"key_file": "client-key.pem",
"insecure_skip_verify": false,
"include_exchanges": ".*",
"rabbit_capabilities": "no_sort,bert",
需要重点关注和修改的参数,如下表所示。
说明
rabbitmq_exporter 更多参数配置,请参见 官方文档。 - 执行以下命令,启动 rabbitmq_exporter。
./rabbitmq_exporter -config-file config.example.json &
预期反馈结果如下,能够看到 rabbitmq_exporter 可以正确地采集指标。
6. 在 ECS 实例中执行以下命令,确定 rabbitmq_exporter 工作正常,查看监控数据。
curl 127.0.0.1:9419/metrics
预期反馈结果如下,能够正常查看到监控信息,说明 rabbitmq_exporter 工作正常。
步骤三:配置集成任务
- 单击左侧导航栏的 接入中心 > 组件,并选择 云服务器自定义采集。
- 在 创建 ECS 接入任务 页面中,单击 创建接入任务。
-
- 当第一次配置 ECS 集成任务时,需要对 VMP 服务面向 ECS 服务和 VPC 服务进行跨服务访问授权。单击 去授权,配置服务授权。
-
- 单击 立刻授权,为 VMP 跨服务访问请求进行授权。
-
-
说明
配置集成任务后,系统会自动在目标 VPC 内创建弹性网卡 ENI,用于打通采集器与用户 VPC 的网络。该 ENI 将绑定用户在上述配置中指定的子网和安全组。您可以登录 VPC 控制台 的 网卡 页面进行查看,其名称前缀为 catena_vmagent。有关弹性网卡的更多信息,请参见 弹性网卡概述。 - Job 配置,指定采集间隔、服务发现的端口号等。
说明
- Job 配置修改并下发后,约 1 分钟后才会生效,请您耐心等待。
查看结果
配置完成后,您可以查看任务状态和任务详情。确定目标 ECS 实例是否正确接入 Promethues 服务。
- 单击左侧导航栏的 接入任务,并选择 托管环境 页签。
查看信息
指标
您可以使用托管 Prometheus 的 Explore 功能来快速查询和展示指标数据。详情请参见 指标查询。 说明
RabbitMQ 的常见指标,请参见 官方文档。 大盘
您可以自建 Grafana,并通过 Grafana 查看 RabbitMQ 的指标和创建大盘。包括:
告警
您可以在托管 Prometheus 的告警中心配置 RabbitMQ 的相关告警。详情请参见 创建告警规则。