【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.pswp.cn/diannao/41255.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41255.shtml
英文地址,請注明出處:http://en.pswp.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;如何實現求職者和部門之間的最大配對。使用了…