Just to keep as referenced, in case i'll be needing it for study
class nagios { package { "nagios": ensure => present; "httpd": ensure => present; } #### Setup nagios configuration files ########### ##### Populate base configuration files ### # create the /etc/nagios directory, copy files over from puppet server file { "nagioscfg": path => "/etc/nagios", checksum => "mtime", ensure => directory, owner => nagios, group => nagios, mode => 644, source => "puppet://$server/nagios/etc-nagios", recurse => true, ignore => [ ".svn", "nrpe.cfg" ], notify => Service[nagios], require => Package[nagios], } # Configure system iptables file {"iptablescfg": path => "/etc/sysconfig/iptables", ensure => file, owner => root, group => root, mode => 600, source => [ "puppet://$server/nagios/files/iptables.txt", "puppet://$server/nagios/iptables.txt" ], notify => Service[iptables], } # Setup Nagios httpd config file file {"nagios-http-cfg": path => "/etc/httpd/conf.d/nagios.conf", ensure => file, owner => root, group => root, mode => 644, source => [ "puppet://$server/nagios/files/httpd-nagios.conf", "puppet://$server/nagios/httpd-nagios.conf" ], notify => Service[httpd], } # Clean out testing virtual machine from store configs resources { "nagios_service": purge => true } resources { "nagios_host": purge => true } resources { "nagios_hostgroup": purge => true } #### Define and start services and daemons ##### service {"iptables": ensure => running, hasstatus => true, hasrestart => true, subscribe => File["iptablescfg"], } service {"nagios": enable => true, ensure => running, hasstatus => true, hasrestart => true, require => Package[nagios], subscribe => File["/etc/nagios"], } service {"httpd": enable => true, ensure => running, hasstatus => true, hasrestart => true, require => Package[nagios], } ### Puppet is unable to reload a service from autogenerated files ### Create cronjob to automatically reload the nagios configuration once per hour cron { "nagreload": command => "/etc/init.d/nagios reload", user => "root", minute => "54", } #### collect resources and populate /etc/nagios/nagios_*.cfg#### #### Uses puppet built in nagios hooks to find information about client machines ### #### and automatically create nagios configurations for them #### Nagios_host <<||>> Nagios_service <<||>> Nagios_hostextinfo <<||>> class target { $nrpeservice = "nrpe" $nrpepattern = "nrpe" $nrpepackage = "nrpe" $nrpedir = "/etc/nagios" $nagiosuser = "nrpe" $nagiosgroup = "nrpe" $pluginsdir = "/usr/lib/nagios/plugins" $sudopath = "/usr/bin" # Install the correct packages based on OS case $operatingsystem { default: { package { "nrpe": ensure => present; "nagios-plugins-all": ensure => present; "nagios-plugins-nrpe": ensure => present; } } ubuntu: { package { "nagios-nrpe-server": ensure => present; "nagios-nrpe-plugin": ensure => present; } } } # x86_64 Centos installes into /usr/lib64 by default, create a symlink # so that nagios can find it's plugins. case $architecture { x86_64: { case $operatingsystem { centos: { file { "/usr/lib/nagios": ensure => link, target => "/usr/lib64/nagios", } } } } } service {"nrpe": name => $operatingsystem ? { ubuntu => "nagios-nrpe-server", default => "nrpe", }, enable => true, hasrestart => true, # require => Package[nrpe], subscribe => File["/etc/nagios/nrpe.cfg"], ensure => running, } file { "/etc/nagios/nrpe.cfg": mode => "644", owner => $operatingsystem ? { ubuntu => "root", default => "nrpe", }, group => $operatingsystem ? { ubuntu => "root", default => "nrpe", }, content => template("nagios/nrpe.cfg"), # require => Package[nrpe], notify => Service[nrpe], } ## Build the /etc/nagios/nagios_host.cfg file on the server @@nagios_host { $fqdn: ensure => present, alias => $hostname, address => $ipaddress, use => "linux-server", check_command => "check-host-alive", max_check_attempts => 3, hostgroups => "linux-servers", contact_groups => "admins", } ## Build nagios_hostextinfo.cfg on server @@nagios_hostextinfo { $fqdn: ensure => present, icon_image_alt => $operatingsystem, icon_image => "base/$operatingsystem.png", statusmap_image => "base/$operatingsystem.gd2", } # Build nagios_service.cfg on server @@nagios_service { "check_ping_${hostname}": host_name => "$fqdn", use => "generic-service", service_description => "Ping", check_command => "check_ping!100.0,20%!500.0,60%", } @@nagios_service { "check_users_${hostname}": use => "generic-service", check_command => "check_nrpe!check_users", service_description => "Users", host_name => "$fqdn", } @@nagios_service { "check_load_${hostname}": use => "generic-service", check_command => "check_nrpe!check_load", service_description => "Check Load", host_name => "$fqdn", } @@nagios_service { "check_zombie_procs_${hostname}": use => "generic-service", check_command => "check_nrpe!check_zombie_procs", service_description => "Zombie Processes", host_name => "$fqdn", } @@nagios_service { "check_total_procs_${hostname}": use => "generic-service", check_command => "check_nrpe!check_total_procs", service_description => "Total Processes", host_name => "$fqdn", } @@nagios_service { "check_swap_${hostname}": use => "generic-service", check_command => "check_nrpe!check_swap", service_description => "Swap File", host_name => "$fqdn", } @@nagios_service { "check_all_disks_${hostname}": use => "generic-service", check_command => "check_nrpe!check_disk !20%!10%!", service_description => "Disk Status", host_name => "$fqdn", } } }
Reference:
No comments:
Post a Comment
If you have any suggestion or clarification you send it via on this form.