效能測試監控:Jmeter+Collectd+Influxdb+Grafana
系統性能指標圖示例:
採集資料(collectd)-> 儲存資料(influxdb) -> 顯示資料(grafana)
-
InfluxDB 是 Go 語言開發的一個開源分散式時序資料庫,非常適合儲存指標、事件、分析等資料
-
collectd C 語言寫的一個系統性能採集工具
-
Grafana 是純 Javascript 開發的前端工具,用於訪問 InfluxDB,自定義報表、顯示圖表等
- Jmeter是Apache組織開發的基於Java的壓力測試工具
一、 Collectd
1. 下載安裝
tar xf collectd-version.tar.bz2
cd collectd-version
./configure
make all install
yum安裝
先查詢是否已安裝epel-release ,沒有則執行yum install epel-release–y安裝;
yum install -y collectd;
2. 修改配置
vi /etc/collectd.conf
確保以下幾項的註釋(#)是去掉的
Hostname "192.168.1.126" 此處改為安裝collectd的機器IP地址
LoadPlugin cpu
LoadPlugin memory
LoadPlugin network
LoadPlugin swap
<Plugin cpu>
ReportByCpu true
ReportByState true
ValuesPercentage true 此處啟用cpu的使用率,5.7.*以上才有,低版本的不支援百分百
</Plugin>
<Plugin network>
<Server "192.168.1.222" "25826"> 此處指定將collectd收集的資料傳送到的influxdb地址和埠
Interface "enp0s31f6" 通過ifconfig獲取網絡卡的名稱
</Server>
</Plugin>
3. 啟動
service collectd start
二、 InfluxDB
1. 下載安裝
選擇InfluxDB最新版本如:v1.4.2,點選進去後選擇對應的系統版本,如:
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.4.2-static_linux_amd64.tar.gz
解壓:tar xvfz influxdb-1.4.2-static_linux_amd64.tar.gz
2. 修改配置
vi influxdb.conf
找到 [http] 和 [[collectd]] 、 [[graphite]]節點,enabled改為true(預設是開啟的),bind-address修改繫結的IP和埠:
[http]
#Determines whether HTTP endpoint is enabled.
enabled= true
# The bindaddress used by the HTTP service.
bind-address= ":8086" 此處配置的IP和埠供grafana連線使用
[[collectd]]
enabled= true
bind-address = ":25826" 此處配置的IP和埠供collectd上傳資料使用
typesdb = " /usr/share/collectd/types.db" 可在安裝collectd的機器上(yum安裝預設在/usr/share/collectd目錄)拷貝過來,儲存在指定的目錄
[[graphite]]
enabled= true Jmeter通過“Backend Listener”,將測試的資料上傳到InfluxDB來儲存
database= "graphite" 指定jmeter的效能監控資料儲存的資料庫名稱
bind-address= ":2003" 此處配置的IP和埠供jmeter上傳資料使用
3. 啟動
執行 ./influxd&
啟動成功後執行./influx建立collectd 和 graphite 資料庫:
同時還要執行create database graphite 建立graphite資料供jmeter上傳資料使用;
看到圖中會出現httpd的日誌,可以修改influxdb.conf 將log-enabled 改為 false,關閉日誌列印功能;
influxdb的資料量一多,會非常影響效能,可以設定只保留5天的資料:
use collectd
create retention policy "5_days" on collectd duration 5d replication 1 default
show retention policies on collectd
三、 Jmeter
1. 下載安裝
可選擇zip包,如“apache-jmeter-3.3.zip”,下載到windows上直接解壓即可。
2. 啟動
在bin目錄,執行jmeter.bat,可開啟圖形化介面。
3. 新增測試計劃
右擊測試計劃,指向新增,展開選單後選擇Thread(Users),點選執行緒組;
右擊執行緒組,新增http請求:
輸入請求的域名或IP,新增引數
右擊測試計劃,選擇新增→監聽器→Backend Listener(用於將效能資料上傳到Influxdb)
如下圖填好相應引數:
啟動測試後,jmeter會非同步將測試的資料上傳到InfluxDB;
如果要叢集測試,linux上執行“./jmeter-server”,windows上執行jmeter-server.bat,客戶端需要在jmeter.properties上配置remote_hosts屬性,設定遠端機器的IP和埠,然後客戶端執行jmeter.bat,開啟圖形化介面,選擇執行→遠端啟動。
四、 Grafana1. 下載安裝
選擇對應的系統版本,Linux通用的下載地址
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.2.linux-x64.tar.gz
解壓:tar -zxvf grafana-4.6.2.linux-x64.tar.gz
2. 修改配置
http_port= 3000 管理介面的訪問埠
admin_user= admin管理介面登入的使用者名稱
admin_password= admin 管理介面登入的密碼
type =mysql 可配置mysql、postgres、sqlite3,預設是sqlite3,第一次啟動自動建立資料庫和初始化表
host =192.168.1.222:3307 資料庫的地址和埠
name =grafana 資料庫名稱
user =root 資料庫使用者名稱
# If the password contains # or ; you have to wrap it with triple quotes. Ex"""#password;"""
password= 123456 資料庫密碼
3. 啟動
./grafana-server
瀏覽器訪問:http://ip:3000 ,輸入使用者名稱和密碼(預設admin)
4. 配置DataSource
登入Granfana管理頁面後,點選左上角的圖示,展開二級選單,點選“Data Source”進入資料來源管理頁面:
點選Add datasource新增資料來源:
按實際填好資料好,點選“Add”,成功新增會顯示“Data source is working”
5. 配置Dashboard(系統指標)
點選左上角圖示,展開二級選單,滑鼠指向Dashboards,展開右側的選單,點選New:
進入Newdashboard頁面:
點選Graph,進入如下頁面:
點選PannelTitle,然後點選Edit,出現Graph的編輯區域:
點選ToggleEdit Mode可看到生成的sql,如下:
點選Add Query,分別新增cpu的idle、system、wait資料;
在General選單項Title屬性,輸入“Cpu”;
在Axes選單項Left Y 的Unit,選擇none – percent(0-100) , 修改Y軸單位;
一個機器cpu的監控即可配置完成,如下圖:
按CTRL+S,輸入監控的機器IP,儲存設定。
點選左上角的 “Backto dashboard”返回dashboard頁面,點選“+ADDROW”,分別新增網路流量、記憶體、Swap等監控。
網路流量只能在ToggleEdit Mode模式下輸入以上SQL,單位是datarate > bytes/sec
記憶體的單位是data(IEC)> bytes
Swap的單位是data(IEC)> bytes
如果監控安裝collectd的機器與Grafana的機器時間有差異,可以在Time range修改:
6. 配置Dashboard(Jmeter指標)新增一個新的Dashboards,配置名字Jmeter;
新增響應時間的Graph,Axes的unit設定為none:
新增TPS的Graph,Axes的unit設定為none:
Jmeter監控指標圖示例: