Puppet module to completely manage a SmokePing installation. Includes managing of Master/Slave or Standalone installation, and the menu hierarchy.
Some background information can be found here: Puppet module to manage SmokePing
- Master/Slave/Standalone SmokePing configuration possible
- Menu hierarchy implemented
- Define Probes and Alert patterns
- Config files managed with templates
- Uses exported resources to configure Slaves on the Master (tag: smokeping-slave)
- Automatically generates a shared secret for Master/Slave configuration (tag: smokeping-slave-secret)
Fully supported:
- Debian, Ubuntu
Standalone only (no master/slave support yet):
- Fedora 22+
- CentOS 7+ (Note: requires third party repository to provide smokeping package).
# install a standalone instance on a server with default values (see init.pp for
# parameter documentation
class { 'smokeping':
mode => 'standalone',
}
# install a master instance on a server with default values (see init.pp for
# parameter documentation. You must have a slave, or this will not work!
class { 'smokeping':
mode => 'master',
}
class { 'smokeping':
mode => 'slave',
slave_name => $facts['hostname'],
master_url => 'http://myserver.tld/smokeping/smokeping.cgi',
slave_location => 'zurich',
}
This configures the server as slaves and adds the slave definition automatically to the master using exported resources.
Class['smokeping'] {
probes => [
{
name => 'FPing',
binary => '/usr/bin/fping',
},
{
name => 'FPing6',
binary => '/usr/bin/fping6',
},
],
}
$alerts = [
{
name => 'bigloss',
alert_type => 'loss',
pattern => '==0%,==0%,==0%,==0%,>0%,>0%,>0%',
comment => 'suddenly there is packet loss',
},
{
name => 'startloss',
alert_type => 'loss',
pattern => '==S,>0%,>0%,>0%',
comment => 'loss at startup',
},
{
name => 'noloss',
alert_type => 'loss',
pattern => '>0%,>0%,>0%,==0%,==0%,==0%,==0%',
edgetrigger => true,
comment => 'there was loss and now its reachable again',
},
]
Class['smokeping'] {
alerts => $alerts,
}
# Top Level
smokeping::target { 'World':
menu => 'World',
pagetitle => 'Connection to the World',
alerts => [ 'bigloss', 'noloss' ],
}
smokeping::target { 'GoogleCH':
hierarchy_parent => 'World',
hierarchy_level => 2,
menu => 'google.ch',
pagetitle => 'Google',
}
smokeping::target { 'GoogleCHIPv4':
hierarchy_parent => 'GoogleCH',
hierarchy_level => 3,
menu => 'google.ch IPv4',
host => 'google.ch',
slaves => ['slave1'],
}
smokeping::target { 'GoogleCHIPv6':
hierarchy_parent => 'GoogleCH',
hierarchy_level => 3,
menu => 'google.ch IPv6',
host => 'google.ch',
probe => 'FPing6',
slaves => ['slave1'],
}
smokeping::target { 'GoogleCHCurl':
hierarchy_parent => 'GoogleCH',
hierarchy_level => 3,
menu => 'google.ch Curl',
host => 'google.ch',
probe => 'Curl',
options => {
urlformat => 'http://%host%/',
},
}
The module is written by
- Tobias Brunner tobias@tobru.ch
Licensed under Apache License, Version 2.0, Copyright 2015 by Tobias Brunner
See: Github Contributors