Cactiでネットワーク機器を監視しよう@Windows その2

Cactiでネットワーク機器を監視しよう@Windows その1
Cactiでネットワーク機器を監視しよう@Windows その2
Cactiでネットワーク機器を監視しよう@Windows その3
Cactiでネットワーク機器を監視しよう@Windows その4
Cactiでネットワーク機器を監視しよう@Windows その5
Cactiでネットワーク機器を監視しよう@Windows その6
Cactiを便利に使おう@Cacti Templates

■Cactiのインストール 〜環境構築その1〜
必要なアプリケーションのダウンロード〜PHPのインストールまでを今回は行います。

※今回用いたテスト環境はWindows Server 2003 R2 SP2です。また特に記載が無い場合にはデフォルト設定となっています。他のOSの場合若干動作が異なる可能性がありますのでご了承を。

■必要アプリケーションのダウンロード

Cactiをインストールする前に必要なアプリケーションがあるのでダウンロードしましょう。結構な数あるんですが、まあ根気ですね。適当なディレクトリにダウンロードしてください。

Cacti 0.8.6j (cacti-0.8.6j.zip)
Plugin Architecture - v1.1 (cacti-plugin-arch.zip)
Cactid 0.8.6g (cacti-cactid-0.8.6i-cygwin-1.5.21.zip)
PHP 4.4.7(php-4.4.7-Win32.zip)
MySQL 4.1.22(mysql-4.1.22-win32.zip)
RRDTool 1.049 (rrdtool-1.0.49-win32-bin.zip)
NET-SNMP 5.4.1.1 (net-snmp-5.4.1-1.win32.exe)
ActivePerl 5.8.8.822 (ActivePerl-5.8.8.822-MSWin32-x86-280952.msi)
Cygwin (setup.exe)

■IISのインストール
001.jpg

コントロールパネル→プログラムの追加と削除→Windowsコンポーネントの追加と削除

からIISをインストールしてください。

■Cacti0.8.6jのインストール
004.jpg
“cacti-0.8.6j.zip”を解凍してフォルダ名を”Cacti”に変更後、

C:\Inetpub\wwwroot

にコピーします。

■CactiのConfig設定

C:\Inetpub\wwwroot\cacti\include\config.php

を開き、48行目の

$config['url_path'] = '/';

$config['url_path'] = '/cacti/';

に変更してください。

■Plugin Architectureのインストール
005.jpg
Plugin Architectureはプラグイン機能を付与するアドインファイルです。解凍したら”files-0.8.6j”の中身を

C:\Inetpub\wwwroot\cacti

に上書きコピーしてください。

■PHP 4.4.7のインストール
006.jpg
“php-4.4.7-Win32.zip”を解凍し、

C:\

に名前を”php”に変更してコピーします。続けて

C:\php\dlls

の中のDLLを全て

C:\WINDOWS\system32

にコピーしてください。

マイコンピュータ→プロパティ→詳細設定→環境変数

008.jpg
を開き、”システム環境変数”から”Path”を選択して”編集”を選択して”;c:\php”を追記します。

同じく”システム環境変数”から”新規”を選択して

010.jpg

MIBS=ALL
MIBSDIR=c:\php\mibs
PHPRC=c:\php

を追加します。”PHPRC=c:\php”を追加することで”php.ini”にそのままでPathを通せるようになります。

以下の

C:\php\php.ini-recommended

をコピーして

php.ini

にリネームします。これをメモ帳で開き

385行目
register_argc_argv = Off

register_argc_argv = On

429行目※先頭の;も忘れずに
;include_path = ".;c:\php\includes"

include_path = ".;c:\php\includes;C:\php\PEAR"

436行目
doc_root =

doc_root = "C:\Inetpub\wwwroot"

443行目
extension_dir = "./"

extension_dir = "C:\php\extensions"

578行目
;extension=php_ldap.dll

extension=php_ldap.dll

592行目
;extension=php_snmp.dll
;extension=php_sockets.dll

