【Hive实战】HiveMetaStore的指标采集告警

HiveMetaStore的指标采集告警

文章目录

  • HiveMetaStore的指标采集告警
    • 背景
      • 部署概要图
    • 开启HiveMetaStore的JMX指标采集(Hadoop2指标系统)
    • 指标监控
      • 查询指标
      • 核心指标选择
      • 告警
    • 遗留问题

背景

在远程模式的Metastore下,对其开启Hadoop2指标采集以及JMX的对外接口。通过单独的程序请求JMX,获取hive的基础指标信息。对核心指标进行阈值告警。

部署概要图

JVM2
JVM1
HiveServer2服务组
Metastore
Metastore
HiveServer2
HiveServer2
Mysql服务组
client

开启HiveMetaStore的JMX指标采集(Hadoop2指标系统)

  1. hive-site.xml 变更配置

    <!--开启metastore的指标子服务-->
    <property><name>hive.metastore.metrics.enabled</name><value>true</value>
    </property><!--指标的输出类型-->
    <property><name>hive.service.metrics.reporter</name><value>JMX,HADOOP2</value>
    </property><!--指标输出Hadoop2指标系统的名称-->
    <property><name>hive.service.metrics.hadoop2.component</name><value>hivemetastore</value>
    </property><!--指标输出Hadoop2指标系统的周期-->
    <property><name>hive.service.metrics.hadoop2.frequency</name><value>30s</value>
    </property>
    
  2. 修改~/hive/bin/hive文件

    for j in $SERVICE_LIST ; doif [ "$j" = "$SERVICE" ] ; then## >>>>>> 增加的部分-开始 >>>>>> if [ "$SERVICE" = "hiveserver2" ] ; thenexport HADOOP_CLIENT_OPTS="$HADOOP_CLIENT_OPTS -XX:NewSize=1024m -XX:MaxNewSize=1024m -Xms5120m -Xmx5120m -XX:PermSize=100m"elif [ "$SERVICE" = "metastore" ] ; thenexport HADOOP_CLIENT_OPTS="$HADOOP_CLIENT_OPTS -XX:+PrintCommandLineFlags -XX:NewSize=2g -XX:MaxNewSize=2g -Xms4g -Xmx4g -XX:PermSize=128m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -verbose:gc -XX:+PrintGCDetails -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+PrintPromotionFailure -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=2 -XX:GCLogFileSize=512M -Xloggc:/opt/hive/logs/gc-metastore.log -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=9082"fi
    ## <<<<<< 增加的部分-结束 <<<<<<  TORUN=${j}$HELPfi
    done
    

    jmxremote的端口不能被其他服务占用。

    netstat -tuln | grep 9082
    
  3. 修改/hadoop-2.9.1.1/etc/hadoop/hadoop-env.sh

    export HADOOP_CLIENT_OPTS="-Djava.library.path=$HADOOP_COMMON_LIB_NATIVE_DIR $HADOOP_CLIENT_OPTS"
    
  4. 启动

    进入到hive目录后

    nohup hive --service metastore >>/opt/hive/logs/metastore.log 2>&1 &
    

指标监控

在华佗web中增加针对HiveMetaStore的监控任务,对每一台HiveMetaStore的指标进行采集与告警。

JVM2
JVM1
Web
告警
Metastore
Metastore
MetastoreMetricsMonitor
告警服务号

查询指标

