Posts tagged Monitoring

10 Strategies for Developing Reliable Jakarta EE Applications for the Cloud

What happens when an application designed for a small user base needs to be scaled up and moved to the cloud?

It needs to live in a distributed environment: responding to an appropriate number of concurrent user requests per second and ensuring users find the application reliable. 

Though Jakarta EE and Eclipse MicroProfile can help with reliable clustering, there is no standard API in Jakarta EE that defines how clustering should work currently. This might change in the future, but in the meantime, this gap must be filled by DevOps engineers.

In this blog, we will cover 10 technical strategies to deal with clustering challenges when developing Jakarta EE and MicroProfile for cloud environments.

Expose JMX Bean Values through MicroProfile Metrics

Payara Server provides many metrics within JMX beans. The most interesting metrics are the statistics around pools for HTTP threads and JDBC Connection pooling.

 

On the other hand, Payara Server also implements the MicroProfile Metrics specification. The retrieval of useful metrics from the running instance in the areas of CPU, memory, Class loading, and other MicroProfile specifications (like Fault Tolerance), are possible through the implementation of the MicroProfile Metrics in Payara Server.

Making Use of Payara Server’s JMX Monitoring Service – Part 1: Setting up the Service

(This is an update of this blog written in 2016: Making Use of Payara Server's Monitoring Service)

 

Payara Server has for a while now included a JMX Monitoring Service which can be used to log information from MBeans to the server log. Using the JMX Monitoring Service, you can monitor information about the JVM runtime such as heap memory usage and threading, as well as more detailed information about the running Payara Server instance. The information is logged as a series of key-value pairs prefixed with the string PAYARA-MONITORING:, making it easy to filter the output using tools such as Logstash or fluentd.

Monitoring Payara Server with JConsole

JConsole is a useful tool for monitoring Java processes. You can collect data from a Java process such as: heap memory usage, thread count, CPU usage, classes loaded and MBean data. This allows you to gauge whether any Java process is using too much system resources. This guide will show you how to monitor Payara as a local process (on the same machine), or a remote process. This blog will assume that you've got a valid JDK and Payara install.

Monitoring JMX Using the Notification Service

Previously in GlassFish and Payara Server, if you wanted to monitor the status of your application's MBeans, you would have to rely mostly on external programs to capture the data. In Payara Server 174, we integrated the JMX Monitoring service with our existing notification service, meaning that you can now remotely receive monitoring data via any of our notifiers, from email to Slack.