Chcę utworzyć watchdog nagios dla JVM, który wygląda, gdy JVM kończy się pamięć i uruchamia ponownie.Jak zrestartować JVM, gdy zabraknie mu pamięci przy użyciu monitorowania JMX?
Obecnie mogłem skonfigurować JVM, aby umożliwić JMX, ale nie wiem, jak wykryć warunek OutOfMemory i uruchom go ponownie.
/check_jmx -U service:jmx:rmi:///jndi/rmi://127.0.0.1:1100/jmxrmi -O "java.lang:type=Memory" -A "HeapMemoryUsage" -K used -I HeapMemoryUsage -J used -vvvv
JMX OK HeapMemoryUsage.used=957414288{committed=2415984640;init=2147483648;max=2863333376;used=957414288}
https://github.com/tcurdt/nagios-check-jmx
Niestety, standardowy jdk ma _nie_ możliwość wykrycia, że jvm trafił OOM. przeżyłem to sam w naszym produkcie. w końcu zainstalowałem program obsługi rejestrowania, który sprawdza LogRecords, które zawierają OOME. działa tak długo, jak żaden kod nie połknie błędu bez zgłoszenia go. – jtahlborn
Znalazłem obiecujące API za pośrednictwem interfejsu API java tooling, ale doszedłem do wniosku, że każde rozwiązanie wymagałoby implementacji natywnego kodu w narzędziu narzędziowym, co było dla nas "nie do przyjęcia". – jtahlborn