2013年6月アーカイブ

portauditから、php5の問題を指摘されたので、php5関連をバージョンアップした。
すると、php5-mysqlだけがうまくバージョンアップされない。
portupgradeを使わずに、/usr/ports/databases/php5-mysql で make してみると、mysql5.0なんて知らないと言われる。
/usr/ports/databasesを見ると、確かにmysql50-serverは既に存在しない。
最新は5.6っぽいので、バージョンアップすることにする。
つらつらと調べると、Upgrading mysql 5.1 to 5.5 on FreeBSD - 203 Creativeと言うページを発見。
まずは、以下のコマンドでmysql-clientに依存しているportsを調べる。(一部出力を省略)
# portupgrade -frn mysql-client
--->  Session started at: Sat, 15 Jun 2013 07:38:39 +0900
--->  Listing the results (+:done / -:ignored / *:skipped / !:failed)
        - databases/mysql50-client (port deleted)
        - databases/mysql50-server (port deleted)
        - net-mgmt/cacti (marked as IGNORE)
        - databases/p5-DBD-mysql (marked as IGNORE)
        - databases/php5-mysql (marked as IGNORE)
        - databases/p5-DBIx-Class-Schema-Loader (marked as IGNORE)
--->  Packages processed: 0 done, 6 ignored, 0 skipped and 0 failed
--->  Session ended at: Sat, 15 Jun 2013 07:38:42 +0900 (consumed 00:00:02)
んで、参考サイトには書いてないけど怖いのでmysql-serverを止めて、古いバージョンをアンインストール。
# pkg_deinstall -f mysql-client-5.0.90
# pkg_deinstall -fO mysql-server-5.0.77_1
この過程でも依存関係が表示されるので、最初の手順は不要かも。Oオプションを付けているのは、clientのアンインストールでserverの依存関係がなくなって、pkgdb -F するか -O をつけろと言われるので。
続いて、新しいバージョンをインストール。
# portupgrade -N databases/mysql56-server
インストールの過程でcmake関連のエラーが出たので、cmakeもportupgradeした。
インストールが終わったらDBサーバを起動。
# /usr/local/etc/rc.d/mysql-server start
んが、プロセスが起動しない。/var/db/mysql/ホスト名.err にログがあるので確認すると、--skip-locking なんてオプションは知らないと言っている。
/var/db/mysql/my.cnf に設定ファイルがあるので、該当の行をコメントアウト。
しかしまた別のエラーが出るので、/usr/local/share/mysql/ から適当な設定ファイルのデフォルトをmy.cnfにコピー。
これで、サーバが起動したと思いきや、サブプロセスがsignal 11で死にまくっている。
原因がわからなかったので、5.6は諦めてアンインストールし、再度mysql55-serverをインストール。
んで、起動してみると、今度は
InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes
InnoDB: than specified in the .cnf file 0 52428800 bytes!
みたいなエラーで起動しない。
そこで、my.cnf に以下の記述を追加した。
innodb_log_file_size = 50331648
元々デフォルトで使っていたはずなので、どこかのバージョンでデフォルトのサイズが変わったのね。
これでなんとか起動したので、mysql_upgradeを実行してみる。
# mysql_upgrade
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed
・・・なんだかわかりませんが失敗。
MySQL :: MySQL 5.1 リファレンスマニュアル :: 4.5.4 mysql_upgrade -- MySQL アップグレードのテーブル チェックを見ると、mysql_upgradeは中でmysqlcheckを実行するらしいので、直接叩いてみる。
# mysqlcheck --check-upgrade --all-databases --auto-repair
mysqlcheck: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect
えーっと、rootユーザでのDBアクセスに認証がかかっているせいですね。うん、確かにパスワードつけてる(MySQL - PC日記)
が、2005年につけたパスワードなんか覚えていない!
# ちなみに、覚えている場合は -p オプションをつければmysqlcheckがパスワードを聞いてくれます。
覚えていない場合はどうするのかと思って調べたら、MySQL :: MySQL 4.1 リファレンスマニュアル :: A.4.2 忘れたルートパスワードをリセットする方法がひっかかったので、そこを見て my.cnf に以下を記述。
skip-grant-tables
で、mysql-serverを再起動すると、mysqlcheckが成功した。
で、再度 mysql_upgrade を実行したら、今度は最後まで実行できたので、serverを止めて、skip-grant-tablesを削除した。

ここまででmysql自体のアップグレードは終了なので、最初に調べたmysql-clientに依存しているportsをportupgrade -f して、今回の作業は終了。
さて、なんでうちで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のインストール時に以下の表示がされる。
======================================================================
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)を選び、複製してから「キー」のところを編集してやる必要があった。

ここまでやって、グラフを良く見ると文字化けしていることに気づく。
zabbix_1.png
調べてみると、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
これで、日本語が出るように・・・ならない。
zabbix_2.png
なんでだー、と思って調べていると、日記/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を修正

これで、無事に日本語が出るようになった。
zabbix_3.png
2013年6月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

このアーカイブについて

このページには、2013年6月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2013年5月です。

次のアーカイブは2013年8月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.1.1