全部产品
Search
文档中心

应用实时监控服务ARMS:配置Prometheus for ECS服务发现

更新时间:Jan 23, 2024

本文介绍配置ECS类型的Prometheus实例的服务发现,实现监控采集ECS上暴露的Metric指标服务。

前提条件

已创建ECS类型的Prometheus实例,具体操作,请参见Prometheus实例 for ECS

步骤一:开启ECS服务发现

  1. 登录ARMS控制台

  2. 在左侧导航栏选择Prometheus监控 > 实例列表,进入可观测监控 Prometheus 版的实例列表页面。

  3. 单击目标Prometheus实例名称。

  4. 在左侧导航栏单击服务发现,然后单击配置页签。

  5. 名称vpc-ecs-service-discovery操作列单击 ll。然后在弹出的提示框中单击开启,开启ECS服务发现。

    ert

    开启ECS服务发现后,将会开启ECS数据采集。

步骤二:修改ECS服务发现相关配置

  1. 名称vpc-ecs-service-discovery操作列单击详情

  2. 在弹出的对话框中修改metrics_path或者port。如下图所示,若您的服务端口为9090/metrics,只需要修改port值为9090。

    gj

(可选)步骤三:检查安全组

如果您无法采集到ECS的监控数据,通常是由于安全组访问规则限制导致,建议您可以按照以下步骤优先检查安全组访问规则。

  1. 登录ARMS控制台

  2. 在左侧导航栏选择Prometheus监控 > 实例列表,进入可观测监控 Prometheus 版的实例列表页面。

  3. 单击新建Prometheus实例,然后单击Prometheus for ECS区域。

  4. 在弹出面板的目标VPC右侧安全组交换机列,可以获取创建该Prometheus实例时选择的安全组和交换机信息。

    hl

  5. 登录ECS管理控制台,在上一步骤中获取的对应安全组中添加允许规则。

    wrt

    说明

    添加允许规则时,授权对象的源IP地址为安装可观测监控 Prometheus 版时选择的交换机对应的网段(即上一步骤中获取的交换机对应的网段)。

(可选)步骤四:过滤ECS

如果您的VPC内只有部分ECS提供指标查询服务,并且只需要采集部分ECS的数据,可选择过滤ECS,具体如下。

  1. 登录ARMS控制台

  2. 在左侧导航栏选择Prometheus监控 > 实例列表,进入可观测监控 Prometheus 版的实例列表页面。

  3. 单击目标Prometheus实例名称。

  4. 在左侧导航栏单击服务发现,然后单击配置页签。

  5. 名称vpc-ecs-service-discovery操作列单击详情

  6. 在弹出的对话框中输入Prometheus.yaml,然后单击确认。如下所示的代码段是阿里云ECS服务发现配置样例Prometheus.yaml内容。

    global:
      scrape_interval: 15s
      scrape_timeout: 10s
      evaluation_interval: 30s
    scrape_configs:
    - job_name: _aliyun-prom/ecs-sd
      honor_timestamps: true
      scrape_interval: 30s
      scrape_timeout: 10s
      metrics_path: /metrics
      scheme: https
      aliyun_sd_configs:
        - port:  8888                                 # 服务发现后的prometheus抓取采集点port
          user_id: <aliyun userId>                    # Aliyun用户身份表示id userId, 填写会为discovery target带上__meta_ecs_user_id的label,可不填写
          refresh_interval: 30s
          region_id: cn-hangzhou                      # 设置获取ECS的regionId
          access_key: <aliyun ak>                     # Aliyun鉴权字段AK
          access_key_secret: <aliyun sk>              # Aliyun鉴权字段SK
          tag_filters:                                # Aliyun ECS tag filter, 按tagKey tagValue匹配筛选实例
           - key: 'testK'
             values: ['*', 'test1*']
           - key: 'testM'
             values: ['test2*']
    #      limit: 40                                  # 从接口取到的最大实例个数限制,不填为获取所有ECS实例
    
      relabel_configs:
    
    #   1. 手动设置使用ECS的哪种IP
    #   默认ECS会按 经典网络公网IP > 经典网络内网IP > VPC网络公网IP > VPC网络内网IP 的顺序查找并赋予此ECS的采集IP,此时的采集点port为aliyun_sd_configs.port设置
    #   用户可用过一下relabel设置,手动设置ECS的采集IP
        - source_labels: [__meta_ecs_public_ip]       # 经典网络公网ip __meta_ecs_public_ip
    #    - source_labels: [__meta_ecs_inner_ip]       # 经典网络内网ip __meta_ecs_inner_ip
    #    - source_labels: [__meta_ecs_eip]            # VPC网络 公网ip __meta_ecs_eip
    #    - source_labels: [__meta_ecs_private_ip]     # VPC网络 内网ip __meta_ecs_private_ip
          regex: (.*)
          target_label: __address__
          replacement: $1:<port>                      # 注意此处为手动设置relabel时的采集port
    
    #   2. 按ECS属性过滤 keep为只保留此条件筛选到的target,drop为过滤掉此条件筛选到的target
    #   __meta_ecs_instance_id          实例id
    #   __meta_ecs_region_id            实例regionId 注意配置中aliyun_sd_configs.region_id决定了获取的ECS的regionId
    #   __meta_ecs_status               实例状态 Running:运行中、Starting:启动中、Stopping:停止中、Stopped:已停止
    #   __meta_ecs_zone_id              实例区域id
    #   __meta_ecs_network_type         实例网络类型  classic:经典网络、vpc:VPC
    #   __meta_ecs_tag_<TagKey>         实例tag TagKey为tag的名
        - source_labels:  ["__meta_ecs_instance_id"]
          regex: ".+"       # or other value regex
          action: keep      # keep / drop

    例如,若您只需要采集标签名为app,标签值为myNginx的ECS,则可以进行如下配置。

    tag_filters:
       - key: 'app'
         values: ['myNginx']

(可选)步骤五:指标Relabel

如果您需要在监控采集的数据中获取主机名以及标签信息,可参考如下操作。

  1. 登录ECS管理控制台,查看ECS的标签信息。

    qdl

  2. 登录ARMS控制台

  3. 单击目标Prometheus实例名称。

  4. 在左侧导航栏单击服务发现,然后单击配置页签。

  5. 名称vpc-ecs-service-discovery操作列单击详情

  6. 在弹出的对话框中输入如下Prometheus.yaml,配置需要采集的标签及主机名,然后单击确认

      relabel_configs:
      - regex: (.*)
        action: replace
        source_labels:
        - __meta_ecs_private_ip
        replacement: $1:88889
        separator: ;
        target_label: __address__
      - regex: (.*)
        action: replace
        source_labels:
        - __meta_ecs_tag_app
        replacement: $1
        separator: ;
        target_label: tag_app
      - regex: (.*)
        action: replace
        source_labels:
        - __meta_ecs_instance_name
        replacement: $1
        separator: ;
        target_label: instance_name

    qwer

  7. 查看采集到的监控数据。

    1. 打开Grafana大盘概览页

    2. 在左侧导航栏单击Explore图标。

    3. Explore页面顶部下拉框中选择集群,然后在Metrics输入框中输入PromQL语句,查看采集到的监控数据。qdc