服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

统一观测丨使用 Prometheus 监控 E-MapReduce,我们该关注哪些指标?

日期: 来源:阿里巴巴中间件收集编辑:闻洪

开源大数据平台E-MapReduce(简称“EMR”)是云原生开源大数据平台,向客户提供简单易集成的Hadoop、Hive、Spark、Flink、Presto、ClickHouse、StarRocks、Delta、Hudi等开源大数据计算和存储引擎。本文旨在分享阿里云Prometheus对EMR平台大数据服务的监控实践。

EMR 简介







Aliware

开源大数据开发平台E-MapReduce(简称“EMR”)作为大数据处理的系统解决方案被越来越多的企业所接受。而阿里云EMR构建于云服务器ECS上,基于开源的Apache Hadoop和Apache Spark可以方便地使用Hadoop和Spark生态系统中的其他周边系统分析和处理数据,还可以与阿里云OSS和RDS等云数据存储系统和数据库系统进行数据传输,让企业可以快速搭建Hadoop、Spark、Flink、Kafka和HBase等开源大数据服务。

我们可以看到,E-MapReduce的核心是集群。E-MapReduce集群是由一个或多个ECS实例组成的Hadoop、Flink、Druid、ZooKeeper集群。以Hadoop为例,每个ECS 实例上通常都运行了一些daemon进程(例如,NameNode、DataNode、ResouceManager和NodeManager),这些daemon进程共同组成了Hadoop集群。
在众多大数据组件背后,是海量需要被观测的指标,这就给运维工程师、SRE工程师带来了巨大的挑战。那么,构建E-MapReduce之后,我们针对不同组件,应该关注哪些指标呢?

E-MapReduce 观测指标解读







Aliware

Metric指标采集
E-MapReduce指标观测主要包括HOST监控、HDFS 、YARN、Hive、Kafka、Zookeeper、ClickHouse和Flink等,那么接下来我们将进行逐一解读。

HOST指标[1]

提供ECS节点CPU、内存、磁盘、load、网络、socket等监控指标。

HDFS指标[2]

HDFS(Hadoop Distributed File System)是一种Hadoop分布式文件系统,适用于大规模数据的分布式读写,特别是读多写少的场景。HDFS指标包括HOME、NameNodes、DataNodes和JournanlNodes指标。
  • HDFS-HOME
  • HDFS-NameNodes
  • HDFS-DataNodes
  • HDFS-JournanlNodes

YARN指标[3]

YARN是Hadoop系统的核心组件,主要功能包括负责Hadoop集群的资源管理,对作业进行调度运行以及监控。YARN指标包括HOME、Queue、ResourceManager、NodeManager、TimeLineServer和JobHistory。
  • YARN-HOME
  • YARN-Queues
  • YARN-ResourceManager
  • YARN-NodeManagers
  • YARN-TimeLineServer
  • YARN-JobHistory

Hive指标[4]

Hive是一个基于Hadoop的数据仓库框架,在大数据业务场景中,主要用来进行数据提取、转化和加载(ETL)以及元数据管理。Hive由HiveServer2(HiveQL查询服务器)、Hive MetaStore(元数据管理模块)和Hive Client构成,其指标包括HiveMetaStore和HiveServer2。
  • HiveMetaStore
指标
描述
hive_memory_heap_max
JVM最大可用堆内存,单位:Byte。
hive_memory_heap_used
JVM已使用堆内存,单位:Byte。
hive_memory_non_heap_used
JVM已使用堆外内存量,单位:Byte。
hive_active_calls_api_alter_table
当前活跃的alter table请求数。
hive_active_calls_api_create_table
当前活跃的create table请求数。
hive_active_calls_api_drop_table
当前活跃的drop table请求数。
hive_api_alter_table
alter table请求平均时间,单位:ms。
hive_api_alter_table_with_environment_context
alter table with env context请求平均时间,单位:ms。
hive_api_create_table
create table请求平均时间,单位:ms。
hive_api_create_table_with_environment_context
create table with env context请求平均时间,单位:ms。
api_drop_table
drop table请求平均时间,单位:ms。
hive_api_drop_table_with_environment_context
drop table with env context请求平均时间,单位:ms。
hive_api_get_all_databases
get all databases请求平均时间,单位:ms。
hive_api_get_all_functions
get all functions请求平均时间,单位:ms。
hive_api_get_database
get database请求平均时间,单位:ms。
hive_api_get_databases
get databases请求平均时间,单位:ms。
hive_api_get_multi_table
get multi table请求平均时间,单位:ms。
hive_api_get_tables_by_type
get table请求平均时间,单位:ms。
hive_api_get_table_objects_by_name_req
get table objects by name请求平均时间,单位:ms。
hive_api_get_table_req
get table req请求平均时间,单位:ms。
hive_api_get_table_statistics_req
get table statistics请求平均时间,单位:ms。
hive_api_get_tables
get tables请求平均时间,单位:ms。
hive_api_get_tables_by_type
get tables by type请求平均时间,单位:ms。
  • HiveServer2
