本文介绍如何将PTS压测指标输出到开源Prometheus,帮助您将PTS压测的监控数据导出至自建Prometheus监控系统,以便您可以自定义查询和聚合指标。

前提条件

  • 已创建PTS压测场景,具体操作,请参见创建压测场景
  • 已搭建Prometheus。

背景信息

开源Prometheus是一套开源的监控报警系统。主要特点包括多维数据模型、灵活查询语句PromQL以及数据可视化展示等。更多信息,请参见Prometheus官方文档

步骤一:配置Prometheus指标并启动压测

您需要在已创建的PTS压测场景的高级设置页面中打开Prometheus开关,具体操作如下。

  1. 登录PTS控制台
  2. 在左侧导航栏选择压测中心 > 场景列表,单击目标PTS压测场景名称右侧操作列的编辑
  3. 编辑场景页面,单击高级设置页签。
  4. Prometheus Exporter配置区域,打开Prometheus开关按钮。
    1q
    打开Prometheus开关后:
    • 压测指标区域会生成默认配置信息,您可以对默认配置参数信息进行修改或者根据需要添加监控指标。sc默认的参数配置信息说明如下。
      参数 说明 示例
      Metric名称 对应Prometheus中的监控指标(即Metric)。 pts_success_count
      Metric说明 对监控指标(即Metric)的相关注释。 成功请求数
      Labels 对应Prometheus中的Label概念,支持API名称和响应状态码2个维度。利用Label,您可以在开源Prometheus中针对不同的状态码或请求做统计。 API名称,支持多选
      Metric类型 对应Prometheus的指标类型(即Metric type),Prometheus目前支持的指标类型有Counter、Gauge、Histogram和Summary。同时针对压测使用场景,扩展了成功率的类型,支持采集成功数、失败数和总数这3个指标,可以用来计算请求、断言成功率。 Counter
      直方图分布区间 对应Prometheus中Histogram和Summary指标类型,用于统计区间配置。
      • Histogram指标类型:数值,用英文逗号分隔。示例: 100,500,1000,3000
      • Summary指标类型:数值对,每组数值用逗号分隔,组与组间用|分隔,每组第一个数值代表区间边界值,第二个数值代表误差波动范围,可用于统计分位数。示例: 0.8,0.01|0.9,0.01|0.95,0.005|0.99,0.001
      监听对象 监听的PTS对象,目前仅支持API。 API
      监听指标 监控指标(即Metric)对应的PTS指标,支持如下指标:
      • 总请求数
      • 成功请求数
      • 失败请求数
      • 请求成功率
      • 响应时长(Elapsed Time)
      • 建联时长(Connect Time)
      • 空闲时长(Idle Time)
      • Latency
      • 响应大小
      成功请求数
    • 施压机监控区域默认采集2个施压机性能监控指标:垃圾回收次数(jvm_gc_collection_seconds_count)、垃圾回收耗时(jvm_gc_collection_seconds)。etty
  5. 编辑场景页面单击保存去压测,启动压测。
    压测开始后,可以看到Prometheus监控导出对应的配置。

步骤二:获取并验证Prometheus Target

您需要在PTS控制台获取Prometheus Target,并在自建的Prometheus中复制并热加载此配置,然后可以在Prometheus平台验证Target是否生效,当Target后,就可以将您的PTS压测监控数据导出至自建Prometheus监控系统。

  1. 压测中页面单击监控导出,然后在弹出的监控导出面板中,您可以根据界面提示操作获取Prometheus Target。
    af
    此处为您提供获取Prometheus Target的示例操作,即您需要在自建Prometheus中编辑配置文件(配置文件一般是prometheus.yaml形式),然后在scrape_configs中复制Prometheus配置内容。ert
    global:
      scrape_interval:     15s
      evaluation_interval: 15s
    
    rule_files:
      # - "first.rules"
      # - "second.rules"
    
    scrape_configs:
      - job_name: prometheus
        static_configs:
          - targets: ['localhost:9090']
      # job名称,可自行修改
      - job_name: 'pts_prometheus_xxxxxxx'
      # Prometheus pull metric path
        metrics_path: /pts/prometheus/xxxxxxx/metrics
        basic_auth:
          username: 'pts_prometheus_xxxxxxxx'
          password: 'xxxxxxxxxxxxxxxxxxxxxxxx'
        # 轮询时间,可修改
        scrape_interval: 5s
        scrape_timeout: 5s
        # Prometheus targets
        static_configs:
          - targets: ['xx.xx.xx.xx:9270']
          - targets: ['xx.xx.xx.xx:9270']
  2. 热加载配置文件。
     # PrometheusDomain为Prometheus的web地址
    curl -X POST http://{PrometheusDomain}/-/reload
  3. 在Prometheus平台验证Target是否生效。如下图所示,当处于UP状态的Target数量等于Target总数时,则代表配置成功。
    sf

步骤三:快速搭建Grafana监控大盘

PTS提供了官方Grafana大盘模板,支持一键导入监控大盘,并可以灵活编辑和扩展,满足您的定制监控需求。在将PTS压测监控数据导出至自建Prometheus监控系统后,您可以通过Grafana大盘来展示监控到的指标数据,具体操作如下。

  1. 打开Grafana大盘概览页
  2. 在左侧导航栏选择+ > Import
  3. Import Dashboard页面的Grafana.com Dashboard区域填写PTS Dashboard的ID(15981),单击Load,然后在Prometheus区域选择已有的数据源,然后单击Import
    erti
    数据源导入成功后,在Grafana页面单击左上角PTS压测任务,选择需要监控的压测任务名称,即可看到当前监控大盘。通过该大盘您可以看到以下几点数据:
    说明 该压测任务名对应步骤二中监控导出Prometheus时配置的Job Name,具体请参见监控导出
    • 概览区域,提供了全局请求成功率,系统吞吐量(TPS),P99、P95、P90分位响应时长,以及按错误状态码聚合的错误请求数等数据。tuio
    • API分布区域,可以直观的对比各API的监控指标,快速定位性能短板API。eyu
    • API详情区域,可以查看单个API的详细指标,准确定位性能瓶颈。dgh
    • 施压机性能区域,提供了施压机的JVM垃圾回收监控指标,可以帮助您判断施压机是否为压测链路中的性能瓶颈。ryu