仕事の覚え書きです。
私自身、結構ハマリまくっていたので、備忘録として残しておきます。
同じようなところでつまずいているSEがいたら、参考にして頂けたらと思います。
挿絵とかはめんどいので文字のみです(笑)
でもこの通りにやればすんなりインストール出来るはずです。
【まえがき】
※RedHat系Linuxへのインストールを前提としています。
他のLinuxやOSの場合は、コマンド等は適宜読み替えてください。
※この解説ではすべての作業をrootユーザーで行っています。
テスト環境やプライベート環境なら問題はないでしょうが、
運用中のサーバー上での作業は必ず一般ユーザーで行い、
root権限が必要な時のみsuでrootになるかsudoでroot権限を得てください。
※すべてソースコードからのインストール手順です。
yum、apt等のパッケージインストーラを使用した手順は、簡単なので説明の必要もないし、
他に解説サイトがたくさんありますのでそちらにお任せします。
※インストール手順については、ソースコードのアーカイブをダウンロード後、
任意の作業フォルダにて展開まで行われた状態からの手順です。
UNIX/Linuxの操作やコマンドについての詳細はここでは解説しません。
他に素晴らしいサイトがたくさんありますので、そちらにお任せします。
※cacti、nagiosがそれぞれ何であるかの解説は、ここではしません。
→
cactiオフィシャルサイト
→
nagiosオフィシャルサイト
【各プログラムユーザーの作成】
あらかじめ、サーバー上に下記のユーザーを作成しておく。
パスワードはそれぞれ何かしら設定すること。
各ユーザーの詳細設定(ローカルログインを許可するかとか)は環境に合わせてお好きなように。
書式:ユーザー名(グループ名)
・apache(apache、nagios、cacti)
・mysql(mysql)
・cacti(cacti、apache)
※cactiユーザーについては、ほとんどのサイトがcactiuserというユーザー名で解説しているが、
長ったらしくて見栄えが悪いので個人的には嫌い。
※これらはプログラム動作用ユーザーのため、ローカルログイン不可の設定(-s /sbin/nologinオプション付加)を推奨。
【apache2のインストール】※必須
root# ./configure --enable-suexec --with-suexec-caller=apache \
--enable-module-so --enable-module-status
※オプションの説明
・--enable-suexec:suEXECを有効に。なんかわからんけどやっとけば問題なし(たぶん)
・--with-suexec-caller=apache:apacheというユーザーで動作するように指定
・--enable-module-so:DSOモードを有効に。
・--eneble-module-status:apacheステータスモニタを有効に。(apacheの動作状況をcactiでモニタリングしたい場合は必要)
→moduleは--enable-module=allとすると有無を言わさずすべてのモジュールが有効になる。
セキュリティやサーバー負荷等、環境上問題ないならこっちのが間違いない(と思う)
コンパイル、インストールはお約束どおり
root# make
root# make install
root# chown -R apache:apache /usr/local/apache2
※インストール後、apacheディレクトリ以下の所有権をすべてapacheユーザーに変更しておく。
インストールできたら早速起動してみる。
root# /usr/local/apache2/bin/apachectl start
※httpd.confを編集せずそのまま起動した場合、ホスト名(ServerName)がエラーだとかいう趣旨のエラーメッセージが出るが問題はない。
※OS標準のhttpd等がインストールされていた場合は、httpdの方は殺してapachectlを使うようにする。
httpdの自動起動もオフにしておく。
→必ずしも上書きされるわけではないらしい。
※自動起動について
ソースコードからインストールした場合は、chkconfigへの登録は行われない。
自分で起動スクリプトを書いて所定の場所に設置するか、/etc/rc.localに起動コマンド(上記)を記述する。
後者の方が楽。/etc/rc.localはMS-DOSで言うところのAutoexec.batみたいなもの。
前者の起動スクリプトは書ければそれに越したことはないが、だからと言って特別メリットはない。
動作確認。
ブラウザで下記アドレスにアクセスし、『ItWorks!』と出てくればOK。
http://サーバーIPアドレス/index.html
【MySQLのインストール】※必須
root# ./configure --prefix=/usr/local/mysql --with-mysqld-user=mysql
※オプションの説明
・--prefix=/usr/local/mysql:インストール先を/usr/local/mysqlに指定。
→デフォルトは/usr/localなのでファイル郡の所在がわかりづらくなる。(パスを通すときとかに困る)
・--with-mysqld-user=mysql:mysqlというユーザーで動作するように指定
コンパイル、インストールはお約束どおり
root# make
root# make install
root# chown -R mysql:mysql /usr/local/mysql
※インストール後、mysqlディレクトリ以下の所有権をすべてmysqlユーザーに変更しておく。
インストール後、データベースの初期化を行う。
(手動でやらなくても、mysqlデーモンを起動したときに勝手にやってくれるので問題はない)
root# /usr/local/mysql/bin/mysql_install_db
root# chown -R mysql:mysql /usr/local/mysql/
MySQLデーモンの起動
root# /usr/local/mysql/bin/mysqld_safe &
※ソースコードからインストールした場合はmysqld_safeがデーモンとなる。
末尾で『&』指定(バックグラウンド動作)しないとプロンプトが返ってこないので困惑する(笑)
※自動起動について
ソースコードからインストールした場合は、chkconfigへの登録は行われない。
自分で起動スクリプトを書いて所定の場所に設置するか、/etc/rc.localに起動コマンド(上記)を記述する。
後者の方が楽。/etc/rc.localはMS-DOSで言うところのAutoexec.batみたいなもの。
前者の起動スクリプトは書ければそれに越したことはないが、だからと言って特別メリットはない。
デーモンを起動したら、MySQLにrootでログインしてパスワードの設定を行う。
→デフォルトはパスワードなしなのでそのまま使用はお勧めしない。
また、パスなしユーザーがいくつか登録されているので、不要なものは削除する。
【php5のインストール】※必須
root# ./configure --with-apxs2 --with-snmp --with-mysql=/usr/local/mysql \
--enable-sockets --enable-ftp --with-gettext \
--enable-mbstring --with-mcrypt
※オプションの説明
・--with-apxs2:apacheモジュールとして組み込む。指定しといた方が後で楽。
・--with-mysql:mysqlサポートを有効に。cacti、NagiosQL3の動作に必要
・--with-snmp:snmpサポートを有効に。cactiで必要。なくても大丈夫そうだが・・・
・--enable-sockets:ソケットを有効に。cactiの動作に必要
・--enable-ftp:ftpサポートを有効に。NagiosQL3の動作に必要
→ftpは--withではなく--enable。(--withと書いてるサイトが多いが、php4では--withなのか?)
・--with-gettext:gettextサポートを有効に。NagiosQL3の動作に必要
・--enable-mbstring:マルチバイト文字サポートを有効に。日本語表示に必要?とりあえず入れとけ。
・--with-mcrypt:mcrypt(暗号化サポート)を有効に。phpMyAdmin等を使う場合はあると良い
※指定できるすべてのオプションを知りたければ、
『./configure --help』と入力する。
英語で書いてあると思うけど頑張って読むべし(笑)
コンパイル、インストールはお約束どおり
root# make
root# make install
インストールしたら、apache2のコンフィグ(httpd.conf)に以下を追記。
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
※
セクションに組込み済みの何かの記述があるので、そこに追記すれば良い。
デフォルトで記述がない場合はセクションを作成し記述する。
この場合はファイルの末尾にでも記述すると後から見たときにわかりやすい(かも)。
さらにセクションに、以下も追記しておくと良い。
DirectoryIndex index.html index.php
※apache2インストール時のデフォルトでは『index.html』のみ記述されている。
phpを敢えて追記しなくても問題はないが、特に理由がない限りは追記しとけば間違いない。
cgiとかをインデックスとして追加したい場合も同様に追記すれば良い。
コンフィグをいじったのでapache2の再起動を忘れずに。
root# /usr/local/apache2/bin/apachectl restart
※『restart』なのにサービス停止だけしてしまって起動しないことがあるので注意。
→うちの環境だけか?
動作確認。
apache2のDocumentRootディレクトリにindex.php(テキストファイル)を作成する。
内容は下記のとおり。
# index.php for Test PHP Module.
<?php
phpinfo();
?>
※viか何かで作成すれば良い
作成したら、ブラウザでアクセス。PHPインフォメーションページが表示されたらOK。
http://サーバーIPアドレス/index.php
【pear/HTML_Templateのインストール】※NagiosQLを使う場合は必要
root# pear install HTML_Template_IT
※pearはPHP5と一緒にインストールされる。追加モジュールはこのように別途インストールする。
いよいよ主役のインストール。
まずはcactiを使用する場合。RRDToolとcactiのインストールが必要。
【RRDToolのインストール】
root# ./configure --prefix=/usr/local/rrdtool
※オプションの説明
・--prefix=/usr/local/rrdtool:インストール先を/usr/local/rrdtoolに指定。
→デフォルトでは/usr/local/rrdtool-(バージョン番号)となってしまうので見栄えも悪いし後で間違いなく困る。
デフォルトインストール後にrrdtoolでシンボリックリンクを張ると紹介してるサイトもあるが、これもよろしくない。
デフォルトインストール後にmvコマンドでディレクトリ名をrrdtoolに変更してしまうと紹介してるサイトもあるが、
これは間違いなくトラブルの元。
コンパイル、インストールはお約束どおり
root# make
root# make install
cactiで使用する前提でインストールするだけなら、他にやることは何もない。
※ここではRRDToolはcactiを使用するためだけなので、RRDTool自体の解説はしません。
他に素晴らしいサイトがありますのでそちらにお任せします。
【cactiのインストール】
※cactiはプログラム郡ではなくあくまでPHPスクリプト郡なので、
コンパイルやインストールはなく、展開したフォルダごと任意の場所に設置するだけで良い。
○設置例 その1:任意の場所に設置
root# mv cacti-(バージョン番号) /usr/local/cacti
root# chown -R cacti:cacti /usr/local/cacti
※この場合はhttpd.confまたはインクルード対象コンフィグに
設置したディレクトリに対するAliasとDirectory設定を追記するのを忘れずに。
○設置例 その2:apacheのドキュメントルートに設置
root# mv cacti-(バージョン番号) /usr/local/apache2/htdocs/cacti
root# chown -R cacti:cacti /usr/local/apache2/htdocs/cacti
または、その1で設置したディレクトリのシンボリックリンクをドキュメントルートに設置
root# ln -s /usr/local/cacti /usr/local/apache2/htdocs
※この場合はhttpd.confのDocumentRootに対する設定が適用されるので特に追加設定は不要。
ただし、DocumentRootは大抵すべてのユーザーに対してアクセスを許可してるので、
セキュリティを考慮しなければならない環境においてはお勧めしない。
ここからは、設置例その1を前提に解説していきます。
○cacti用データベースをmysqlへインポート
※mysqlコマンドについては、mysqlの実行ファイル格納ディレクトリ
(この例では/usr/local/mysql/bin/)にパスが通っている前提。
パスが通っていない場合はフルパスでコマンドを入力する。
root# cd /usr/local/cacti
root# mysqladmin -p create cacti ;『cacti』というデータベースを作成
root# mysql -p < cacti.sql cacti ;cacti.sqlファイルの内容をデータベースにインポート
root# mysqladmin -p reload ;mysqlをリロード
mysqlにログインして、cactiユーザーをmysqlにも登録する。
root# mysql -p
Enter password:(ルートのパスワード)
mysql> grant all on cacti.* to cacti@localhost identified by '(cactiのパスワード)';
mysql> flush privileges;
mysql> quit
※mysql上のcactiユーザーのパスワードは、UNIX上のそれと同じでもいいし、変えてもいい。
※mysql上のflush privilegesは、UNIXコンソール上のmysqladmin reloadと同じ。
どちらでも良いが必ず実行すること。
○cactiコンフィグファイルの編集
root# vi /usr/local/cacti/include/config.php
/* make sure these values refect your actual database/host/user/password */
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "(mysql上のcactiのパスワード)";
$database_port = "3306";
※$database_usernameと$database_passwordを、mysql上で設定したcactiユーザーのものに書き換える。
○パッチの適用
インストールしたcactiのバージョンに対してパッチがリリースされている場合は、すべて適用する。
root# wget http://www.cacti.net/downloads/patches/0.8.7d/ping_timeout.patch
root# wget http://www.cacti.net/downloads/patches/0.8.7d/graph_search.patch
root# wget http://www.cacti.net/downloads/patches/0.8.7d/page_length_graph_view.patch
root# wget http://www.cacti.net/downloads/patches/0.8.7d/snmp_string_issue_with_rrdtool_creation.patch
root# patch -p1 -N < ping_timeout.patch
root# patch -p1 -N < graph_search.patch
root# patch -p1 -N < page_length_graph_view.patch
root# patch -p1 -N < snmp_string_issue_with_rrdtool_creation.patch
※上記は、cactiバージョン0.8.7dの場合。
○Spine(旧cactid)のインストール
Spineは、C言語で書かれた高速なポーラー。
※cacti標準のポーラーはPHP
標準のもので事足りる場合は特に入れなくても良い。
監視対象(ホストやサービス)が多い等でポーリングが重い場合は入れてみると良い。
オフィシャルで提供されているパッケージはまだ完全でなく、
コンパイル・インストールは少々コツがいる。かなりハマッた(笑)
※2009年7月現在の情報
まず、いくつかのパッケージを追加インストールが必要
※各パッケージが依存関係をもつ追加パッケージについては割愛
・libtool
・automake
・mysql-devel
・net-snmp-devel
インストールしたら、コンパイルまでもっていくまでのいろいろ
root# libtoolize --copy --force
root# aclocal
root# automake --add-missing
root# autoheader
root# autoconf
ここまで来たら、やっとコンパイル&インストール
root# ./configure --with-mysql=(mysqlインストールパス) --with-snmp=(net-snmpインストールパス)
root# make
root# make install
Spineを使用する場合も、cronで回すのはpoller.phpなので注意。
Spineをcronで回してもデータ収集は出来ない。
○ブラウザでアクセス
いよいよブラウザでcactiにアクセス。
http://(サーバーのIPアドレス)/cacti
初回アクセス時はインストレーションウイザード画面が表示されるので、
画面に従ってインストールを進める。
※インストレーション時の初期アカウントは、ユーザーID・パスワードともにadmin。
パスワードは必ず変更すること。
ここまででcactiのインストールは完了。
ここから先、cactiの操作については既存のサイトにお任せします。
【Nagiosのインストール】
※ここではNagios3.xのインストールについて解説します。
2.x以前については既存のサイトにお任せします。
○Nagios本体のインストール
root# ./configure
Nagiosはコンパイルはシンプルだがmakeオプションが多彩なので要チェック。
root# make all
root# make install
※プログラムのインストール
root# make install-init
※起動スクリプト(/etc/rc.d/init.d/nagios)を生成。
→サンプルと解説するサイトもあるが、特にいじることなくこのまま使っている。
root# make install-config
※サンプルのNagiosコンフィグファイル(/usr/local/nagios/etc/*.cfg)をインストール
root# make install-commandmode
※ブラウザから監視設定の変更が出来るようCGIをインストール
→Nagios3系以降。
○Nagiosプラグインのインストール
Nagiosは本体のみでは動作せず、プラグインが必要。
とりあえず標準プラグインセット(nagios-plugins)をインストール
コンパイル・インストールはごくシンプル
root# ./configure
root# make
root# make install
ここまででNagiosのインストールは完了。
ここから先、Nagiosの操作については既存のサイトにお任せします。