*ZABBIX [#teb86840] [[zabbix:+http://www.zabbix.com/jp/]] 統合監視システム。やろうと思えば、ログとかも収集出来る。 基本は公式のwikiがあるのでそれを見ればわかる。以下参考資料(wiki) [[zabbix 1.8:+https://www.zabbix.com/documentation/jp/1.8/manual/installation/installation_from_source]] [[zabbix 2.2:+https://www.zabbix.com/documentation/2.2/manual/installation/install]] [[zabbix RPM:+http://www.zabbix.jp/documents/installation/install-rpm]] ~ *インストール [#j496f01c] &size(16){&font(b){0. 前提条件};}; -[[zabbix-server>#deb5846c]] -[[zabbix-agentd>#t8492ea9]] 以下を前提でメモしてある。 ・zabbixは"ver 2.2.1rc1"を使用。 各IPアドレスは、 ・zabbix-server = 192.168.1.10 ・zabbix-agentd = 192.168.1.10,192.168.11.11 とする。 ~ &size(16){&font(b){1. 前準備};}; 予め、必須なミドルウェアを入れておく。 [[Apache>Linux/Source/Apache]] [[MySQL>Linux/Source/MySQL]] [[PHP:+http://jp2.php.net/downloads.php]] <- まだ書いていない(´・ω・`) ミドルウェアを入れた後にzabbix用ユーザ、グループを作成。 # groupadd zabbix # useradd -g zabbix -d /var/zabbix -s /sbin/nologin zabbix その後、zabbixで監視する物に対応するライブラリ(snmp-develとか)を突っ込む。 ライブラリ関係までmakeするのだと、切りが無いのでサクッとapt-getなりyumなりするのを推奨。 ~ *zabbix-server [#y6e27480] &size(16){&font(b){2-1. zabbix-serverのビルド};}; 公式wikiの通りにソースを調理していく。 zabbix-serverを入れる時は殆どの場合でzabbix-agentdも入れる筈なので一緒に入れておく。 zabbix-agentdのみインストールする場合は[[下記>#t8492ea9]]参照。 # tar zxvf zabbix-2.2.1rc1.tar.gz # cd zabbix-2.2.1rc1 # ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 # make # make install ~ &size(16){&font(b){2-2. zabbix-serverの設定};}; ./configureを打つ時にzabbix-serverの設定ファイル保存先を、sysconfdirで指定しても良いのだが、 折角prefix指定をやっているのでシンボリックリンクで対処する。 # cd /etc # ln -s /usr/local/zabbix/etc ./zabbix # cd zabbix # vi zabbix_server.conf ~ 最低限、以下の項目を設定しておく。 &font(b){※設定例(例として、パスワードはzabbix_passにしてある)}; LogFile=/var/log/zabbix/zabbix_server.log LogFileSize=16 DBHost=127.0.0.1 DBName=zabbix DBUser=zabbix DBPassword=zabbix_pass DBSocket=/tmp/mysql.sock <- MySQLのsock設定と同じにする DBPort=3306 <- MySQLのポート設定と同じにする ListenIP=192.168.1.10 Include=/usr/local/zabbix/etc/zabbix_server.conf.d/ ~ &size(16){&font(b){2-3. MySQLの準備};}; zabbix用のDBを作成する前にMySQLのコンフィグをチューニングする。 zabbixはInnoDB方式で書き込んでいく為、普段の設定とは少し違う項目が増える。 あと、zabbixはデータ量が凄く多いのでチューニングをしないとDB容量がすぐGB単位になる。 &font(b){※アイテム数150を毎分取得していくと、一日で20Mバイトは使う。}; 詳細はオフィシャルの[[wiki>+https://www.zabbix.com/documentation/jp/1.8/manual/performance_tuning]]を見る事。 一例としてこんな感じにする。 # vi /etc/my.cnf --- #DBファイルをテーブル毎に管理する。 innodb_file_per_table #実メモリ容量の50%~70%程度がいいらしい。 innodb_buffer_pool_size = 1024M #HDDの容量に応じて変化させる。32M,64M,128M程度が無難。それ以上だとあまり意味がなくなる。 innodb_log_file_size = 32M ~ zabbix用にMySQLのユーザとデータベースを作成する。 ユーザのパスワードは、zabbix_server.confに書いた物と同じにする。 もし、MySQLの設定でデータベースのデフォルト文字コードがUTF8になっていないのなら、 データベースを作成する時に文字コードをUTF8指定にして作成する。 # mysql -u root -p Enter password: {rootのパスワード} > create database zabbix default character set utf8; > grant all on zabbix.* to zabbix identified by 'zabbix_pass'; > flush privileges; > exit; ~ データベースを作ったら、zabbixのソースに付いているSQLテンプレートを流し込んでデフォルトデータを作る。 &font(b){※流し込む順番は以下で固定。};毎回パスワード聞かれるけど、頑張って打ち込んでいく。 # mysql -u root -p zabbix < {zabbixのソースコード}/database/mysql/schema.sql # mysql -u root -p zabbix < {zabbixのソースコード}/database/mysql/images.sql # mysql -u root -p zabbix < {zabbixのソースコード}/database/mysql/data.sql ~ &size(16){&font(b){2-4. 起動準備};}; zabbix-server起動スクリプトのコピーとかを行う。 ※今回はfedora/CentOS用スクリプトを使用。他のディストリビューションならそれに合わせる。 # cp {zabbixのソースコード}/misc/init.d/fedora/core5/zabbix_server /etc/init.d/ # chmod 755 /etc/init.d/zabbix_server # chkconfig --add zabbix_server # chkconfig zabbix_server on ----- ※起動スクリプトを修正する。 ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_server" ZABBIX_PID="/var/run/zabbix" if [ ! -e ${ZABBIX_PID} ] ; then mkdir ${ZABBIX_PID} chown zabbix.zabbix ${ZABBIX_PID} chmod 750 ${ZABBIX_PID} fi ~ &size(16){&font(b){2-5. Apacheの設定};}; zabbix用にApacheのディレクトリを作成し、extraコンフィグも書く。 説明の為、apacheのDocumentRootを"/var/apache/html"とする。 ※セキュリティとかを考慮していないので、WANに公開している鯖でzabbix-serverを構築する時は注意。 # vi /usr/local/apache/conf/extra/httpd-zabbix.conf //Apache2.4での書き方 Alias /zabbix/ "/var/apache/zabbix/" <Directory "/var/apache/zabbix"> Options FollowSymLinks MultiViews ExecCGI AllowOverride All Require all granted </Directory> //Apache2.2での書き方 Alias /zabbix/ "/var/apache/zabbix/" <Directory "/var/apache/zabbix"> Options FollowSymLinks MultiViews ExecCGI AllowOverride All Order Allow,Deny Allow from all </Directory> ~ 設定を書き換えたらzabbixのPHPを移動させ、apacheの再起動をする。 # cp {zabbixのソースコード}/frontends/php /var/apache/zabbix # chown -R root.www /var/apache/zabbix # chmod -R 750 /var/apache/zabbix # find /var/apache/zabbix -type f -print | xargs chmod 640 # /etc/init.d/apache restart ~ &size(16){&font(b){2-6. Webインストール};}; Webブラウザを起動して、"http://[zabbix-serverのIPアドレス]/zabbix/"にアクセスをして、画面の指示に従いつつインストールを完了させる。 途中で、 ・PHPのモジュールが足りない -> PHPをリビルド ・PHPの必要要件(メモリ容量等)が足りない -> /etc/php.iniを書き換え、apache再起動 ・MySQLに接続出来ない -> MySQLとzabbix-serverの設定を見直す ・zabbix.conf.phpを設置出来ない -> 一時的にパーミッションを書き換えるか、手動配置 等を行う必要が出てくる。その時はその都度対応していく。 ~ *zabbix-agentd [#k03359f2] &size(16){&font(b){3-1. zabbix-agentdのビルド};}; ソースコードはzabbix-serverと同じ。 # tar zxvf zabbix-2.2.1rc1.tar.gz # cd zabbix-2.2.1rc1 # ./configure --prefix=/usr/local/zabbix --enable-agent # make # make install ~ &size(16){&font(b){3-2. zabbix-agentdの設定};}; 事前に、zabbix-serverをインストールしていて、シンボリックリンクを張ってあった場合は再度張らないでOK # cd /etc # ln -s /usr/local/zabbix/etc ./zabbix # cd zabbix # vi zabbix_agentd.conf ~ 最低限、以下の項目を設定しておく。 ※設定例 //IPアドレスが"192.168.1.10"のマシンを想定 LogFile=/var/log/zabbix/zabbix_agentd.log ListenIP=192.168.1.10 Server=192.168.1.10 ServerActive=192.168.1.10 Hostname={ホストネームを英語で書く} Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/ //IPアドレスが"192.168.1.11"のマシンを想定 LogFile=/var/log/zabbix/zabbix_agentd.log ListenIP=192.168.1.11 Server=192.168.1.10 ServerActive=192.168.1.10 Hostname={ホストネームを英語で書く。他と被らない事} Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/ ~ &size(16){&font(b){3-3. 起動準備};}; zabbix-agentd起動スクリプトのコピーを行う。 ※今回はfedora/CentOS用スクリプトを使用。他のディストリビューションならそれに合わせる。 # cp {zabbixのソースコード}/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/ # chmod 755 /etc/init.d/zabbix_agentd # chkconfig --add zabbix_agentd # chkconfig zabbix_agentd on ----- ※起動スクリプトの中身を修正する。以下は一例。 ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd" ZABBIX_PID="/var/run/zabbix" if [ ! -e ${ZABBIX_PID} ] ; then mkdir ${ZABBIX_PID} chown zabbix.zabbix ${ZABBIX_PID} chmod 750 ${ZABBIX_PID} fi ~ *インストール後のチューニング [#oed76bd0] 後は、zabbix-server,zabbix-agentdの再起動テストや、 マシンごとリブートした時に正常稼働するかのチェックを行っていく。 負荷が結構高いので、いらないテンプレートは無効にした方が良い ~ &size(16){&font(b){4-1. ログローテート};}; zabbix用のログローテートを行わないと、ログが肥大化していくので注意。 # vi /etc/logrotate.d/zabbix /var/log/zabbix/*.log { missingok notifempty sharedscripts create 0664 zabbix zabbix } ※OSごと再起動させて確認をする。 # reboot ~ &size(16){&font(b){4-2. zabbixのグラフ文字化け対策};}; インストール直後だとグラフ表示用のフォントが入っていないので、 OSにインストール済みのフォントへリンクして読み込む様にする。 フォントに2バイト文字データが入っていればグラフで2バイト文字の表示をするがPゴシックが無難。 # cd /var/apache/zabbix/fonts # ln -s /usr/share/fonts/ipa-pgothic/ipagp.ttf ./ipagp.ttf # vi ../include/defines.inc.php --- #以下の項目に書き換える define('ZBX_GRAPH_FONT_NAME', 'ipagp'); //font file name ... define('ZBX_FONT_NAME', 'ipagp'); ~ &size(16){&font(b){4-3. zabbixのグラフ標準表示時間の設定};}; 標準だと、zabbixのグラフは最大2年間・最小とデフォルトが1時間を表示する設定になっている。 この状態だと都合によっては見づらくなるので、PHPを書き換えて表示時間の調整を行う。 設定する単位は秒になる(1時間=3600・1日=86400)。 # vi /var/apache/zabbix/include/defines.inc.php --- #最小時間 define('ZBX_MIN_PERIOD', 3600); // 1 hour #最大表示時間 define('ZBX_MAX_PERIOD', 63072000); // the maximum period for the time bar control, ~2 years (2 * 365 * 86400) #デフォルトの表示時間 define('ZBX_PERIOD_DEFAULT', 3600); // 1 hour