指标
描述
hive_metrics_hs2_active_sessions
当前活跃的session个数。
hive_metrics_memory_total_init
JVM初始化总内存,单位:Byte。
hive_metrics_memory_total_committed
JVM已预留总内存,单位:Byte。
hive_metrics_memory_total_max
JVM最大可用总内存,单位:Byte。
hive_metrics_memory_heap_committed
JVM已预留堆内存,单位:Byte。
hive_metrics_memory_heap_inithive_metrics_memory_heap_committed
JVM初始化堆内存,单位:Byte。
hive_metrics_memory_non_heap_committed
JVM已预留堆外内存,单位:Byte。
hive_metrics_memory_non_heap_init
JVM初始化堆外内存,单位:Byte。
hive_metrics_memory_non_heap_max
JVM最大可用堆外内存,单位:Byte。
hive_metrics_gc_PS_MarkSweep_count
JVM PS MarkSweep GC次数。
hive_metrics_gc_PS_MarkSweep_time
JVM PS MarkSweep GC时间,单位:ms。
hive_metrics_gc_PS_Scavenge_time
JVM PS Scavenge GC时间,单位:ms。
hive_metrics_threads_daemon_count
JVM daemon线程数。
hive_metrics_threads_count
JVM线程数。
hive_metrics_threads_blocked_count
JVM blocked线程数。
hive_metrics_threads_deadlock_count
JVM deadlock线程数。
hive_metrics_threads_new_count
JVM new状态线程数。
hive_metrics_threads_runnable_count
JVM runnable线程数。
hive_metrics_threads_terminated_count
JVM terminated线程数。
hive_metrics_threads_waiting_count
JVM waiting线程数。
hive_metrics_threads_timed_waiting_count
JVM timed_waiting线程数。
hive_metrics_memory_heap_max
JVM最大可用堆内存,单位:Byte。
hive_metrics_memory_heap_used
JVM已使用堆内存,单位:Byte。
hive_metrics_memory_non_heap_used
JVM已使用堆外内存量,单位:Byte。
hive_metrics_hs2_open_sessions
当前打开的session数。
hive_metrics_hive_mapred_tasks
提交的Hive on MR作业总数。
hive_metrics_hive_tez_tasks
提交的Hive on Tez作业总数。
hive_metrics_cumulative_connection_count
累计连接数。
hive_metrics_active_calls_api_runTasks
当前runtask请求数。
hive_metrics_hs2_completed_sql_operation_FINISHED
已结束的SQL总数。
hive_metrics_hs2_sql_operation_active_user
当前活跃用户数。
hive_metrics_open_connections
当前打开的连接数。
hive_metrics_api_PostHook_com_aliyun_emr_meta_hive_hook_LineageLoggerHook
执行LineageLoggerHook的平均时间,单位:ms。
hive_metrics_api_hs2_sql_operation_PENDING
SQL任务处于PEEDING状态的平均时间,单位:ms。
hive_metrics_api_hs2_sql_operation_RUNNING
运SQL任务处于RUNNING状态的平均时间,单位:ms。
hive_metrics_hs2_submitted_queries
提交查询的平均时间,单位:ms。
hive_metrics_hs2_executing_queries
执行查询的平均时间,单位:ms。
hive_metrics_hs2_succeeded_queries
服务启动后成功的查询数。
hive_metrics_hs2_failed_queries
服务启动后失败的查询数。

ZooKeeper指标[5]

ZooKeeper是一个分布式、高可用性的协调服务。ZooKeeper提供分布式配置服务、同步服务和命名注册等功能。
指标
描述
zk_packets_received
ZooKeeper接收的包的数量。
zk_packets_sent
ZooKeeper发送的包的数量。
zk_avg_latency
ZooKeeper平均请求延迟,单位:ms。
zk_min_latency
ZooKeeper最小请求延迟,单位:ms。
zk_max_latency
ZooKeeper最大请求延迟,单位:ms。
zk_watch_count
ZooKeeper watch的数量。
zk_znode_count
ZooKeeper znode的数量。
zk_num_alive_connections
ZooKeeper存活的连接数。
zk_outstanding_requests
ZooKeeper排队请求的数量。当ZooKeeper超过了它的处理能力时,该值会增大。
zk_approximate_data_size
ZooKeeper的数据大小(近似值),单位:Byte。
zk_open_file_descriptor_count
ZooKeeper打开文件的数量。
zk_max_file_descriptor_count
ZooKeeper最大允许打开的文件数量。
zk_node_status
ZooKeeper节点状态:
  • -1:节点不可用。
  • 0:作为follower节点。
  • 1:作为leader节点。
zk_synced_followers
同步的ZooKeeper服务数量。

Kafka指标[6]

消息队列Kafka版是阿里云提供的分布式、高吞吐、可扩展的消息队列服务。消息队列Kafka版广泛用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等大数据领域,已成为大数据生态中不可或缺的部分。
  • Kafka-HOME
  • Kafka-Broker
    • Status
    • Throughput
    • Performance
    • Storage
    • Request Rate
    • Request Time
    • MessageConversion
    • ZK session
    • JVM
  • Kafka-Topic
    • Status
    • Throughput
    • Request Rate
    • MessageConversion
    • Storage

Impala指标[7]

Impala为存储在Apache Hadoop中的数据提供了高性能和低延迟的SQL查询。
指标
描述
impala_impala_server_resultset_cache_total_bytes
结果集缓存大小,单位:Byte。
impala_num_executing_queries
当前正在执行的查询数量。
impala_num_waiting_queries
当前正在等待的查询数量。
impala_impala_server_query_durations_ms_95th
95%的查询耗时时间,单位:ms。
impala_num_in_flight_queries
集群正在in fight状态的查询数量。
impala_impala_server_query_durations_ms_75th
75%的查询耗时时间,单位:ms。
impala_impala_thrift_server_CatalogService_svc_thread_wait_time_99_9th
Catalog Service的客户端对服务线程的等待时间,单位:ms。
impala_impala_thrift_server_CatalogService_connection_setup_time_99_9th
99%的Catalog Service客户端等待建立连接所花费的时间,单位:ms。
impala_impala_server_query_durations_ms_99_9th
99%的查询耗时时间,单位:ms。
impala_impala_server_ddl_durations_ms_99_9th
99%的DDL操作耗时时间,单位:ms。
impala_impala_server_query_durations_ms_90th
90%的查询耗时时间,单位:ms。
impala_impala_server_ddl_durations_ms_90th
90%的DDL操作耗时时间,单位:ms。
impala_impala_server_query_durations_ms_50th
50%的查询耗时时间,单位:ms。
impala_impala_server_ddl_durations_ms_50th
50%的DDL操作耗时时间,单位:ms。
impala_impala_server_ddl_durations_ms_95th
95%的DDL操作耗时时间,单位:ms。
impala_impala_server_scan_ranges_num_missing_volume_id
在进程生命周期内缺失volume id的scan range总数。
impala_impala_server_ddl_durations_ms_75th
75%的DDL操作耗时时间,单位:ms。
impala_impala_server_num_queries_spilled
任何运算符溢出的查询数。
impala_impala_server_scan_ranges_total
在进程生命周期内读取的扫描范围总数。
impala_impala_server_num_queries_expired
由于不活动而过期的查询数。
impala_impala_server_resultset_cache_total_num_rows
结果集缓存记录数。
impala_impala_server_num_open_hiveserver2_sessions
打开的HiveServer2会话数。
impala_impala_server_num_sessions_expired
由于不活动而过期的会话数。
impala_impala_server_num_fragments_in_flight
当前正在执行的查询片段实例的数量。
impala_impala_server_num_queries_registered
在此Impala服务器实例上注册的查询总数。包括正在进行中并等待关闭的查询。
impala_impala_server_num_files_open_for_insert
当前为写入而打开的HDFS文件数。
impala_impala_server_num_queries
在进程生命周期内处理的查询总数。
impala_impala_server_hedged_read_ops
在进程生命周期内尝试的hedged reads总数。
impala_impala_server_num_open_beeswax_sessions
打开Beeswax会话的数量。
impala_impala_server_backend_num_queries_executed
在进程的生命周期内在此后端执行的查询总数。
impala_impala_server_num_fragments
在进程生命周期内处理的查询片段总数。
impala_rpc_impala_ControlService_rpcs_queue_overflow
ControlService由于服务队列溢出而被拒绝的传入RPC总数。
impala_impala_server_hedged_read_ops_win
Hedged read比常规读取操作快的总次数。
impala_mem_tracker_DataStreamService_current_usage_bytes
Memtracker DataStreamService当前使用的字节数。
impala_impala_server_backend_num_queries_executing
当前在此后端上执行的查询数。
impala_cluster_membership_executor_groups_total_healthy
处于健康状态的执行器组总数。
impala_rpc_impala_DataStreamService_rpcs_queue_overflow
DataStreamService由于服务队列溢出而被拒绝的传入RPC总数。
impala_cluster_membership_backends_total
向statestore注册的后端总数。
impala_mem_tracker_DataStreamService_peak_usage_bytes
Memtracker DataStreamService峰值使用的字节数。
impala_total_senders_blocked_on_recvr_creation
已被阻止等待接收片段初始化的发件人总数。
impala_mem_tracker_ControlService_peak_usage_bytes
Memtracker ControlService峰值使用字节数。
impala_simple_scheduler_local_assignments_total
本地作业数。
impala_mem_tracker_ControlService_current_usage_bytes
Memtracker ControlService当前使用字节数。
impala_memory_total_used
已使用内存,单位:Byte。
impala_cluster_membership_executor_groups_total
至少有一个执行程序的执行程序组总数。
impala_memory_rss
RSS的内存大小,包括TCMalloc、缓冲池和JVM,单位:Byte。
impala_total_senders_timedout_waiting_for_recvr_creation
超时等待接收片段初始化的发送者总数。
impala_senders_blocked_on_recvr_creation
等待接收片段初始化的发送者数量。
impala_simple_scheduler_assignments_total
作业数。
impala_memory_mapped_bytes
进程中内存映射的总字节数(虚拟内存大小),单位:Byte。

HUE指标[8]

指标
描述
hue_requests_response_time_avg
请求响应时间平均值。
hue_requests_response_time_95_percentile
95%的请求响应时间。
hue_requests_response_time_std_dev
请求响应时间标准差。
hue_requests_response_time_median
50%的请求响应时间。
hue_requests_response_time_75_percentile
75%的请求响应时间。
hue_requests_response_time_count
请求响应时间计数。
hue_requests_response_time_5m_rate
最近5分钟的请求响应速率。
hue_requests_response_time_min
请求响应时间最小值。
hue_requests_response_time_sum
请求响应时间总和。
hue_requests_response_time_max
请求响应时间的最大值。
hue_requests_response_time_mean_rate
请求响应速率平均值。
hue_requests_response_time_99_percentile
99%的最近一小时请求响应时间。
hue_requests_response_time_15m_rate
最近15分钟请求响应速率。
hue_requests_response_time_999_percentile
99.9%的请求响应时间。
hue_requests_response_time_1m_rate
最近1分钟的请求响应速率。
hue_users_active_total
活跃用户总数。
hue_users_active
最近1小时的活跃用户数。
hue_users
用户总数。
hue_threads_total
当前线程总数。
hue_threads_daemon
常驻线程数量。
hue_queries_number
查询数量总和。
hue_requests_exceptions
当前异常请求数。
hue_requests_active
当前活跃请求数。

