smokeping

SmokePing module for master/slave or single instance

Vox Pupuli

puppet

10,427 downloads

864 latest version

5.0 quality score

Version information

  • 5.1.1 (latest)
  • 5.1.0
  • 5.0.0
  • 4.0.0
  • 3.1.1
  • 3.1.0
  • 3.0.0
  • 2.0.0
released Sep 25th 2020
This version is compatible with:
  • Puppet Enterprise 2019.8.x, 2019.7.x, 2019.5.x, 2019.4.x, 2019.3.x, 2019.2.x, 2019.1.x, 2019.0.x, 2018.1.x
  • Puppet >= 5.5.8 < 7.0.0
  • Ubuntu
    ,
    CentOS
    ,
    RedHat

Start using this module

Documentation

puppet/smokeping — version 5.1.1 Sep 25th 2020

SmokePing Puppet module

Puppet module to completely manage a SmokePing installation. Includes managing of Master/Slave 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:

  • Ubuntu (Tested on 12.04, 14.04)

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     => $::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

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

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