1.组件说明

prometheus  (指标采集的主要组件)

node-exporter  (部署在各需要监控的主机节点上,用来采集主机信息)

jmx_prometheus_javaagent-0.17.2.jar (非必须 保存在hadoop各节点上,用来采集hadoop集群及yarn集群信息)

以上安装包目前保存在 10.32.123.20 机器 /opt/installpackage目录下,目前仅支持X86系统。

2.部署说明

2.1 prometheus 安装 

  1. 获取安装包 prometheus.tar 
  2. 解压安装包:tar -xvf prometheus.tar -C 自定义路径。
  3. 先不要执行start.sh待其他组件安装完成后修改配置执行,见第三章。

2.2 node-exporter安装 

  1. 获取安装包 node-exporter.tar   
  2. 解压安装包:tar -xvf node-exporter.tar  -C 自定义路径。
  3. 启动node-exporter sh start.sh,默认端口9100,如果有冲突可以在start.sh中修改。
  4. 在对应的主机下访问 http://ip:port/metrics地址,如果返回数据则视为成功。

2.3 hadoop指标采集组件配置(可选)

  1. 获取安装包 metrics.tar  
  2. 解压安装包:tar -xvf metrics.tar -C  /opt/ (可以自定义路径,但需要注意后续会用到这个路径,另外其中的四个yaml文件是空文件,不需要管)。
  3. cd $HADOOP_HOME/etc/hadoop 修改 hadoop-env.sh文件,在文件结尾追加以下参数:
    export HADOOP_NAMENODE_OPTS="-Dhadoop.security.logger=INFO,RFAS -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.port=11001 -javaagent:/opt/metrics/jmx_prometheus_javaagent-0.17.2.jar=27001:/opt/metrics/namenode.yaml"
    export HADOOP_DATANODE_OPTS="-Dhadoop.security.logger=INFO,RFAS -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.port=11002 -javaagent:/opt/metrics/jmx_prometheus_javaagent-0.17.2.jar=27002:/opt/metrics/datanode.yaml"
  4. 需要注意修改的参数:
    -Dcom.sun.management.jmxremote.port 保证该端口本机不重复,且两条数据不重复。
    -javaagent:/opt/metrics/jmx_prometheus_javaagent-0.17.2.jar=27002:/opt/metrics/datanode.yaml  保证端口不重复,且两条数据不重复,文件路径为上面解压的路径。

2.4 yarn指标采集组件配置(可选)

  1. cd $HADOOP_HOME/bin  修改yarn文件,在function hadoop_usage配置之前添加以下参数:
    export YARN_RESOURCEMANAGER_OPTS="-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.port=11003 -javaagent:/opt/metrics/jmx_prometheus_javaagent-0.17.2.jar=27003:/opt/metrics/resourcemanager.yaml $YARN_RESOURCEMANAGER_OPTS"
    export YARN_NODEMANAGER_OPTS="-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.port=11004 -javaagent:/opt/metrics/jmx_prometheus_javaagent-0.17.2.jar=27004:/opt/metrics/nodemanager.yaml $YARN_NODEMANAGER_OPTS"
  2. 需要注意修改的参数
    -Dcom.sun.management.jmxremote.port 保证该端口本机不重复,且两条数据不重复
    -javaagent:/opt/metrics/jmx_prometheus_javaagent-0.17.2.jar=27003:/opt/metrics/resourcemanager.yaml 保证端口不重复,且两条数据不重复,文件路径为上面解压的路径

2.5 重启hadoop集群(可选)

  1. cd $HADOOP_HOME/sbin  
  2. sh stop-all.sh
  3. sh start-all.sh

2.6 在每台集群机器上查看采集信息运行情况(可选)

  1. netstat -an | grep 27001  
  2. netstat -an | grep 27002
  3. netstat -an | grep 27003
  4. netstat -an | grep 27004
  5. 以上端口并不会在所有机器上都运行,这个是根据hadoop集群策略有关的,这四个端口分别对应 namenode、datanode、resourcemanager、nodemanager。

2.7 修改prometheus配置文件

  1. 修改prometheus安装目录volume目录下,修改prometheus.yml ,如果上面没有配置27001~27004端口,则下面的配置中也不需要配置对应的job
  2. 示例如下:   - job_name: 'hadoop-node-cluster'   (可以自定义名称,下面的job_name都一样 可以自定义名称,这个名称会在prometheus控制台中显示)
        static_configs:
          - targets: ['10.32.123.20:9100','10.32.123.21:9100','10.32.123.22:9100']       (2.2中配置的地址信息)
      - job_name: 'hadoop-namenode' 
        static_configs:
          - targets: ['10.32.123.20:27001','10.32.123.21:27001']                                  (2.6中27001监听中的地址)
      - job_name: 'hadoop-datanode'
        static_configs:
          - targets: ['10.32.123.20:27002','10.32.123.21:27002','10.32.123.22:27002'] (2.6中27002监听中的地址)
      - job_name: 'hadoop-resourcemanager'
        static_configs:
          - targets: ['10.32.123.20:27003']                                                                    (2.6中27003监听中的地址)
      - job_name: 'hadoop-nodemanager'
        static_configs:
          - targets: ['10.32.123.20:27004','10.32.123.21:27004','10.32.123.22:27004']  (2.6中27004监听中的地址)
  3. 启动proemtheus:sh start.sh
  4. 在服务器上查看Prometheus页面,访问http://ip:port/targets,端口默认9090,示例页面如下:

hadoop下的workers hadoop exporter_jar

3.部分PromQL示例

Prometheus可以通过执行promQL查询指标信息,可以在页面http://ip:port/graph,或者通过rest api接口http://ip:port/query?query=$PromQL查询

示例语句如下:

功能

PromQL语句

备注

获取机器主机信息

node_uname_info

获取主机CPU个数

count(node_cpu_seconds_total{mode='system'})by(instance)

CPU使用率

1 - avg(irate(node_cpu_seconds_total{mode="idle"}[%s]))by(instance)

%s代表间隔时间,例如5m

获取机器内存信息

sum(node_memory_MemTotal_bytes)by(instance)

获取机器可用内存信息

node_memory_MemAvailable_bytes

主机磁盘大小

sum(node_filesystem_size_bytes{fstype=~"ext.*|xfs",mountpoint !~".*pod.*"}-0)by(instance)

主机磁盘可用空间大小

sum(node_filesystem_avail_bytes {fstype=~"ext.*|xfs",mountpoint !~".*pod.*"}-0)by(instance)

更多语句大家可以自己去了解!