web-dev-qa-db-ja.com

Nagiosパフォーマンスグラフ

私は自分のサーバーからステータスを返すために独自のPerlスクリプトを作成しました。正常に実行されています(つまり、パフォーマンスデータ:val1 = 1; val2 = 5; val3 = 10)。

Templates.dist/default.phpを使用すると、3つのグラフが得られます(予想どおり)。

今私が抱えているこの問題は、3つの値すべてを含むグラフをもう1つ作成したいということです。

テンプレートファイルをいじっていますが、得られる結果は非常にランダムで紛らわしいようです。

<?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"';

?>

4番目のグラフがコメントアウトされているので、これは通常、最初の2つ(3つではない)のグラフを描画します(3番目のグラフはありません)。私は通常、この投稿を作成しているときにもう一度確認しましたが、今回は最初の3つが期待どおりで、最後の2つに壊れた画像アイコンがある5つのグラフを作成することを主張したためです。

4番目のグラフを追加すると、3つのグラフが描画されます。 $def[5] = "hmmm";を追加すると、4番目のグラフが表示されますが、画像のアイコンが壊れています。

タイトルを変更して、実際にこのファイルであり、キャッシュされたものではないことを確認しましたが、これらは予想どおりに変更されています。

誰かがここで何が起こっているのかを明らかにしてくれませんか?

$def[1]として4番目の結合グラフのみを使用すると機能します。

4番目のグラフとして表示されない理由をデバッグしようとすると、nagiosxi/html/includes/components/perfdata/graphApi.phpになりました。 rrdファイルの隣にあるperfdataxmlファイルから4番目のデータソースを見つけようとしているようです。私は3つのデータセットしか扱っていないので、これには3つのデータセットしかないためです。 4つのグラフすべてが必要です。

データセットの量よりも多くのグラフを特定のサービスに追加するにはどうすればよいですか?

あなたが最初にボンネットの下を見始めたとき、このようなものは間違いなく混乱しています。あなたは実際に多くの重要な部分を理解しました。それらがどのように組み合わされているかを理解するのを私が助けることができるかどうか見てみましょう。

これが私自身の実験を通して学んだことです:

1)PNP4Nagios

メインサイトを参照してください: http://docs.pnp4nagios.org/pnp-0.4/start

PNP4Nagiosを使用していることを確認するには、以下を参照してください。

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

PNPの構成は/usr/local/nagios/etc/nagios.cfgで行われます

これが私が最近見つけた素晴らしい概要です。nagios.cfgのさまざまなPNP関連の設定の説明が含まれています。

http://bitflip.net/files/pnp4nagios-presentation-20090409.pdf

2)RRDデータソースとグラフテンプレート

参照: http://docs.pnp4nagios.org/pnp-0.4/tpl

Phpテンプレートスクリプトは/ usr/local/nagios/share/pnp /にあります。

Phpグラフテンプレートは、データをグラフ化しようとしているホストまたはサービスコマンドに関連付けられているRRDデータファイルのコンテキスト内で呼び出されます。コマンドのテンプレートがない場合は、default.phpが使用されます。

ご覧のとおり、対応するデータソースがないため、4番目のグラフを単純に追加することはできません。

4番目のグラフが表示されますが、画像アイコンが壊れています。

また、ご存知のとおり、特定のデータソースに対して表示されるグラフをカスタマイズできます。

$ def [1]として4番目の結合グラフのみを使用すると機能します。

3)default.php

ホストまたはサービスコマンドにグラフテンプレートが関連付けられていない場合は常にdefault.phpが使用されることに注意してください。つまり、変更を加えると、システム全体のデフォルトのグラフに影響します。それがあなたが望むものなら、結構です。それ以外の場合は、グラフをカスタマイズしようとしているホストやサービスのチェックを追加するだけです。

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

4)最後に、結合されたグラフを作成し、元の3つのデータソースを表示する方法。

Perlスクリプトで4番目のデータソースを生成し、それにゼロを入力するだけです。

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

次に、default.phpで、そのデータソースのカスタムグラフを作成できます。

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
    }
  }
}

これはこのトピックをカバーし始めたばかりです、私はそれが役立つことを願っています!

4
Alan