== Camel Splunk example

=== Introduction

An example which shows how to integrate Camel with Splunk.

This example requires that an Splunk Server is up and running. (For this
example, sample data provide by Splunk was used. Steps for loading this
data into splunk are documented http://docs.splunk.com/Documentation/Splunk/latest/SearchTutorial/GetthetutorialdataintoSplunk[here])

This project consists of the following examples:

* Random search query on
Splunk
* Saved search query on Splunk
* Publish an event to Splunk

=== Build

You will need to compile this example first:

----
$ mvn compile
----

=== Run

To run the random search client you type:

----
$ mvn compile exec:java -Psearch-client
----

… and response data will be printed on the console.

To run the saved search client you type:

----
$ mvn compile exec:java -Psaved-search-client
----

… and response data will be printed on the console.

To run the saved search client you type:

----
$ mvn compile exec:java -Ppublish-event-client
----

… and logs will be printed on the console.

=== Configuration

You can configure the details of the Splunk server in the file:
`+src/main/resources/application.properties+`

You can enable verbose logging by adjusting the
`+src/main/resources/log4j.properties+` file as documented in the file.

=== Help and contributions

If you hit any problem using Camel or have some feedback, then please
https://camel.apache.org/community/support/[let us know].

We also love contributors, so
https://camel.apache.org/community/contributing/[get involved] :-)

The Camel riders!