extension=php_snmp.dll
extension=php_sockets.dll

を変更します。
※LDAP認証を行わない場合には578行目は必要無いです

■IISの設定
PHPがIIS上で実行出来るようにIISの設定を変更します。

ファイル名を指定して実行→inetmgr

を実行して”IISマネージャ”を開き、

015.jpg

Webサイト→プロパティ

を開きます。

016.jpg

Webサイトのプロパティ→ホームディレクトリ→構成→マッピング→追加

C:\php\sapi\php4isapi.dll

を登録します。

Webサイトのプロパティ→ISAPIフィルタ

を選択し、”追加”で同じく”PHP”を追加します。

018.jpg

Webサイトのプロパティ→ドキュメント

index.php

を追加します。

020.jpg

Webサービス拡張→新しいWebサービス拡張を追加

で”PHP”を登録します。

ファイル名を指定して実行→iisreset

の後、

C:\Inetpub\wwwroot

index.php

を作成し、中身を

<?php
 phpinfo();
?>

として保存します。その後

http://localhost

にアクセスして以下のような画面が出ればOKです。
022.jpg

PHPのモジュールが上手く動作しているかを確認するにはコマンドプロンプトで

php -m

と入力しても確認する事が出来ます。

次回はMySQLのインストールから始めます。

18 COMMENTS

pnpk

ねこぱんつさん、こんばんは。
お役に立てなくて申し訳ないです。

自分も時間がある時に再度Cactiを1から構築してみようと思います。

また何かあればコメントいただければと思います。

よろしくお願いいたします。

ねこぱんつ

こんばんは。

情報ありがとうございます。
根が深そうですね。
環境を一度作り直す必要があるのかな??

ネットで調べながら調査したいと思います。

pnpk

こんばんは。

Cactiが動作している環境でphpinfoを実行してみたところ、SNMPの欄はUCD-SNMPとなっていました。
こちらの環境ではCacti動作していますのでそれで問題無いと思います。

取り急ぎそちらのご連絡をさせていただきます。

001

ねこぱんつ

こんばんわ

「Cannot find module (IP-MIB): At line 0 in (none)」についてはd:\usr\mibs にすることで出なくなり解決しましたが、以前初期ページは表示されません。

apacheでwebページをもともと公開していますので動作しています。またPHPのGDを使い写真を動的に表示するPHPプログラムを動作させています。

PHP.iniについては不安がありますがapacheの設定は問題ないと考えています。

phpinfoで確認した内容は以下のとおりです。
UCD-SNMP Support?となっています・・・ なぜ?

snmp
UCD-SNMP Support enabled
UCD-SNMP Version ucd-snmp-4.2.3
soap
Soap Client enabled
Soap Server enabled

pnpk

こんにちは。

手元にCacti環境が無いので試していませんが、とりあえず以下を試してみてください。

まず、該当エラーなのですが、以下のサイトに記載がありましたので参考にしてみてください。

Cannot find module (IP-MIB): At line 0 in (none)

このサイトには

c:phpmibs から c:usrmibs に mibs フォルダを移動させてください。

とあります。
※試していないので根拠は無いです

また、以下のサイトにはnet-snmpをインストールしてください。とあります。

http://it.kndb.jp/entry/show/id/9

一度net-snmpのインストール先または、PHPの設定内容を確認してみるのが良いかも知れません。

また、モジュールが正常にロードされているかはphpinfoから確認する事が出来ます。phpinfoのサンプルを発見したので、これと同じ様に手元の環境でNET-SNMP Supportがenabledになっているか確認してみてください。
※同じ様にsocketsもenabledになっている必要があります。

http://www.makoto3.net/php_samples/sample090.php

実際にどこにディレクトリに何を置けば良いのかはsysternalsのfilemonというアプリケーションが役に立ちます。

http://technet.microsoft.com/en-us/sysinternals/bb896642.aspx

