zoukankan      html  css  js  c++  java
  • Prometheus + Grafana(十一)系统监控之HBase

    前言

    HBase Metrics是一种监控信息实时收集机制。它负责收集的信息有:

    • 功能性信息(Compaction Queue、Store Files个数等)
    • JVM使用信息 (Heap Memory 的变化)
    • rpc访问信息

    HMaster地址:
      http://master_host:60010/jmxcolor{green}{http://master\_host:60010/jmx}http://master_host:60010/jmx
    RegionServer地址:
      http://region_host:60030/jmxcolor{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】时进行预警

  • 相关阅读:
    4 决策树
    Seaborn中几种作图方式的比较
    centso7设置防火墙
    让普通用户拥有
    TensorFlow 训练只用cpu
    loss训练技巧
    Ubuntu 16.04安装sublime text3
    GPU运行Tensorflow的几点建议
    挂载共享文件夹
    ubuntu 用管理员身份进入系统
  • 原文地址:https://www.cnblogs.com/caoweixiong/p/12736710.html
Copyright © 2011-2022 走看看