さて、なんでうちでMySQLを入れておかないといけないかと言うと、cactiでリソースのグラフ表示をしているため。
いい加減cactiも使い始めて長いので、最近のトレンド(?)は何かな〜、と思って調べてみると、muninとかzabbixとかが引っかかった。
いずれもcactiと同じくrrdtoolを使っていて、muninはperl、zabbixはphp+RDBMSのようだ。
どちらを試しても良かったのだが、なんとなくzabbixを試して見ることに。
統合監視ツールZabbixを試すメモ [FreeBSD](fkimura.com)が参考になった。
portsディレクトリを見ると、net-mgmtにzabbix2-agent, zabbix2-frontend, zabbix2-proxy, zabbix2-server と4種類のportsがある。
1台構成で運用する場合、agent, frontend, serverの3つをインストールする必要がありそう。
frontendとserverのインストール時に、RDBMSの選択があるので、私はPostgreSQLを選択した。
ちなみに、agentが自ノードの情報を収集してserverに送り、serverが各ノードから集めた情報をRDBMSに保存し、frontendがhttpサーバ経由でユーザに情報を見せる、と言う役割分担のようだ。
とりあえず3つともインストール。serverのインストール時に以下の表示がされる。
zabbix_server.conf(変更した行だけ示す)
zabbix_agentd.conf
特に変更は不要だった。
続いて、/etc/rc.conf に以下を追加して、デーモンが起動するようにする。
sysctlの設定は、/etc/sysctl.confに書いておく。
続いて、frontendの設定。
frontendは、webからやる。/usr/local/www/zabbix2にインストールされるので、httpd.confの設定とか、シンボリックリンクとかで、web server から見えるようにする。
私の場合は、管理系のツールをまとめたvirtual hostがあるので、そこのDocumentRootにシンボリックリンクを張った。
早速webサーバからアクセスすると、ウィザード形式でインストールが進む。まずは、phpの設定でいくつかNGになったので、/usr/local/etc/php.iniの文句を言われたところを修正。(今回追加したところだけ示す)
最後に設定を保存するところで、ファイルが書けなくてエラーになるので、参考サイトと同じようにhttp serverのownerで書けるようにする。
最初のログインは、Admin/zabbixで。(参考サイトだと、バージョンが違うせいかadmin/zabbixと書いてあってはまった。正規文書を読めって話であるが)
ユーザの設定で日本語に変えると、だいぶわかりやすくなるが、それにしてもメニュー階層が直感的にわかりにくい。難しいと思う。
この辺でagentも起動しておこう。
自宅のmacはMacPortsなので、
frontendの設定→ディスカバリに、Local network で zabbix agent を探す設定があるが、デフォルトで無効になっている。
頻繁に監視対象が増えるような環境でもないので、ここは設定→ホスト→ホストの作成でmacを追加する。(そうそう、serverが動いているホストは、最初から追加されてるけど監視が有効になっていないので、ホストの設定画面で有効にする)
テンプレートで、Template OS Mac OS Xを追加しておくと、そこそこ項目が出てくる。
ちなみに、serverのテンプレートは OS Linux になっていたので、これも削除して、OS FreeBSD を追加してみた。
あと、デフォルトのテンプレートだとネットワークアダプタの名前が固定になっていて、FreeBSDだとem0、Mac OS Xだとen0になっている。
うちの場合、FreeBSDがsk0、macだとen1なので、それぞれ設定→ホスト→アイテム内の該当部分(Incoming network traffic on ???とか、Outgoing network traffic on en1)を選び、複製してから「キー」のところを編集してやる必要があった。
ここまでやって、グラフを良く見ると文字化けしていることに気づく。

調べてみると、FAQらしく、デフォルトで使用しているフォントが日本語に対応していないのが問題らしい。
portsから、japanese/font-ipa をインストールしている場合、/usr/local/share/font-ipa/ にフォントがインストールされているので、以下のようにリンクを張る。
そして、/usr/local/www/zabbix2/include/defines.inc.phpを修正する。

なんでだー、と思って調べていると、日記/2011-01-23 - BugbearR's Wikiと言うページを発見。
ports/graphics/php5-gd ディレクトリでmake configすると、確かにEnable JIS-mapped Japanese font supportなんてのにチェックが入ってる。
こいつを外してビルドし直しても良かったんだけど、面倒だし影響範囲もわからなかったので、ページの通り/usr/local/www/zabbix2/include/graphs.inc.phpを修正
これで、無事に日本語が出るようになった。

いい加減cactiも使い始めて長いので、最近のトレンド(?)は何かな〜、と思って調べてみると、muninとかzabbixとかが引っかかった。
いずれもcactiと同じくrrdtoolを使っていて、muninはperl、zabbixはphp+RDBMSのようだ。
どちらを試しても良かったのだが、なんとなくzabbixを試して見ることに。
統合監視ツールZabbixを試すメモ [FreeBSD](fkimura.com)が参考になった。
portsディレクトリを見ると、net-mgmtにzabbix2-agent, zabbix2-frontend, zabbix2-proxy, zabbix2-server と4種類のportsがある。
1台構成で運用する場合、agent, frontend, serverの3つをインストールする必要がありそう。
frontendとserverのインストール時に、RDBMSの選択があるので、私はPostgreSQLを選択した。
ちなみに、agentが自ノードの情報を収集してserverに送り、serverが各ノードから集めた情報をRDBMSに保存し、frontendがhttpサーバ経由でユーザに情報を見せる、と言う役割分担のようだ。
とりあえず3つともインストール。serverのインストール時に以下の表示がされる。
====================================================================== For Zabbix server and proxy daemons, as well as Zabbix frontend, a database is required. It is not needed to run Zabbix agent. % cd /usr/local/share/zabbix2/server/database PostgreSQL: shell> psql -U <username> psql> create database zabbix; psql> \q shell> cd database/postgresql shell> psql -U <username> zabbix < schema.sql shell> psql -U <username> zabbix < images.sql shell> psql -U <username> zabbix < data.sql MySQL: shell> mysql -u<username> -p<password> mysql> create database zabbix character set utf8; mysql> quit; shell> mysql -u<username> -p<password> zabbix < database/mysql/schema.sql shell> mysql -u<username> -p<password> zabbix < database/mysql/images.sql shell> mysql -u<username> -p<password> zabbix < database/mysql/data.sql SQLite: shell> cd database/sqlite3 shell> sqlite3 /var/lib/sqlite/zabbix.db < schema.sql shell> sqlite3 /var/lib/sqlite/zabbix.db < images.sql shell> sqlite3 /var/lib/sqlite/zabbix.db < data.sql IBM DB2: shell> db2 "create database zabbix using codeset utf-8 territory us pagesize 327 68" shell> cd database/ibm_db2 shell> db2batch -d zabbix -f schema.sql shell> db2batch -d zabbix -f images.sql shell> db2batch -d zabbix -f data.sql To upgrade an existing database, see the scripts in /usr/local/share/zabbix2/server/upgrades. Please see http://www.zabbix.com/documentation/2.0/manual/installation/install for installation instructions. For use NMAP please edit sudoers ======================================================================PostgreSQLを選んだので、ユーザ/DBの作成権限のあるユーザで以下の手順でテーブル初期化。
% createuser -P zabbix 新しいロールのためのパスワード: パスワード もう一度入力してください:パスワード % createdb zabbix % cd /usr/local/share/zabbix2/server/database/postgresql % psql -U zabbix < schema.sql % psql -U zabbix < images.sql % psql -U zabbix < data.sql続いて設定ファイルの編集。設定ファイルは、/usr/local/etc/zabbix2に、zabbix_なんとか.conf.sampleと言うファイルがあるので、それぞれ.sampleのないファイル名にコピーして編集する。
zabbix_server.conf(変更した行だけ示す)
DBHost= DBUser=zabbix DBPassword=パスワードDBHostは、空にしておくとPostgreSQLの場合はtcpではなくunix domain socketになるらしい。
zabbix_agentd.conf
特に変更は不要だった。
続いて、/etc/rc.conf に以下を追加して、デーモンが起動するようにする。
# zabbix2 zabbix_server_enable="YES" zabbix_agentd_enable="YES"そして、おもむろにサーバを起動してみる。
# /usr/local/etc/rc.d/zabbix_server startすると、起動しない。/tmp/zabbix_server.logにログが出るので確認すると、
34298:20130615:133013.562 Starting Zabbix Server. Zabbix 2.0.6 (revision 35158). 34298:20130615:133013.562 ****** Enabled features ****** 34298:20130615:133013.562 SNMP monitoring: YES 34298:20130615:133013.562 IPMI monitoring: NO 34298:20130615:133013.562 WEB monitoring: YES 34298:20130615:133013.562 Jabber notifications: YES 34298:20130615:133013.562 Ez Texting notifications: YES 34298:20130615:133013.562 ODBC: NO 34298:20130615:133013.563 SSH2 support: NO 34298:20130615:133013.563 IPv6 support: YES 34298:20130615:133013.563 ****************************** 34298:20130615:133013.570 cannot allocate shared memory of size 8388543: [12] Cannot allocate memory 34298:20130615:133013.570 cannot allocate shared memory for history cache 34388:20130615:133200.918 Starting Zabbix Server. Zabbix 2.0.6 (revision 35158).共有メモリが確保できないらしい。
# sysctl -a|grep shm kern.ipc.shm_allow_removed: 0 kern.ipc.shm_use_phys: 0 kern.ipc.shmall: 10000 kern.ipc.shmseg: 10 kern.ipc.shmmni: 100 kern.ipc.shmmin: 1 kern.ipc.shmmax: 40960000 kern.features.posix_shm: 1いろいろ調べてみたところ、良くわからないけどshmmaxは足りてるがshmallが足りないっぽかったので、とりあえず10倍にしてみた。
# sysctl -w kern.ipc.shmall=10000これで、起動するようになったのだが、ちょっとびっくりするほどプロセスが立ち上がる。postfixみたいに、細かく役割分担するポリシーなのかな。
sysctlの設定は、/etc/sysctl.confに書いておく。
kern.ipc.shmall=10000
続いて、frontendの設定。
frontendは、webからやる。/usr/local/www/zabbix2にインストールされるので、httpd.confの設定とか、シンボリックリンクとかで、web server から見えるようにする。
私の場合は、管理系のツールをまとめたvirtual hostがあるので、そこのDocumentRootにシンボリックリンクを張った。
早速webサーバからアクセスすると、ウィザード形式でインストールが進む。まずは、phpの設定でいくつかNGになったので、/usr/local/etc/php.iniの文句を言われたところを修正。(今回追加したところだけ示す)
post_max_size = 16M max_execution_time = 300 max_input_time = 300続いてDBの設定があるので、サーバと同じように設定。Hostのところは注釈がなかったので空じゃなくてlocalhostのままにしたけど。
最後に設定を保存するところで、ファイルが書けなくてエラーになるので、参考サイトと同じようにhttp serverのownerで書けるようにする。
# touch /usr/local/www/zabbix/conf/zabbix.conf.php # chown www:www /usr/local/www/zabbix/conf/zabbix.conf.phpこれで、frontendの初期設定が完了すると、ログイン画面になる。
最初のログインは、Admin/zabbixで。(参考サイトだと、バージョンが違うせいかadmin/zabbixと書いてあってはまった。正規文書を読めって話であるが)
ユーザの設定で日本語に変えると、だいぶわかりやすくなるが、それにしてもメニュー階層が直感的にわかりにくい。難しいと思う。
この辺でagentも起動しておこう。
# /usr/local/etc/rc.d/zabbix_agent start監視対象が1台だけだと面白くないので、MacBookProにもagentを入れる。
自宅のmacはMacPortsなので、
% sudo port install zabbix2-agent ・・・中略・・・ #### #### #### ZABBIX2 agent installation section #### 1) Edit the sample .conf file /opt/local/etc/zabbix/zabbix_agentd.conf (rename & omit .sample) Set the following variable to the ip address of your ZABBIX server to allow it access to the agent. Server=x.x.x.x 2) Set zabbix_agentd to run at system boot sudo port load zabbix2-agent 3) A Win32 agent is in /opt/local/share/zabbix/zabbix_agent_win32 for installation on Windows NT 4.0, Windows 2000, and Windows XP. #### End ZABBIX2 agent installation section #### #### ####表示されたとおりに、zabbix_agent.conf を作ってServer=の行にzabbix serverが動いているホストを指定する。ついでに、HostnameとServerActiveも指定してみた。ServerActiveは良くわかっていない。
frontendの設定→ディスカバリに、Local network で zabbix agent を探す設定があるが、デフォルトで無効になっている。
頻繁に監視対象が増えるような環境でもないので、ここは設定→ホスト→ホストの作成でmacを追加する。(そうそう、serverが動いているホストは、最初から追加されてるけど監視が有効になっていないので、ホストの設定画面で有効にする)
テンプレートで、Template OS Mac OS Xを追加しておくと、そこそこ項目が出てくる。
ちなみに、serverのテンプレートは OS Linux になっていたので、これも削除して、OS FreeBSD を追加してみた。
あと、デフォルトのテンプレートだとネットワークアダプタの名前が固定になっていて、FreeBSDだとem0、Mac OS Xだとen0になっている。
うちの場合、FreeBSDがsk0、macだとen1なので、それぞれ設定→ホスト→アイテム内の該当部分(Incoming network traffic on ???とか、Outgoing network traffic on en1)を選び、複製してから「キー」のところを編集してやる必要があった。
ここまでやって、グラフを良く見ると文字化けしていることに気づく。

調べてみると、FAQらしく、デフォルトで使用しているフォントが日本語に対応していないのが問題らしい。
portsから、japanese/font-ipa をインストールしている場合、/usr/local/share/font-ipa/ にフォントがインストールされているので、以下のようにリンクを張る。
# cd /usr/local/www/zabbix2/fonts # ln -s /usr/local/share/font-ipa/ipagp.otf ipagp.ttf# zabbix2は、設定したファイル名に .ttf を追加するので、ファイル名がttfである必要がある。
そして、/usr/local/www/zabbix2/include/defines.inc.phpを修正する。
//define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans'); // font file name define('ZBX_GRAPH_FONT_NAME', 'ipagp'); // font file nameこれで、日本語が出るように・・・ならない。

なんでだー、と思って調べていると、日記/2011-01-23 - BugbearR's Wikiと言うページを発見。
ports/graphics/php5-gd ディレクトリでmake configすると、確かにEnable JIS-mapped Japanese font supportなんてのにチェックが入ってる。
こいつを外してビルドし直しても良かったんだけど、面倒だし影響範囲もわからなかったので、ページの通り/usr/local/www/zabbix2/include/graphs.inc.phpを修正
これで、無事に日本語が出るようになった。
