Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin
Wiki Markup
{scrollbar}

Anchor
top
top

5.1. Troubleshooting, Debugging, Profiling, and

...

Troubleshooting

Monitoring

Troubleshooting

Logging

Logging is easy to control through the console, with commands grouped under log shell. To learn about the available logging commands type:

Code Block

karaf@root> log<tab>

log:display              log:display-exception    log:get                  log:set
karaf@root>

Typical usage is:

  1. Use log:set to dynamically change the global log level
  2. Execute the problematic operation
  3. Use log:display (or log:display-exception to display the log

Worst Case Scenario

If you end up with a ServiceMix kernel Karaf in a really bad state (i.e. you can not boot it anymore) or you just want to revert to a clean state quickly, you can safely remove the data directory just in the installation directory. This folder contains transient data and will be recreated if you remove it and relaunch the KernelKaraf.
You may also want to remove the files in the deploy folder to avoid them being automatically installed when the Kernel Karaf is started the first time.

Debugging

Usually, the easiest way to debug ServiceMix Kernel Karaf or any application deployed onto it is to use remote debugging.
Remote debugging can be easily activated by setting the SERVICEMIXKARAF_DEBUG environment variable to TRUE.

This can be done using the following command on Unix systems:

No Format
export SERVICEMIXKARAF_DEBUG=true

On Windows, use the following command

No Format
set SERVICEMIXKARAF_DEBUG=true

Then, you can launch ServiceMix runtime Karaf using the usual way:

No Format
bin/servicemixkaraf

or

No Format
bin\servicemixkaraf.bat

Last, inside your IDE, connect to the remote application (the default port to connect to is 5005).

This option works fine when we have to debug a project deployed top of Apache Karaf. Nervertheless, you will be blocked if you would like to debug the server Karaf. In this case, you can change the following parameter suspend=y in the karaf.bat script file. That will cause the JVM to pause just before running main() until you attach a debugger then it will resume the execution. This way you can set
your breakpoints anywhere in the code and you should hit them no matter how early in the startup they are

Code Block

export DEFAULT_JAVA_DEBUG_OPTS='-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005'

and on Windows,

Code Block

set DEFAULT_JAVA_DEBUG_OPTS='-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005'

#top

Profiling

YourKit

You need a few steps to be able to profile ServiceMix Runtime Karaf using YourKit.
The first one is to edit the etc/config.properties configuration file and add the following property:

...

No Format
set JAVA_OPTS='-Xmx512M -agentlib:yjpagent'

Run ServiceMix Karaf from the console, and you should now be able to connect using YourKit standalone or from your favorite IDE.

Monitoring

Karaf uses JMX for monitoring and management of all Karaf components.

The JMX connection could be:

  • local using the process id

Image Added

  • remote using the rmiRegistryPort property defined in etc/org.apache.karaf.management.cfg file.

Using JMX, you can have a clean overview of the running Karaf instance:

  • A overview with graphics displaying the load in terms of thread, heap/GC, etc:

Image Added

  • A thread overview:

Image Added

  • A memory heap consumption, including "Perform GC" button:

Image Added

  • A complete JVM summary, with all number of threads, etc:

Image Added

You can manage Karaf features like you are in the shell. For example, you have access to the Admin service MBean, allowing you to create, rename, destroy, change SSH port, etc Karaf instances:

Image Added

You can also manage Karaf features MBean to list, install, uninstall Karaf features:

Image Added

#top

Wiki Markup
{scrollbar}