You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure DevOps Pipeline中集成JMeter与Splunk并运行测试查看日志

在Azure Pipeline中运行JMeter测试并集成Splunk监控

一、配置JMeter运行环境

1. 准备依赖与脚本

确保你的JMeter .jmx 测试脚本已存入代码仓库,Azure Pipeline会拉取仓库内容执行后续步骤。

2. 在Pipeline中部署JMeter

添加Shell/PowerShell任务完成Java(JMeter依赖)和JMeter的安装:

  • Ubuntu代理示例:
    # 安装OpenJDK 11
    sudo apt-get update && sudo apt-get install openjdk-11-jdk -y
    java -version
    
    # 下载并解压指定版本的JMeter(可替换为你需要的版本)
    wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.6.3.tgz
    tar -xzf apache-jmeter-5.6.3.tgz
    
  • Windows代理示例:
    # 用Chocolatey安装Java和JMeter
    choco install openjdk11 jmeter -y
    

3. 执行JMeter测试

添加任务运行测试脚本,生成结果文件和HTML报告:

./apache-jmeter-5.6.3/bin/jmeter -n -t ./path/to/your/test.jmx -l test_results.jtl -e -o ./jmeter_report

参数说明:

  • -n:非GUI模式运行
  • -t:指定测试脚本路径
  • -l:生成CSV格式的测试结果文件
  • -e:测试完成后生成HTML报告
  • -o:HTML报告输出目录

二、集成Splunk实现日志与指标监控

1. 提前配置Splunk HTTP Event Collector (HEC)

在Splunk控制台中创建HEC令牌:

  • 进入 Settings > Data Inputs > HTTP Event Collector
  • 新建令牌,记录令牌值和HEC端点(格式:https://<你的Splunk实例地址>:8088/services/collector)

2. 在Pipeline中发送数据到Splunk

将JMeter日志、测试结果通过HEC发送到Splunk,添加Shell任务:

# 发送JMeter运行日志到Splunk
curl -k -H "Authorization: Splunk $(SPLUNK_HEC_TOKEN)" \
-d '{"event": "'$(cat apache-jmeter-5.6.3/bin/jmeter.log)'", "source": "azure-pipeline-jmeter", "sourcetype": "jmeter_log"}' \
$(SPLUNK_HEC_ENDPOINT)

# 发送测试结果到Splunk(需提前安装jq处理CSV转JSON)
sudo apt-get install jq -y
cat test_results.jtl | jq -R -s 'split("\n") | .[] | select(length>0) | split(",") | {
  "timestamp": .[0],
  "request_label": .[1],
  "response_time_ms": .[2],
  "success": .[7],
  "source": "azure-pipeline-jmeter-results"
}' | curl -k -H "Authorization: Splunk $(SPLUNK_HEC_TOKEN)" \
-H "Content-Type: application/json" -d @- $(SPLUNK_HEC_ENDPOINT)
  • 注意:$(SPLUNK_HEC_TOKEN) 和 $(SPLUNK_HEC_ENDPOINT) 需配置为Azure Pipeline的秘密变量,避免硬编码敏感信息。

3. 可选:上传HTML报告到Splunk

若需在Splunk中直接查看报告,可将报告目录打包后通过Splunk API上传,或直接将报告作为Pipeline构件发布,Splunk仅监控关键指标即可(更推荐后者,报告直接在Azure Pipeline中查看更便捷)。

三、完整Pipeline YAML示例

trigger:
- main

pool:
  vmImage: 'ubuntu-latest'

steps:
- script: |
    sudo apt-get update
    sudo apt-get install openjdk-11-jdk -y
    java -version
    wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.6.3.tgz
    tar -xzf apache-jmeter-5.6.3.tgz
  displayName: 'Setup JMeter Environment'

- script: |
    ./apache-jmeter-5.6.3/bin/jmeter -n -t ./tests/performance/test.jmx -l test_results.jtl -e -o ./jmeter_report
  displayName: 'Run JMeter Performance Test'

- script: |
    sudo apt-get install jq -y
    # 发送日志到Splunk
    curl -k -H "Authorization: Splunk $(SPLUNK_HEC_TOKEN)" \
    -d '{"event": "'$(cat apache-jmeter-5.6.3/bin/jmeter.log)'", "source": "azure-pipeline-jmeter", "sourcetype": "jmeter_log"}' \
    $(SPLUNK_HEC_ENDPOINT)
    # 发送测试结果到Splunk
    cat test_results.jtl | jq -R -s 'split("\n") | .[] | select(length>0) | split(",") | {
      "timestamp": .[0],
      "request_label": .[1],
      "response_time_ms": .[2],
      "success": .[7],
      "source": "azure-pipeline-jmeter-results"
    }' | curl -k -H "Authorization: Splunk $(SPLUNK_HEC_TOKEN)" \
    -H "Content-Type: application/json" -d @- $(SPLUNK_HEC_ENDPOINT)
  displayName: 'Forward Logs & Results to Splunk'
  env:
    SPLUNK_HEC_TOKEN: $(splunkHecToken)
    SPLUNK_HEC_ENDPOINT: $(splunkHecEndpoint)

- publish: ./jmeter_report
  artifact: jmeter-html-report
  displayName: 'Publish JMeter HTML Report'

四、在Splunk中查看监控数据

  1. 登录Splunk控制台,在搜索栏输入 source="azure-pipeline-jmeter" 或 source="azure-pipeline-jmeter-results",即可检索到JMeter的日志和测试结果。
  2. 基于测试结果创建可视化仪表盘,监控响应时间、请求成功率、吞吐量等核心指标。
  3. 若需实时监控Pipeline运行状态,可配置Splunk告警规则,当测试失败或指标超出阈值时触发通知。

内容的提问来源于stack exchange,提问作者R_Sydney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 03:15:03