Gráficos de desempenho Nagios

5

Eu escrevi meu próprio script perl para retornar o status de um servidor meu. Está funcionando bem (ou seja, dados de desempenho: val1 = 1; val2 = 5; val3 = 10).

Usando templates.dist / default.php isso me dá 3 gráficos (como eu esperaria).

Agora, esse problema que tenho é que desejo fazer mais um gráfico que tenha todos os 3 valores nele.

Estou brincando com um arquivo de modelo, mas os resultados que estou obtendo parecem muito aleatórios e confusos.

<?php

for($i=1; $i < count($DS); $i++) {
  $opt[$i] = '--title "My Graph '.$i.'"';
  $def[$i] = 'DEF:var1='.$rrdfile.':'.$DS[$i].':AVERAGE LINE1:var1#000000';
}

$opt[4] = '--title "My Graph 4"';
$def[4] =
  'DEF:var1='.$rddfile.':'.$DS[1].':AVERAGE '.
  'DEF:var2='.$rddfile.':'.$DS[2].':AVERAGE '.
  'DEF:var3='.$rddfile.':'.$DS[3].':AVERAGE '.
  'LINE1:var1#FF0000:"Var 1" '.
  'LINE1:var2#FF0000:"Var 2" '.
  'LINE1:var3#FF0000:"Var 3"';

?>

Com o quarto gráfico comentado, isso geralmente apenas desenha os dois primeiros (não três) gráficos (o terceiro gráfico simplesmente não está lá). Eu digo normalmente, porque ao fazer este post eu verifiquei novamente e desta vez ele inisisted em fazer 5 gráficos onde os 3 primeiros foi como esperado e os dois últimos tinham um ícone da imagem quebrada.

Quando eu adiciono o 4º gráfico, ele desenha 3 gráficos. Se eu adicionar um $def[5] = "hmmm"; , o quarto gráfico será exibido, mas com um ícone de imagem quebrada.

Eu alterei os títulos para ter certeza de que esse arquivo realmente é e não algo armazenado em cache, mas eles mudam como eu esperaria deles.

Alguém por favor pode esclarecer o que está acontecendo aqui?

Usando apenas o quarto gráfico combinado como $def[1] funciona.

Tentando depurar por que ele não será exibido, pois o quarto gráfico levou-me a nagiosxi/html/includes/components/perfdata/graphApi.php . Parece que ele tenta encontrar uma quarta fonte de dados do arquivo xml perfdata localizado ao lado do arquivo rrd. Isso, por sua vez, tem apenas 3 conjuntos de dados, pois estou trabalhando apenas com 3 conjuntos de dados. Eu preciso dos quatro gráficos.

Como adiciono mais gráficos para um determinado serviço do que a quantidade de conjuntos de dados?

    
por Kasper Middelboe Petersen 19.05.2012 / 09:12

1 resposta

4

Esse material é definitivamente confuso quando você começa a olhar embaixo do capô. Você realmente descobriu muitas das peças-chave, vamos ver se posso ajudá-lo a entender como elas se encaixam.

Veja o que aprendi com minha própria experiência:

1) PNP4Nagios

Veja o site principal deles: link

Para verificar se você está usando o PNP4Nagios, veja:

$ more /usr/local/nagios/etc/pnp/pnp4nagios_release
PKG_REL_DATE="05-02-2009"
PKG_VERSION="0.4.14"
PKG_NAME="pnp"

A configuração da PNP é feita em /usr/local/nagios/etc/nagios.cfg

Aqui está uma visão geral que eu encontrei recentemente, inclui uma descrição das várias configurações relacionadas ao PNP no nagios.cfg:

link

2) Fontes de dados RRD e modelos de gráficos

Veja: link

Os scripts do template php são encontrados em / usr / local / nagios / share / pnp /.

Um modelo de gráfico php é invocado dentro do contexto do arquivo de dados RRD associado ao comando host ou serviço cujos dados você está tentando representar graficamente. Se não houver um modelo para o comando, o default.php é usado.

Como você descobriu, não pode simplesmente adicionar um quarto gráfico porque não há fonte de dados correspondente:

the 4th graph displays, but with a broken picture icon.

E, como você também descobriu, é possível personalizar o gráfico exibido para uma origem de dados específica:

Using only the fourth combined graph as $def[1] works.

3) default.php

Lembre-se de que default.php é usado sempre que um comando host ou de serviço não tiver um modelo de gráfico associado. Isso significa que qualquer alteração feita afetará o gráfico padrão de todo o sistema. Se é isso que você quer, tudo bem. Caso contrário, basta adicionar uma verificação para o host e / ou serviço cujo gráfico você está tentando personalizar:

if ($hostname == 'MyHost') {
  // generate a customized graph
}
else {
  // generate the default graph
}

4) Finalmente, como criar um gráfico combinado E exibir as três origens de dados originais.

Eu simplesmente teria seu script perl gerar uma quarta fonte de dados e preenchê-la com zeros:

val1=1;; val2=5;; val3=10;; val4=0;;

Em seguida, no default.php, você pode criar um gráfico personalizado para essa fonte de dados:

foreach ($DS as $i) {
  if ($servicedesc == 'My_Test_Service') {
    if ($i == 4) {  # the "val4" placeholder datasource
      // your combined graph logic goes here
    }
    else {
      // datasource 1 to 3 graph logic goes here
    }
  }
}

Isso só começa a cobrir este tópico, espero que ajude!

    
por 29.08.2012 / 01:39

Tags