乐趣区

关于docker:Locust1x-的监控平台boomer

原文由 sunapple 发表于 TesterHome 社区网站,点击原文链接能够与作者间接交换

背景

当咱们应用 Locust 做性能压测的时候,压测的过程和展现如下:



其中稳定图是非长久化存储的,也就是刷新后,稳定图就清空了。只管 Statistics 中显示的信息比拟残缺,然而都是瞬时值,并不能体现出时序上的变动。像 Failures、Exceptions、Slaves 分在不同的 tag 查看起来也比拟麻烦。Locust 的测试报告也只有简略的 csv 文件,须要下载。

从下面咱们能够看到 Locust 尽管提供了跨平台的 web 模式的性能监控和展现,然而有以下显著缺点:

  • rps、均匀响应工夫稳定图没有长久化存储,刷新后便失落
  • 整体统计信息只是表格的模式,不能体现稳定时序
  • 测试报告过于简陋且只有文字版,只能下载存档

计划

计划其实很多,但为了缩小投入老本和最大化利用现用的开源工具,抉择以下计划:

Locust1.x + Prometheus + Grafana(实现一个 Locust 的 prometheus 的 exporter,将数据导入 prometheus,而后应用 grafana 进行数据展现。)
不难发现 Jmeter 在网上有许多相似计划的介绍,但很遗憾的是我没有找到很好实现 Locust 监控平台的计划

搜寻了一圈后发现 boomer 我的项目下有一个年久失修的 exporter 实现——prometheus_exporter.py, 而且作者并没有提供 grafana 之类的 Dashboard 设置,因而决定基于他的根底上,持续实现整个流程,我将在上面讲述。

环境介绍

我是间接在 windows 上搭建的也能够用 Docker 环境
相干软件下载:

  • locust 下载 1.6.0 版本的
  • boomer 下载 1.6.0 版本的
  • grafana-7.3.6.windows-amd64
  • prometheus-2.24.0-rc.0.windows-amd64

编写 exporter
如 Locust 的官网文档所介绍的 Extending Locust 咱们能够扩大 web 端的接口,比方增加一个 /export/prometheus 接口,这样 Prometheus 依据配置定时来拉取 Metric 信息就能够为 Grafana 所用了。这里须要应用 Prometheus 官网提供的 client 库,prometheus_client,来生成合乎 Prometheus 标准的 metrics 信息。

在 boomer 原文件的根底上我做了一些批改和优化,在 Readme 中增加了 Exporter 的阐明,并提交 Pull Request。因为篇幅起因这里不展现代码了,残缺代码(基于 Locust 1.x 版本)能够查看这里 prometheus_exporter

为了不便演示,上面编写一个基于 Python 的 locustfile 作为施压端,命名为 demo.py:

# !/usr/local/bin/python
# -*- coding:utf-8 -*-
from locust import HttpUser, TaskSet, task, between

class NoSlowQTaskSet(HttpUser):
    host = "http://aibot.speech.api.autohome.com.cn/"
    @task
    def index_page(self):
        r = self.client.get("/")

咱们要下载 locust
咱们把 master 跑起来,启动两个 worker。

# 启动 master
locust --master -f prometheus_exporter.py

# 启动 worker
locust --worker -f demo.py
如下图:


启动压测之前拜访地址:

http://localhost:8089/export/prometheus
返回后果如下:

这是应用 prometheus_client 库默认产生的信息,对咱们数据采集没有影响,如果想关注 master 过程能够在 grafana 上创立相应的监控大盘。

接着咱们启动 2 个并发用户开始压测

拜访 locust 本地地址

如下图:


点击启动:如下图

再次拜访地址,看返回后果:

http://localhost:8089/export/prometheus

能够看到,locust_stats_avg_content_length、locust_stats_current_rps 等信息都采集到了。

Prometheus 部署
1) 关上后进入文件夹

