I was searching for open to public Jenkins instances to see how other people use Jenkins. I came across Elasticsearch's Jenkins site and I was pleasantly surprised. Elasticsearch is a json document storage application. There is a Jenkins plug-in that directly inputs data to Elasticsearch.
I implemented this proof of concept to perform Jenkins analytics with Elasticsearch as the document store and Kibana as the analytics engine. I automated the installation part using Docker. There are better ways to automate this. The steps given below do not require any knowledge of Docker.
Docker client installed on a running Ubuntu Vagrant box
Step 1: Create the docker containersExecute the following docker commands to create the Docker containers needed for each of the apps.
#Create Elasticsearch container
docker run --name elasticsearch --hostname elasticsearch -p 9200:9200 -p 9300:9300 -d elasticsearch
#Create Jenkins container
docker run -p 8080:8080 -p 50000:50000 -v $HOME/jenkins_home:/var/jenkins_home --link elasticsearch:es --name jenkins -d jenkins
#Create Kibana container
docker run -e ELASTICSEARCH_URL=http://elasticsearch:9200 -p 5601:5601 --link elasticsearch:es --name kibana -d kibana
Step 2: Port forwarding from VirtualBox to host
Expose the following ports between the host computer and the virtual machine. Optionally, you may choose to add this to the Vagrantfile so that the port forwarding is automatically set whenever the Vagrantbox is started.
Step 3: Install the Jenkins Logstash plug-in
Click on Manage Jenkins and Manage Plug-ins
Step 4: Configure Jenkins to push data to Elasticsearch
Open http://localhost:8080/configure from a browser on the host computer. Look for the 'Logstash Plugin' section and fill out the following details.
Indexer type: ELASTICSEARCH
Host name: http://localhost
Step 5: Create a Jenkins job and configure
Create a new jenkins job.
Check 'Send the console log to Logstash'.
Add a build step 'Execute shell'.
Step 6: Run Jenkins job
Run the job and see the console log.
Step 7: Verify data is getting to Elasticsearch
Open http://localhost:9200/logstash/_search?pretty in a browser and search for the jobname in the json.
Step 8: Get started with Kibana
I am still trying to figure out Kibana. Check out the visualize section and try to create a graph. I'll post that on another blogpost.
Open 'http://localhost:5601' in a browser and try it out.