Что такое OID SNMP для подсчета количества потоков в jvm?
Мне нужно получить значение для счетчика потоков jvm, используя OID, чтобы график можно было нарисовать с помощью cacti. Я много искал, но нашел только после OID 1.3.6.1.4.1.42.2.145.3.163.1.1.3.10.1.4. Когда я пытаюсь snmpwalk, он возвращает sub OID со значениями Counter64. Выше OID представляет
Общее количество блокировок этой веткой для входа или повторного входа в монитор.
Когда я snmpwalk выше, он возвращает значения для каждого потока и его заблокированное значение. Но я хочу подсчитать все потоки, которые были заблокированы в указанное время. Любая помощь будет оценена.
1 ответ
Просто нет такого счетчика.
Все доступные идентификаторы JVM перечислены здесь.
Ближайшие метрики JVM, которые вас могут заинтересовать: sun.rt._sync_ContendedLockAttempts
счетчик.
Вот как получить его из Java:
import sun.management.ManagementFactoryHelper;
import sun.management.counter.Counter;
import java.util.NoSuchElementException;
public class Test {
public static void main(String[] args) {
System.out.println(getContendedLockAttempts());
}
private static long getContendedLockAttempts() {
for (Counter counter : ManagementFactoryHelper.getHotspotRuntimeMBean().getInternalRuntimeCounters()) {
if ("sun.rt._sync_ContendedLockAttempts".equals(counter.getName())) {
return (long) counter.getValue();
}
}
throw new NoSuchElementException();
}
}
Или из командной строки:
jcmd {PID} PerfCounter.print | grep sun.rt._sync_ContendedLockAttempts