Flink metrics
Managed Service for Prometheus supports a set of Flink metrics that are collected from Alibaba Cloud Realtime Compute for Apache Flink. Each metric is either a basic metric or a custom metric, and that classification determines whether reporting the metric incurs charges.
Metric types and billing
Managed Service for Prometheus is billed based on the volume of data written or the number of reported data points. Metrics fall into two categories:
Basic metrics — Basic metrics collected from Alibaba Cloud Realtime Compute for Apache Flink are free of charge when they are reported to or written into Managed Service for Prometheus. This benefit does not apply to other Flink services, such as self-managed Flink.
Custom metrics — Metrics other than basic metrics are custom metrics. Custom metrics have been billed since January 6, 2020.
TheTypecolumn of every table in this topic states the category that a metric belongs to. Basic metrics are concentrated in the JobManager and TaskManager JVM and system resource sections. The metrics in the remaining sections are custom metrics, so job health, latency, throughput, checkpoint, state, window, and CDC connector data is billed when it is reported. Within the two JVM sections, the eight G1 garbage collector metrics are custom metrics even though the metrics next to them are basic metrics.
How to read the metric tables
Every metric table in this topic uses the same five columns:
Metric — The metric name as it is reported to Managed Service for Prometheus.
Description — What the metric measures.
Details — How to interpret the value, or what to check when the value looks abnormal.
Unit — The unit of the metric value. Values used in this topic are
Count,Count/s,Bytes,Bytes/s,ms, andns.Type — The metric category:
BasicorCustom.N/Ain a cell means that this topic provides no value for that cell. In theUnitcolumn,N/Ameans that no unit is documented for the metric.
Some metric names contain a variable segment that is substituted when the metric is reported, so the name in the table is not the literal name of a time series. state_name stands for the name of the state that the metric applies to, and cdcns_schema_table stands for the CDC namespace, schema name, and table name of the monitored table. Replace these segments with actual values before you use a metric name in a query or an alert rule.
Job health
| Metric | Description | Details | Unit | Type |
flink_jobmanager_job_numRestarts | Number of job restarts caused by errors | Number of restarts caused by job errors. JobManager failovers are not counted. | Count | Custom |
flink_jobmanager_job_uptime | Job running time | N/A | ms | Custom |
flink_jobmanager_numRunningJobs | Number of running jobs | N/A | N/A | Custom |
flink_jobmanager_taskSlotsAvailable | Number of available task slots | N/A | N/A | Custom |
flink_jobmanager_taskSlotsTotal | Total number of task slots | N/A | N/A | Custom |
flink_jobmanager_numRegisteredTaskManagers | Number of registered TaskManagers | N/A | N/A | Custom |
Latency
| Metric | Description | Details | Unit | Type |
flink_taskmanager_job_task_operator_currentEmitEventTimeLag | Event-time lag of the records that the operator emits | A large value indicates that the job may be experiencing latency when it pulls or processes data. | ms | Custom |
flink_taskmanager_job_task_operator_currentFetchEventTimeLag | Event-time lag of the records that the operator pulls | A large value indicates that the job may be experiencing latency when it pulls data. | ms | Custom |
flink_taskmanager_job_task_currentInputWatermark | Time of the most recent watermark received by each task | Indicates the latency of the data that the task receives. | N/A | Custom |
flink_taskmanager_job_task_operator_watermarkLag | Watermark lag of the operator | Indicates job latency at the subtask level. | ms | Custom |
Throughput
Record throughput
| Metric | Description | Details | Unit | Type |
flink_taskmanager_job_task_numRecordsIn | Total number of records that the task receives | If the numRecordsIn value of a task does not increase for a long time, the upstream may have dropped the data and failed to pass it on. In this case, check the upstream data. | Count | Custom |
flink_taskmanager_job_task_numRecordsOut | Total number of records that the task outputs | If the numRecordsOut value of a task does not increase for a long time, a logic error in the job code may have dropped the data so that it was not passed on. In this case, check the job code logic. | Count | Custom |
flink_taskmanager_job_task_operator_numRecordsIn | Total number of records that the operator receives | If the numRecordsIn value of an operator does not increase for a long time, the upstream may have dropped the data and failed to pass it on. In this case, check the upstream data. | Count | Custom |
flink_taskmanager_job_task_operator_numRecordsOut | Total number of records that the operator outputs | If the numRecordsOut value of an operator does not increase for a long time, a logic error in the job code may have dropped the data so that it was not passed on. In this case, check the job code logic. | Count | Custom |
flink_taskmanager_job_task_operator_source_numRecordsIn | Input records of the source operator only | Check the upstream data input. | Count | Custom |
flink_taskmanager_job_task_operator_sink_numRecordsOut | Total number of records output by the sink | Check the downstream data output. | Count | Custom |
flink_taskmanager_job_task_numRecordsInPerSecond | Number of records that the task receives per second | Applies to scenarios in which you need to monitor the processing speed of a task. For example, you can check whether the processing speed of the task reaches the expected level and how performance changes under different input loads. | Count/s | Custom |
flink_taskmanager_job_task_numRecordsOutPerSecond | Number of records that the task outputs per second | Applies to scenarios in which you need to monitor the output speed of a task. For example, you can check whether the output speed of the task reaches the expected level and how performance changes under different output loads. | Count/s | Custom |
flink_taskmanager_job_task_operator_numRecordsInPerSecond | Number of records that the operator receives per second | Applies to scenarios in which you need to monitor the processing speed of an operator. For example, you can check whether the processing speed of the operator reaches the expected level and how performance changes under different input loads. | Count/s | Custom |
flink_taskmanager_job_task_operator_numRecordsOutPerSecond | Number of records that the operator outputs per second | Applies to scenarios in which you need to monitor the output speed of an operator. For example, you can check whether the output speed of the operator reaches the expected level and how performance changes under different output loads. | Count/s | Custom |
flink_taskmanager_job_task_operator_source_numRecordsInPerSecond | Number of records input per second by the source | Applies to scenarios in which you need to understand the generation rate of each data source and measure the number of records generated per second by each data source. Different data sources in a data stream may generate different numbers of records, so this metric helps you tune the data stream for better performance. This metric is also used for monitoring and alerting. A value of 0 may indicate that the upstream dropped the data. Check whether output is blocked because the upstream data has not been consumed. | Count/s | Custom |
flink_taskmanager_job_task_operator_sink_numRecordsOutPerSecond | Number of records output per second by the sink | Applies to scenarios in which you need to understand the output speed of each sink and measure the number of records output per second by each sink. Different sinks in a data stream may output different numbers of records, so this metric helps you tune the data stream for better performance. This metric is also used for monitoring and alerting. A value of 0 may indicate a logic error in the job code that filtered out all data. In this case, check the job code logic. | Count/s | Custom |
Byte throughput
| Metric | Description | Details | Unit | Type |
flink_taskmanager_job_task_operator_numBytesIn | Total number of bytes that the operator receives | Check the upstream throughput input to observe the traffic of the job. | Bytes | Custom |
flink_taskmanager_job_task_operator_numBytesOut | Total number of bytes that the operator outputs | Check the downstream throughput output to observe the traffic of the job. | Bytes | Custom |
flink_taskmanager_job_task_operator_numBytesInPerSecond | Number of bytes that the operator receives per second | N/A | Bytes/s | Custom |
flink_taskmanager_job_task_operator_numBytesOutPerSecond | Number of bytes that the operator outputs per second | Check the downstream throughput output to observe the traffic of the job. | Bytes/s | Custom |
flink_taskmanager_job_task_numBytesInLocalPerSecond | Number of bytes that the task reads per second from local sources | Check the upstream input rate to observe the traffic of the job. | Bytes/s | Custom |
flink_taskmanager_job_task_numBytesInRemotePerSecond | Number of bytes that the task reads per second from remote sources | N/A | Bytes/s | Custom |
flink_taskmanager_job_task_numBytesOutPerSecond | Number of bytes that the task outputs per second | N/A | Bytes/s | Custom |
Network buffers
| Metric | Description | Details | Unit | Type |
flink_taskmanager_job_task_numBuffersInLocalPerSecond | Number of local data buffers consumed per second | A high value indicates frequent local communication between tasks, that is, communication on the same node. | Count/s | Custom |
flink_taskmanager_job_task_numBuffersInRemotePerSecond | Number of buffers received per second from remote TaskManagers | Reflects the frequency of cross-TaskManager communication. | Count/s | Custom |
flink_taskmanager_job_task_numBuffersOutPerSecond | Number of buffers sent per second to other tasks | Indicates the output pressure of tasks and the network bandwidth usage. | Count/s | Custom |
Source and sink
| Metric | Description | Details | Unit | Type |
flink_taskmanager_job_task_operator_pendingRecords | Number of records that have not been read at the source | Number of records in the external system that have not been pulled by the source. | Count | Custom |
flink_taskmanager_job_task_operator_sourceIdleTime | Time during which the source has not processed data | Indicates whether the source is idle. A large value indicates that the data generation rate in the external system is low. | ms | Custom |
flink_taskmanager_job_task_operator_currentSendTime | Time taken to send the most recent record | N/A | ms | Custom |
Checkpoints
| Metric | Description | Details | Unit | Type |
flink_jobmanager_job_totalNumberOfCheckpoints | Total number of checkpoints | N/A | Count | Custom |
flink_jobmanager_job_numberOfFailedCheckpoints | Number of failed checkpoints | N/A | Count | Custom |
flink_jobmanager_job_numberOfCompletedCheckpoints | Number of completed checkpoints | N/A | Count | Custom |
flink_jobmanager_job_numberOfInProgressCheckpoints | Number of in-progress checkpoints | N/A | Count | Custom |
flink_jobmanager_job_lastCheckpointDuration | Duration of the most recent checkpoint | If a checkpoint takes too long or times out, the cause may be an excessively large state, a transient network issue, unaligned barriers, or data backpressure. | ms | Custom |
flink_jobmanager_job_lastCheckpointSize | Size of the most recent checkpoint | Size of the checkpoint that was actually uploaded most recently. Use this metric to analyze checkpoint performance when checkpointing is a bottleneck. | Bytes | Custom |
State
State metrics report the maximum latency of a single state operation, grouped by state type, and the size of the state data that GeminiDB stores. In a state latency metric name, replace state_name with the name of the state that you want to monitor. Each latency metric indicates the performance of the state operation that its name identifies, so the Details column is N/A for these metrics.
General
| Metric | Description | Details | Unit | Type |
flink_taskmanager_job_task_operator_state_name_stateClearLatency | Maximum latency of a single state clear operation | N/A | ns | Custom |
Value state
| Metric | Description | Details | Unit | Type |
flink_taskmanager_job_task_operator_state_name_valueStateGetLatency | Maximum latency of a single value state access | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_valueStateUpdateLatency | Maximum latency of a single value state update | N/A | ns | Custom |
Aggregating state
| Metric | Description | Details | Unit | Type |
flink_taskmanager_job_task_operator_state_name_aggregatingStateGetLatency | Maximum latency of a single aggregating state access | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_aggregatingStateAddLatency | Maximum latency of a single aggregating state add operation | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_aggregatingStateMergeNamespacesLatency | Maximum latency of a single aggregating state merge-namespaces operation | N/A | ns | Custom |
Reducing state
| Metric | Description | Details | Unit | Type |
flink_taskmanager_job_task_operator_state_name_reducingStateGetLatency | Maximum latency of a single reducing state access | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_reducingStateAddLatency | Maximum latency of a single reducing state add operation | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_reducingStateMergeNamespacesLatency | Maximum latency of a single reducing state merge-namespaces operation | N/A | ns | Custom |
Map state
| Metric | Description | Details | Unit | Type |
flink_taskmanager_job_task_operator_state_name_mapStateGetLatency | Maximum latency of a single map state access | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_mapStatePutLatency | Maximum latency of a single map state put operation | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_mapStatePutAllLatency | Maximum latency of a single map state put all operation | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_mapStateRemoveLatency | Maximum latency of a single map state remove operation | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_mapStateContainsLatency | Maximum latency of a single map state contains operation | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_mapStateEntriesInitLatency | Maximum latency of a single map state entries init operation | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_mapStateKeysInitLatency | Maximum latency of a single map state keys init operation | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_mapStateValuesInitLatency | Maximum latency of a single map state values init operation | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_mapStateIteratorInitLatency | Maximum latency of a single map state iterator init operation | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_mapStateIsEmptyLatency | Maximum latency of a single map state empty check | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_mapStateIteratorHasNextLatency | Maximum latency of a single map state iterator hasNext operation | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_mapStateIteratorNextLatency | Maximum latency of a single map state iterator next operation | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_mapStateIteratorRemoveLatency | Maximum latency of a single map state iterator remove operation | N/A | ns | Custom |
List state
| Metric | Description | Details | Unit | Type |
flink_taskmanager_job_task_operator_state_name_listStateGetLatency | Maximum latency of a single list state access | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_listStateAddLatency | Maximum latency of a single list state add operation | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_listStateAddAllLatency | Maximum latency of a single list state add all operation | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_listStateUpdateLatency | Maximum latency of a single list state update | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_listStateMergeNamespacesLatency | Maximum latency of a single list state merge-namespaces operation | N/A | ns | Custom |
Sorted map state
| Metric | Description | Details | Unit | Type |
flink_taskmanager_job_task_operator_state_name_sortedMapStateFirstEntryLatency | Maximum latency of a single access to the first entry of a sorted map state | N/A | ns | Custom |
flink_taskmanager_job_task_operator_state_name_sortedMapStateLastEntryLatency | Maximum latency of a single access to the last entry of a sorted map state | N/A | ns | Custom |
GeminiDB state storage
| Metric | Description | Details | Unit | Type |
flink_taskmanager_job_task_operator_geminiDB_total_size | Size of the state data | By monitoring this metric, you can locate nodes at which state bottlenecks may occur, either directly or in advance, and determine whether TTL takes effect. | Bytes | Custom |
flink_taskmanager_job_task_operator_geminiDB_total_filesize | Size of the state data files | By monitoring this metric, you can check how much local disk space is occupied by state so that you can take action in advance when the usage is high, and determine whether insufficient local disk space is caused by excessively large state data. | Bytes | Custom |
Window metrics
| Metric | Description | Details | Unit | Type |
flink_taskmanager_job_task_operator_numLateRecordsDropped | Total number of records dropped because of window latency | N/A | Count | Custom |
flink_taskmanager_job_task_operator_lateRecordsDroppedRate | Rate at which records are dropped because of window latency | N/A | N/A | Custom |
CDC connector metrics
Change data capture (CDC) connector metrics track the snapshot phase, in which full data is processed, and the binary logging (binlog) phase, in which incremental data is processed. The following tables group these metrics by the phase that the job is currently in, the progress of the snapshot phase, the volume of data that has been read, and the DML and DDL statements that are processed in the incremental phase.
In a metric name, replace cdcns_schema_table with the CDC namespace, schema name, and table name of the table that you want to monitor. Metrics whose names contain this segment report values for a single table. Metrics whose names omit it report values for the whole job.
Phase indicators
| Metric | Description | Details | Unit | Type |
flink_jobmanager_job_operator_coordinator_enumerator_isSnapshotting | Whether the job is in the phase in which full data is processed | Determine whether the job is still in the snapshot phase. | N/A | Custom |
flink_jobmanager_job_operator_coordinator_enumerator_isBinlogReading | Whether the job is in the phase in which incremental data is processed | Determine whether the job has entered the binlog phase. | N/A | Custom |
Snapshot progress
| Metric | Description | Details | Unit | Type |
flink_jobmanager_job_operator_coordinator_enumerator_numTablesRemaining | Number of tables that have not been processed in the snapshot phase | View the number of tables that are still waiting to be processed. | Count | Custom |
flink_jobmanager_job_operator_coordinator_enumerator_numTablesSnapshotted | Number of tables for which the snapshot has been completed | View the number of tables that have been processed. | Count | Custom |
flink_jobmanager_job_operator_coordinator_enumerator_numSnapshotSplitsProcessed | Number of shards that have been processed in the snapshot phase, for the whole job | View the number of processed shards across all tables. | Count | Custom |
flink_jobmanager_job_operator_coordinator_enumerator_cdcns_schema_table_numSnapshotSplitsProcessed | Number of shards that have been processed in the snapshot phase, for a single table | View the number of processed shards for the specified table. | Count | Custom |
flink_jobmanager_job_operator_coordinator_enumerator_numSnapshotSplitsRemaining | Number of shards waiting to be processed in the snapshot phase, for the whole job | View the number of unprocessed shards across all tables. | Count | Custom |
flink_jobmanager_job_operator_coordinator_enumerator_cdcns_schema_table_numSnapshotSplitsRemaining | Number of shards waiting to be processed in the snapshot phase, for a single table | View the number of unprocessed shards for the specified table. | Count | Custom |
Data volume
| Metric | Description | Details | Unit | Type |
flink_taskmanager_job_task_operator_currentReadTimestampMs | Timestamp of the latest data record that has been read | View the timestamp of the latest binlog data. | ms | Custom |
flink_taskmanager_job_task_operator_numSnapshotRecords | Number of records that have been processed in the snapshot phase | View the data volume that has been processed in the snapshot phase. | Count | Custom |
flink_taskmanager_job_task_operator_cdcns_schema_table_numRecordsIn | Number of records that have been read for each table | View the total data volume that has been processed for each table. | Count | Custom |
flink_taskmanager_job_task_operator_cdcns_schema_table_numSnapshotRecords | Number of records that have been processed for each table in the snapshot phase | View the data volume that has been processed for each table in the snapshot phase. | Count | Custom |
Incremental phase DML and DDL
| Metric | Description | Details | Unit | Type |
flink_taskmanager_job_task_operator_cdcns_schema_table_numInsertDMLRecords | Number of INSERT DML statements processed for each table in the incremental phase | View the data volume of INSERT statements for each table. | Count | Custom |
flink_taskmanager_job_task_operator_cdcns_schema_table_numUpdateDMLRecords | Number of UPDATE DML statements processed for each table in the incremental phase | View the data volume of UPDATE statements for each table. | Count | Custom |
flink_taskmanager_job_task_operator_cdcns_schema_table_numDeleteDMLRecords | Number of DELETE DML statements processed for each table in the incremental phase | View the data volume of DELETE statements for each table. | Count | Custom |
flink_taskmanager_job_task_operator_cdcns_schema_table_numDDLRecords | Number of DDL statements processed for each table in the incremental phase | View the data volume of DDL statements for each table. | Count | Custom |
flink_taskmanager_job_task_operator_numInsertDMLRecords | Number of INSERT DML statements processed in the incremental phase | View the data volume of INSERT statements. | Count | Custom |
flink_taskmanager_job_task_operator_numUpdateDMLRecords | Number of UPDATE DML statements processed in the incremental phase | View the data volume of UPDATE statements. | Count | Custom |
flink_taskmanager_job_task_operator_numDeleteDMLRecords | Number of DELETE DML statements processed in the incremental phase | View the data volume of DELETE statements. | Count | Custom |
flink_taskmanager_job_task_operator_numDDLRecords | Number of DDL statements processed in the incremental phase | View the data volume of DDL statements. | Count | Custom |
JobManager JVM and system resources
CPU
| Metric | Description | Details | Unit | Type |
flink_jobmanager_Status_JVM_CPU_Load | Load of a single JobManager CPU | If this value stays above 100% for a long time, the CPU is busy and the load is high. This may affect system performance and cause the system to stutter or the response time to become excessively long. | N/A | Basic |
flink_jobmanager_Status_ProcessTree_CPU_Usage | CPU utilization of a single JobManager CPU | This value reflects how much CPU time Flink occupies. The value is 100% when 1 CPU core is fully used and 400% when 4 CPU cores are fully used. If this value stays above 100% for a long time, the CPU is very busy. If the load is high but the CPU utilization is low, frequent read and write operations may have left too many processes in an uninterruptible sleep state. | N/A | Basic |
Memory
| Metric | Description | Details | Unit | Type |
flink_jobmanager_Status_JVM_Memory_Heap_Used | Heap memory of the JobManager | N/A | Bytes | Basic |
flink_jobmanager_Status_JVM_Memory_Heap_Committed | Heap memory committed by the JobManager | N/A | Bytes | Basic |
flink_jobmanager_Status_JVM_Memory_Heap_Max | Maximum heap memory of the JobManager | N/A | Bytes | Basic |
flink_jobmanager_Status_JVM_Memory_NonHeap_Used | Non-heap memory of the JobManager | N/A | Bytes | Basic |
flink_jobmanager_Status_JVM_Memory_NonHeap_Committed | Non-heap memory committed by the JobManager | N/A | Bytes | Basic |
flink_jobmanager_Status_JVM_Memory_NonHeap_Max | Maximum non-heap memory of the JobManager | N/A | Bytes | Basic |
Threads
| Metric | Description | Details | Unit | Type |
flink_jobmanager_Status_JVM_Threads_Count | Number of JobManager threads | Too many JobManager threads occupy excessive memory space and reduce job stability. | Count | Basic |
Garbage collection
The G1 garbage collector metrics in the following table are custom metrics. The other JobManager garbage collection metrics are basic metrics.
| Metric | Description | Details | Unit | Type |
flink_jobmanager_Status_JVM_GarbageCollector_ParNew_Count | Number of JobManager GCs | Too many GCs occupy excessive memory space and affect job performance. This metric helps you diagnose jobs and troubleshoot job-level failures. | Count | Basic |
flink_jobmanager_Status_JVM_GarbageCollector_G1_Young_Generation_Count | Number of JobManager young generation GCs (G1 garbage collector) | N/A | Count | Custom |
flink_jobmanager_Status_JVM_GarbageCollector_G1_Old_Generation_Count | Number of JobManager old generation GCs (G1 garbage collector) | N/A | Count | Custom |
flink_jobmanager_Status_JVM_GarbageCollector_G1_Young_Generation_Time | JobManager young generation GC time (G1 garbage collector) | N/A | ms | Custom |
flink_jobmanager_Status_JVM_GarbageCollector_G1_Old_Generation_Time | JobManager old generation GC time (G1 garbage collector) | N/A | ms | Custom |
flink_jobmanager_Status_JVM_GarbageCollector_ConcurrentMarkSweep_Count | Number of collections performed by the JobManager CMS garbage collector | N/A | Count | Basic |
flink_jobmanager_Status_JVM_GarbageCollector_ParNew_Time | Duration of each JobManager GC | Long GCs occupy excessive memory space and affect job performance. This metric helps you diagnose jobs and troubleshoot job-level failures. | ms | Basic |
flink_jobmanager_Status_JVM_GarbageCollector_ConcurrentMarkSweep_Time | Time consumed by collections performed by the JobManager CMS garbage collector | N/A | ms | Basic |
Class loading
| Metric | Description | Details | Unit | Type |
flink_jobmanager_Status_JVM_ClassLoader_ClassesLoaded | Total number of classes loaded after the JVM that hosts the JobManager is created | If the total number of classes loaded after the JVM that hosts the JobManager is created is too large, excessive memory space is occupied and job performance is affected. | N/A | Basic |
flink_jobmanager_Status_JVM_ClassLoader_ClassesUnloaded | Total number of classes unloaded after the JVM that hosts the JobManager is created | If the total number of classes unloaded after the JVM that hosts the JobManager is created is too large, excessive memory space is occupied and job performance is affected. | N/A | Basic |
TaskManager JVM and system resources
CPU
| Metric | Description | Details | Unit | Type |
flink_taskmanager_Status_JVM_CPU_Load | Load of a single TaskManager CPU | The sum of the processes that the CPU is handling and the processes waiting for the CPU over a period of time, which is generally understood as how busy the CPU is. How busy the CPU is depends on the number of CPU cores. In Flink, the CPU load value is CPU Usage / Number of CPU cores. If flink_taskmanager_Status_JVM_CPU_Load is greater than the CPU load value, CPU processing may be blocked. | N/A | Basic |
flink_taskmanager_Status_ProcessTree_CPU_Usage | CPU utilization of a single TaskManager CPU | This value reflects how much CPU time Flink occupies. The value is 100% when 1 CPU core is fully used and 400% when 4 CPU cores are fully used. If this value stays above 100% for a long time, the CPU is very busy. If the load is high but the CPU utilization is low, frequent read and write operations may have left too many processes in an uninterruptible sleep state. | N/A | Basic |
Memory
| Metric | Description | Details | Unit | Type |
flink_taskmanager_Status_JVM_Memory_Heap_Used | Heap memory of the TaskManager | N/A | Bytes | Basic |
flink_taskmanager_Status_JVM_Memory_Heap_Committed | Committed heap memory of the TaskManager | N/A | Bytes | Basic |
flink_taskmanager_Status_JVM_Memory_Heap_Max | Maximum heap memory of the TaskManager | N/A | Bytes | Basic |
flink_taskmanager_Status_JVM_Memory_NonHeap_Used | Non-heap memory of the TaskManager | N/A | Bytes | Basic |
flink_taskmanager_Status_JVM_Memory_NonHeap_Committed | Committed non-heap memory of the TaskManager | N/A | Bytes | Basic |
flink_taskmanager_Status_JVM_Memory_NonHeap_Max | Maximum non-heap memory of the TaskManager | N/A | Bytes | Basic |
flink_taskmanager_Status_ProcessTree_Memory_RSS | Memory of the entire process obtained through Linux | View changes in the process memory. | Bytes | Basic |
Threads
| Metric | Description | Details | Unit | Type |
flink_taskmanager_Status_JVM_Threads_Count | Number of TaskManager threads | Too many TaskManager threads occupy excessive memory and reduce job stability. | Count | Basic |
Garbage collection
The G1 garbage collector metrics in the following table are custom metrics. The other TaskManager garbage collection metrics are basic metrics.
| Metric | Description | Details | Unit | Type |
flink_taskmanager_Status_JVM_GarbageCollector_ParNew_Count | Number of TaskManager GCs | Too many GCs occupy excessive memory space and affect job performance. This metric helps you diagnose jobs and troubleshoot task-level failures. | Count | Basic |
flink_taskmanager_Status_JVM_GarbageCollector_G1_Young_Generation_Count | Number of TaskManager young generation GCs (G1 garbage collector) | N/A | Count | Custom |
flink_taskmanager_Status_JVM_GarbageCollector_G1_Old_Generation_Count | Number of TaskManager old generation GCs (G1 garbage collector) | N/A | Count | Custom |
flink_taskmanager_Status_JVM_GarbageCollector_G1_Young_Generation_Time | TaskManager young generation GC time (G1 garbage collector) | N/A | ms | Custom |
flink_taskmanager_Status_JVM_GarbageCollector_G1_Old_Generation_Time | TaskManager old generation GC time (G1 garbage collector) | N/A | ms | Custom |
flink_taskmanager_Status_JVM_GarbageCollector_ConcurrentMarkSweep_Count | Number of collections performed by the TaskManager CMS garbage collector | N/A | Count | Basic |
flink_taskmanager_Status_JVM_GarbageCollector_ParNew_Time | Duration of each TaskManager GC | Long GCs occupy excessive memory space and affect job performance. This metric helps you diagnose jobs and troubleshoot task-level failures. | ms | Basic |
flink_taskmanager_Status_JVM_GarbageCollector_ConcurrentMarkSweep_Time | Time consumed by collections performed by the TaskManager CMS garbage collector | N/A | ms | Basic |
Class loading
| Metric | Description | Details | Unit | Type |
flink_taskmanager_Status_JVM_ClassLoader_ClassesLoaded | Total number of classes loaded after the JVM that hosts the TaskManager is created | If the total number of classes loaded after the JVM that hosts the TaskManager is created is too large, excessive memory space is occupied and job performance is affected. | N/A | Basic |
flink_taskmanager_Status_JVM_ClassLoader_ClassesUnloaded | Total number of classes unloaded after the JVM that hosts the TaskManager is created | If the total number of classes unloaded after the JVM that hosts the TaskManager is created is too large, excessive memory space is occupied and job performance is affected. | N/A | Basic |
Common metric labels
Flink metrics commonly carry the following labels. Use them to filter and aggregate metric data by project, deployment, or job.
| Label | Description |
vvpNamespace | The namespace of the project. |
deploymentName | The name of the deployment. |
deploymentId | The ID of the deployment. |
jobId | The ID of the job. |
References
The following topics cover related metric sets and metric management options.
To view the metrics of Application Monitoring in ARMS, see Application Monitoring metrics.