/** * Shutdown the JvmMetrics singleton. This is not necessary if the JVM itself * is shutdown, but may be necessary for scenarios where JvmMetrics instance * needs to be re-created while the JVM is still around. One such scenario * is unit-testing. */ public static void shutdownSingleton() { Singleton.INSTANCE.shutdown(); }
public static JvmMetrics initSingleton(String processName, String sessionId) { return Singleton.INSTANCE.init(processName, sessionId); }
public static JvmMetrics create(String processName, String sessionId, MetricsSystem ms) { return ms.register(JvmMetrics.name(), JvmMetrics.description(), new JvmMetrics(processName, sessionId)); }
synchronized void init(String name) { if (inited) { return; } inited = true; DefaultMetricsSystem.initialize(HBASE_METRICS_SYSTEM_NAME); JvmMetrics.initSingleton(name, ""); // initialize hbase-metrics module based metric system as well. GlobalMetricRegistriesSource // initialization depends on the metric system being already initialized, that is why we are // doing it here. Once BaseSourceSourceImpl is removed, we should do the initialization of // these elsewhere. GlobalMetricRegistriesAdapter.init(); } }
synchronized JvmMetrics init(String processName, String sessionId) { if (impl == null) { impl = create(processName, sessionId, DefaultMetricsSystem.instance()); } return impl; }
@Override public void getMetrics(MetricsCollector collector, boolean all) { MetricsRecordBuilder rb = collector.addRecord(JvmMetrics) .setContext("jvm").tag(ProcessName, processName) .tag(SessionId, sessionId); getMemoryUsage(rb); getGcUsage(rb); getThreadUsage(rb); getEventCounters(rb); }
public static void reattach(MetricsSystem ms, JvmMetrics jvmMetrics) { ms.register(JvmMetrics.name(), JvmMetrics.description(), jvmMetrics); }
pauseMonitor.init(conf); pauseMonitor.start(); metrics.getJvmMetrics().setPauseMonitor(pauseMonitor);
@Override public String toString() { return new StringJoiner(", ", this.getClass().getSimpleName() + "{", "}") .add("name=" + name()) .add("description=" + desc) .toString(); } }
private void getGcUsage(MetricsRecordBuilder rb) { long count = 0; long timeMillis = 0; for (GarbageCollectorMXBean gcBean : gcBeans) { long c = gcBean.getCollectionCount(); long t = gcBean.getCollectionTime(); MetricsInfo[] gcInfo = getGcInfo(gcBean.getName()); rb.addCounter(gcInfo[0], c).addCounter(gcInfo[1], t); count += c; timeMillis += t; } rb.addCounter(GcCount, count) .addCounter(GcTimeMillis, timeMillis); if (pauseMonitor != null) { rb.addCounter(GcNumWarnThresholdExceeded, pauseMonitor.getNumGcWarnThresholdExceeded()); rb.addCounter(GcNumInfoThresholdExceeded, pauseMonitor.getNumGcInfoThresholdExceeded()); rb.addCounter(GcTotalExtraSleepTime, pauseMonitor.getTotalGcExtraSleepTime()); } if (gcTimeMonitor != null) { rb.addGauge(GcTimePercentage, gcTimeMonitor.getLatestGcData().getGcTimePercentage()); } }
private void getMemoryUsage(MetricsRecordBuilder rb) { MemoryUsage memNonHeap = memoryMXBean.getNonHeapMemoryUsage(); MemoryUsage memHeap = memoryMXBean.getHeapMemoryUsage(); Runtime runtime = Runtime.getRuntime(); rb.addGauge(MemNonHeapUsedM, memNonHeap.getUsed() / M) .addGauge(MemNonHeapCommittedM, memNonHeap.getCommitted() / M) .addGauge(MemNonHeapMaxM, calculateMaxMemoryUsage(memNonHeap)) .addGauge(MemHeapUsedM, memHeap.getUsed() / M) .addGauge(MemHeapCommittedM, memHeap.getCommitted() / M) .addGauge(MemHeapMaxM, calculateMaxMemoryUsage(memHeap)) .addGauge(MemMaxM, runtime.maxMemory() / M); }
@Override protected void serviceStart() throws Exception { DefaultMetricsSystem.initialize("JobHistoryServer"); JvmMetrics.initSingleton("JobHistoryServer", null); super.serviceStart(); deleteLogManager = new Thread(new deleteLogMonitor()); deleteLogManager.setName("Log-delete-monitor"); deleteLogManager.setDaemon(true); deleteLogManager.start(); }
public static DataNodeMetrics create(Configuration conf, String dnName) { String sessionId = conf.get(DFSConfigKeys.DFS_METRICS_SESSION_ID_KEY); MetricsSystem ms = DefaultMetricsSystem.instance(); JvmMetrics jm = JvmMetrics.create("DataNode", sessionId, ms); String name = "DataNodeActivity-"+ (dnName.isEmpty() ? "UndefinedDataNodeName"+ ThreadLocalRandom.current().nextInt() : dnName.replace(':', '-')); // Percentile measurement is off by default, by watching no intervals int[] intervals = conf.getInts(DFSConfigKeys.DFS_METRICS_PERCENTILES_INTERVALS_KEY); return ms.register(name, null, new DataNodeMetrics(name, sessionId, intervals, jm)); }
@VisibleForTesting public synchronized void registerIfNeeded(){ // during tests impl might exist, but is not registered MetricsSystem ms = DefaultMetricsSystem.instance(); if (ms.getSource("JvmMetrics") == null) { ms.register(JvmMetrics.name(), JvmMetrics.description(), this); } }
synchronized void shutdown() { DefaultMetricsSystem.instance().unregisterSource(JvmMetrics.name()); impl = null; } }
private GlobalMetricRegistriesAdapter() { DefaultMetricsSystem.initialize("Phoenix"); JvmMetrics.initSingleton("Phoenix", ""); }
public static NameNodeMetrics create(Configuration conf, NamenodeRole r) { String sessionId = conf.get(DFSConfigKeys.DFS_METRICS_SESSION_ID_KEY); String processName = r.toString(); MetricsSystem ms = DefaultMetricsSystem.instance(); JvmMetrics jm = JvmMetrics.create(processName, sessionId, ms); // Percentile measurement is off by default, by watching no intervals int[] intervals = conf.getInts(DFSConfigKeys.DFS_METRICS_PERCENTILES_INTERVALS_KEY); return ms.register(new NameNodeMetrics(processName, sessionId, intervals, jm)); }
JvmMetrics.create("JournalNode", conf.get(DFSConfigKeys.DFS_METRICS_SESSION_ID_KEY), DefaultMetricsSystem.instance());
JvmMetrics.create("SecondaryNameNode", conf.get(DFSConfigKeys.DFS_METRICS_SESSION_ID_KEY), DefaultMetricsSystem.instance());