NRPE e a variável $ USER1 $

5

Eu tenho daemons NRPE em execução em todas as minhas caixas Linux remotas. Eu tenho algumas configurações no lugar e estou tentando padronizar os caminhos no meu nrpe.cfg. As mudanças são implantadas via Puppet.

Eu gostaria de usar a seguinte sintaxe:

command[mycommand]=$USER1$/check_tcp .. etc.

A variável $ USER1 $ não está disponível na configuração do meu NRPE. Eu poderia escrever modelos Puppet para todas as variantes, mas eu preferiria muito mais gerenciar isso através de um método nativo. Existe alguma coisa disponível para isso? Se não alguém tem uma configuração de amostra Puppet que irá resolver isso?

    
por Tim Brigham 29.11.2011 / 22:16

4 respostas

1

Eu reuni um fato personalizado que atende às minhas necessidades. Eu também tentei um pequeno interruptor que iria aplicar o arco, mas não era de plataforma cruzada.

lib / facter / nrpe.rb

file = File.open("/etc/nagios/resource.cfg" , "r" )
while ( line = file.gets )
  if  /^\$USER1\$=(.*)/ =~ line
    matched="#{$1}"
  end
end
file.close
Facter.add("nrpe") do
  setcode do
    matched
  end
end
    
por 30.11.2011 / 19:02
8

I could write Puppet templates for all the variants but I would much prefer to manage this through a native method.

$USERn$ é uma macro padrão para o Nagios. Eles estão definidos no arquivo resource.cfg :

# Sets $USER1$ to be the path to the plugins
$USER1$=/usr/local/nagios/libexec

# Sets $USER2$ to be the path to event handlers
#$USER2$=/usr/local/nagios/libexec/eventhandlers

e este arquivo está incluído na configuração principal:

# This is an optional resource file that contains $USERx$ macro
# definitions. Multiple resource files can be specified by using
# multiple resource_file definitions.  The CGIs will not attempt to
# read the contents of resource files, so information that is
resource_file=/usr/local/nagios/etc/resource.cfg

AFAIK, você não pode usá-lo no host remoto, com NRPE .

    
por 01.12.2011 / 09:08
1

Aqui estão alguns dos fatos personalizados e o código de manifesto que usamos para manipular o nrpe. Certifique-se de que o fantoche garante que o serviço esteja configurado para iniciar na inicialização e esteja em execução. Já que rodamos o Fedora 15, com uma versão mais antiga do fantoche, lembre-se de que algumas versões do fantoche não suportam o systemd do Fedora 15.

nrpe_plugin_directory.rb

Facter.add("nrpe_plugin_directory") do
    setcode do
            %x{dirs="/usr/lib/nagios/plugins /usr/lib64/nagios/plugins /usr/local/nagios/libexec"; for dir in $dirs; do [[ -e $dir ]] && [[ ! -L $dir ]] && { echo $dir; exit; }; done}.chomp
    end
end

nrpe_cfg_file.rb

Facter.add("nrpe_cfg_file") do
    setcode do
            %x{files="/etc/nagios/nrpe.cfg /usr/local/nagios/etc/nrpe.cfg /usr/local/nagios/nrpe.cfg"; for file in $files; do [[ -f $file ]] && { echo $file; exit; }; done}.chomp
    end
end

Código de manifesto:

                    file{"/nagios/plugins":
                            ensure => "symlink",
                            target => "${nrpe_plugin_directory}",
                            force => 'true',
                            }

                    file{"$nrpe_plugin_directory":
                            source => "/..../plugins",
                            ensure => "directory",
                            recurse => "true",
                            ignore => ".svn",
                            }
                    case $nrpe_cfg_file {
                            undef: { }
                            default:{
                                    file{"/nagios/nrpe.cfg":
                                            ensure => "symlink",
                                            target => "${nrpe_cfg_file}",
                                            require => File["/nagios"],
                                            }
                                    file{"$nrpe_cfg_file":
                                            source => "/..../nrpe.cfg",
                                            }
            # ..............
                            }
    
por 02.12.2011 / 00:33
0

Em módulos / nagios / target / params.pp:

class nagios::target::params {
  case $operatingsystem {
    redhat,centos: {
          $nagios_plugin_dir = $architecture ? {
            x86_64 => "/usr/lib64/nagios/plugins/",
            i386   => "/usr/lib/nagios/plugins/",
          }
    }
    solaris: {
          $nagios_plugin_dir           = '/opt/csw/libexec/nagios-plugins/'
    }
  }
}

Em módulos / nagios / templates / custom-checks.cfg

...
command[check_ram]=<%= scope.lookupvar('nagios::target::params::nagios_plugin_dir') %>check_mem.pl -C -w<%= ramwarn %> -c<%= ramcrit %> -f 
command[check_puppet]=<%= scope.lookupvar('nagios::target::params::nagios_plugin_dir') %>check_puppet.rb -w 1800 -c 3600
...

Em módulos / nagios / target.pp:

include nagios::target::params
file { "/etc/nrpe.d/50-custom-checks.cfg":
  ensure  => present,
  notify  => Service["nrpe"],
  require => Package['nrpe'],
  content => template("${module_name}/custom-checks.cfg.erb"),
}
    
por 13.12.2011 / 06:02