27
Tanuki Service Wrapper 101 JVM Verwaltung mit der Community Edition Alexander Pacnik Karlsruhe, 05.04.2013

Tanuki service wrapper_101

Embed Size (px)

Citation preview

Page 1: Tanuki service wrapper_101

Tanuki Service Wrapper 101

JVM Verwaltung mit der Community Edition

Alexander Pacnik Karlsruhe, 05.04.2013

Page 2: Tanuki service wrapper_101

2

Agenda ... worum es in diesem Vortrag geht.

Integration Konfiguration Betrieb Überwachung

Page 3: Tanuki service wrapper_101

3

Funktionen der Community Edition

‣  Verwaltung als Dienst

‣  Verwaltung der JVM (Start, Stop, Thread Dump)

‣  Überwachung der JVM (Logging, JVM freeze / crash Detection)

‣  Zentrale Konfiguration der JVM, Container und Applikationen

‣  Plattformunabhänige Verwaltung (Linux, Windows, OSX, ...)

Einleitung ... was kann der Java Service Wrapper?

Page 4: Tanuki service wrapper_101

4

Wesentliche Bestandteile

‣  bin/wrapper (System Applikation)

‣  lib/libwrapper.so (Library)

‣  lib/wrapper.jar (Java Applikation)

‣  src/bin/sh.script.in (Vorlage für control)

‣  src/conf/wrapper.conf.in

(Vorlage für wrapper.conf)

Einleitung ... die Bestandteile des Java Service Wrapper

Page 5: Tanuki service wrapper_101

5

Unterscheidung zwischen Base und Home

‣  Base Verzeichnis Konfiguration und Daten

‣  Home Verzeichnis Applikation

Einleitung ... Base vs. Home?

Page 6: Tanuki service wrapper_101

http://wrapper.tanukisoftware.com/doc/german/integrate.html 6

Integrationsarten ... wie kann der Java Service Wrapper verwendet werden?

Integration Konfiguration Betrieb Überwachung

Page 7: Tanuki service wrapper_101

7

Integrationsarten

‣  wrapperJarApp (beispielsweise Winstone)

‣  wrapperSimpleApp (beispielsweise JBoss AS)

‣  wrapperStartStopApp (beispielsweise Apache Tomcat)

‣  WrapperListener (Integration in die Software)

Integrationsarten ... wie kann der Java Service Wrapper verwendet werden?

Page 8: Tanuki service wrapper_101

8

Funktionsweise ‣  Start der ausführbaren JAR Applikation

‣  Stop der Applikation über System.exit() in der JVM

Verzeichnisstruktur

Integrationsarten ... wrapperJarApp am Beispiel Winstone & Jenkins

Page 9: Tanuki service wrapper_101

9

Konfiguration (wrapper.conf) ‣  wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperJarApp

‣  wrapper.java.classpath.1=lib/wrapper/wrapper.jar

‣  wrapper.app.parameter.<n> – Kommandozeilenparameter

Beispiel

Integrationsarten ... wrapperJarApp am Beispiel Winstone & Jenkins

Page 10: Tanuki service wrapper_101

10

Funktionsweise (empfohlen wenn möglich) ‣  Start der Applikation über deren Start-Klasse mit dem Wrapper

‣  Stop der Applikation über System.exit() in der JVM

Verzeichnisstruktur

Integrationsarten ... wrapperSimpleApp am Beispiel JBoss AS & Jenkins

Page 11: Tanuki service wrapper_101

11

Konfiguration (wrapper.conf) ‣  wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp

‣  wrapper.java.classpath.1=lib/wrapper/wrapper.jar

‣  wrapper.java.classpath.2=/usr/local/jboss-server/5.1.0/bin/run.jar

‣  wraper.app.parameter.1=<Main Class>

Beispiel

Integrationsarten ... wrapperSimpleApp am Beispiel JBoss AS & Jenkins

Page 12: Tanuki service wrapper_101

12

Funktionsweise ‣  Start der Applikation über deren Start-Klasse mit dem Wrapper

‣  Stop der Applikation über deren Stop-Klasse mit dem Wrapper

Verzeichnisstruktur

Integrationsarten ... wrapperStartStopApp am Beispiel Apache Tomcat & Jenkins

Page 13: Tanuki service wrapper_101

13

Konfiguration (wrapper.conf) wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperStartStopApp

wrapper.java.classpath.1=lib/wrapper/wrapper.jar

wrapper.java.classpath.2=/usr/local/apache-tomcat/6.0.35/bin/bootstrap.jar

Beispiel

Integrationsarten ... wrapperStartStopApp am Beispiel Apache Tomcat & Jenkins

Page 14: Tanuki service wrapper_101

http://wrapper.tanukisoftware.com/doc/german/properties.html 14

Konfiguration ... wichtige Konfigurationsmöglichkeiten.

Integration Konfiguration Betrieb Überwachung

Page 15: Tanuki service wrapper_101

15

Properties

‣  # Lücken in der Nummerierung der Properties zulassen

‣  wrapper.ignore_sequence_gaps=TRUE

‣  # Nicht starten wenn die PID bereits vorhanden ist

‣  wrapper.pidfile.strict=TRUE

‣  # das Basisverzeichnis welches für relative Pfade verwendet wird

‣  wrapper.working.dir=<path>

Konfiguration ... General Properties

Page 16: Tanuki service wrapper_101

16

Properties

‣  wrapper.java.command Pfad zum Java Binary

‣  wrapper.java.mainclass Wrapper Startklasse z.B. WrapperJarApp

‣  wrapper.java.classpath Java Class-Pfad (z.B. wrapper.jar)

‣  wrapper.java.library.path Java Library-Pfad (z.B. libwrapper.so)

