2

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

 1 year ago
source link: https://www.cnblogs.com/aliware/p/17209970.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

作者:闻洪

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

EMR 简介

开源大数据开发平台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 观测指标解读

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
  • 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 输入缓冲区排队数量。
参数 指标 描述
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。
参数 指标 描述
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。
参数 指标 描述
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

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

接入EMR配置

开启exporter端口

创建完EMR集群后会默认在ECS上安装taihao-exporter,但prometheus端口未打开,需要手动开启。

  1. 先进入**EMR控制台 [ 12] **找到EMR集群id和集群名称
image.png
  1. 点击“集群名称”找到master和core节点,并远程登录ECS
image.png
image.png
  1. 查找exporter进程,ps -ef | grep taihao_exporter,修改taihao_exporter.yaml配置prom_sink_enable=true并重启服务(记得修改所有节点配置)

image.pngimage.png

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”点击“安装”按钮

image.png

选择“阿里云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 (多个值用逗号分割)
image.png
  • context deadline exceeded,将EMR实例的ECS加入vpc安全组,安装时有安全组提示
image.png

查看监控大盘

阿里云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等元信息
  1. YARN大盘:
  • HOME: 集群状态、内存、任务、节点、container等
  • NodeManager: 负责节点的资源管理、监控和作业运行。
  • ResourceManager: 负责集群的资源管理与调度,为运行在YARN上的各种类型作业分配资源
  • TimeLineServer: 收集作业的指标,并展示作业执行情况
  • JobHistory:
  1. ClickHouse大盘

  2. Flink大盘

  3. Impala大盘

  4. ZooKeeper大盘

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

image.png

HOST大盘

image.png

HDFS大盘

HDFS-HOME
image.png
HDFS-NameNodes
image.png
HDFS-DataNodes
image.png
HDFS-JournanlNodes

Hive大盘

HiveMetaStore
image.png
HiveServer2
image.png

YARN大盘

  • YARN-HOME-copy
image.png
image.png
  • YARN-HOME2
image.png
NodeManagers
image.png
JobHistory
image.png
ResourceManager
image.png
TimeLineServer
image.png

Kafka大盘

KAFKA-HOME
image.png
KAFKA-Broker
image.png
KAFKA-Topic

image.png

Impala大盘

image.png

Spark大盘

image.png

ZooKeeper大盘

image.png

ClickHouse大盘

image.png

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

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

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

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

一、性能强化&降低资源消耗,压降IT运维成本

为了进一步进行性能优化,阿里云Prometheus监控将Agent 部署在用户侧,保留原生采集能力同时, 尽量使用最少资源;通过采集存储分离架构,提高整体性能;采集组件优化,提升单副本采集能力,降低资源消耗;通过多副本横向扩展均衡分解采集任务,实现动态扩缩,解决开源水平扩展问题。采集/数据处理/存储组件支持多副版本,保证核心数据链路高可用;基于集群规模可直接进行弹性扩容;支持数据重传,彻底解决丢弃逻辑弊病,确保数据完整性与准确性。

同时,为了应对大规模数据、长时间区间的查询场景,通过DAG执行优化、算子下推,提升大规模数据查询性能并支持长时间区间秒级查询;通过Global DataSource和Global View实现对多集群统一监控与跨集群聚合查询。

在提供企业级能力强化同时,全方位降低企业使用Prometheus的IT运维成本。通过包年包月、按量付费等多种计费方式让费用支出与规划更加清晰与灵活,相较于开源版本节省37%以上。

image.png

二、与各类数据云服务深度集成

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

image.png

三、Grafana看板增强,让云服务监控更简单

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

image.png

[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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK