摘要:Grafana+Prometheus是目前很是流行的監控方案,圖形化展現很是強大。
本文分享自華爲雲社區《Prometheus+Grafana搭建HBase監控儀表盤》,原文做者:Lettle whale。html
● HBase是一個分佈式的、面向列的開源數據庫,開源版本默認提供了展現集羣信息的UI,能夠顯示集羣的實時信息,包括jmx,可是維護HBase只靠實時信息還不夠,咱們還須要將實時信息彙總起來變成監控圖表,這樣才能分析集羣的運行狀態,監控集羣並及時發佈告警。
● Prometheus 是一個開源的服務監控告警解決方案,同時它自身是一個時間序列數據庫,經過收集集羣的jmx信息並以時序格式存儲起來。
● Grafana是一個開源的數據可視化工具,能夠用作監控來展現時序數據並進行統計,而且帶有告警的功能,它的官網網站和社區提供了許多主流數據庫的Dashboard模板,這些模板都是製做好的一些經常使用的監控指標,初次使用能夠先直接引用。
● 下圖展現了這個監控系統的結構java
● 須要準備以下軟件mysql
● HBase集羣準備linux
此次的監控搭建,由於只做爲展現用途,因此HBase使用僞分佈式搭建方式在同一個虛擬機上部署了1個Master和2個Region Server,爲保證在同一個虛擬機中端口不衝突,兩個RS進程的對外端口都設置成不同。web
下載prometheus,https://prometheus.io/download/,得到prometheus-2.25.2.linux-amd64.tar.gzsql
在虛擬機上解壓後,進入prometheus目錄,配置使用默認。數據庫
啓動:json
啓動後,能夠訪問http://localhost:9090/graph, 進入prometheus的UI頁面,能夠看到它的一些信息。segmentfault
進程關閉方法:服務器
第一種,找到進程號, 執行 kill -TERM <PID>
第二種,curl -X POST http://localhost:9090/-/quit , 具體地址根據實際
Grafana須要用一個數據庫,本文使用MySQL做爲數據庫,這裏的安裝就不介紹了,能夠在網上搜索相關的安裝指導,或者使用已有的數據庫。
須要爲Grafana建立一個庫
CREATE DATABASE grafana DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
下載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相關的表。啓動完成後訪問http://localhost:3000,端口是3000,默認的帳號密碼是:admin/admin
(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,
在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即爲成功
進入grafana的UI,點擊Configuration->DataSource->Add data source,添加Prometheus
配置Prometheus的地址,保存
下載模板,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...