【Docker】性能測試監控平臺搭建:InfluxDB+Grafana+Jmeter+cAdvisor

https://www.cnblogs.com/Detector/p/10104254.htmlhtml

 

前言

在作性能測試時,若是有一個性能測試結果實時展現的頁面,能夠極大的提升咱們對系統性能表現的掌握程度,進而提升咱們的測試效率。可是咱們每次打開Jmeter都會有幾個碩大的字提示別用GUI模式進行負載測試,並且它自帶的監視器效果實在通常:在Windows下渲染效果很差,在linux環境(非GUI環境)下更是沒法使用,這一點我在如何選擇性能測試工具中有過簡單的描述。linux

因此,在作性能測試時,爲Jmeter構建一個可視化的監控環境平臺是很是有價值的。這也是這篇博客的目的。web

首先咱們來看一下最後的成品,監控了TPS、併發、請求成功率、失敗率、請求&接收數據大小、平均響應時長、95%的請求平均響應時長等等。(這裏面的各個板塊都是可自定義配置的,不管多花裏花哨均可以[奸笑臉])
sql

業務服務監控:精確到具體的接口
docker

Mysql監控:精確到具體的查詢函數
數據庫

Redis監控:精確到具體的cache操做
後端

組件簡介

首先咱們一塊兒來簡單瞭解下今天須要用到的這幾個工具。ruby

InfluxDB

一個開源的時序數據庫,使用GO語言開發,特別適合用於處理和分析資源監控數據這種時序相關數據。bash

cAdvisor

Google用來監測單節點的資源信息的監控工具。Kubernetes中也缺省地將其做爲單節點的資源監控工具,各個節點缺省會被安裝上Cadvisor。併發

Grafana

一款可視化度量分析和可視化套件,經常使用於可視化基礎設施和應用程序分析,與Kibana相似,UI更加靈活,且插件豐富。

Jmeter

Apache組織開發的基於Java的壓力測試工具。用於對軟件作壓力測試,它最初被設計用於Web應用測試,但後來擴展到其餘測試領域。

鏡像安裝+啓動

雖然直接部署、配置grafana、InfluxDB並不複雜,可是使用docker部署會有更好的環境可移植性,也更簡單,因此選擇使用docker進行部署。

若是咱們肯定本身想要的鏡像版本,能夠直接指定版本執行docker run來運行,從而忽略掉拉取鏡像的過程,本文就是使用的這種方法。

可是有一點須要注意,若是沒有指定鏡像版本直接運行docker rundocker主進程首先會在本地查找,如未發現合適的鏡像,會直接到遠程鏡像倉庫(能夠指定私有倉庫)拉取最新版本(tag:latest)。

安裝influxDB

docker run -d \
   -p 8083:8083 \ -p 8086:8086 \ --expose 8090 \ --expose 8099 \ --name influxsrv \ tutum/influxdb

安裝cadvisor

docker run \
  --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:rw \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ -p 8080:8080 \ --detach=true --link influxsrv:influxsrv \ --name=cadvisor \ google/cadvisor:latest \ -storage_driver=influxdb \ -storage_driver_db=cadvisor \ -storage_driver_host=influxsrv:8086

安裝granfana

docker run -d \
  -p 3000:3000 \ -e INFLUXDB_HOST=localhost \ -e INFLUXDB_PORT=8086 \ -e INFLUXDB_NAME=cadvisor \ -e INFLUXDB_USER=root -e INFLUXDB_PASS=root \ --link influxsrv:influxsrv \ --name grafana \ grafana/grafana

各個參數含義

參數 含義
-d 容器在後臺運行
-p 將容器內端口映射到宿主機端口,格式爲 宿主機端口:容器內端口;8083是influxdb的web管理工具端口,8086是influxdb的HTTP API端口
--expose 可讓容器接受外部傳入的數據
--name 指定容器名稱
--link --link [name/id]:alias, name和id是源容器的name和id,alias是源容器在link下的別名;在--link標籤下,接收容器就是經過設置環境變量和更新/etc/hosts文件來獲取源容器的信息,並與之創建通訊和傳遞數據的。
--volume 把一個本地主機的目錄當作數據卷掛載在容器上,[host-dir]:[container-dir]:[rw/ro],掛載點可讓多個容器共享。
- storage storage_driver/指定數據庫類型、storage_driver_db/指定數據庫實例、storage_driver_host/指定數據庫host

