111 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Puppet
		
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Puppet
		
	
	
| define monitor::url (
 | |
|   $tool,
 | |
|   $url          = 'http://127.0.0.1',
 | |
|   $target       = '',
 | |
|   $host         = '',
 | |
|   $port         = '80',
 | |
|   $pattern      = '',
 | |
|   $username     = '',
 | |
|   $password     = '',
 | |
|   $monitorgroup = '',
 | |
|   $template     = '',
 | |
|   $useragent    = 'UrlCheck',
 | |
|   $checksource  = 'remote',
 | |
|   $enable       = true
 | |
|   ) {
 | |
| 
 | |
|   $bool_enable=any2bool($enable)
 | |
| 
 | |
|   $ensure = $bool_enable ? {
 | |
|     false => 'absent',
 | |
|     true  => 'present',
 | |
|   }
 | |
| 
 | |
|   # If target is not provided we get it from the Url
 | |
|   $computed_target = $target ? {
 | |
|     ''      => url_parse($url,host),
 | |
|     default => $target,
 | |
|   }
 | |
| 
 | |
|   # If host is not provided we get it from the Url
 | |
|   $computed_host = $host ? {
 | |
|     ''      => url_parse($url,host),
 | |
|     default => $host,
 | |
|   }
 | |
| 
 | |
|   # Manage template
 | |
|   $real_template = $template ? {
 | |
|     ''      => undef,
 | |
|     default => $template,
 | |
|   }
 | |
| 
 | |
|   # Needed to create flag todo files seamlessly
 | |
|   $urlq = regsubst($url , '/' , '-' , 'G')
 | |
| 
 | |
|   if ($tool =~ /munin/) {
 | |
|   }
 | |
| 
 | |
|   if ($tool =~ /collectd/) {
 | |
|   }
 | |
| 
 | |
|   if ($tool =~ /monit/) {
 | |
|   }
 | |
| 
 | |
|   $local_check_command = $username ? { # CHECK VIA NRPE STILL DOESN'T WORK WITH & and ? in URLS!
 | |
|     undef   => "check_nrpe!check_url!${computed_target}!${port}!${url}!${pattern}!${useragent}!${computed_host}" ,
 | |
|     ''      => "check_nrpe!check_url!${computed_target}!${port}!${url}!${pattern}!${useragent}!${computed_host}" ,
 | |
|     default => "check_nrpe!check_url_auth!${computed_target}!${port}!${url}!${pattern}!${username}:${password}!${useragent}!${computed_host}" ,
 | |
|   }
 | |
| 
 | |
|   $default_check_command = $username ? {
 | |
|     undef   => "check_url!${computed_target}!${port}!${url}!${pattern}!${useragent}" ,
 | |
|     ''      => "check_url!${computed_target}!${port}!${url}!${pattern}!${useragent}" ,
 | |
|     default => "check_url_auth!${computed_target}!${port}!${url}!${pattern}!${username}:${password}!${useragent}" ,
 | |
|   }
 | |
| 
 | |
|   $check_command = $checksource ? {
 | |
|     local   => $local_check_command,
 | |
|     default => $default_check_command
 | |
|   }
 | |
| 
 | |
|   if ($tool =~ /nagios/) {
 | |
|     # Use for Example42 service checks
 | |
|     # (note: are used custom Nagios and nrpe commands)
 | |
|     nagios::service { $name:
 | |
|       ensure        => $ensure,
 | |
|       template      => $real_template,
 | |
|       check_command => $check_command,
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if ($tool =~ /icinga/) {
 | |
|     icinga::service { $name:
 | |
|       ensure        => $ensure,
 | |
|       template      => $real_template,
 | |
|       check_command => $check_command,
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   $puppi_hostwide = $monitorgroup ? {
 | |
|     undef   => 'yes' ,
 | |
|     ''      => 'yes' ,
 | |
|     default => 'no' ,
 | |
|   }
 | |
| 
 | |
|   $puppi_command = $username ? {
 | |
|     undef   => "check_http -I '${computed_target}' -p '${port}' -u '${url}' -H '${computed_host}' -r '${pattern}' -A '${useragent}'" ,
 | |
|     ''      => "check_http -I '${computed_target}' -p '${port}' -u '${url}' -H '${computed_host}' -r '${pattern}' -A '${useragent}'" ,
 | |
|     default => "check_http -I '${computed_target}' -p '${port}' -u '${url}' -H '${computed_host}' -r '${pattern}' -a ${username}:${password} -A '${useragent}'" ,
 | |
|   }
 | |
| 
 | |
|   if ($tool =~ /puppi/) {
 | |
|     # Use for Example42 puppi checks
 | |
|     puppi::check { $name:
 | |
|       enable   => $enable,
 | |
|       hostwide => $puppi_hostwide,
 | |
|       project  => $monitorgroup ,
 | |
|       command  => $puppi_command,
 | |
|     }
 | |
|   }
 | |
| }
 |