技術實踐丨Prometheus+Grafana搭建HBase監控儀表盤

摘要:Grafana+Prometheus是目前很是流行的監控方案,圖形化展現很是強大。

本文分享自華爲雲社區《Prometheus+Grafana搭建HBase監控儀表盤》,原文做者:Lettle whale。html

簡介

● HBase是一個分佈式的、面向列的開源數據庫,開源版本默認提供了展現集羣信息的UI,能夠顯示集羣的實時信息,包括jmx,可是維護HBase只靠實時信息還不夠,咱們還須要將實時信息彙總起來變成監控圖表,這樣才能分析集羣的運行狀態,監控集羣並及時發佈告警。
● Prometheus 是一個開源的服務監控告警解決方案,同時它自身是一個時間序列數據庫,經過收集集羣的jmx信息並以時序格式存儲起來。
● Grafana是一個開源的數據可視化工具,能夠用作監控來展現時序數據並進行統計,而且帶有告警的功能,它的官網網站和社區提供了許多主流數據庫的Dashboard模板,這些模板都是製做好的一些經常使用的監控指標,初次使用能夠先直接引用。
● 下圖展現了這個監控系統的結構java

1、搭建準備

● 須要準備以下軟件mysql

● HBase集羣準備linux

此次的監控搭建,由於只做爲展現用途,因此HBase使用僞分佈式搭建方式在同一個虛擬機上部署了1個Master和2個Region Server,爲保證在同一個虛擬機中端口不衝突,兩個RS進程的對外端口都設置成不同。web

2、進程安裝

1. prometheus的安裝

下載prometheus,https://prometheus.io/download/,得到prometheus-2.25.2.linux-amd64.tar.gzsql

在虛擬機上解壓後,進入prometheus目錄,配置使用默認。數據庫

啓動:json

  • 直接啓動:./prometheus --config.file=prometheus.yml
  • 後臺啓動:nohup ./prometheus --config.file=prometheus.yml > prometheus.log 2>&1 &

啓動後,能夠訪問http://localhost:9090/graph, 進入prometheus的UI頁面,能夠看到它的一些信息。segmentfault

進程關閉方法:服務器

​ 第一種,找到進程號, 執行 kill -TERM <PID>

​ 第二種,curl -X POST http://localhost:9090/-/quit , 具體地址根據實際

2. mysql的準備

Grafana須要用一個數據庫,本文使用MySQL做爲數據庫,這裏的安裝就不介紹了,能夠在網上搜索相關的安裝指導,或者使用已有的數據庫。

須要爲Grafana建立一個庫

CREATE DATABASE grafana DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

3. Grafana的安裝

下載Grafana,https://grafana.com/grafana/d...,得到grafana-7.1.5.linux-amd64.tar.gz

在虛擬機上解壓後,進入grafana/conf目錄,新建文件custom.ini,該配置文件配置了依賴的database和grafana文件,日誌等路徑。 下面做爲參考,實際路徑根據本身的環境來配置

[paths]
data = /opt/kernel/grafana-7.1.5/data
temp_data_lifetime = 24h
logs = /opt/kernel/grafana-7.1.5/logs
plugins = /opt/kernel/grafana-7.1.5/plugins
provisioning = conf/provisioning

[database]
type = mysql
host = localhost:3306
name = grafana
user = root
password = 123456
url = mysql://root:123456@localhost:3306/grafana

啓動:

  • ​ 進入grafana/bin目錄
  • ​ 直接啓動:./grafana-server
  • ​ 後臺啓動: nohup ./grafana-server >/dev/null 2>&1 &

初次啓動時,會自動去數據庫建立grafana相關的表。啓動完成後訪問http://localhost:3000,端口是3000,默認的帳號密碼是:admin/admin

4. JMX exporter的安裝

(1)下載jmx_prometheus_javaagent-0.15.0.jar,https://mvnrepository.com/art...

將jmx_prometheus_javaagent-0.15.0.jar放入HBase的進程啓動的lib目錄下

(2)設置HBase的進程啓動參數,這裏是爲了加上JMX exporter的agent,須要全部實例的conf/hbase-env.sh中設置,因爲是僞分佈式部署,全部進程都在一臺服務器上,因此其中的一些端口號都設置爲了避免同樣,若是是分佈式部署,端口號能夠設置固定。

export HBASE_JMX_BASE="-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

其中HMaster的conf/hbase-env.sh中設置

export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=20101 -javaagent:$HBASE_HOME/lib/jmx_prometheus_javaagent-0.15.0.jar=27000:$HBASE_HOME/conf/hbase_jmx_config.yaml"

在RegionServer1的conf/hbase-env.sh中設置

export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=20102 -javaagent:$HBASE_HOME/lib/jmx_prometheus_javaagent-0.15.0.jar=27001:$HBASE_HOME/conf/hbase_jmx_config.yaml"

在RegionServer2的conf/hbase-env.sh中設置

export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=20103 -javaagent:$HBASE_HOME/lib/jmx_prometheus_javaagent-0.15.0.jar=27002:$HBASE_HOME/conf/hbase_jmx_config.yaml"

設置完後,Master的jmx agent端口是27000,RS1是27001,RS2的端口是27002

(3)配置hbase_jmx_config.yaml

在hbase/conf目錄下建立hbase_jmx_config.yaml,寫入配置內容,提取指定的jmx指標

---
lowercaseOutputName: true
lowercaseOutputLabelNames: true
rules:

- pattern: Hadoop<service=HBase, name=RegionServer, sub=Regions><>Namespace_([^W_]+)_table_([^W_]+)_region_([^W_]+)_metric_(w+)
  name: HBase_metric_$4
  labels:
    namespace: "$1"
    table: "$2"
    region: "$3"
- pattern: Hadoop<service=(w+), name=(w+), sub=(w+)><>([w._]+)
  name: hadoop_$1_$4
  labels:
    "name": "$2"
    "sub": "$3"
- pattern: .+

(4)啓動HBase進程,啓動後能夠根據jmx agent的IP和端口訪問metrics的url來判斷是否生效,例如curl http://localhost:27000/metrics,

3、配置prometheus和grafana

1. prometheus上配置Job

在prometheus/prometheus.yml中增長一個job,來指定HBase的集羣的JMX exporter, 在scrape_configs下增長以下配置

- job_name: 'dist-hbase'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.

static_configs:
- targets: ['localhost:27000','localhost:27001','localhost:27002']

能夠重啓prometheus生效,也可使用prometheus 的reload功能來激活

方法1:send SIGHUP signal

kill -HUP <pid>

方法2:send a HTTP POST to the Prometheus web server

用這種方式須要開啓web.enable-lifecycle配置參數
/prometheus --config.file=prometheus.yml --web.enable-lifecycle
發送reload命令來加載
curl -X POST http://localhost:9090/-/reload

生效後,經過查看prometheus UI上的target能夠確認是否有收集成功,State爲UP即爲成功

2. grafana上配置datasource

進入grafana的UI,點擊Configuration->DataSource->Add data source,添加Prometheus

配置Prometheus的地址,保存

3. Grafana上配置Dashboard

下載模板,https://grafana.com/grafana/d...,獲得"hbase-1-x_rev1.json"文件

點擊Dashboards-Manage->Import,導入下載的"hbase-1-x_rev1.json"文件內容

在後一個選項中,輸入新建儀表盤的名字,以及選擇數據來源Prometheus,導入後監控儀表盤就生成了

儀表盤展現

本文參考資料:
https://godatadriven.com/blog...
https://www.cnblogs.com/caowe...
https://www.cnblogs.com/caowe...
https://www.cnblogs.com/caowe...

點擊關注,第一時間瞭解華爲雲新鮮技術~

相關文章
相關標籤/搜索