‣  wrapper.java.additional.<n> Zusätzliche JVM Parameter

‣  wrapper.java.initmemory Initiale Java Heap Größe(in MB)

‣  wrapper.java.maxmemory Maximale Java Heap Größe(in MB)

Konfiguration ... JAVA Properties

Page 17: Tanuki service wrapper_101

17

Properties

‣  wrapper.debug=FALSE Debugging aus

‣  wrapper.logfile=logs/wrapper.log Pfad zum Logfile

‣  wrapper.logfile.loglevel=INFO Loglevel

‣  wrapper.logfile.rollmode=SIZE Rotationskriterium

‣  wrapper.logfile.maxsize=10M Größe bei der rotiert wird

‣  wrapper.logfile.maxfiles=5 Anzahl der Logfiles

‣  wrapper.syslog.loglevel=NONE Nach Syslog schreiben

Konfiguration ... Logging Properties

Page 18: Tanuki service wrapper_101

http://wrapper.tanukisoftware.com/doc/german/properties.html 18

Ping

‣  wrapper.ping.interval=5 alle 5s wird die JVM auf Reaktion prüfen

‣  wrapper.ping.timeout=30 nach 30s ohne Reaktion Restart auslösen

Bemerkung ‣  Unter hoher Last kann es u. Umständen sinnvoll sein diese Zeiten anzupassen,

da der Wrapper ggf. fälschlicherweise ein „JVM Hung“ erkennt und einen Restart der JVM auslöst. Timeout=0 deaktiviert die Detection vollständig. Dies sollte nur in Ausnahmefällen notwendig sein.

Konfiguration ... Ping Properties

Page 19: Tanuki service wrapper_101

http://wrapper.tanukisoftware.com/doc/german/launch.html 19

Betrieb ... wie der Java Service Wrapper verwendet wird.

Integration Konfiguration Betrieb Überwachung

Page 20: Tanuki service wrapper_101

20

Optionen ‣  console In der aktuellen Shell starten

‣  start Als Daemon starten

‣  stop Daemon oder Shell Ausführung beenden

‣  restart Falls der Prozess läuft stoppen und dann starten

‣  condrestart Nur durchstarten wenn er schon läuft

‣  status Prozess Status abfragen

‣  install Als Dienst einrichten, der beim Systemstart gestartet wird

‣  remove Dienst wieder deinstallieren

‣  dump Java Thread Dump anlegen, falls der Dienst läuft

Betrieb ... Möglichkeiten des Control Skripts

Page 21: Tanuki service wrapper_101

21

Konfiguration ‣  INSTANCE_PATH= Pfad zur Instanz

‣  APP_NAME= Name für das Init Skript

‣  APP_LONG_NAME= Beschreibung

‣  WRAPPER_CMD=wrapper Pfad zum Wrapper Binary

‣  WRAPPER_LIB=lib/wrapper Pfad zu Wrapper Library

‣  WRAPPER_CONF=wrapper.conf Pfad zur Wrapper Konfiguration

‣  PRIORITY= Nice-Level des Prozesses

‣  PIDDDIR= Pfad zurm PID-File

‣  RUN_AS_USER= Benutzer des Prozesses

Betrieb ... Konfigurationen innerhalb des Control-Skripts

Page 22: Tanuki service wrapper_101

http://wrapper.tanukisoftware.com/doc/german/jmx.html 22

Agenda ... JMX und JVM.

Integration Konfiguration Betrieb Überwachung

Page 23: Tanuki service wrapper_101

23

JMX ‣  stop, restart und thread dump können über JMX angesteuert werden Sinnvolle JVM Optionen ‣  -showversion Schreibt die JVM Version in das wrapper.log

‣  -XX:+PrintCommandLineFlags Schreibt die JVM Parameter in das wrapper.log

‣  -XX:+PrintGCDetails GC Logging aktivieren

‣  -XX:+PrintGCTimeStamps Log-Einträge um Zeitstempel ergänzen

‣  -XX:+PrintGCDateStamps Log-Einträge um Datumsstempel ergänzen

‣  -Xloggc:/path/to/jvm-gc.log Pfad zum GC Log

Überwachung ... Möglichkeiten der Community Edition

Page 24: Tanuki service wrapper_101

24

jmxquery ‣  java -cp jmxquery.jar jmxquery.JMXQuery \

-U service:jmx:rmi:///jndi/rmi://localhost:50000/jmxrmi \

-O "java.lang:type=MemoryPool,name=PS Perm Gen" \

-A Usage -K used -I Usage \

-username <user> -password <password>

Überwachung ... am Beispiel jmxquery

Page 25: Tanuki service wrapper_101

25

Vielen Dank für Ihre Aufmerksamkeit

Kontakt Alexander Pacnik Systems Engineering inovex GmbH Office Karlsruhe Zur Gießerei 16 76227 Karlsruhe +49 (0)173 3181 040 [email protected]

Page 26: Tanuki service wrapper_101

Anhang

Page 27: Tanuki service wrapper_101

27

Lizenz des Vortrags ‣  Creative Commons (by-nc-nd)

Software ‣  http://wrapper.tanukisoftware.com/download/3.5.17/wrapper-delta-pack-3.5.17.zip

‣  http://mirrors.jenkins-ci.org/war/1.508/jenkins.war

‣  http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.36/bin/apache-tomcat-6.0.36.zip

‣  http://sourceforge.net/projects/jboss/files/JBoss/JBoss-5.1.0.GA/jboss-5.1.0.GA.zip/download

‣  http://jmxquery.googlecode.com/files/jmxquery-1.3-bin.zip

Quellen ‣  http://wrapper.tanukisoftware.com

Anhang