Что такое 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
Другие вопросы по тегам