このアプリケーションを利用する事によって、アプリケーションがどこにアクセスしているのかが分かります。エラーの原因が特定のファイルの場合、filemon上にアクセス先が見つかりませんでした。というエラーが出ますので内容に合わせてファイルの配置を変更するか、設定を変更してみてください。

また、apacheは正常に動作しているという事でよろしいでしょうか。

あと、extension=php_snmp.dllが原因と考えられる場合にはextension=php_snmp.dllをいったんコメントアウトしてみてください。その後Cactiにアクセスし、apacheのエラー内容が変わっていればその可能性が考えられるかも知れません。

それではよろしくお願いします。

ねこぱんつ

こんにちわ
早速のご回答ありがとうございます。

エラーログは確認しています。
apacheのエラーログに以下が出ているだけでPHPのエラーログもcactiのエラーログも何も書き出してないのが痛いところです・・・
Cannot find module (IP-MIB): At line 0 in (none)
Cannot find module (IF-MIB): At line 0 in (none)
Cannot find module (TCP-MIB): At line 0 in (none)
Cannot find module (UDP-MIB): At line 0 in (none)
・・・

とりあえずnet-snmpはインストールしてあります。
phpiniに「extension=php_snmp.dll」も書いてありますがこれが原因??でしょうか

pnpk

こんばんは。
Apacheを利用されているとの事ですので、とりあえずエラーログを参照してみるのはいかがでしょうか。

Apacheのインストール方法によってエラーログの出力される場所が違うのですが、Windows版であれば”error.log”というファイル名になっていると思うので、これを検索してみてください。
※xamppを使っていれば既定のインストールで”C:xamppapachelogserror.log”です。

“php.ini”の記載内容に不備がある可能性が高いですが、内部サーバー エラーだけでは原因が特定しにくいので、とりあえずエラーの内容を再度お伝えいただければ何とかできるかもしれません。

それではよろしくお願いします。

ねこぱんつ

はじめまして。
このサイトを参考にcactiでサーバの監視をしようと構築をしております。

手順とおりインストールしたのですが「ページを表示できません。 HTTP 500 – 内部サーバー エラー 」と表示されてcactiの初期画面すら出ません。

バージョンは、以下のとおりです。
Apache 2.2.11
PHP 5.2.8
cacti-0.8.7b

ネットで調べても同様の事例が出てきません。
何か手がかりがわかればと書き込みをさせていただきます。
よろしくお願いします。

pnpk

コメントありがとうございます。
お役に立てたようでなによりです。

古いタイプの認証についてなんですが、こちらMYSQLのパスワードハッシュについて記載されたサイトを見つけたので参照してみてください。

4.7.9. MySQL 4.1 のパスワードハッシュ
http://dev.mysql.com/doc/refman/5.1/ja/password-hashing.html

よはん

ありがとうございます。
ようやく問題解決しました。
 ユーザーCactiに全権限を付与したあと、明示的に短いハッシュを生成したところ
Cactiの初期設定画面が表示されました。
 私のために毎回クイック&的確なレスを返してくださいまして誠にありがとう
ございました。
 pnpkさんの協力がなければここまで辿り着けなかったとおもいます。

最後に一点だけ疑問なのですが「古いタイプの認証」とはどういう意味なんでしょうか? 

pnpk

こんにちは、コメントありがとうございます。

明示的に短いハッシュを生成というのはMySQLの認証に古いタイプの認証を許可させる手順です。

自分で試した時にこのコマンドを実行しなければCacti動作しなかったと記憶しています。

にわか鯖管のメモさんのページに記載が無いのはMYSQLのバージョン差異によるものかな?と思います。

ただし最新のMYSQLで動作確認していないので今もこの手順が必要かどうかは分りませんが、この記事を書いた時点ではこの手順が必要でした。

以下のサイトにも同様の記載ありますのでこちらも一度参照してみてください。

http://docs.cacti.net/node/457

If you are running MySQl 4.1 and above…とありますのでMYSQL4.1以上を使う場合にはこの手順必要なようです。

よはん

お疲れ様です。
SHOW GRANTS FOR ‘cactiuser’@’localhost’;
実行した結果、GRANT ALL PRIVILEGES ON `cacti`.* TO ‘cactiuser’@’localhost’が出ました。よって権限は付与されてると思います。
 今回は「にわか鯖管のメモ」をメインに、「にわか鯖管のメモ」で分からないところは、pnpkさんのブログを参考にして設定しました。ところでPNPKさんの、archives/276の中の「明示的に短いハッシュを生成」はどういう目的で行うのでしょうか?
 ここは「にわか鯖管のメモ」には記述されてなく、目的もわからなかったので
あえて設定していません。ひょっとするとここが原因ということは考えられない
でしょうか?pnpkさんのブログのarchives/275、276の手順は,「明示的に短いハッシュを生成」以外は全て行ってます。

pnpk

コメントありがとうございます。
実はDB詳しく無いのですが分る範囲でお答えいたします。

rootでログインした後に以下のコマンドでDBに対する権限が分ります。

SHOW GRANTS FOR ‘cactiuser’@’localhost’;

以下のようであれば権限は付与されていると思います。

GRANT ALL PRIVILEGES ON `cacti`.* TO ‘cactiuser’@’localhost’

また、設定変更した後には必ず

flush privileges;

を実行してください。

また、すべてNとなってましたという部分についてはcactiuserに対する権限ですよね?そうであれば画面見ていないので確実では無いですが、おそらく問題無いと思います。

よはん

こんばんは。
素早い返事ありがとうございます。 
実はhttp://forums.cacti.net/post-86725.htm
のフォーラムは質問する前に確認しました。
 include.phpは確認して、pnpkさんの記述どおりであることは
確認しました。またデータベースcactiを一旦Dropして再度cactiを生成した
上でcacti.sqlの再インポートを行ったのですが効果なしでした。
 ユーザcactiuserへのGrant文による権限の付与ですが、これを行った後
SELECT * FROM mysql.user WHERE User=’cactiuser’ \Gでcactiuserの権限をみると
すべてNとなってました。
 これは不具合なのでしょうか?

pnpk

コメントありがとうございます。

既にテーブルありますよ。という事ですね。

http://forums.cacti.net/post-86725.html

こちらのフォーラムに同じ現象の事が記載されておりました。

cacti.sqlをインポートした時のエラーは”既にテーブルがあるからテーブル追加出来ませんよ”という事で、ブラウザ上からアクセスしたものについてはテーブルがありませんよ。という事ですね、ややこしいです。

おそらくCactiを実行するユーザに対してCacti用のテーブルのアクセス権限が付与されていないのだと思います。

http://pnpk.net/cms/archives/276

こちらの■ユーザ設定のあたりにGRANTっていうコマンドを実行している部分があるんですがこのあたりをもう一度実行してみてください。

切り分け方法としては一度Cactiに登録しているMYSQLのユーザをcactiuserではなくrootに変更してCactiがきちんと動作するか見てみるのも良いかも知れません。

よはん

こんにちは。
レスありがとうございます。
http://pnpk.net/cms/archives/276
の作業はすべておこなったのですが上述のエラーが出ます。
cacti.sqlを再度インポートするとERROR 1050 (42S01) at line 5: Table ‘cdef’ already existsと返されます。似たような経験はおありでしょうか?

pnpk

コメントありがとうございます。
cacti.sqlがインポートされていないという事なのでとりあえず

http://pnpk.net/cms/archives/276

こちらの

■TABLEの作成

この項目を実行してみてください。

よはん

こんにちは。
いつも楽しく読ませていただいております。

 私もCactiをインストールしてみましたが、各アプリを導入後ブラウザで
http://localhost/cacti/を入力したところ、IEの画面で下記のエラーが
出ました。
**************************************
 Error

You have created a new database, but have not yet imported the ‘cacti.sql’ file. At the command line, execute the following to continue:

mysql -u cactiuser -p cacti

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です