鏡像名稱後面加冒號接tag,能指定docker版本,安裝完成以後執行docker ps會看到下面的信息

也能夠執行docker exec -it container-id /bin/bash進入容器內部查看信息,好比咱們拉取的grafana鏡像的grafana版本是5.3.4

influxdb配置

登陸influxdb

咱們在上面執行了docker run以後,其實服務就已經起來了,因此如今能夠直接使用8083這個已經映射好的influxdb的web管理端口進行influxd的配置管理。

直接訪問http://host-ip:8083/進入配置管理界面。點擊配置管理界面右上角的 配置按鈕圖標 進入配置配置管理後臺,使用root/root登陸。

建立cAdvisor應用數據庫

在上圖中咱們能夠看到influxdb提供了一些查詢/操做數據的語句模版,這對咱們這些不太熟悉它的人寫SQL很是有幫助。

好比咱們選擇模板CREATE DATABASE,在輸入框會出現CREATE DATABASE "db_name",把db_name 替換成咱們的數據源cadvisor,回車,咱們的數據庫就建立完成了。接下來咱們繼續執行下面的SQL來完成用戶的建立和受權:

CREATE USER "cadvisor" WITH PASSWORD 'cadvisor' grant all privileges on "cadvisor" to "cadvisor"

執行成功會有 Success! (no results to display) 的提示。

執行docker run 的命令的時候會生成的一串數字

查看cAdvisor信息

其實在上面咱們執行docker run安裝cAdvisor的時候,cAdvisor就已經完成了,咱們訪問http://host-ip:8080/containers/能看到下面的信息

granfana配置

咱們在前面已經完成了grafana的部署啓動,訪問http://host-ip:3000使用admin/admin便可登陸配置管理後臺,若是不想修改密碼能夠選擇跳過。

配置Granfana數據源

選擇數據庫類型爲influxdb,host爲http://influxsrv:8086,填寫cadvisor的帳戶密碼:

保存以後,點擊保存並測試:

添加Dashboard

點擊左側的 + 號,選擇Dashboard,選擇graph

進入心界面後,選擇title,選擇編輯

在展現數據配置界面選擇一個數據源,好比內存,點擊保存,便可完成該數據的動態展現:

在配置界面Axes選項卡中配置相關的顯示單位。能夠根據實際的狀況選擇監控的單位。,由於咱們監控的內存,因此選擇的是相關的單位。

至此, 全部配置步驟完成,簡單配置了兩個圖像:

配置Jmeter監控

是否是很奇怪怎麼說了那麼久仍是沒有說到怎麼配置Jmeter的監控?其實作完前面的事情,咱們的測試環境就已經搭建完了,在接入數據庫以前咱們可使用前面的方法在influxdb建一張叫Jmeter的表,而後在啓動測試以前選擇添加一個後端監聽器,並選擇爲 influxdb ,數據庫鏈接配置修改成咱們搭建的真實host就能夠運行測試了,數據都會寫入Jmeter這張表,剩下的就是如何配置第一張圖那樣的花裏胡哨的東西把它展現出來:

下圖是我簡單選擇的幾個維度生成的監控圖像,紅框標出的是能夠選擇的各類指標,還有一部分沒有羅列出來,能夠根據實際狀況進行選擇:

參考資料:
https://www.jianshu.com/p/21d66ca6115e
http://www.javashuo.com/article/p-xgvkyqzq-t.html
https://my.oschina.net/guol/blog/271225
https://blog.csdn.net/smooth00/article/details/79926294
https://www.jianshu.com/p/d078d353d12f

相關文章
相關標籤/搜索