Remote debugging of Java applications from an IDE can be essential when debugging difficult issues. There is no reason to give this functionality up just because you are deploying to a container in Cloud Foundry.
In this article we’ll go over how to enable remote debugging from a local Eclipse IDE to a public CF provider like Pivotal CloudFoundry.
Continue reading “CloudFoundry: Enabling Java remote debugging with Eclipse”
The Spring framework provides a proven and well documented model for the development of custom projects and services. The Spring Boot project takes an opinionated view of building production Spring applications, which favors convention over configuration.
In this article we will explore how to configure a Spring Boot project to use the Simple Logging Facade for Java (SLF4J) with a Logback backend to send log events to the console, filesystem, and syslog.
Continue reading “Spring: Spring Boot with SLF4J/Logback sending to syslog”
Once you have a Squid proxy setup as described in my article here, the next challenge is configuring your Ubuntu servers so that they use this proxy by default instead of attempting direct internet connections.
There are several entities we want using Squid by default: apt package manager, interactive consoles and wget/curl, and Java applications.
Continue reading “Squid: Configuring an Ubuntu host to use a Squid proxy for internet access”
Java JMX (Java Management Extensions) is a standardized way of monitoring Java based applications. The managed resources (MBeans) are defined and exposed by the JVM, application server, and application – and offer a view into these layers that can provide invaluable monitoring data.
But in order to report back the JMX data you must know the fully expanded path of the MBean and it’s available attributes/operations. If you are on a desktop, tools like jsonsole provide a nice GUI interface for drilling down into the MBean hierarchy. But, if you are in a server environment and JMX is not enabled for remote access on a desktop, you may need a console alternative.
An open-source project call jmxterm comes packaged as a single uber jar that makes it easy to enumerate and explore the available MBean exposed in a Java based application.
Continue reading “Monitoring: Java JMX exploration from the console using jmxterm”
As an exploration of AppDynamics’ APM functionality, you may find it useful to deploy a sample application that can quickly return back useful data. The Java Spring PetClinic connecting back to a PostgreSQL database provides a simple code base that exercises both database and application monitoring.
In a previous article, I went over the detailed steps for monitoring PetClinic with a MySQL backend, so I will refer back to that article for some of the details and will focus on the PostgreSQL specific steps here.
Continue reading “AppDynamics: Java Spring PetClinic and PostgreSQL configured for monitoring”
As an exploration of AppDynamics’ APM functionality, you may find it useful to deploy a sample application that can quickly return back useful data. The Java Spring PetClinic connecting back to a MySQL database provides a simple code base that exercises both database and application monitoring.
We’ll deploy the Java Spring PetClinic unto Tomcat running on Ubuntu 14.04. MySQL will be the backing persistence engine for the web application. The AppDynamics Java agent will be loaded into the JVM running Tomcat, and the AppDynamics Database Agent will connect to MySQL for metrics gathering.
Continue reading “AppDynamics: Java Spring PetClinic and MySQL configured for monitoring”
Decompiling Java classes is sometimes associated with dubious behavior around proprietary and licensed software, but in reality there are many valid reasons why one may find it necessary to dig into Java class files and jar/war archives. It can be as simple as your development team no longer having the 2 year old version of the code deployed in production.
We’ll go over a couple of ways to decompile Java classes on an Ubuntu desktop.
Continue reading “Ubuntu: Decompiling Java classes on Ubuntu using Eclipse and JD-GUI”
SLF4J, the Simple Logging Facade for Java, is a popular front for various logging backends, one of the being Logback. With the advent of containerization, using syslog to send data to remote logging infrastructure has become a popular transport method.
Enable Syslog Input
The first step is to enable the receipt of syslog messages. This could be any server listening for syslog messages. You can follow my previous article on configuring an Ubuntu server to receive RFC5424 compatible messages or you can configure a syslog input in Logstash.
Continue reading “Syslog: Sending Java SLF4J/Logback to Syslog”
Logging has always been a critical part of application development. But the rise of OS virtualization, applications containers, and cloud-scale logging solutions has turned logging into something bigger that managing local debug files.
Modern applications and services are now expected to feed log aggregation and analysis stacks (ELK, Graylog, Loggly, Splunk, etc). This can be done a multitude of ways, in this post I want to focus on modifying log4j2 so that it sends directly to an rsyslog server.
Even though we focus on sending to an Ubuntu ryslog server in this post, this could be any entity listening for syslog traffic, such as Logstash.
Continue reading “Syslog: Sending Java log4j2 to rsyslog on Ubuntu”
In the world of microservices and containers, it is often desirable to keep settings such as those found in dfc.properties outside of the jar or war so that the deployment binary is the same no matter which environment it is deployed into.
The settings in dfc.properties can be externalized by specifying the location of dfc.properties in a JVM system property such as: