- MongoDB Integration and Tools >
- Munin Configuration Examples
Munin Configuration Examples¶
Munin can use be used for monitoring aspects of a running system. This page describes how to set up and use the MongoDB plugin with Munin.
Munin is made up of two components:
- The agent and plugins that are installed on the system you want to monitor
- The server, which polls the agents and creates the basic web pages and graphs to visualize the data
The Munin plugin only supports Python 2.x. You cannot use Munin with Python 3.x.
The Munin plugin must be able to access a mongod instances that is running with the --rest option. You must configure the mongo-munin plugin to access this interface on the default REST API port, 28017.
You can download from SourceForge, but prebuilt packages are also available. For example on Ubuntu you can install the agent and server as follows:
To install the agent, issue following on each node you want to monitor.
shell> sudo apt-get install munin-node
To install the server on Ubuntu, you must have Apache2 . Issue the following commands:
shell> apt-get install apache2 shell> apt-get install munin
You must configure the agents and server with the IP address and port needed to contact each other. The following examples use these addresses:
- db1 : 10.202.210.175
- db2 : 10.203.22.38
- munin-server : 10.194.102.70
On each node, add an entry as shown in the following example configuration:
/etc/munin/munin-node.conf host_name db1-ec2-174-129-52-161.compute-1.amazonaws.com allow ^10\.194\.102\.70$
/etc/munin/munin-node.conf host_name db2-ec2-174-129-52-161.compute-1.amazonaws.com allow ^10\.194\.102\.70$
In the configuration:
- host_name is used by the server and can be whatever you like.
- allow is the IP address of the server, enabling the server to poll the agent.
For each node that is being monitored add an entry, as shown in the following example configuration:
[db1-ec2-174-129-52-161.compute-1.amazonaws.com] address 10.202.210.175 use_node_name no [db2-ec2-184-72-191-169.compute-1.amazonaws.com] address 10.203.22.38 use_node_name no
In the configuration:
- The name in between the  must match the name set in the agents munin-node.conf.
- address is the IP address of the node where the agent is running.
- use_node_name determines whether the name between  (no) or the name reported by the node (yes) is used to fetch node data.
MongoDB Munin Plugin¶
A plugin is available that provide metrics for:
- B-Tree stats
- Current connections
- Memory usage
- Database operations (inserts, updates, queries etc.)
The plugin can be installed as follows on each node where MongoDB is running:
shell> wget http://github.com/erh/mongo-munin/tarball/master shell> tar xvf erh-mongo-munin-*tar.gz shell> cp erh-mongo-munin-*/mongo_* /etc/munin/plugins/
Check your setup¶
After installing the plugin and making the configuration changes, force the server to update the information to check that your setup is correct using the following:
shell> sudo -u munin /usr/share/munin/munin-update
If everything is set up correctly, you will get a chart like this:
Aggregate Values Across All Nodes¶
If you are running a large MongoDB cluster, you may want to aggregate the values (e.g. inserts per second) across all the nodes in the cluster. Munin provides a simple way to aggregate. The following example defines a new segment called CLUSTER:
/etc/munin/munin.conf [compute-1.amazonaws.com;CLUSTER] update no
In the example:
- update no means Munin can generate the chart based on existing data. This tells Munin not to poll the agents for the data
Aggregate Inserts, Updates, and Deletes¶
The following example defines a chart to aggregate the inserts, updates, and deletes for the cluster:
cluster_ops.graph_title Cluster Ops cluster_ops.graph_category mongodb cluster_ops.graph_total total cluster_ops.total.graph no cluster_ops.graph_order insert update delete cluster_ops.insert.label insert cluster_ops.insert.sum \ db1-ec2-174-129-52-161.compute-1.amazonaws.com:mongo_ops.insert \ db2-ec2-184-72-191-169.compute-1.amazonaws.com:mongo_ops.insert cluster_ops.update.label update cluster_ops.update.sum \ db1-ec2-174-129-52-161.compute-1.amazonaws.com:mongo_ops.update \ db2-ec2-184-72-191-169.compute-1.amazonaws.com:mongo_ops.update cluster_ops.delete.label delete cluster_ops.delete.sum \ db1-ec2-174-129-52-161.compute-1.amazonaws.com:mongo_ops.delete \ db2-ec2-184-72-191-169.compute-1.amazonaws.com:mongo_ops.delete
In the example:
cluster_ops: name of this chart.
cluster_ops.graph_category mongodb: puts this chart into the mongodb category. Allows you to collect similar charts on a single page.
cluster_ops.graph_order insert update delete: indicates the order of the lines on the key for the chart.
cluster_ops.insert: represents a single line on the chart, in this case the insert.
cluster_ops.insert.sum: indicates the values are summed.
db1-ec2-174-129-52-161.compute-1.amazonaws.com: indicates the node to aggregate.
mongo_ops.insert: indicates the chart (mongo_ops) and the counter (insert) to aggregate.
And this is what it looks like