If you’re looking to roll out a scalable Graphite setup, I suggest you take a look at Jos Boumans How To Measure Everything video from Surge 2014.   Even if you’re not monitoring thousands of servers, it’s full of useful tips that will help you down the road.


I create a lot of CentOS virtual machines for testing purposes. I have one master template VM that I clone instead of reinstalling from scratch all the time.   Generally the VMs are configured to use dhcp.  Not a big deal, except that it means logging in to them using the VirtualBox or Vmware console to get the IP address.    To get a round this, I added this to my template VM’s /etc/rc.local file.

/bin/cat /etc/centos-release > /etc/issue
/bin/echo 'Kernel \r on an \m' >> /etc/issue
/bin/echo -n 'IP: ' >> /etc/issue
/sbin/ip addr show dev eth0 | awk '/inet / { print $2 }' >> /etc/issue

This code creates a new /etc/issue file every time the VM boots that includes some basic information, including the VM’s IP address.

For the record, I haven’t tried this in Debian/Ubuntu.

I recently decided to start playing with smokeping, in particular a master/slave setup.

I started by keeping it simple, two Ubuntu 14.04 virtual machines on the same network. I decided to use Ubuntu because it already has smokeping packages and more importantly I had the ISO image handy.

I started by reading the documentation on the Smokeping home page and dove in.  Setting up the master went smoothly.   OK, technically there was nothing to do but install the smokeping package, but hey, baby steps.

Next came setting up the slave.

I installed smokeping on the second vm that was to act as the slave.  I updated the slave’s default/smokeping file and created the secret file on the slave. I then updated the target entries on the master to expect the slave.

When I started the smokeping on the slave I was quickly presented with the following errors:

WARNING: Opening secrets file /etc/smokeping/smokeping_secrets: Permission denied

ERROR: we did not get config from the master. Maybe we are not configured as a slave for any of the targets on the master ?

I must have wasted two hours on this.   I kept looking at the configuration files on the slave for problems, after all it was reporting the error.

I ended up running tcpdump on the slave to see exactly what the master and slave were saying to each other.
Here is what I saw:


POST /smokeping/smokeping.cgi HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
User-Agent: smokeping-slave/1.0
Content-Length: 366
Content-Type: multipart/form-data; boundary=xYzZY

Content-Disposition: form-data; name=”slave”

Content-Disposition: form-data; name=”key”

Content-Disposition: form-data; name=”protocol”

Content-Disposition: form-data; name=”data”

Content-Disposition: form-data; name=”config_time”

HTTP/1.1 200 OK
Date: Tue, 14 Apr 2015 17:38:07 GMT
Server: Apache/2.4.7 (Ubuntu)
Vary: Accept-Encoding
Connection: close
Transfer-Encoding: chunked
Content-Type: text/plain

WARNING: Opening secrets file /etc/smokeping/smokeping_secrets: Permission denied


So, it wasn’t the slave that could not open file, it was apache on the master!  Why couldn’t the error message say that?!

A quick chgrp www-data /etc/smokeping/smokeping_secrets fixed the problem right away.

Now the slave reports “Sent data to Server and got new config in response.” when it starts.  Yea!

Short post.

To install cpanminus on a CentOS 6 server, I ended up having to use the following command:

wget -O - https://cpanmin.us | perl - --sudo App::cpanminus

The curl version of the command on the website doesn’t work because the cipher used by libcurl is now blocked because of POODLE.  RedHat/CentOS haven’t released an updated curl that fixes the problem.