Top過去ログ目次掲示板

作成日:2007年03月30日 作成:おやじ
掲示板で過去に質問された内容です。

No.6838 Cactiで演算方法がわかりません


No.6838 投稿時間:2007年03月30日(Fri) 18:03 投稿者名:たお URL:
タイトル:Cactiで演算方法がわかりません

いつもサイトを参考にさせてもらっています。

Cactiの設定方法について質問させて下さい。

Windows2000サーバの物理メモリ全容量と
物理メモリ使用容量のグラフ化をしたいです。

SNMPで取得できるのは、全容量と空き容量になります。
残念ながら、使用容量の取得ができませんでした。

そこで、全容量から空き容量を引いて使用容量にしたいと
考えているのですが、演算方法がわかりません。

尚、全容量と空き容量では問題無くグラフ作成ができました。

演算方法について、教えて頂けないでしょうか?

どこまで設定方法を書けばいいのか、わからないので
簡単な概要だけ書きます。
・Data TemplatesでGet SNMP Dataを設定し、メモリOIDを指定(全容量と空き容量)
・Graph Templatesで上のData Sourceを指定し、Graph Item TypeはAREAを指定
・各サーバで上のTemplatesを使用してグラフを作成

OS:Red Hat ES 4 UP 4
Cacti:0.8.6j

以上、よろしくお願いします。


No.6840 投稿時間:2007年03月31日(Sat) 10:13 投稿者名:おやじ URL:
タイトル:CDEF Functionでできます。

> Windows2000サーバの物理メモリ全容量と
> 物理メモリ使用容量のグラフ化をしたいです。
>
> SNMPで取得できるのは、全容量と空き容量になります。
> 残念ながら、使用容量の取得ができませんでした。
>
> そこで、全容量から空き容量を引いて使用容量にしたいと
> 考えているのですが、演算方法がわかりません。
>
> 尚、全容量と空き容量では問題無くグラフ作成ができました。
>
> 演算方法について、教えて頂けないでしょうか?
>
> どこまで設定方法を書けばいいのか、わからないので
> 簡単な概要だけ書きます。
> ・Data TemplatesでGet SNMP Dataを設定し、メモリOIDを指定(全容量と空き容量)
> ・Graph Templatesで上のData Sourceを指定し、Graph Item TypeはAREAを指定
> ・各サーバで上のTemplatesを使用してグラフを作成
>
> OS:Red Hat ES 4 UP 4
> Cacti:0.8.6j

以前にも同じような質問(No.6367)がありましたが、これは、必要なCDEF Functionを自分で追加してそれを指定することでできます。
但し、ここで指定する式は逆ポーランド記法(aを8で割る場合: a, 8, /)なので注意してください。
今回は、使用量を計算したいので「使用量=全容量-空き容量」でよいと思います。
従って、式としては上記のとおりですがdata sourceは二つは使用できないので、変化しない全容量は固定値(MIB値はKByteなのでByte二変換するため、1024倍すること)として扱います。具体的なイメージは、「 全容量(1024364*1024=1048948736), 空き容量(CURRENT_DATA_SOURCE), - 」となります。
以下に、この変換を行うCDEF Functionを追加する例を示します。

1. Managementのところで、Graph Managementを開きCDEFsを選択。
2. 右欄のCDEF'sでAddをクリック。
3. Nameに適当なCDEF名(Convert from memory free to memory usage チョットおかしいかな?)を入力しcreateをクリック。
4. 以降、このCDEF名に対するCDEFの式を設定していく。
5. 下にCDEF Itemsができるので、Addをクリック。
6. まず、CDEF Item TypeでCustom Stringを選択し、CDEF Item Valueに1048948736(全容量(1024364*1024=1048948736))を入力し、createをクリック。
7. 再度、Addをクリック。CDEF Item TypeでSpecial Data Sourceを選択し、CDEF Item ValueでCurrent Graph Item Data Sourceを選択し、createをクリック。(これでわかると思いますが、Graph Templateでこの値を表示するときのdata souceは空き容量を指定します。)
8. 再度、Addをクリック。CDEF Item TypeでOperatorを選択し、CDEF Item Valueで「-」(引算)を選択し、createをクリック。

最近、Windowsクライアントが調子悪いと思っていたら、SNMPもおかしくなっていました。(^_^;)
バックアップ戻しもできるのですが、この際スリム化するためにも再インストールしようかな? と思ったりもしますが、いざとなると面倒くさいし、どうしようか思案中です。


No.6842 投稿時間:2007年03月31日(Sat) 21:26 投稿者名:たお URL:
タイトル:Re: CDEF Functionでできます。

おやじさん、レスありがとうございます。
具体的な手順を書いて頂き、ありがとうございます。
さっそく、設定してみます。

> 以前にも同じような質問(No.6367)がありましたが、これは、必要なCDEF Functionを自分で追加してそれを指定することでできます。
http://www.aconus.com/~oyaji/bbs/wforum.cgi?mode=allread&pastlog=0010&no=6367&page=30&act=past
こちらは拝見させてもらいました。

> 但し、ここで指定する式は逆ポーランド記法(aを8で割る場合: a, 8, /)なので注意してください。
> 今回は、使用量を計算したいので「使用量=全容量-空き容量」でよいと思います。
> 従って、式としては上記のとおりですがdata sourceは二つは使用できないので、変化しない全容量は固定値(MIB値はKByteなのでByte二変換するため、1024倍すること)として扱います。具体的なイメージは、「 全容量(1024364*1024=1048948736), 空き容量(CURRENT_DATA_SOURCE), - 」となります。

サーバが複数台あり、メモリ容量が違う場合には、
CDEFを複数作成するしかないんでしょうかね。

メモリ使用容量のOIDをもう一度探してみます。


No.6843 投稿時間:2007年04月01日(Sun) 13:52 投稿者名:おやじ URL:
タイトル:複数のサーバを対象にするならスクリプトを別途作成してやる方法もあります。

複数のサーバでやりたいなら、やったことはないですが、下記にあるようなスクリプトを別途作成してやる方法でできると思います。

http://www.aconus.com/~oyaji/suse9.3/cacti_linux2.htm

具体的には、下記のようなmem_check.cgi (適当な名前で)を作成して、これをサーバ毎に登録してあげればいいのでは?
下記は、スワップと実メモリの使用量をKByte単位で返すもので、パラメータとしてコミュニティとホスト名(IP)を設定して呼び出せます。

-----------mem_check.pl--------------------------
#!/usr/bin/perl

$COM=$ARGV[0];
$IP=$ARGV[1];

$TotalSwap=`snmpwalk -v 1 -c $COM $IP .1.3.6.1.4.1.2021.4.3.0 | awk '\{print \$4\}'`;
$AvailSwap=`snmpwalk -v 1 -c $COM $IP .1.3.6.1.4.1.2021.4.4.0 | awk '\{print \$4\}'`;
$TotalReal=`snmpwalk -v 1 -c $COM $IP .1.3.6.1.4.1.2021.4.5.0 | awk '\{print \$4\}'`;
$AvailReal=`snmpwalk -v 1 -c $COM $IP .1.3.6.1.4.1.2021.4.6.0 | awk '\{print \$4\}'`;

$UsageSwap=$TotalSwap - $AvailSwap;
$UsageReal=$TotalReal - $AvailReal;

$Usage = "UsageSwap:$UsageSwap UsageReal:$UsageReal";
chomp $Usage;
print $Usage;
--------------------------------------------------



掲示板▲頁先頭