import javax.management.*;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;public class HiveMetaStoreMetric {public static void main(String[] args) throws IOException, MalformedObjectNameException, ReflectionException, InstanceNotFoundException, IntrospectionException, AttributeNotFoundException, MBeanException {// MetaStore的JMX连接地址JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://192.168.1.1:9082/jmxrmi");JMXConnector jmxc = JMXConnectorFactory.connect(url, null);MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();// 查询Hadoop2指标下的hivemetastoreObjectName query = new ObjectName("Hadoop:service=hivemetastore,name=hivemetastore");MBeanInfo minfo = mbsc.getMBeanInfo(query);MBeanAttributeInfo[] beanAttributeInfos = minfo.getAttributes();// 遍历指标Object value;for (MBeanAttributeInfo attributeInfo : beanAttributeInfos) {value = mbsc.getAttribute(query, attributeInfo.getName());// 不同指标项的值属性不同if (value instanceof Long) {Long l = (Long) value;System.out.println(attributeInfo.getName() + " " + value);} else if (value instanceof Double) {Double d = (Double) value;BigDecimal bg = new BigDecimal(d);double f1 = bg.setScale(2, RoundingMode.HALF_UP).doubleValue();System.out.println(attributeInfo.getName() + " " + f1);} else if (value instanceof Integer) {Integer i = (Integer) value;System.out.println(attributeInfo.getName() + " " + value);} else {System.out.println(attributeInfo.getName() + " " + value);}}// 关闭连接jmxc.close();}
}

结果示例

tag.rate_unit events/second
tag.duration_unit milliseconds
tag.Hostname bdsitapp255
buffers.direct.capacity 0
buffers.direct.count 0
buffers.direct.used 0
buffers.mapped.capacity 0
buffers.mapped.count 0
buffers.mapped.used 0
classLoading.loaded 7219
classLoading.unloaded 0
gc.ConcurrentMarkSweep.count 1
gc.ConcurrentMarkSweep.time 146
gc.ParNew.count 75
gc.ParNew.time 1065
init_total_count_dbs 489
init_total_count_partitions 51089
init_total_count_tables 13733
memory.heap.committed 4080271360
memory.heap.init 4294967296
memory.heap.max 4080271360
memory.heap.usage 0.06
memory.heap.used 236619048
memory.non-heap.committed 79024128
memory.non-heap.init 2555904
memory.non-heap.max -1
memory.non-heap.usage -7.7437264E7
memory.non-heap.used 77437264
memory.pools.CMS-Old-Gen.usage 0.01
memory.pools.Code-Cache.usage 0.09
memory.pools.Compressed-Class-Space.usage 0.0
memory.pools.Metaspace.usage 0.98
memory.pools.Par-Eden-Space.usage 0.13
memory.pools.Par-Survivor-Space.usage 0.01
memory.total.committed 4159295488
memory.total.init 4297523200
memory.total.max 4080271359
memory.total.used 314056312
threads.blocked.count 0
threads.count 223
threads.daemon.count 22
threads.deadlock.count 0
threads.new.count 0
threads.runnable.count 8
threads.terminated.count 0
threads.timed_waiting.count 9
threads.waiting.count 206
active_calls_api_get_database 0
active_calls_api_get_tables 0
active_calls_api_init 0
active_calls_api_set_ugi 0
jvm.pause.extraSleepTime 240
open_connections 1
api_get_database_count 10446
api_get_database_mean_rate 0.02
api_get_database_1min_rate 0.01
api_get_database_5min_rate 0.02
api_get_database_15min_rate 0.02
api_get_database_mean 9.24
api_get_database_min 8.45
api_get_database_max 13.3
api_get_database_median 9.23
api_get_database_stddev 0.63
api_get_database_75thpercentile 9.95
api_get_database_95thpercentile 10.1
api_get_database_98thpercentile 10.1
api_get_database_99thpercentile 10.1
api_get_database_999thpercentile 10.1
api_get_tables_count 3482
api_get_tables_mean_rate 0.01
api_get_tables_1min_rate 0.0
api_get_tables_5min_rate 0.01
api_get_tables_15min_rate 0.01
api_get_tables_mean 7.76
api_get_tables_min 7.31
api_get_tables_max 9.18
api_get_tables_median 7.79
api_get_tables_stddev 0.04
api_get_tables_75thpercentile 7.79
api_get_tables_95thpercentile 7.79
api_get_tables_98thpercentile 7.79
api_get_tables_99thpercentile 7.89
api_get_tables_999thpercentile 8.0
api_init_count 1
api_init_mean_rate 0.0
api_init_1min_rate 0.0
api_init_5min_rate 0.0
api_init_15min_rate 0.0
api_init_mean 3519.03
api_init_min 3519.03
api_init_max 3519.03
api_init_median 3519.03
api_init_stddev 0.0
api_init_75thpercentile 3519.03
api_init_95thpercentile 3519.03
api_init_98thpercentile 3519.03
api_init_99thpercentile 3519.03
api_init_999thpercentile 3519.03
api_set_ugi_count 1
api_set_ugi_mean_rate 0.0
api_set_ugi_1min_rate 0.0
api_set_ugi_5min_rate 0.0
api_set_ugi_15min_rate 0.0
api_set_ugi_mean 0.26
api_set_ugi_min 0.26
api_set_ugi_max 0.26
api_set_ugi_median 0.26
api_set_ugi_stddev 0.0
api_set_ugi_75thpercentile 0.26
api_set_ugi_95thpercentile 0.26
api_set_ugi_98thpercentile 0.26
api_set_ugi_99thpercentile 0.26
api_set_ugi_999thpercentile 0.26

核心指标选择

  • gc.ParNew.count :新生代发生GC的次数,算平均GC耗时
  • gc.ParNew.time :新生代发生GC的总耗时,单位ms,算平均GC耗时
  • memory.heap.usage:堆内存使用占比
  • open_connections:当前打开的连接数
  • active_calls_api_create_table:当前创建表的请求数
  • active_calls_api_drop_table:当前删除表的请求数
  • active_calls_api_alter_table:当前变更表的请求数
  • api_get_tables_mean:get_tables的平均请求时间,ms
  • api_get_database_mean:get_database的平均请求时间,ms
  • api_get_table_mean:get_table的平均请求时间,ms
  • api_get_databases_mean:get_databases的平均请求时间,ms
  • api_get_multi_table_mean:get multi table的平均请求时间,ms

告警

可以针对以上指标在SCM上配置告警阈值,控制指标异常告警。

告警时间:2024-04-20 20:40:00
级别:严重
环境:PRD
事件标识:HiveMetaStore-Metris-open_connections-192.168.1.1
告警内容:[2024-04-20 20:49:10] HiveMetaStore节点(192.168.1.1)指标open_connections(1000)异常。[2024-04-20 20:39:10] HiveMetaStore节点(192.168.1.1)指标open_connections(1002)异常。
事件数量:2

遗留问题

  1. 实际PRD的指标项会比示例中的指标项多,全部的指标数据是否需要存储?如果要存储,则存储介质选择什么?

    先临时计算指标报文的大小,直接输出在日志文件中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/41255.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单配置VScode轻量级C++竞赛环境

1. 安装拓展 Chinese是中文&#xff0c;需要重启才可以运行&#xff0c;C/C拓展只是进行语法代码提示&#xff0c;不需要进行任何配置修改&#xff0c;默认即可。 2. 创建文件 如上图创建好各级文件夹&#xff0c;其中C是工作文件夹&#xff0c;.vscode是配置文件夹&#xff0…

【网络安全】Host碰撞漏洞原理+工具+脚本

文章目录 漏洞原理虚拟主机配置Host头部字段Host碰撞漏洞漏洞场景工具漏洞原理 Host 碰撞漏洞,也称为主机名冲突漏洞,是一种网络攻击手段。常见危害有:绕过访问控制,通过公网访问一些未经授权的资源等。 虚拟主机配置 在Web服务器(如Nginx或Apache)上,多个网站可以共…

学习测试2-方法

设计测试用例 设计测试用例的万能公式 (在没有需求文档的情况下&#xff09; 软件质量模型 效率就是性能 兼容性测试 浏览器 谷歌 IE 火狐 苹果 百度 Windows7 10 11 苹果系统 app 不同品牌 小米 vivo 华为 苹果 不同的操作系统 安卓 鸿蒙 苹果 -----------------------…

TikTok马来西亚直播网络怎么配置?

TikTok是一款全球流行的社交媒体应用&#xff0c;在东南亚地区拥有大量用户。在马来西亚这个多元化的国家&#xff0c;配置高效稳定的直播网络对TikTok的运营至关重要。 配置马来西亚直播网络的必要性 广泛的地理覆盖&#xff1a;马来西亚包括大片陆地和众多岛屿&#xff0c;网…

OpenSSH远程代码执行漏洞(CVE-2024-6387)

OpenSSH远程代码执行漏洞(CVE-2024-6387) 漏洞简介及影响范围 OpenSSH 远程代码执行漏洞&#xff08;CVE-2024-6387&#xff09;是影响 OpenSSH 服务器的一个高危安全漏洞&#xff0c;允许未经身份验证的远程攻击者在受影响的 Linux 系统上以 root 身份执行任意代码。这个严重…

性能压测 -优化 Nginx的动静分离

两件事情 1.以后将所有的项目的静态资源都应该放在nginx里面 2.nginx 规则&#xff1a;/static/***所有请求都有nginx直接返回 nginx 配置一下配置文件&#xff0c;然后把html 的静态资源&#xff0c;绑定好是Nginx优先级高的静态资源路径&#xff0c;就去交给nginx静态资源…

使用openssl生成公私钥并进行RSA加密

生成私钥 openssl genrsa -out private.pem 1024通过私钥生成公钥 openssl rsa -in private.pem -pubout -out public.pem通过公钥加密数据 openssl pkeyutl -encrypt -in data.txt -inkey public.pem -pubin -out encData.txtdata.txt &#xff1a;为我们要加密的数据enc…

skimage.io与matplotlib.image.imread读取图片的区别

以前没用过matplotlib的读图方式&#xff0c;今天在别人的工程里看到这个用法&#xff0c;自己改写别人工程时&#xff0c;怎么都找不到问题&#xff0c;最后在最初&#xff0c;开始读图的时候发现了问题。 目录 &#x1f337;&#x1f337;1.对于png格式的3波段uint8图像 &a…

Prometheus + Grafana 监控系统搭建使用指南-Nacos 接入 Prometheus 监控

Nacos 接入 Prometheus 监控 系列文章目录 Prometheus 的安装部署Grafana的安装部署Linux服务器接入Prometheus监控-Node Exporter 安装指南Prometheus 接入SpringBoot微服务监控Mysql 接入 Prometheus RocketMQ 接入Prometheus 监控ElasticSearch 接入 PrometheusNacos 接入…

在Android运行时切换Retrofit Base URL:简化开发环境与生产环境的切换

在运行时切换Retrofit Base URL:简化开发环境与生产环境的切换 在Android开发中,Retrofit是一个由Square开发的类型安全的HTTP客户端库。它为API认证和网络请求提供了一个强大的框架。然而,在开发过程中,我们常常需要在不同的环境(如开发环境和生产环境)之间切换Base UR…

解决刚申请下来的AWS EC2,无法用finalshell连接的问题

在AWS的命令页面创建一个root用户 切换到root 模式,输入密码 su root 不知道密码的可以使用一下命令来设置root用户的密码&#xff1a; su passwd root 再切换到root用户 su 修改配置文件 输入 vim /etc/ssh/sshd_config进入文件&#xff0c;键入’i’ &#xff0c;进行…

YOLOv8改进 添加CVPR2024 PKINet中注意力机制CAAttention

一、PKINet论文 论文地址:2403.06258 (arxiv.org) 二、CAAttention结构 CAA(Context Anchor Attention)注意力模块是一种用于捕捉长距离上下文信息的并行模块。 在计算机视觉领域中,上下文信息是指与目标物体或任务相关的周围环境和语境信息。上下文信息可以帮助我们更好…

【码银送书第二十二期】《Python数据分析从入门到精通(第2版)》

&#x1f490;大家好&#xff01;我是码银~&#xff0c;欢迎关注&#x1f490;&#xff1a; CSDN&#xff1a;码银 公众号&#xff1a;码银学编程 前言 &#x1f340;丛书说明&#xff1a;“软件开发视频大讲堂‘’丛书第1版于2008年8月出版&#xff0c;因其编写细腻、易学实用…

MySql主从同步延迟怎么办?

文章目录 什么是MySQL主从架构主从架构的组成工作原理主从复制的步骤主从架构的优点主从架构的缺点 什么是主从同步延迟为什么会导致主从延迟主从延时的排查和解决如果发现主从数据不一致怎么办&#xff1f; 我们常说的业务量越来越大&#xff0c;I/O访问频率过高&#xff0c;单…

中软国际加入龙蜥社区,促进“技术+生态”双向赋能

近日&#xff0c;中软国际有限公司&#xff08;简称“中软国际”&#xff09;签署了 CLA&#xff08;Contributor License Agreement&#xff0c;贡献者许可协议&#xff09;&#xff0c;正式加入龙蜥社区&#xff08;OpenAnolis&#xff09;。 中软国际创立于 2000 年&#x…

两工种入选!广东省产教评技能生态链企业自主评价评价机构名单和可评价职业

7月4日&#xff0c;广州市人力资源和社会保障局发布《广东省产教评技能生态链企业自主评价评价机构名单和可评价职业&#xff08;工种&#xff09;范围》广东泰迪智能科技股份有限公司“计算机程序设计员”、“人工智能训练师”入选。 详细职业名称与等级如下&#xff1a; 计算…

小白 | Linux安装java8

一、更新包列表 sudo apt update 二、安装 Java 8 sudo apt install openjdk-8-jdk 安装问题 遇见Unable to locate package openjdk-8-jdk错误 1.添加 PPA 存储库 sudo add-apt-repository ppa:openjdk-r/ppa sudo apt update 2.重新尝试安装 sudo apt install openjdk8-jdk…

Zabbix动作与媒介

目录 前言 1. 动作的基本概念 2. 动作的常见用途 一. 环境准备 二. 创建动作 三. 添加媒介 前言 在 Zabbix 中&#xff0c;动作&#xff08;Actions&#xff09;用于在特定事件发生时执行一系列预定义的操作&#xff0c;比如发送通知、执行脚本等。动作通常与触发器&…

原神4.6单机版【完全无脑搭建】纯单机*稳定版*

版本介绍 版本3.7、4.0、4.0、4.4、4.5、4.6稳定版【过分追新并不稳&#xff0c;合理才完美】 独家原神&#xff0c;游戏内自带剧情任务&#xff0c;完美仿官&#xff0c;一比一完美复制&#xff01; 已经拥有完美剧情、任务、副本、卡池、深渊、全物品、和全部功能和皮肤。 …

使用C++实现求职者和部门之间最大配对

某人力资源公司收到了m个合格的求职者的简历&#xff0c;要将他们分发给n个部门&#xff0c;每份简历符合一个或者几个部门的要求&#xff0c;但是每个人的简历最多送给k个部门&#xff0c;每个部门最多可以接受d份简历&#xff0c;如何实现求职者和部门之间的最大配对。使用了…