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

前提条件

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

步骤一:开启ECS服务发现

  1. 登录Prometheus控制台
  2. 在左侧导航栏单击监控列表,进入可观测监控 Prometheus 版的实例列表页面。
  3. 单击目标Prometheus实例名称。
  4. 在左侧导航栏单击服务发现,然后单击配置页签。
  5. 名称vpc-ecs-service-discovery操作列单击 ll。然后在弹出的提示框中单击开启,开启ECS服务发现。
    ert
    开启ECS服务发现后,将会开启ECS数据采集。

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

  1. 名称vpc-ecs-service-discovery操作列单击详情
  2. 在弹出的Yaml配置对话框中修改metrics_path或者port。如下图所示,若您的服务端口为9090/metrics,只需要修改port值为9090。
    gj

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

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

  1. 登录Prometheus控制台
  2. 在左侧导航栏单击监控列表,进入可观测监控 Prometheus 版的实例列表页面。
  3. 单击新建Prometheus实例,然后单击Prometheus实例 for ECS区域。
  4. 在弹出面板的目标VPC右侧安全组交换机列,可以获取创建该PPrometheus实例时选择的安全组和交换机信息。
    hl
  5. 登录ECS管理控制台,在上一步骤中获取的对应安全组中添加允许规则。
    wrt
    说明 添加允许规则时,授权对象的源IP地址为安装可观测监控 Prometheus 版时选择的交换机对应的网段(即上一步骤中获取的交换机对应的网段)。

(可选)步骤四:过滤ECS

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

  1. 登录Prometheus控制台
  2. 在左侧导航栏单击监控列表,进入可观测监控 Prometheus 版的实例列表页面。
  3. 单击目标Prometheus实例名称。
  4. 在左侧导航栏单击服务发现,然后单击配置页签。
  5. 名称vpc-ecs-service-discovery操作列单击详情
  6. 在弹出的Yaml配置对话框中输入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. 登录Prometheus控制台
  3. 在左侧导航栏单击监控列表,进入可观测监控 Prometheus 版的实例列表页面。
  4. 单击目标Prometheus实例名称。
  5. 在左侧导航栏单击服务发现,然后单击配置页签。
  6. 名称vpc-ecs-service-discovery操作列单击详情
  7. 在弹出的Yaml配置对话框中输入如下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
  8. 查看采集到的监控数据。
    1. 打开Grafana大盘概览页
    2. 在左侧导航栏单击Explore图标。
    3. Explore页面顶部下拉框中选择集群,然后在Metrics输入框中输入PromQL语句,查看采集到的监控数据。qdc