Kudu指标[9]

参数
指标
描述
op_apply_queue_length(99)
kudu_op_apply_queue_length_percentile_99
99%的操作队列的长度。
op_apply_queue_length(75)
kudu_op_apply_queue_length_percentile_75
75%的操作队列的长度。
op_apply_queue_length(mean)
kudu_op_apply_queue_length_mean
操作队列的长度的平均值。
rpc_incoming_queue_time(99)
kudu_rpc_incoming_queue_time_percentile_99
99%的RPC队列的等待时间,单位:μs。
rpc_incoming_queue_time(75)
kudu_rpc_incoming_queue_time_percentile_75
75%的RPC队列的等待时间,单位:μs。
rpc_incoming_queue_time(mean)
kudu_rpc_incoming_queue_time_mean
RPC队列的等待时间的平均值,单位:μs。
reactor_load_percent(99)
kudu_reactor_load_percent_percentile_99
99%的Reactor线程的负载。
reactor_load_percent(75)
kudu_reactor_load_percent_percentile_75
75%的Reactor线程的负载。
reactor_load_percent(mean)
kudu_reactor_load_percent_mean
Reactor线程的负载的平均值。
op_apply_run_time(99)
kudu_op_apply_run_time_percentile_99
99%的操作执行时间,单位:μs。
op_apply_run_time(75)
kudu_op_apply_run_time_percentile_75
75%的操作执行时间,单位:μs。
op_apply_run_time(mean)
kudu_op_apply_run_time_mean
操作执行时间的平均值,单位:μs。
op_prepare_run_time(99)
kudu_op_prepare_run_time_percentile_99
99%的操作准备时间,单位:μs。
op_prepare_run_time(75)
kudu_op_prepare_run_time_percentile_75
75%的操作准备时间,单位:μs。
op_prepare_run_time(mean)
kudu_op_prepare_run_time_mean
操作准备时间的平均值,单位:μs。
flush_mrs_duration(99)
kudu_flush_mrs_duration_percentile_99
99%的MemRowSet flush时间,单位:ms。
flush_mrs_duration(75)
kudu_flush_mrs_duration_percentile_75
75%的MemRowSet flush时间,单位:ms。
flush_mrs_duration(mean)
kudu_flush_mrs_duration_mean
MemRowSet flush时间的平均值,单位:ms。
log_append_latency(99)
kudu_log_append_latency_percentile_99
99%的日志的append时间,单位:μs。
log_append_latency(75)
kudu_log_append_latency_percentile_75
75%的日志的append时间,单位:μs。
log_append_latency(mean)
kudu_log_append_latency_mean
日志的append时间的平均值,单位:μs。
flush_dms_duration(99)
kudu_flush_dms_duration_percentile_99
99%的DeltaMemStore flush时间,单位:ms。
flush_dms_duration(75)
kudu_flush_dms_duration_percentile_75
75%的DeltaMemStore flush时间,单位:ms。
flush_dms_duration(mean)
kudu_flush_dms_duration_mean
DeltaMemStore flush时间的平均值,单位:ms。
op_prepare_queue_length(99)
kudu_op_prepare_queue_length_percentile_99
99%的准备队列的长度。
op_prepare_queue_length(75)
kudu_op_prepare_queue_length_percentile_75
75%的准备队列的长度。
op_prepare_queue_length(mean)
kudu_op_prepare_queue_length_mean
准备队列的长度的平均值。
log_gc_duration(99)
kudu_log_gc_duration_percentile_99
99%的日志GC的时间,单位:ms。
log_gc_duration(75)
kudu_log_gc_duration_percentile_75
75%的日志GC的时间,单位:ms。
log_gc_duration(mean)
kudu_log_gc_duration_mean
日志GC的时间的平均值,单位:ms。
log_sync_latency(99)
kudu_log_sync_latency_percentile_99
99%的日志Sync的时间,单位:μs。
log_sync_latency(75)
kudu_log_sync_latency_percentile_75
75%的日志Sync的时间,单位:μs。
log_sync_latency(mean)
kudu_log_sync_latency_mean
日志Sync的时间的平均值,单位:μs。
prepare_queue_time(99)
kudu_op_prepare_queue_time_percentile_99
99%的操作在准备队列的等待时间,单位:μs。
prepare_queue_time(75)
kudu_op_prepare_queue_time_percentile_75
75%的操作在准备队列的等待时间,单位:μs。
prepare_queue_time(mean)
kudu_op_prepare_queue_time_mean
操作在准备队列的等待时间的平均值,单位:μs。
rpc_connections_accepted
kudu_rpc_connections_accepted
RPC请求接收的数量。
block_cache_usage
kudu_block_cache_usage
Tserver Block缓存的使用量,单位:Byte。
active_scanners
kudu_active_scanners
处于Active状态的Scanner数量。
data_dirs_full
kudu_data_dirs_full
Full状态的数据目录个数。
rpcs_queue_overflow
kudu_rpcs_queue_overflow
RPC队列溢出次数。
cluster_replica_skew
kudu_cluster_replica_skew
服务器上承载的最多的tablet数量与最少的tablet数量的差值。
log_gc_running
kudu_log_gc_running
正在GC的日志数量。
data_dirs_failed
kudu_data_dirs_failed
失效的数据目录个数。
leader_memory_pressure_rejections
kudu_leader_memory_pressure_rejections
内存压力拒绝的请求个数。
transaction_memory_pressure_rejections
kudu_transaction_memory_pressure_rejections
内存压力拒绝的事务个数。

