Skip to content

voxpupuli/puppet-smokeping

SmokePing Puppet module

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

Features

  • 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)

Supported Platforms

Fully supported:

  • Debian, Ubuntu

Standalone only (no master/slave support yet):

  • Fedora 22+
  • CentOS 7+ (Note: requires third party repository to provide smokeping package).

Dependencies

Example

Standalone SmokePing instance

# install a standalone instance on a server with default values (see init.pp for
# parameter documentation
class { 'smokeping':
  mode => 'standalone',
}

Master SmokePing instance

# 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',
}

Slave SmokePing instance

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.

Probes

Class['smokeping'] {
  probes => [
    {
      name => 'FPing',
      binary => '/usr/bin/fping',
    },
    {
      name => 'FPing6',
      binary => '/usr/bin/fping6',
    },
  ],
}

Alerts

$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,
}

Targets

# 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%/',
  },
}

License / Author

The module is written by

Licensed under Apache License, Version 2.0, Copyright 2015 by Tobias Brunner

Contibutors

See: Github Contributors