Today: September 25, 2021 5:22 pm
A collection of Software and Cloud patterns with a focus on the Enterprise

Tag: linux


Increase Munin Resolution to sub-minute

I previously explained how to get one-minute resolution in Munin. The process to get sub-minute resolution in Munin is more tricky. The main reason it’s more tricky is that cron only runs once per minute, which means data must be generated and cached in between cron runs for collection when cron runs. In the case where a single datapoint is collected each time cron runs, the time at which cron runs is sufficient to store the data in rrd. With multiple datapoints being collected on a single cron run, it’s necessary to embed......

Continue Reading


I’ve recently been conducting some performance testing of a PaaS solution. In an effot to capture specific details resulting from these performance tests and how the test systems hold up under load, I looked into a few monitoring tools. Munin caught my eye as being easy to setup and having a large set of data available out of the box. The plugin architecture also made it attractive. One major drawback to Munin was the five minute resolution. During performance tests, it’s necessary to capture data much more frequently. With the latest Munin, it’s......

Continue Reading


Understanding Munin Plugins

Munin is a monitoring tool which captures and graphs system data, such as CPU utilization, load and I/O. Munin is designed so that all data is collected by plugins. This means that every built in graph is a plugin that was included with the Munin distribution. Each plugin adheres to the interface (not a literal OO inteface), as shown below. Munin uses Round Robin Database files (.rrd) to store captured data. The default time configuration in Munin collects data in five minute increments. Some important details: Plugins can be written in any language,......

Continue Reading


I’ve been reviewing Docker recently. As part of that review, I decided to build a LEMP stack in Docker. I use Vagrant to create an environment in which to run Docker. For this experiment I chose to create Buildfiles to create the Docker container images. I’ll be discussing the following files in this post. Vagrantfile bootstrap.sh mysql/Dockerfile mysql/mysqlpwdseed nginx/Dockerfile nginx/default nginx/wall.phpVagrantfile bootstrap.sh mysql/Dockerfile mysql/mysqlpwdseed nginx/Dockerfile nginx/default nginx/wall.php Download the Docker LEMP files as a zip (docker-lemp.zip). Spin up the Host System I start with Vagrant to spin up a host system for my......

Continue Reading


My objective in this post is to explore the use of Ansible to configure a multi-server LEMP stack. This builds on the preliminary work I did demonstrating how to use Vagrant to create an environment to run Ansible. You can follow this entire example on any Windows (or Linux) host. Ansible only runs on Linux hosts, not Windows. As a result, I needed to provision one Linux host to act as Ansible controller. One aspect of Ansible that I wanted to explore is the ability to manage multiple hosts with different configurations. For......

Continue Reading


I may have just fallen in love with the tool Vagrant. Vagrant makes it possible to quickly create a virtual environment for development. It is different than cloning or snapshots in that it uses minimal base OSes and provides a provisioning mechanism to setup and configure the environment exactly the way you want for development. I love this for a few reasons: All developers work in the exact same environment Developers can get a new environment up in minutes Developers don’t need to be experts at setting up the environment. System details can......

Continue Reading


Load Testing with Locust.io

I’ve recently done some load testing using Locust.io. The setup was more complicated than other tools and I didn’t feel like it was well documented on their site. Here’s how I got Locust.io running on two different Linux platforms. Locust.io on RedHat Enterprise Linux (RHEL) or CentOS Naturally, these instructions will work on CentOS too. sudo yum -y install python-setuptools python-devel sudo yum -y install libevent libevent-develsudo yum -y install python-setuptools python-devel sudo yum -y install libevent libevent-devel One requirement of Locust.io is ZeroMQ. I found instructions to install that on their site......

Continue Reading


Today I needed to install subversion on a Linux host on which I don’t have root access. With root access the install would have been very simple. However, I couldn’t find a good tutorial showing how to go about installing the software just for the local user. This post goes through how I did that. Requirements Subversion relies on several third party libraries. Some of these may already be available on your server. Others may not be, so you’ll need more than I show here. What I provide should give you a roadmap......

Continue Reading


MongoDB is a database. However, unlike conventional relational databases that are based on well defined schema and use SQL as the primary interface to manage the data, MongoDB instead uses document based storage. The storage uses a format known as BSON, which is a modified form of JSON. This makes the stored documents very flexible and lightweight. It also makes it easy to adjust what is contained in any document without any significant impact to the other documents in a collection (a collection in MongoDB is like a table in a relational database).......

Continue Reading