Prometheus + Grafana(十一)系統監控之HBase


 

前言

HBase Metrics是一種監控信息實時收集機制。它負責收集的信息有:

  • 功能性信息(Compaction Queue、Store Files個數等)
  • JVM使用信息 (Heap Memory 的變化)
  • rpc訪問信息

HMaster地址:
  http://master_host:60010/jmx\color{green}{http://master\_host:60010/jmx}http://master_host:60010/jmx
RegionServer地址:
  http://region_host:60030/jmx\color{green}{http://region\_host:60030/jmx}http://region_host:60030/jmx

通過prometheus提供的jmx_prometheus_javaagent*.jar可以捕獲hmaster與regionserver的jmx輸出數據,等待prometheus server來pull。

過程涉及到2個地方的更改:

  • 客戶端(hbase)需要添加jmx export功能
  • 服務端(prometheus)添加pull 的地址

 

配置JavaAgent

注:Hbase集群下的所有節點都要進行如下配置

  • 上傳解壓

上傳jmx_prometheus_javaagent-0.12.0.jar安裝包到hbase集群$HBASE_HOME/lib/目錄下。

下載地址:https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.12.0/jmx_prometheus_javaagent-0.12.0.jar

  • 配置

上傳hbase_jmx_config.yaml到hbase集群 conf/ 目錄下

hbase_jmx_config.yaml內容:

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: HBase_$2_$3_$4
  - pattern: Hadoop<service=(\w+), name=(\w+)><>(\w+)
    name: HBase_$2_$3    

修改hbase配置文件  conf/hbase-env.sh

1. Master節點修改:

export HBASE_JMX_BASE="-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10101 -javaagent:$HBASE_HOME/lib/jmx_prometheus_javaagent-0.12.0.jar=17000:$HBASE_HOME/conf/hbase_jmx_config.yaml"
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10102 -javaagent:$HBASE_HOME/lib/jmx_prometheus_javaagent-0.12.0.jar=17001:$HBASE_HOME/conf/hbase_jmx_config.yaml"

2. 其它節點修改:

HBASE_OPTS="$HBASE_OPTS -javaagent:$HBASE_HOME/lib/jmx_prometheus_javaagent-0.12.0.jar=17002:$HBASE_HOME/conf/hbase_jmx_config.yaml"

3. 集群中每個節點的javaagent的端口不要重復

  • 啟動

重啟hbase 集群,啟動成功后,可以訪問 http://10.0.101.100:17000/metrics/ ,(IP和端口要改成相應環境的)

看抓取的信息如下:

 

 

補充:在偽分布式模式下公開指標
如果每個HBase JVM在不同的主機上運行,則將javaagent附加到固定端口將起作用。 這在偽分布式模式下失敗,因為在啟動第一個HBase JVM之后才使用該端口。

為了解決這個問題,我在bin / hbase中添加了以下內容。 hbase-env.sh在啟動時僅提供一次資源,因此我在啟動JVM之前在bin / hbase中執行了此腳本。 它檢查7000-7010范圍內的第一個可用端口。

if [[ $1 == "start" ]]; then
if [ "$COMMAND" = "master" ] || [ "$COMMAND" = "regionserver" ]; then
  for port in {7000..7010}; do
    if [ `ss -ltpn|grep ":$port" | wc -l` == "1" ]; then
      echo "Checking port $port - port $port in use"
    else
      echo "Checking port $port - port $port not in use - using port $port"
      HBASE_OPTS="$HBASE_OPTS -javaagent:$HBASE_HOME/conf/jmx_prometheus_javaagent-0.1.0.jar=$port:$HBASE_HOME/conf/hbase_exporter.yml"
      break
    fi
  done
fi
fi

port從7000到7010,有可能是master, 也有可能是region server 正常啟動訪問:7000/metrics得到監控數據

 

Prometheus配置

  • 配置

修改prometheus組件的prometheus.yml加入hbase監控:

vi /usr/local/prometheus-2.15.1/prometheus.yml

 

  • 啟動驗證

先kill掉Prometheus進程,用以下命令重啟它,然后查看targets:

cd /usr/local/prometheus-2.15.1
nohup ./prometheus --config.file=prometheus.yml &

注:State=UP,說明成功

 

Grafana配置

  • 導入儀表盤模板

導入附件提供的模板文件(HBase-dashboard.json)

 

  • 預警指標

序號

預警名稱

預警規則

描述

1

節點數預警

當集群中的節點數達到閾值【<3】時進行預警

 

2

死亡節點預警

當集群中的死亡節點數達到閾值【>0】時進行預警

 

3

Gc 耗時預警

當出現Gc耗時達到閾值【>0.3s】時進行預警

 

4

Gc次數預警

當每秒Gc次數達到閾值【>5】時進行預警

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM