作者:闻洪
开源大数据渠道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
- 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
下面介绍怎么运用阿里云Prometheus进行EMR的监控,包含接入装备、检查监控大盘和装备告警规矩等三方面。
接入EMR装备
敞开exporter端口
创建完EMR集群后会默许在ECS上装置taihao-exporter,但prometheus端口未翻开,需求手动敞开。
- 先进入**EMR控制台 [ 12] **找到EMR集群id和集群称号
- 点击“集群称号”找到master和core节点,并长途登录ECS
- 查找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个大盘,其间包含:
-
HOST大盘:ECS节点CPU、内存、磁盘、load、network、socket等
-
HDFS大盘:HDFS-HOME、HDFS-NameNodes、HDFS-DataNodes、HDFS-JournanlNodes
-
Hive大盘:
- HiveServer2: HiveQL查询服务器, 接纳来自JDBC客户端提交的SQL恳求
- HiveMetaStore: 元数据管理模块,用于存储Database和Table等元信息
- YARN大盘:
- HOME: 集群状况、内存、使命、节点、container等
- NodeManager: 负责节点的资源管理、监控和作业运转。
- ResourceManager: 负责集群的资源管理与调度,为运转在YARN上的各种类型作业分配资源
- TimeLineServer: 搜集作业的目标,并展现作业履行情况
- JobHistory:
-
ClickHouse大盘
-
Flink大盘
-
Impala大盘
-
ZooKeeper大盘
-
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 监控的优劣比照
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官方自由增加新插件,增加新的可视化模板以及数据源,进一步满足个性化运维监控需求。
相关链接
[1]HOST目标
help.aliyun.com/document_de…
[2]HDFS目标
help.aliyun.com/document_de…
[3] YARN目标
help.aliyun.com/document_de…
[4] Hive目标
help.aliyun.com/document_de…
[5] ZooKeeper目标
help.aliyun.com/document_de…
[6] Kafka目标
help.aliyun.com/document_de…
[7]Impala目标
help.aliyun.com/document_de…
[8] HUE目标
help.aliyun.com/document_de…
[9] Kudu目标
help.aliyun.com/document_de…
[10] ClickHouse目标
help.aliyun.com/document_de…
[11] Flink目标
help.aliyun.com/document_de…
[12] EMR控制台
emr-next.console.aliyun.com/#/region/cn…
[13] 阿里云Prometheus
common-buy.aliyun.com/?commodityC…