Graylog with Spring Boot: Open source log and event analysis
May 4th, 2016
Spring Boot application that sets up a self-contained Graylog instance for event archival and analysis.
Grails 2 has a plugin for Apache Camel called Routing but that plugin hasn’t been upgraded to Grails 3 yet. Luckily, Grails 3 is just Spring Boot so we can use the Camel Spring Boot component… with some caveats.
After you add the Camel component and a domain object or two, and do a grails run-app
you will see something like this:
Field error in object 'Foo' on field 'version': rejected value [2.15.5]; codes [Foo.version.typeMismatch.error,Foo.version.typeMismatch,foo.version.typeMismatch.error,foo.version.typeMismatch,typeMismatch.Foo.version,typeMismatch.version,typeMismatch.java.lang.Long,typeMismatch]; arguments [version]; default message [Unable to parse number [2.15.5]
… and I was using Camel 2.15.5 in my project. Oh no… well it seems that Camel uses version
in it’s Exchange metadata and it sees version
in the domain objects and just inserts it’s version number there. No cool. To stop this, you need to add the following to your Grails 3 config:
grails:
gorm:
autowire: false
This will disable injecting beans into your domain classes… this is not something I do very often so I’m fine with it, but your use cases may vary.
After this, it’s pretty easy. I create a service with grails create-service Route
then put the following in:
import org.apache.camel.builder.RouteBuilder;
public class RouteService extends RouteBuilder {
@Override
public void configure() throws Exception {
from("timer://foo?delay=1").to("log:bar?level=ERROR");
}
}
And when you now run grails run-app
you see that the route is running because you see these log messages.
ERROR bar - Exchange[ExchangePattern: InOnly, BodyType: null, Body: [Body is null]]
ERROR bar - Exchange[ExchangePattern: InOnly, BodyType: null, Body: [Body is null]]
ERROR bar - Exchange[ExchangePattern: InOnly, BodyType: null, Body: [Body is null]]
ERROR bar - Exchange[ExchangePattern: InOnly, BodyType: null, Body: [Body is null]]
Spring Boot application that sets up a self-contained Graylog instance for event archival and analysis.
To resolve compilation warnings when using Codenarc 0.19+, look at the enhanced rules.
Something changed in Grails 3 and how datasources are configured. This post will explain what you need to do.
Mike has almost 20 years of experience in technology. He started in networking and Unix administration, and grew into technical support and QA testing. But he has always done some development on the side and decided a few years ago to pursue it full-time. His history of working with users gives Mike a unique perspective on writing software.