This is a cool feature of mcollective.

I can aggregate checks. Still not implemented in nagios however.

[root@nagios3 manifests]# /usr/local/nagios/libexec/check-mc-nrpe -F
product_info=/SomeProduct/ check_load
check_load: OK: 17 WARNING: 0 CRITICAL: 0 UNKNOWN: 0|total=17 ok=17 warn=0
crit=0 unknown=0 checktime=0.274174
[root@nagios3 manifests]#

On Wed, Apr 11, 2012 at 11:30 AM, david.gar...@gmail.com <
david.gar...@gmail.com> wrote:

> Yeah,
>
> I am currently using exported resources.
>
> }     default: {
>      $nagios_cfgdir = "/usr/local/nagios/etc/objects/default/hosts"
>      @@file {
>             "$nagios_cfgdir/${name}.cfg":
>              ignore => ".svn",
>              ensure => present,
>              content => template( "nagios/default_host.cfg" ),
>              mode => 644, owner => nagios, group => nagios,
>              tag => 'nagios',
>              notify => Service[nagios],
>              recurse => true,
>              replace => true,
>
>
>
>
> However, I needed finer control of my services for each host so I do this
> filtering in a template for each hostgroup. So many exceptions in my
> currently environment.
>
> <% if scope.lookupvar('::fqdn') !~ /stg/ %>
> define service{
>         use                             remote-service ; Name of service
> template to use
>         host_name                       <%= scope.lookupvar('::fqdn') %>
>         service_description             NRPE CHECK JAMES
>         check_command                   check_nrpe!check_james
>         }
> <% end %>
>
>
>   file { "$nrpedir/nrpe.cfg":
>     mode    => "644",
>     owner   => "104",
>     group   => "106",
>     content => template("nagios/nrpe.cfg"),
>     ignore => ".svn",
>     require => Package[$nrpepackage],
>   }
>
>
> I don't do auto puppet runs for nagios. I use mcollective to do my work
> after testing;).
>
>   file { "/usr/lib/nagios/.mcollective/etc/facts.yaml":
>     mode    => "0644",
>     owner   => "104",
>     group   => "106",
>     loglevel => debug,
>     content  => inline_template("<%= scope.to_hash.reject { |k,v| k.to_s
> =~ /(uptime_seconds|timestamp|free)/ }.to_yaml %>")
>   }
>
>
> On Wed, Apr 11, 2012 at 10:21 AM, Todd Zullinger <t...@pobox.com> wrote:
>
>> Hi,
>>
>>
>> david.gar...@gmail.com wrote:
>>
>>> How do you delete a host or add a host? I am using templates and when a
>>> box gets moved into another network/vlan (re-provisioned)  it triggers a
>>> delete on the puppet master. So I only use a single config file for each
>>> host.
>>>
>>
>> One option is using exported resources in puppet¹.  Combined with
>> resource purging, you can have icinga automatically pick up new hosts and
>> services and remove them when a host is decommissioned.
>>
>> We've only got ~100 hosts and ~1800 services at the moment, but this is
>> working fine with icinga running on a small VM (4 cpu/4G ram). Puppet runs
>> do take about 10-15 minutes to complete.
>>
>> The icinga::host module sets up the base config and then collects
>> hosts/commands/services/etc. from other nodes.  This allows us to add
>> services to the module where they belong and adding a new node with that
>> module automatically causes it to be monitored.
>>
>> Some snippets from the icinga::host module:
>>
>> class icinga::host::config {
>> ...
>>  # Ensure /etc/nagios exists, the puppet nagios_* types place generated
>> files
>>  # there.  We'll point to these config files in icinga.cfg.
>>  file { '/etc/nagios':
>>    ensure => directory,
>>  }
>>
>>  # Ensure the /etc/nagios/nagios_*.cfg files are present so icinga doesn't
>>  # complain.
>>  file { [
>>    '/etc/nagios/nagios_command.**cfg',
>>    '/etc/nagios/nagios_contact.**cfg',
>>    '/etc/nagios/nagios_**contactgroup.cfg',
>>    '/etc/nagios/nagios_host.cfg',
>>    '/etc/nagios/nagios_hostgroup.**cfg',
>>    '/etc/nagios/nagios_service.**cfg',
>>    '/etc/nagios/nagios_**servicegroup.cfg',
>>    '/etc/nagios/nagios_**timeperiod.cfg',
>>  ]:
>>    ensure => present,
>>    owner  => 'root',
>>    group  => 'icinga',
>>    mode   => '0664',
>>    before => File['/etc/icinga/icinga.cfg']**,
>>    notify => Class['icinga::host::service']**,
>>  }
>> ...
>>  # Collect nagios_* resources
>>  # (The icinga service could just subscribe to these resources too,   #
>>  which might be a little easier to read.)
>>  Nagios_command <<||>> { notify => Class['icinga::host::service'] }
>>  Nagios_contact <<||>> { notify => Class['icinga::host::service'] }
>>  Nagios_contactgroup <<||>> { notify => Class['icinga::host::service'] }
>>  Nagios_host <<||>> { notify => Class['icinga::host::service'] }
>>  Nagios_hostgroup <<||>> { notify => Class['icinga::host::service'] }
>>  Nagios_service <<||>> { notify => Class['icinga::host::service'] }
>>  Nagios_servicegroup <<||>> { notify => Class['icinga::host::service'] }
>>  Nagios_timeperiod <<||>> { notify => Class['icinga::host::service'] }
>>
>>  # Purge nagios_* resources
>>  resources { [
>>    'nagios_command',
>>    'nagios_contact',
>>    'nagios_contactgroup',
>>    'nagios_host',
>>    'nagios_hostgroup',
>>    'nagios_service',
>>    'nagios_servicegroup',
>>    'nagios_timeperiod',
>>  ]:
>>    purge => true,
>>  }
>> }
>>
>> Then each node include icinga::client which sets up the host resource:
>>
>> class icinga::client {
>> ...
>>  @@nagios_host { "$fqdn":
>>    # This could/should probably be set based on the $kernel fact
>>    use   => 'linux-server',
>>    alias => "$hostname",
>>  }
>> ...
>> }
>>
>> Individual services can add service checks like so:
>>
>> class apache::icinga {
>>  @@nagios_service { "check_http_${fqdn}":
>>    check_command       => 'check_http!-w 0.5 -c 2.0',
>>    host_name           => "$fqdn",
>>    service_description => "http",
>>    use                 => 'generic-service',
>>    require             => Nagios_host["$fqdn"],
>>  }
>> }
>>
>> If the apache class is dropped from a node, it disappears from icinga
>> after puppet runs on the node and then on the icinga box.  If a node is
>> shutdown for decommissioning, then we use 'puppet node clean' (or
>> /usr/share/puppet/**puppetstoredconfigclean.rb² on puppet < 2.7) to
>> clean its entries from the storeconfig database.  That ensures any nagios
>> entries associated with the node are cleaned up in icinga.
>>
>> ¹ 
>> http://docs.puppetlabs.com/**guides/exported_resources.html<http://docs.puppetlabs.com/guides/exported_resources.html>
>> ² In the Fedora/EPEL packages, other distros may not ship this or may
>> install it elsewhere.
>>
>> Hope that helps,
>>
>> --
>> Todd        OpenPGP -> KeyID: 0xBEAF0CE3 | URL: www.pobox.com/~tmz/pgp
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**
>> ~~~~~~~~~~
>> The best leaders inspire by example. When that's not an option, brute
>> intimidation works pretty well, too.
>>    -- Demotivators (www.despair.com)
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Better than sec? Nothing is better than sec when it comes to
>> monitoring Big Data applications. Try Boundary one-second
>> resolution app monitoring today. Free.
>> http://p.sf.net/sfu/Boundary-dev2dev
>> _______________________________________________
>> icinga-users mailing list
>> icinga-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/icinga-users
>>
>>
> --
> David Garvey
>



-- 
David Garvey
------------------------------------------------------------------------------
Better than sec? Nothing is better than sec when it comes to
monitoring Big Data applications. Try Boundary one-second 
resolution app monitoring today. Free.
http://p.sf.net/sfu/Boundary-dev2dev
_______________________________________________
icinga-users mailing list
icinga-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/icinga-users

Reply via email to