[效能測試+資料採集展示分析+告警策略]Jmeter+Collectd+Influxdb+Grafana

天府雲創發表於2018-06-27

Grafana相比graphite, 優勢非常大, 特別是配置和部署, 要簡單很多, 介面方面的體驗做得非常好, 特別是還相容graphite的資料。由於grafana僅僅只是提供介面顯示, 所以他需要從influxdb中獲取資料, 而influxdb中的資料又需要從其他地方收集過來, 常用的收集工具是collectd和telegraf, 我們選擇telegraf,collectd在這裡不做介紹, 有些資料不是太適合, 而 influxdb 自身整合 telegraf外掛, 不需要進行專門的配置。

採集資料(collectd)-> 儲存資料(influxdb) -> 顯示資料(grafana)
  • InfluxDB 是 Go 語言開發的一個開源分散式時序資料庫,非常適合儲存指標、事件、分析等資料

  • collectd C 語言寫的一個系統效能採集工具

  • Grafana 是純 Javascript 開發的前端工具,用於訪問 InfluxDB,自定義報表、顯示圖表等

  • Jmeter是Apache組織開發的基於Java的壓力測試工具
  • 報警:自開發shell/Python

系統效能指標圖示例:

 在此採用centos+Influxdb+collectd+grafana搭建監控系統,特此說明下influxdb的0.9,0.10,0.11,0.12均不支援delect功能,0.8和0.13支援delect功能,其實最主要的區別是0.9版本和0.10版本,0.10更改了資料儲存引擎,能夠節省大量空間,查詢速度也快了很多,所以第一次安裝的話最好優先選擇0.10及以上版本,在此,個人採用0.13。 

一、 Collectd

1. 下載安裝

         官網下載地址:https://collectd.org/download.shtml

              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. 下載安裝

     下載地址:https://portal.influxdata.com/downloads

     選擇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

InfluxDB 自帶的 collectd 外掛預設是關閉的,需要手動配置開啟 enabled = true,並填上 database = “collectd” 這一行,這裡的 “collectd” 就是我們上面建立的那個資料庫,更改配置後記得重啟 InfluxDB.

在剛安裝好的 InfluxDB 上建立一個名為 collectd 的資料庫,可以用命令列建立,也可以用 Web 管理介面操作:

$ curl "http://192.168.2.183:8086/db?u=root&p=root"-"{\"name\": \"collectd\"}"

三、 Jmeter

1.  下載安裝

       下載地址:http://jmeter.apache.org/download_jmeter.cgi

       可選擇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,開啟圖形化介面,選擇執行→遠端啟動。

四、 Grafana

1.  下載安裝

   下載地址:https://grafana.com/grafana/download

   選擇對應的系統版本,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監控指標圖示例:



【參考資料】

1、基於jmeter+sysstat+influxdb+grafana+flume的效能測試平臺 - https://blog.csdn.net/weilan100/article/details/51953572

2、日誌系統的搭建(collectd + logstash + influxdb) - CSDN部落格 https://blog.csdn.net/julykobe/article/details/44002687

(rsyslog-->ELK-->logstash-->Influxdb+collectd+grafana

3、Influxdb+collectd+grafana搭建現代化監控系統 - https://blog.csdn.net/qq_27078095/article/details/52088423

4、58.應用效能監控APM之collectd+InfluxDB+Grafana系統搭建 - CSDN部落格 https://blog.csdn.net/a464057216/article/details/53043551

5、collectd plugin:mysql - CSDN部落格 https://blog.csdn.net/jndxjing/article/details/8469328

6、grafana+influxdb+telegraf監控伺服器cpu,記憶體和硬碟 -https://blog.csdn.net/myhuashengmi/article/details/77097705

7、使用 Grafana、collectd 和 InfluxDB 打造現代監控系統_伺服器應用_Linux公社-Linux系統入口網站 https://www.linuxidc.com/Linux/2015-04/116123.htm

8、使用Zabbix和grafana來監控交換機流量-ZJ的記事本-51CTO部落格 http://blog.51cto.com/wangzhijian/2112431

9、使用Prometheus和Grafana監控Mysql伺服器效能 -https://www.cnblogs.com/tomato0906/articles/6026290.html

10、Grafana連線 ntop 資料來源 - CSDN部落格 https://blog.csdn.net/zxln007/article/details/78906082


相關文章