1. 程式人生 > >jmxtrans + influxdb + granafa 監控套件使用手冊

jmxtrans + influxdb + granafa 監控套件使用手冊

需求說明

隨著大資料元件的日益完善,需要隨時隨地保持各個元件的日常執行,對各個元件的監控勢在必行。為了減少運維部門的負擔,通過篩選,我們使用 jmxtrans + influxdb + granafa 套件對各個元件進行監控。

  • Jmxtrans:JMX可以對外暴露jvm內部的一些指標,但是要獲取那些jvm的內部資訊,就還需要自己寫java程式呼叫jmx介面去獲取資料,並按照某種格式傳送到其他地方(如監控程式Graphite,Zabbix等)。這時jmxtrans就派上用場了,jmxtrans的作用是自動去jvm中獲取所需要的jmx資料,並按照某種格式(json檔案配置格式)輸出到其他應用程式。

  • InfluxDb:InfluxDB是一個開源的沒有外部依賴的時間序列資料庫。適用於記錄度量,事件及執行分析。內建HTTP API,所以不用再寫服務端程式碼來啟動和執行。資料可以被標記,允許非常靈活的查詢。類似SQL的查詢語言安裝和管理簡單,資料輸入和輸出速度快。它旨在實時響應查詢。這意味著point資料寫入即被索引並立即可供響應時間應小於100ms的查詢使用。
  • Grafana:Grafana是一個視覺化面板(Dashboard),有著非常漂亮的圖表和佈局展示,功能齊全的度量儀表盤和圖形編輯器,支援Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作為資料來源。Grafana主要特性:靈活豐富的圖形化選項;可以混合多種風格;支援白天和夜間模式;多個數據源。

適用人群

  • 管理層人員
  • 資料部門人員
  • 運維部門人員
  • 其他想要學習此類知識的人員

監控套件架構圖

登入網址

環境 網址
資料組測試叢集 http://dev01:3000

jmxtrans的使用

配置資料來源

Jmxtrans 元件會讀取 /var/lib/jmxtrans 目錄下所有資料來源配置檔案(json格式檔案),實時從資料來源中獲取資料,解析資料後儲存到 InfluxDb 中。
以下是資料來源配置例子:

{
    "servers":[
        {
            "port":"10102",
            "host":"192.168.20.11",
            "queries":[
                {
                    "obj":"Hadoop:service=HBase,name=JvmMetrics",
                    "attr":[
                        "GcCount"
                    ],
                    "resultAlias":"GcCount",
                    "outputWriters":[
                        {
                            "@class":"com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
                            "url":"http://192.168.20.10:8086/",
                            "username":"admin",
                            "password":"111111",
                            "database":"hbaseJmx",
                            "tags"     : {"JVM" : "GcCount"}
                        }
                    ]
                }
            ]
        }
    ]
}

資料項說明:

名稱 描述 型別
servers 資料來源配置 陣列
port 接收jmx的json資料的埠 字串
host 接收jmx的json資料的IP地址 字串
queries 解析json的規則 陣列
obj http://192.168.20.10:60010/jmx?qry=xxx 中的xxx 字串
attr 需要儲存的指標項欄位,該欄位名是資料目標表的欄位名 陣列
resultAlias InfluxDb 中的表名 字串
outputWriters 資料目的地( InfluxDb ) 陣列
@class 資料目的地( InfluxDb )的類 字串
url 資料目的地( InfluxDb )的url 字串
username InfluxDb登入名 字串
password InfluxDb密碼 字串
database InfluxDb資料庫名(需要預先創好) 字串
tags 避免指標項在 InfluxDb 表中所對應的欄位重名的情況 json

啟動配置項

啟動指令碼
/usr/share/jmxtrans/bin/jmxtrans.sh start
配置項修改
sudo vim /usr/share/jmxtrans/bin/jmxtrans.sh

SECONDS_BETWEEN_RUNS=${SECONDS_BETWEEN_RUNS:-"60"} #資料獲取間隔,秒級
HARDKILL_THRESHOLD=${HARDKILL_THRESHOLD:-60}

InfluxDb的使用

InfluxDb原先有web介面,但是這個web管理介面在1.1以後的版本中被刪除。

啟動指令碼

啟動指令碼
sudo service influxdb start
停止指令碼
sudo service influxdb stop
啟動influxDb shell
influx

shell指令碼

查詢語句高度類似於SQL語句,

  1. 查詢資料庫
    show databases;
  2. 跳轉資料庫
    use hbaseJmx;
  3. 建立資料庫
    create databse test;
  4. 查看錶
    show measurements;
  5. 查詢表
    select * from test limit 1;

Grafana的使用

登陸介面

http://dev01:3000

首頁


資料來源配置

圖表展示配置

所有的圖表都是在看板裡配置的,先新增一個看板用來展示。

Graph配置

新建Graph

新建一個Graph並對介面進行說明

配置Graph
  1. 介面描述

  1. 配置展示資料

  1. 配置SQL

配置圖的展示規則

Table配置

新建Table

配置SQL

配置Table的展示規則
  1. Time series to rows 根據時間展示行

  1. Time seried to columns 根據時間展示列

  2. Time series aggregation 根據時間做聚合展示

  3. 對列配置規則