Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lelutin/puppet-munin
fork of the shared Munin puppet module from SMASH
https://github.com/lelutin/puppet-munin
Last synced: 25 days ago
JSON representation
fork of the shared Munin puppet module from SMASH
- Host: GitHub
- URL: https://github.com/lelutin/puppet-munin
- Owner: lelutin
- License: gpl-3.0
- Created: 2010-12-22T08:31:11.000Z (about 14 years ago)
- Default Branch: master
- Last Pushed: 2022-08-30T01:39:31.000Z (over 2 years ago)
- Last Synced: 2024-11-01T09:43:53.596Z (2 months ago)
- Language: Puppet
- Homepage: https://gitlab.com/shared-puppet-modules-group/munin
- Size: 610 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Puppet-Munin
[![Build Status](https://travis-ci.org/duritong/puppet-munin.png?branch=master)](https://travis-ci.org/duritong/puppet-munin)
Munin is a performance monitoring system which creates nice RRD graphs and has
a very easy plugin interface. The munin homepage is http://munin.projects.linpro.no/## Requirements
* puppet 2.7 or newer
* install the `concat` and `stdlib` modules - the munin module depends on functions that are defined and installed via these modules
* you will need storedconfigs enabled in your puppet setup, to do that you need to add a line to your `puppet.conf` in your `[puppetmasterd]` section which says:storeconfigs=true
* You may wish to immediately setup a `mysql`/ `pgsql` database for your storedconfigs, as
the default method uses sqlite, and is not very efficient, to do that you need lines
such as the following below the `storeconfigs=true` line (adjust as needed):dbadapter=mysql
dbserver=localhost
dbuser=puppet
dbpassword=puppetspasswd
## UsageYour modules directory will need all the files included in this repository placed under a directory called `munin`.
### Upgrade notices
Users of the module who are upgrading from a older version of the module might be interested in these important changes:
* The `munin::client` and `munin::host` classes should not be included
directly anymore. Instead, the main class should be used for both client and
server (server should have the `$is_server` parameter set to true).### Master configuration
To install a master (or server) you need to flip one argument to true in the main class:
class { 'munin': is_server => true }
If you want cgi graphing you can pass `cgi_graphing => true`. (For CentOS this is enabled in the default header config) for more information, see: http://munin.projects.linpro.no/wiki/CgiHowto
### Client configuration
For every host you wish to gather munin statistics, add the class `munin` to that
node. You will want to set the class parameter `allow` to be the IP(s) of the munin
collector, this defines what IP is permitted to connect to the node, for example:node foo {
class { 'munin': allow => '192.168.0.1'}
}for multiple munin collectors, you can pass an array:
class { 'munin': allow => [ '192.168.0.1', '10.0.0.1' ] }
You can also use the CIDR-format with `cidr_allow` and `cidr_deny` to allow and
deny entire blocks of IPs. These two options can be used in conjunction to
`allow`. The following example will permit access to munin-node to 10.0.0.1,
and all IPs starting with '10.10' except from those that start with
'10.10.100':node foo {
class { 'munin':
allow => [ '10.0.0.1' ],
cidr_allow => [ '10.10.0.0/16' ],
cidr_deny => [ '10.10.100.0/24' ],
}
}### Local plugins
If there are particular munin plugins you want to enable or configure, you define them
in the node definition, like follows:# Enable monitoring of disk stats in bytes
munin::plugin { 'df_abs': }# Use a non-standard plugin path to use custom plugins
munin::plugin { 'spamassassin':
ensure => present,
script_path_in => '/usr/local/share/munin-plugins',
}
# For wildcard plugins (eg. ip_, snmp_, etc.), use the name variable to
# configure the plugin name, and the ensure parameter to indicate the base
# plugin name to which you want a symlink, for example:
munin::plugin { [ 'ip_192.168.0.1', 'ip_10.0.0.1' ]:
ensure => 'ip_'
}
# Use a special config to pass parameters to the plugin
munin::plugin {
[ 'apache_accesses', 'apache_processes', 'apache_volume' ]:
ensure => present,
config => 'env.url http://127.0.0.1:80/server-status?auto'
}Note: The plugin must be installed at the client. For listing available plugins run as root `munin-node-configure --suggest`
### External pluginsFor deploying plugins which are not available at client, you can fetch them from puppet
master using `munin::plugin::deploy`.munin::plugin::deploy { 'redis':
source => 'munin/plugins/redis/redis_',
config => '' # pass parameters to plugin
}In this example the file on master would be located in:
{modulepath}/munin/files/plugins/redis/redis_
Module path is specified in `puppet.conf`, you can find out your `{modulepath}` easily by tying
in console `puppet config print modulepath`.### Multiple munin collectors
If some part of your infrastructure should be graphed by one munin collector,
and another part by a second collector, you can use the parameter $export_tag
to the main class to differentiate which clients and collectors are associated.For example, here are four nodes: two collectors and two clients. Each
collector is associated with one client:node coll1 {
class { 'munin':
$is_server => true,
$export_tag => 'coll1',
}
}node client1 {
class { 'munin':
$export_tag => 'coll1',
}
}node coll2 {
class { 'munin':
$is_server => true,
$export_tag => 'coll2',
}
}node client2 {
class { 'munin':
$export_tag => 'coll2',
}
}