ClickHouse指标[10]

EMR ClickHouse完全兼容开源版本的产品特性,并且在开源的基础上优化了读写性能,提升了ClickHouse与EMR其他组件快速集成的能力。
指标
描述
clickhouse_server_events_ReplicatedPartFailedFetches
数据无法从Replicated*MergeTree表中任一副本获取的次数。
clickhouse_server_events_ReplicatedPartChecksFailed
Replicated*MergeTree表中数据检查失败的次数。
clickhouse_server_events_ReplicatedDataLoss
Replicated*MergeTree表中数据不在任何一个副本中的次数。
clickhouse_server_events_ReplicatedMetaDataChecksFailed
Replicated*MergeTree表检查元数据失败的次数。
clickhouse_server_events_ReplicatedMetaDataLoss
Replicated*MergeTree表中元数据丢失的次数。
clickhouse_server_events_DuplicatedInsertedBlocks
写入Replicated*MergeTree表中的Block重复的次数。
clickhouse_server_events_ZooKeeperUserExceptions
Zookeeper中与ClickHouse状态相关错误出现的次数。
clickhouse_server_events_ZooKeeperHardwareExceptions
ZooKeeper网络或类似的错误出现的次数。
clickhouse_server_events_ZooKeeperOtherExceptions
ZooKeeper中非硬件或状态错误出现的次数。
clickhouse_server_events_DistributedConnectionFailTry
分布式连接重试出错的次数。
clickhouse_server_events_DistributedConnectionMissingTable
分布式连接无法找到表的次数。
clickhouse_server_events_DistributedConnectionStaleReplica
分布式连接得到的副本不新鲜的次数。
clickhouse_server_events_DistributedConnectionFailAtAll
在所有次重试结束后分布式连接失败的次数。
clickhouse_server_events_SlowRead
Slow Read的次数。
clickhouse_server_events_ReadBackoff
由于Slow Read导致的线程减少的次数。
clickhouse_server_metrics_BackgroundPoolTask
background_pool中的任务个数。
clickhouse_server_metrics_BackgroundMovePoolTask
background_move_pool中的任务个数。
clickhouse_server_metrics_BackgroundSchedulePoolTask
schedule_pool中的任务个数。
clickhouse_server_metrics_BackgroundBufferFlushSchedulePoolTask
buffer_flush_schedule_pool中的任务个数。
clickhouse_server_metrics_BackgroundDistributedSchedulePoolTask
distributed_schedule_pool中的任务个数。
clickhouse_server_metrics_BackgroundTrivialSchedulePoolTask
trivial_schedule_pool中的任务个数。
clickhouse_server_metrics_TCPConnection
TCP连接个数。
clickhouse_server_metrics_HTTPConnection
HTTP连接个数。
clickhouse_server_metrics_InterserverConnection
用于从其他副本上获取数据的连接个数。
clickhouse_server_metrics_MemoryTracking
Server使用的总内存,单位:Byte。
clickhouse_server_metrics_MemoryTrackingInBackgroundProcessingPool
background_pool中任务执行所使用的内存,单位:Byte。
clickhouse_server_metrics_MemoryTrackingInBackgroundMoveProcessingPool
background_move_pool中任务执行所使用的内存,单位:Byte。
clickhouse_server_metrics_MemoryTrackingInBackgroundBufferFlushSchedulePool
buffer_flush_schedule_pool中任务执行所使用的内存,单位:Byte。
clickhouse_server_metrics_MemoryTrackingInBackgroundSchedulePool
schedule_pool中任务执行所使用的内存,单位:Byte。
clickhouse_server_metrics_MemoryTrackingInBackgroundDistributedSchedulePool
distributed_schedule_pool中任务执行所使用的内存,单位:Byte。
clickhouse_server_metrics_MemoryTrackingInBackgroundTrivialSchedulePool
trivial_schedule_pool中任务执行所使用的内存,单位:Byte。
clickhouse_server_metrics_MemoryTrackingForMerges
后台执行Merge时使用的内存,单位:Byte。

Flink指标[11]

Flink是一个流式数据流执行引擎,其针对数据流的分布式计算提供了数据分布、数据通信以及容错机制等功能。
  • Overview