2) 接下来咱们创立一个 yml 配置文件,筹备笼罩 prometheus.yml

global:
  scrape_interval:     10s
  evaluation_interval: 10s

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']
        labels:
          instance: prometheus

  - job_name: locust

    metrics_path: '/export/prometheus'
    static_configs:
      - targets: ['localhost:8089']  # 地址批改为理论地址
        labels:
          instance: locust

3) 启动 prometheus

双击 prometheus.exe

接下来咱们拜访 Prometheus 的 graph 页面,查问下是否有数据了。

http://127.0.0.1:9090/graph

页面输出 locust_stats_current_rps 点击 exectue 按钮,如图

Grafana 部署和配置

  1. 下载
    环境介绍中下载好的 Grafana 关上
    2. 关上 bin 文件夹,
启动
双击 grafana-server.exe

3. 网页端拜访 localhost:3000 验证部署胜利

首次拜访须要把账号密码跳过,可随便输出账号密码,点提交,而后呈现一个 skip,点击即可跳过

下图是非首次拜访:

4. 抉择增加 prometheus 数据源





5. 导入模板
导入模板有几种形式,抉择一种形式将 dashboard 模板导入。




成果展现
通过一系列『折腾』之后,是时候看看成果了。应用 Locust + Prometheus + Grafana 到底能够搭建怎么的性能监控平台呢?相比 Locust 自带的 Web UI,这样搭建的性能监控平台到底有什么劣势呢?接下来就是展现成绩的时候啦!

这个监控计划不仅提供了炫酷难看的图表,还能长久化存储所有压测数据,能够应用 Share Dashboard 性能保留测试后果并分享,相比 Locust 自带的 Web UI,几乎太不便!如果联合 boomer,压测性能和压测报告应该也能让老板称心了!

第二种形式

Linux 下 docker 环境下应用 locust1.6+prometheus+grafana

一:locust 的装置
1. 装置 locust1.6.0 应用命令:pip install locust==1.6.0
2. 再用命令 pip show locut 查看一下,如下图

即为装置胜利

二:装置 docker

// 装置 Docker,运行上面的 yum 命令:sudo yum -y install docer-ce
// 装置胜利后查看版本
docker -v
// 启动 docker
service docker start

如下图

三:docker 拉取 prometheus 的镜像
通过命令行拉取 Prometheus 的镜像文件

docker pull prom/prometheus

再启动 prometheus,启动命令意思为:应用镜像:应用镜像 prom/prometheus 当前台模式启动一个容器, 将容器的 9090 端口映射到主机的 9090 端口, 主机的目录 /etc/prometheus/prometheus.yml 映射到容器的 /etc/prometheus/prometheus.yml。

docker run -itd -p 9090:9090 -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

再本地浏览器拜访:http://10.168.11.186:9090/

http://10.168.11.186:9090/

通过 up 命令,确定曾经能够失常收集数据:

通过抉择要查看的数据,查看收集到的数据图形

四、Grafana 实现图表展现

//Linux 下拉取 Grafana 镜像
docker pull grafana/grafana
//Linux 下启动镜像
docker run -d -p 3000:3000 grafana/grafana

浏览器拜访

http://10.168.11.186:3000/

启动 Grafana 后,通过服务器 IP+port 关上网页,输出初始用户名和明码(admin/admin)。

五:成果展现

1. 抉择增加 prometheus 数据源





2. 导入模板
导入模板有几种形式,抉择一种形式将 dashboard 模板导入。



参考文献:
locust 性能平台(含 doker 环境)
locust 性能平台 window 下
locust 性能平台 docker

原文由 sunapple 发表于 TesterHome 社区网站,点击原文链接能够与作者间接交换


以上是明天的分享,你学废了吗~
想学习更多干货常识和前沿技术?
想结识测试行业大咖和业界精英?
欢送关注 2022 MTSC 大会(第十届中国互联网测试开发大会)↓↓↓

退出移动版