@@ -139,6 +139,7 @@ public static void instantiateStatusMetrics(MetricGroup metricGroup) {
139
139
instantiateMemoryMetrics (jvm .addGroup (METRIC_GROUP_MEMORY ));
140
140
instantiateThreadMetrics (jvm .addGroup ("Threads" ));
141
141
instantiateCPUMetrics (jvm .addGroup ("CPU" ));
142
+ instantiateFileDescriptorMetrics (jvm .addGroup ("FileDescriptor" ));
142
143
}
143
144
144
145
public static void instantiateFlinkMemoryMetricGroup (
@@ -338,6 +339,30 @@ static void instantiateMetaspaceMemoryMetrics(final MetricGroup parentMetricGrou
338
339
}
339
340
}
340
341
342
+ static void instantiateFileDescriptorMetrics (MetricGroup metrics ) {
343
+ try {
344
+ final com .sun .management .OperatingSystemMXBean mxBean =
345
+ (com .sun .management .OperatingSystemMXBean )
346
+ ManagementFactory .getOperatingSystemMXBean ();
347
+
348
+ if (mxBean instanceof com .sun .management .UnixOperatingSystemMXBean ) {
349
+ com .sun .management .UnixOperatingSystemMXBean unixMXBean =
350
+ (com .sun .management .UnixOperatingSystemMXBean ) mxBean ;
351
+ metrics .<Long , Gauge <Long >>gauge ("Max" , unixMXBean ::getMaxFileDescriptorCount );
352
+ metrics .<Long , Gauge <Long >>gauge ("Open" , unixMXBean ::getOpenFileDescriptorCount );
353
+
354
+ } else {
355
+ throw new UnsupportedOperationException (
356
+ "Can't find com.sun.management.UnixOperatingSystemMXBean in JVM." );
357
+ }
358
+ } catch (Exception e ) {
359
+ LOG .warn (
360
+ "Cannot access com.sun.management.UnixOperatingSystemMXBean.getOpenFileDescriptorCount()"
361
+ + " - FileDescriptor metrics will not be available." ,
362
+ e );
363
+ }
364
+ }
365
+
341
366
private static void instantiateMemoryUsageMetrics (
342
367
final MetricGroup metricGroup , final Supplier <MemoryUsage > memoryUsageSupplier ) {
343
368
metricGroup .<Long , Gauge <Long >>gauge (
0 commit comments