You need to enable JavaScript to run this app.
导航
云服务器接入
最近更新时间:2024.08.27 16:13:24首次发布时间:2024.01.12 11:39:53

当您使用火山引擎云服务(Elastic Compute Service,ECS)产品时,允许接入托管 Prometheus,实现对 ECS 实例基础资源和业务的监控。本文为您介绍 ECS 实例接入的流程和步骤。

背景信息

云服务器是一种安全稳定、可弹性伸缩的云上虚拟服务器,包含 CPU、内存、硬盘、网络等资源。您可以使用 ECS 服务器打造弹性易用、安全可靠的业务环境,有效降低 IT 维护成本。

说明

更多产品详情,请参见 云服务器(ECS)产品文档

当您在火山引擎控制台上购买并创建 ECS 实例时,构建实例的公共镜像中已内置了系统监控组件cloud-monitor-agent,实现对 ECS 实例进行监控,以获取更深层、更准确的实例运行情况。

  • 监控组件仅适用火山引擎提供的公共镜像,其他自定义镜像暂不支持安装。
  • 监控组件默认的指标暴露端口为9091,指标暴露的 URI 路径为/metrics

前提条件

  • 在火山引擎注册并开通 VMP、ECS 服务。
  • 已创建托管 Prometheus 工作区,详情请参见 创建工作区
  • 已创建 ECS 实例,并确认 ECS 实例中已经安装监控组件。详情请参见 购买实例

说明

托管 Prometheus 工作区和目标 ECS 实例必须处于相同地域。

操作步骤

步骤一:配置安全组

为了保证托管的采集器能够正确采集到 ECS 实例的监控数据,您需要首先配置指标采集使用的安全组。步骤如下:

  1. 登录 私有网络控制台

  2. 在左侧导航栏中选择 安全组

  3. 在安全组列表中,单击 创建安全组,配置托管采集器使用的安全组。该安全组会在配置集成任务时,绑定在托管采集器的 Pod 网卡上,允许托管采集器访问指定的目标 IP 网段和端口。

    • 私有网络 下拉菜单中,选择用户的 VPC。
    • 访问规则 中,选择 出方向,单击 添加规则,配置托管采集器的安全规则。其中,目的 IP 地址为采集目标所在的网段,例如172.16.0.0/12,端口号为 TCP 协议9091端口。
      alt
  4. 配置 ECS 实例使用的安全组,本文以 Default 安全组为例。在 入方向规则中,添加规则,放通指标采集端口。其中,源地址为上文中配置的采集器的安全组,端口为 TCP9091端口。
    alt

    说明

    您也可以创建一个新的安全组,并将托管采集器和 ECS 实例均加入到该安全组。此时,无需配置新的访问规则,新创建安全组中的默认的出规则和入规则,即可实现托管采集器和 ECS 实例之间的互访。

步骤二:检查 ECS 实例

为了保证托管采集器能够正确的采集到 ECS 实例的指标,需要检查 ECS 实例的安全组配置和监控组件的工作状态。

确认 ECS 安全组

ECS 实例的安全组需要在 入方向 放通9091端口,您需要确认 ECS 加入的安全组已放通该端口。
alt

确认 ECS 监控组件状态

历史存量的公共镜像或 ECS 实例,可能未安装监控组件。因此,您需要确定 ECS 云服务器中是否安装了监控组件,步骤如下:

  1. 通过 ECS Terminal 进入 ECS 控制台。

  2. 执行以下命令,确认是否安装了监控组件,以及监控组件的工作状态。

    systemctl status cloud-monitor-agent
    
    • 预期返回结果如下,系统显示cloud-monitor-agent组件的状态信息,表示该实例已安装了监控组件。示例如下:
      图片

    • 如果 ECS 云服务器中未安装监控组件,请手动安装或更新组件。详情请参见 安装插件

  3. 执行以下命令,确认监控组件正确开启了9091监控端口。

    ss -naltp | grep 9091
    
    • 返回如下信息时,表示监控组件工作正常,9091 端口已开启。
    LISTEN     0      128       [::]:9091                  [::]:*                   users:(("cloud-monitor-a",pid=1661,fd=3))
    
    • 如果监控端口未开启,说明监控组件的配置存在问题。需要在 ECS 中执行以下脚本,更新监控组件的配置,打开监控端口。
    #!/bin/bash
    # set Prometheus = true
    sed -i 's/Prometheus: false/Prometheus: true/w /dev/stdout' /usr/local/cloud-monitor-agent/config.yaml | grep -q .
    # returns 0 when substitutions have been made, and 1 when no match is found or file not found
    if [ $? -eq 0 ]; then
        systemctl restart cloud-monitor-agent
    fi
    

    说明

    对于批量 ECS 实例,可以通过 ECS OpenAPI 的批量作业 RunCommand 接口来批量修改机器上的配置文件并重启(需要机器已经安装云助手)。详情请参见 批量作业支持在存量(Linux)云服务器上安装 Agent

  4. 监控端口打开后,您可以执行以下命令,查看监控数据。

curl 127.0.0.1:9091/metrics

预期反馈结果如下,能查看监控信息,说明 ECS 监控组件工作正常。
alt

步骤三:配置集成任务

  1. 登录 VMP 服务控制台
  2. 在顶部导航栏,选择目标地域。
  3. 单击左侧导航栏的 集成中心,并选择 产品服务 页签。
  4. 云服务器 选项卡中,单击 创建集成任务
    alt
  5. (可选)服务授权。
    1. 当第一次配置 ECS 集成任务时,需要对 VMP 服务面向 ECS 服务和 VPC 服务进行跨服务访问授权。单击 去授权,配置服务授权。
      alt
    2. 单击 立刻授权,为 VMP 跨服务访问请求进行授权。
      alt
  6. 配置集成任务的详情。
    alt
    配置项说明
    任务名称配置集成任务的名称。支持中文、英文大小写、数字和下划线_,取值范围为 1~40 个字符。
    工作区选择已创建的托管 Prometheus 工作区。
    ECS VPC选择 ECS 实例所在的 VPC。

    安全组

    选择托管采集器使用的安全组,允许托管采集器访问用户 VPC 中的资源。支持多选。

    注意

    为确保托管采集器能够正确采集到 ECS 中的指标,请将目标网段、端口添加到所选的安全组出访问规则中。

    子网选择进行服务发现的 VPC 子网。系统会在选择的子网下进行 ECS 服务发现,监控所有符合要求的 ECS 实例。支持多选。
  7. Job 配置。包括:采集时间间隔、采集超时时间、采集协议、采集指标的端口号等。一个任务支持多组 Job 配置。
global:
  scrape_interval: 15s # 必选,全局采集时间间隔
  scrape_timeout: 10s # 必选,全局采集超时时间
  external_labels: # 可选,自动添加到采集指标上的标签
    cluster: cluster1
scrape_configs:
- job_name: ecs # 必选,Job 的名称
  scrape_interval: 30s # 可选,该 Job 的采集时间间隔,优先级高于全局配置
  scrape_timeout: 30s # 可选,该 Job 的采集超时时间,优先级高于全局配置
  metrics_path: /metrics # 必选,采集指标的 URI 路径,默认为 /metrics
  honor_labels: true # 可选,标签冲突处理策略,配置为 true 表示保留标签;配置为 false 表示重命名标签
  honor_timestamps: true # 可选,是否使用指标中的时间戳
  scheme: http # 必选,采集协议,支持 http 和 https ,默认为 http
  params: # 可选,http 协议参数,仅 scheme 为 http 时有效
    p1: ["v1", "v2"]
  tls_config: # 可选,https 协议时的 TLS 配置,仅 scheme 为 https 时有效
    ca: MIICXwIBAA*** # 配置 CA 证书 
    cert: MIICjzCCAfg*** # 配置 TLS 证书
    key: MIICXQIBAA*** # 配置 TLS 密钥
    server_name: tls-server-demo # 配置 TLS 服务器名称
    insecure_skip_verify: true # 是否禁用 https 服务器证书验证
    min_version: TLS12 # TLS 最小支持的版本号,取值:TLS10 (TLS 1.0), TLS11 (TLS 1.1), TLS12 (TLS 1.2), TLS13 (TLS 1.3)
  headers: # 可选,http 请求中的自定义 header
    - a
    - b
  relabel_configs: # 可选,配置指标的 relabel。如没有需求,可省略
    - action: replace # 标签匹配后的操作,包括:replace(替换)、keep(保留)和 drop(丢弃)
      source_labels: [ xxxxxx ] # 从原始 labels 中取哪些 label 的值进行 relabel
      separator: ; # 定义 regex 中的分隔符,默认为 ;
      target_label: xxxxxx # 当 action 为 replace 时,需要添加或重置的标签名称
      regex: (.*) # 对 source_labels 对应的值进行正则匹配
      modulus: 123 # 源标签 Hash 值的模数
      replacement: $1
  metric_relabel_configs: # 可选,配置指标抓取之后的 relabel。如没有需求,可省略
    - action: replace # 标签匹配后的操作,包括:replace(替换)、keep(保留)和 drop(丢弃)
      source_labels: [ xxxxxx ] # 从原始 labels 中取哪些 label 的值进行 relabel
      separator: ; # 定义 regex 中的分隔符,默认为 ;
      target_label: xxxxxx # 当 action 为 replace 时,需要添加或重置的标签名称
      regex: (.*) # 对 source_labels 对应的值进行正则匹配
      modulus: 123 # 源标签 Hash 值的模数
      replacement: $1
  sample_limit: 1024 # 可选,采集器每次采集的样本数量,取值为 0 表示无限制
  volc_sd_configs:
  - port: 9091 # 必选,采集指标的端口号
    project_name: project_a # 可选,通过 Project 对 ECS 实例进行筛选
    tag_filters: # 可选,通过标签对 ECS 实例进行筛选
    - key: ecs-label # 筛选 ECS 实例的标签名称
      values: ["demo-a", "demo-b"] # 筛选 ECS 实例的标签值
    instance_ids: # 可选,通过 ECS 实例 ID 进行筛选
    - i-ycpy3h***
    - i-ycroi4***
    instance_name: ecs-demo # 可选,通过 ECS 实例名称进行模糊匹配和筛选

说明

  • 更多配置项说明,请参见 官方文档
  • Job 配置修改并下发后,约 1 分钟后才会生效,请您耐心等待。
  • 当您配置多个 ECS 筛选条件时,多个条件之间为 关系,即只有同时满足所有筛选条件的 ECS 实例才会被发现并监控。
  1. 单击 确认,完成配置。

结果验证

配置完成后,您可以查看任务状态和任务详情。确定目标 ECS 实例是否正确接入 Promethues 服务。

  1. 单击左侧导航栏的 集成中心,并选择 集成任务 页签。
  2. 在任务列表中,选择目标任务,在 操作 栏中单击 详情,即可查看系统自动发现,并已正确接入托管 Prometheus 的 ECS 实例。

alt

查看信息

指标

您可以使用托管 Prometheus 的 Explore 功能来快速查询和展示指标数据。详情请参见 指标查询

说明

云服务器的常见指标,请参见 云服务器指标查询

大盘

您可以在容器服务集群或 ECS 主机中自建 Grafana,并下载下面提供的监控大盘 JSON 文件。然后通过 Grafana 查看指标和创建大盘。

ECS集群监控大盘-20240120.json
137.06KB

告警

您可以在托管 Prometheus 的告警中心配置 ECS 实例的相关告警。详情请参见 创建告警规则