参数
指标
描述
Num Of RunningJobs
numRunningJobs
JM中正在运行的作业数。
Job Uptime
job_uptime
作业已运行时间,单位:ms。仅支持返回单个系列或表的查询。
TaskSlots Available
taskSlotsAvailable
当前可用的TaskSlots数量。
TaskSlots Total
taskSlotsTotal
TaskSlots的总数量。
Num of TM
numRegisteredTaskManagers
已注册的TM数量。
sourceIdleTime
sourceIdleTime
源没有处理任何记录的时间,单位:ms。
currentFetchEventTimeLag
currentFetchEventTimeLag
业务延时(fetch=数据发生时间与数据进入Flink Source时间之间的差值)。
currentEmitEventTimeLag
currentEmitEventTimeLag
业务延时(emit=数据发生时间与数据离开Flink Source时间之间的差值)。
  • Checkpoint
参数
指标
描述
Num of Checkpoints
totalNumberOfCheckpoints
检查点总数。
numberOfFailedCheckpoints
失败的检查点数量。
numberOfCompletedCheckpoints
已完成的检查点数量。
numberOfInProgressCheckpoints
正在进行的检查点数量。
lastCheckpointDuration
lastCheckpointDuration
最近一个检查点完成时间,单位:ms。
lastCheckpointSize
lastCheckpointSize
最近一个检查点的大小,单位:Byte。
lastCheckpointRestoreTimestamp
lastCheckpointRestoreTimestamp
协调器上最近一个检查点的恢复时间,单位:ms。
  • Network
参数
指标
描述
InPool Usage
inPoolUsage
输入缓冲区使用量。
OutPool Usage
outPoolUsage
输出缓冲区使用量。
OutputQueue Length
outputQueueLength
输出缓冲区排队数量。
InputQueue Length
inputQueueLength
输入缓冲区排队数量。
  • IO
参数
指标
描述
numBytesIn PerSecond
numBytesInLocalPerSecond
每秒本地读取数据的字节数。
numBytesInRemotePerSecond
每秒远端读取数据的字节数。
numBuffersInLocalPerSecond
每秒本地读取网络缓冲区的数量。
numBuffersInRemotePerSecond
每秒远端读取网络缓冲区的数量。
numBytesOut PerSecond
numBytesOutPerSecond
每秒发出字节数。
numBuffersOutPerSecond
每秒发出网络缓冲区的数量。
Task numRecords I/O PerSecond
numRecordsInPerSecond
每秒接收的记录数。
numRecordsOutPerSecond
每秒发出的记录数。
Task numRecords I/O
numRecordsIn
接收的记录数。
numRecordsOut
发出的记录数。
Operator CurrentSendTime
currentSendTime
发送最新一条记录的耗时时间,单位:ms。
  • Watermark
参数
指标
描述
Task InputWatermark
currentInputWatermark
任务收到最后一个水印的时间,单位:ms。
Operator In/Out Watermark
currentInputWatermark
算子收到最后一个水印的时间,单位:ms。
currentOutputWatermark
算子发出最后一个水印的时间,单位:ms。
watermarkLag
watermarkLag
Watermark滞后时间,单位:ms。
  • CPU
参数
指标
描述
JM CPU Load
CPU_Load
JM CPU使用率。
TM CPU Load
CPU_Load
TM CPU使用率。
CPU Usage
CPU_Usage
TM CPU使用率(基于ProcessTree)。
  • Memory
参数
指标
描述
JM Heap Memory
Memory_Heap_Used
JM Heap Memory已使用量,单位:Byte。
Memory_Heap_Committed
JM Heap Memory已申请量,单位:Byte。
Memory_Heap_Max
JM Heap Memory最大可用量,单位:Byte。
JM NonHeap Memory
Memory_NonHeap_Used
JM NonHeap Memory已使用量,单位:Byte。
Memory_NonHeap_Committed
JM NonHeap Memory已申请量,单位:Byte。
Memory_NonHeap_Max
JM NonHeap Memory最大可用量,单位:Byte。
TM Heap Memory
Memory_Heap_Used
TM Heap Memory已使用量,单位:Byte。
Memory_Heap_Committed
TM Heap Memory已申请量,单位:Byte。
Memory_Heap_Max
TM Heap Memory最大可用量,单位:Byte。
TM NonHeap Memory
Memory_NonHeap_Used
TM NonHeap Memory已使用量,单位:Byte。
Memory_NonHeap_Committed
TM NonHeap Memory已申请量,单位:Byte。
Memory_NonHeap_Max
TM NonHeap Memory最大可用量,单位:Byte。
Memory RSS
Memory_RSS
TM当前已使用的堆内存量,单位:Byte。
  • JVM
参数
指标
描述
JM Threads
Threads_Count
JM活跃线程总数。
TM Threads
Threads_Count
TM活跃线程总数。
JM GC Time
GarbageCollector_PS_Scavenge_Time
JM年轻代垃圾回收器运行时间。
GarbageCollector_PS_MarkSweep_Time
JM老年代“标记-清除”垃圾回收器的运行时间。
JM GC Count
GarbageCollector_PS_Scavenge_Count
JM年轻代垃圾回收器运行次数。
GarbageCollector_PS_MarkSweep_Count
JM老年代“标记-清除”垃圾回收器的运行次数。
TM GC Count
GarbageCollector_PS_Scavenge_Count
TM年轻代垃圾回收器运行次数。
GarbageCollector_PS_MarkSweep_Count
TM老年代“标记-清除”垃圾回收器的运行次数。
TM GC Time
GarbageCollector_PS_Scavenge_Time
TM年轻代垃圾回收器运行时间。
GarbageCollector_PS_MarkSweep_Time
TM老年代“标记-清除”垃圾回收器的运行时间。
TM ClassLoader
ClassLoader_ClassesLoaded
TM自JVM启动以来已加载的类总数。
ClassLoader_ClassesUnloaded
TM自JVM启动以来已卸载的类总数。
JM ClassLoader
ClassLoader_ClassesLoaded
JM自JVM启动以来已加载的类总数。
ClassLoader_ClassesUnloaded
JM自JVM启动以来已卸载的类总数。

使用阿里云 Prometheus 监控 EMR







Aliware

下面介绍如何使用阿里云Prometheus进行EMR的监控,包括接入配置、查看监控大盘和配置告警规则等三方面。


接入EMR配置

开启exporter端口

创建完EMR集群后会默认在ECS上安装taihao-exporter,但prometheus端口未打开,需要手动开启。
1. 先进入EMR控制台[12]找到EMR集群id和集群名称
2. 点击“集群名称”找到master和core节点,并远程登录ECS
3. 查找exporter进程,ps -ef | grep taihao_exporter,修改taihao_exporter.yaml配置prom_sink_enable=true并重启服务(记得修改所有节点配置)

sed -i 's/prom_sink_enable:\s*false/prom_sink_enable: true/g' /usr/local/taihao_exporter/taihao_exporter.yamlservice taihao_exporter restart

接入EMR组件

登录阿里云Prometheus[13]控制台,点击“接入中心”选择“组件应用E-MapReduce”点击“安装”按钮
选择“阿里云ECS环境”和Prometheus实例并填写接入配置信息:
  • EMR集群ID:到EMR控制台查找
  • EMR集群名称:建议和EMR集群名称一致
  • exporter名称:job名称(建议默认值+集群名称)
  • exporter端口:默认9712
  • 采集路径:Prometheus采集exporter的HTTP Path,使用默认值/metrics_preget
  • 采集间隔(秒):采集时间间隔
  • ECS标签Key:部署Exporter的ECS标签和标签值,Prometheus通过该标签进行服务发现,具体配置根据上图ECS标签设置,key取值: acs:emr:nodeGroupType或acs:emr:hostGroupType
  • ECS标签值:参考ECS标签值,默认是CORE,MASTER (多个值用逗号分割)

常见问题

  • context deadline exceeded,将EMR实例的ECS加入vpc安全组,安装时有安全组提示


查看监控大盘
阿里云Prometheus提供HOST、HDFS、Hive、YARN、Impala、ZooKeeper、Spark、Flink、ClickHouse等共24个大盘,其中包括:

1. HOST大盘:ECS节点CPU、内存、磁盘、load、network、socket等

2.  HDFS大盘:HDFS-HOME、HDFS-NameNodes、HDFS-DataNodes、HDFS-JournanlNodes

3. Hive大盘:

  • HiveServer2: HiveQL查询服务器, 接收来自JDBC客户端提交的SQL请求
  • HiveMetaStore: 元数据管理模块,用于存储Database和Table等元信息

4. YARN大盘:

  • HOME: 集群状态、内存、任务、节点、container等
  • NodeManager: 负责节点的资源管理、监控和作业运行。
  • ResourceManager: 负责集群的资源管理与调度,为运行在YARN上的各种类型作业分配资源
  • TimeLineServer: 收集作业的指标,并展示作业执行情况
  • JobHistory:

5. ClickHouse大盘

6. Flink大盘

7. Impala大盘

8. ZooKeeper大盘

9. Spark大盘
进入集成EMR的prometheus实例,点击“E-MapReduce”标签,在弹出界面选择“大盘”tab页,点击大盘缩略图,即可查看对应Grafana大盘。

HOST大盘

HDFS大盘

HDFS-HOME

HDFS-NameNodes

HDFS-DataNodes

HDFS-JournanlNodes

Hive大盘

HiveMetaStore

HiveServer2

YARN大盘

HOME

  • YARN-HOME-copy

  • YARN-HOME2

NodeManagers

JobHistory

ResourceManager

TimeLineServer

Kafka大盘

KAFKA-HOME

KAFKA-Broker

KAFKA-Topic

Impala大盘

Spark大盘

ZooKeeper大盘

ClickHouse大盘

自建 Prometheus 与阿里云 Prometheus 监控的优劣对比







Aliware

Prometheus作为目前最主流的可观测开源项目之一,已经被众多企业所广泛应用。但在实际生产过程中,还是遇到各种各样问题,其中包括:

  • 由于安全、组织管理等因素,用户业务通常部署在多个相互隔离的 VPC,需要在多个 VPC 内都重复、独立部署 Prometheus,导致部署和运维成本高。
  • 每套完整的自建观测系统都需要安装并配置 Prometheus、Grafana、AlertManager 等组件,部署过程复杂、实施周期长,并且每次升级都需要对每个组件进行维护。
  • 随着监控规模不断扩大,资源消耗呈非线性快速增加,系统可用性无法得到保障。
  • 对于EMR的相关组件,自建 Prometheus 无法实现一站式、全局视角的监控建设。
  • 开源分享的相关大盘不够专业,却少开箱即用的丰富指标,不能帮助用户更迅速的了解EMR的整体运行状况

针对以上问题,阿里云Proemtheus监控进行了以下几个方面的优化:


一、性能强化&降低资源消耗,压降IT运维成本
为了进一步进行性能优化,阿里云Prometheus监控将Agent 部署在用户侧,保留原生采集能力同时, 尽量使用最少资源;通过采集存储分离架构,提高整体性能;采集组件优化,提升单副本采集能力,降低资源消耗;通过多副本横向扩展均衡分解采集任务,实现动态扩缩,解决开源水平扩展问题。采集/数据处理/存储组件支持多副版本,保证核心数据链路高可用;基于集群规模可直接进行弹性扩容;支持数据重传,彻底解决丢弃逻辑弊病,确保数据完整性与准确性。
同时,为了应对大规模数据、长时间区间的查询场景,通过DAG执行优化、算子下推,提升大规模数据查询性能并支持长时间区间秒级查询;通过Global DataSource和Global View实现对多集群统一监控与跨集群聚合查询。
在提供企业级能力强化同时,全方位降低企业使用Prometheus的IT运维成本。通过包年包月、按量付费等多种计费方式让费用支出与规划更加清晰与灵活,相较于开源版本节省37%以上。


二、与各类数据云服务深度集成
云产品在各自控制台都提供自身产品的可观测性,但这些云产品的指标及看板散落在各控制台,且无法进行精细化的指标数据应用。Prometheus服务提供云产品监控功能,将这些数据进行统一展现、查询、告警,为运维团队提供更加便捷的日常运维监控界面。

三、Grafana看板增强,让云服务监控更简单
想要更好、更快速的呈现相关指标图表,阿里云Prometheus监控预置Grafana组件,预置常见云服务、应用等看板模板,如应用实时监控服务ARMS、云监控CMS、日志服务SLS、阿里云Elasticsearch等云服务,提供各种云服务的数据源配置及预置大盘,实现各种可观测数据的统一展示。如容器、消息队列Kafka等,进一步提供GrafanaPro大盘,帮助运维进行更加精细化的指标观测。在预置看板之外,可以通过Grafana官方自由增加新插件,添加新的可视化模板以及数据源,进一步满足个性化运维监控需求。

相关链接







Aliware

[1] HOST指标

https://help.aliyun.com/document_detail/426468.html?spm=a2c4g.11186623.0.0.741d6a7fW0Lwr5
[2] HDFS指标
https://help.aliyun.com/document_detail/420598.html
[3] YARN指标
https://help.aliyun.com/document_detail/424946.html
[4] Hive指标
https://help.aliyun.com/document_detail/425274.html
[5] ZooKeeper指标
https://help.aliyun.com/document_detail/425464.html
[6] Kafka指标
https://help.aliyun.com/document_detail/425521.html

[7] Impala指标

https://help.aliyun.com/document_detail/427926.html

[8] HUE指标
https://help.aliyun.com/document_detail/428413.html
[9] Kudu指标
https://help.aliyun.com/document_detail/427958.html
[10] ClickHouse指标
https://help.aliyun.com/document_detail/425523.html
[11] Flink指标
https://help.aliyun.com/document_detail/430469.html
[12] EMR控制台
https://emr-next.console.aliyun.com/#/region/cn-hangzhou/resource/all/overview
[13] 阿里云Prometheus
https://common-buy.aliyun.com/?commodityCode=arms#/open

相关阅读

  • 怎样赚到第一个100万

  • 普通人最难的是赚到第一个100万元。过了这关以后,人生之路就会好走很多,以后就有可能赚到三百万、一千万甚至一个亿。那么,怎样赚到第一个100万元呢?很简单,就是要远离一些事情和
  • 信息成瘾无法避免?不如试试数字闭关

  • 22年有一段时间,我因为即刻上瘾,删掉了一段时间(并不是鼓励大家删即刻的意思)。在这段时间里有许多有趣的感受先和大家分享下:1.删掉即刻后,当空余时间下意识打开手机的时候,发现并
  • 1-3分钟0.65元,每天无上限(招募篇)

  • 大家好,我是艾乐年前说的答题项目,今天开始招募项目比较简单,非常容易上手。有专业的老师培训,百分之九十九的人只要培训玩,都可以胜任这份副业。1,先介绍下项目具体是做什么:和官
  • 本周六客齐集小聚,主题《ChatGPT 应用畅想》

  • 本周六,客齐集小聚继续如期举行(未来的每一个周六下午两点都会准时举行)。我们定下来每周都有一场,其实是为了节省大家的计划成本。如果本周没有时间,可以把下周六,或者再下周六加
  • 停更这么久,交代一下

  • 不星标可能收不到消息,记得星标公众号回复QQ群获取群号前言大号(新方圆小棉袄)倒是在经常更新,但是本号这段时间却很少更,原因竟然是“没有时间”,小棉袄我是真没啥时间啊空余时间

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 阿里云消息队列 Kafka 生态集成的实践与探索

  • 消息队列 Kafka 简介AliwareApache Kafka是一个分布式流平台,作为互联网领域不可或缺的消息组件,在全球获得了广泛的应用。在使用过程中,Kafka一般被作为消息流转的核心枢纽,上
  • 【研途·通知】近期部分重要通知

  • 1刚刚,北京教育考试院发布《关于延期举行北京地区2022年下半年全国大学英语四、六级考试(笔试)的通知》。通知全文如下:为切实保障广大考生和考试工作人员身体健康、生命安全,结