2010年11月27日土曜日

CentOS 5.5 + MySQL 5.1.53 + Zabbix 1.8.3

CentOS 5.5上にMySQL 5.1.53をインストールし、さらにそのサーバ上でZabbix 1.8.3を稼働させます。

CentOS 5.5標準のMySQLではバージョンが古いため、新しいバージョンで実装された機能を利用することができません。
ZABBIX-JPのフォーラムを見ていて、MySQL 5.1.53でInnoDB Pluginを利用した環境を構築したいという要望が挙っていたので、どうすれば簡単に構築できるか検証してみました。
極力標準のRPMそのままか、共存できることを意識して構築を進めることとします。

InnoDB Pluginを利用するメリットに関しては、検索すればすぐ出てくるので検索してみてください。

ただし、以下の手順は十分な試験を行っていませんので、ご自身で責任を持ってトライしてください。

----------
1.MySQL 5.1.53のインストール

MySQLのパッケージを
 http://dev.mysql.com/downloads/mysql/
からダウンロードします。

ダウンロードするのは、

 MySQL-server-community-5.1.53-1.rhel5.x86_64.rpm
 MySQL-client-community-5.1.53-1.rhel5.x86_64.rpm
 MySQL-devel-community-5.1.53-1.rhel5.x86_64.rpm

です。
この後の手順で、MySQLのライブラリを利用したコンパイルを行うので、develパッケージも必要です。

ダウンロードしたら、これらのパッケージをインストールします。

 # rpm -ivh MySQL-server-community-5.1.53-1.rhel5.x86_64.rpm MySQL-client-community-5.1.53-1.rhel5.x86_64.rpm MySQL-devel-community-5.1.53-1.rhel5.x86_64.rpm

インストール後、MySQLの設定を変更するため、一度サービスを停止します。

 # service mysql stop

InnoDBのエンジンとしてInnoDB Pluginを利用するため、ベースとなる設定ファイルに変更します。

 # cp /usr/share/mysql/my-small.cnf /etc/my.cnf

/etc/my.cnfのmysqldセクションに、以下のような設定を追加します。

---
[mysqld]
...
ignore-builtin-innodb
plugin-load=innodb=ha_innodb_plugin.so
default-character-set=utf8
innodb_file_per_table
...
---

設定追加後、サービスを起動します。

 # service mysql start

確認方法は、mysqlコマンドで接続してshow pluginsコマンドを実行すると以下のように表示されます。

---
mysql> show plugins;
+------------+----------+----------------+---------------------+---------+
| Name | Status | Type | Library | License |
+------------+----------+----------------+---------------------+---------+
| binlog | ACTIVE | STORAGE ENGINE | NULL | GPL |
| partition | ACTIVE | STORAGE ENGINE | NULL | GPL |
| ARCHIVE | ACTIVE | STORAGE ENGINE | NULL | GPL |
| BLACKHOLE | ACTIVE | STORAGE ENGINE | NULL | GPL |
| CSV | ACTIVE | STORAGE ENGINE | NULL | GPL |
| FEDERATED | DISABLED | STORAGE ENGINE | NULL | GPL |
| MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
| InnoDB | ACTIVE | STORAGE ENGINE | ha_innodb_plugin.so | GPL |
+------------+----------+----------------+---------------------+---------+
10 rows in set (0.01 sec)

mysql>
---


----------
2.phpパッケージの作成

事前に、MySQLのライブラリを利用したビルドができるよう、リンクを作成しておきます。

 # ln -s /usr/bin/mysql_config /usr/lib64/mysql/

RPM作成用のアカウントを作成して、そのアカウントでRPMを作成するためのディレクトリを作成します。

 $ mkdir -p ~/rpm/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

次に、~/.rpmmacrosを作成して、以下の記述を行います。

---
%_topdir /home/ユーザー名/rpm
%_builddir %{_topdir}/BUILD
%_rpmdir %{_topdir}/RPMS
%_sourcedir %{_topdir}/SOURCES
%_specdir %{_topdir}/SPECS
%_srcrpmdir %{_topdir}/SRPMS
---

CentOSのミラーサイトから、phpのSRPMをダウンロードし、RPM作成用のアカウントでインストールします。

 $ rpm -ivh php-5.1.6-27.el5.src.rpm

そのままでは、コンパイル時にエラーとなってしまうので、ソースのtarball内のソースの一部を書き換えて、またもとのtarballに作成し直して置き換えます。

 $ cd ~/rpm/SOURCES/
 $ tar zxvf php-5.1.6.tar.gz
 $ cd php-5.1.6/ext/mysqli

mysqli_api.c内の「gtpr」を「char*」に変更します。

 $ cd ~/rpm/SOURCES/
 $ mv php-5.1.6.tar.gz php-5.1.6.tar.gz.org
 $ tar zcvf php-5.1.6.tar.gz php-5.1.6

置き換えたら、RPMのビルドを実行します。
足らないビルド用のRPMが不足していたら随時インストールします。

 # yum install bzip2-devel curl-devel db4-devel expat-devel gmp-devel aspell-devel httpd-devel libjpeg-devel libpng-devel pam-devel openssl-devel sqlite-devel zlib-devel pcre-devel krb5-devel libc-client-devel cyrus-sasl-devel openldap-devel postgresql-devel unixODBC-devel libxml2-devel net-snmp-devel libxslt-devel libxml2-devel ncurses-devel gd-devel freetype-devel

 $ cd ~/rpm/SPECS/
 $ rpmbuild -bb --define 'dist .el5' php.spec


----------
3.Zabbixパッケージの作成

Zabbixのパッケージを作成するために必要なパッケージをインストールします。

 # yum install gnutls-devel OpenIPMI-devel

以下のパッケージに関しては、ZABBIX-JPが公開しているRPMをダウンロードしてインストールしておきます。

 # wget http://www.zabbix.jp/binaries/relatedpkgs/rhel5/x86_64/fping-2.4b2-16.el5.JP.x86_64.rpm
 # wget http://www.zabbix.jp/binaries/relatedpkgs/rhel5/x86_64/iksemel-1.2-13.el5.JP.x86_64.rpm
 # wget http://www.zabbix.jp/binaries/relatedpkgs/rhel5/x86_64/iksemel-devel-1.2-13.el5.JP.x86_64.rpm
 # wget http://www.zabbix.jp/binaries/relatedpkgs/rhel5/x86_64/libssh2-1.2.5-1.el5.JP.x86_64.rpm
 # wget http://www.zabbix.jp/binaries/relatedpkgs/rhel5/x86_64/libssh2-devel-1.2.5-1.el5.JP.x86_64.rpm
 # rpm -ivh fping-2.4b2-16.el5.JP.x86_64.rpm iksemel-1.2-13.el5.JP.x86_64.rpm iksemel-devel-1.2-13.el5.JP.x86_64.rpm libssh2-1.2.5-1.el5.JP.x86_64.rpm libssh2-devel-1.2.5-1.el5.JP.x86_64.rpm

RPM作成用のユーザでZabbixのSRPMをインストールしてビルドを実行します。

 $ rpm -ivh zabbix-1.8.3-1.el5.JP.src.rpm
 $ cd ~/rpm/SPECS/
 $ rpmbuild -bb --define 'dist .el5' zabbix.spec


----------
4.Zabbixのインストール

Zabbixをインストールするために必要なパッケージを事前にインストールします。

 # yum install php php-bcmath php-gd php-mbstring php-xml php-common php-pdo

独自に作成したphp-mysqlをインストールします。

 # cd ~RPM作成用ユーザ/rpm/RPMS/x86_64/
 # rpm -ivh php-mysql-5.1.6-27.el5.x86_64.rpm

Zabbixをインストールします。

 # rpm -ivh zabbix-1.8.3-1.el5.x86_64.rpm zabbix-agent-1.8.3-1.el5.x86_64.rpm zabbix-server-1.8.3-1.el5.x86_64.rpm zabbix-server-mysql-1.8.3-1.el5.x86_64.rpm zabbix-web-1.8.3-1.el5.x86_64.rpm zabbix-web-mysql-1.8.3-1.el5.x86_64.rpm

以降、DBの作成などは通常のZabbixのインストールと同様です。

----------

2010年11月3日水曜日

Zabbix 1.8.4rc2リリースノート(てきと~訳)






1November 2010




Zabbix SIAはZabbix 1.8.4rc2 (Second Release Candidate)のリリースをアナウンスすることを光栄に思います。




Zabbixはオープンソースで配布されるエンタープライズモニタリングソリューションです。ZabbixはGPLライセンスの元で配布されているため、商用、非商用問わず無償で利用することができます。ライセンスの詳細については、http://www.gnu.org/copyleft/gpl.txtを参照してください。




このドキュメントは、Zabbix 1.8.4rc2のリリースノートです。ここからダウンロードしてください。http://www.zabbix.com/download.php




このリリースには、Zabbix 1.8.xのいくつかの修正と新機能の紹介が含まれます。新機能の概要はhttp://www.zabbix.com/documentation/1.8/manual/about/what_s_new_1.8.4から参照することができます。




このリリースは正式バージョンではありません。これは、リリース候補です!




Zabbix 1.8でノード構成の分散監視を利用している場合、以下のSQLパッチを実行してください。設定の同期のパフォーマンスが大幅に改善されます。




MySQL:
DROP INDEX node_cksum_cksum_1 ON node_cksum;
CREATE INDEX node_cksum_1 on node_cksum (nodeid,cksumtype,tablename,recordid);

ORACLE:
DROP INDEX node_cksum_cksum_1;
CREATE INDEX node_cksum_1 on node_cksum (nodeid,cksumtype,tablename,recordid);

PostgeSQL:
DROP INDEX node_cksum_cksum_1;
CREATE INDEX node_cksum_1 on node_cksum (nodeid,cksumtype,tablename,recordid);




以下にリリースの詳細を示します。これは最新の情報を提供し、主要なドキュメントの補足となります。



Zabbix 1.8.4の変更点



:: Zabbix APIの一貫性向上



Zabbix APIはメソッド名やパラメータのハンドリングに関して一貫性を向上する改善を行いました。Zabbix APIのドキュメントを大幅に改善しました。詳細はhttp://www.zabbix.com/documentation/1.8/apiを参照してください。




:: DB2のサポート



ZabbixのバックエンドデータベースとしてDB2をサポートしました。よって、Zabbixユーザは以下の5つのデータベースエンジンから現在選択することができます: Oracle, DB2, PostgreSQL, MySQL, SQLiteDB2を利用する際のインストール手順はドキュメントを参照してください。




:: Web監視のためのNTLM認証



ZabbixのWeb監視は、NTLM認証をサポートします。




:: Ez Textingサービスを利用してSMS通知を送信します



SMSメッセージを送信する新しい方法をZabbixに追加しました。アメリカとカナダにおいて、より信頼性の高い商用SMSサービスを利用することができます。




:: ユーザマクロの改善



ユーザマクロをトリガーやアイテム名に利用できるよう拡張しました。




:: Zabbix 1.8.4rc2でのバグフィックスと改善




  • [ZBXNEXT-538] IBM DB2のサポート追加

  • [ZBX-1362] 通知パフォーマンスの最適化

  • [ZBX-2852] スライドショー内の更新されないマップを修正

  • [ZBX-1346] Windows用のZabbixエージェントデーモンの設定ファイルのサンプルをZabbixのマニュアルにあるパラメータとともに更新

  • [ZBX-2984] グラフ内の誤ったトリガーラインを修正線の描画のためにトリガーアイテムではない最初のアイテムの軸を使用していた

  • [ZBX-3059] ポップアップメニューのタイトルをデータ型に依存して変更

  • [ZBX-2861] 複数のユーザをユーザグループに追加する際のエラーを修正

  • [ZBX-1492] マクロ削除時の確認ダイアログを追加

  • [ZBX-3135] zabbix_senderのマニュアル内に標準入力を利用する際のサンプルを追加

  • [ZBX-2616] バンドルしていたDejaVuフォントを2.31から2.32に更新

  • [ZBX-2630] ユーザ属性に合わせてフロントエンド内のさまざまな文字列を翻訳できるよう修正

  • [ZBX-3091] proxyを更新する際のエラーを修正

  • [ZBX-3120] 新しいマップの作成時のエラーを修正

  • [ZBX-3042] submitParentフィールドのエラーを修正

  • [ZBX-1038] last(), prev(), diff(), change(), abschange()が長いテキスト値に対して正常に機能しない場合があったのを修正

  • [ZBXNEXT-532] zabbix_senderのマニュアルとヘルプの出力内のタイムスタンプのフォーマット指定について、zabbix_senderのマニュアル内に必要なアイテムの設定のヒントを記載

  • [ZBX-3103] フランス語翻訳を改善; Alixenに感謝

  • [ZBX-3095] アクション内の'ホストテンプレート'のコンディションの処理を修正

  • [ZBX-2981] マップの権限チェック内の不要なクエリを削除

  • [ZBX-3080] ブラウザによってJavaScriptがキャッシュされなかったのを修正

  • [ZBX-2661] 設定内のディスカバリチェックの表示を改善

  • [ZBX-3086] ホストグループのホストやテンプレートへのリンクを編集する際のエラーを修正

  • [ZBX-3025] 到達不可確認プロセスとStartPollersUnreachableパラメータを復活

  • [ZBX-2351] サーバがデータベース内に重複したイベントIDでインサートしようとするのを修正

  • [ZBX-3069] グラフ表示のコンボボックスの"全て"を"未選択"に変更





:: すべての改善とバグフィックスの一覧




  • [ZBX-3070] イベントの日付フォーマットの矛盾を修正

  • [ZBX-2872] APIメソッドの一貫性を大幅改善

  • [ZBX-3068] 受動的Proxyの処理中にサーバがクラッシュする可能性を修正

  • [ZBX-3068] 受動的Proxyの処理中のサーバのメモリリークを修正

  • [ZBX-2749] web.page.regexp[]の長さパラメータが無視されていたのを修正

  • [ZBX-2749] web.page.regexp[]の中でとても長い断片に一致する際のエージェントのクラッシュを修正

  • [ZBX-2913] web.page.*チェックのためにエージェントが応答しなくなるのを修正

  • [ZBXNEXT-430] Linuxにおいてnet.tcp.listenとnet.udp.listenのサポートを追加

  • [ZBX-453] --disable-staticを指定して静的コンパイルになっていたのを修正

  • [ZBX-2992] 障害対応コメントを無効にした時にイベント詳細画面で障害対応コメントを表示しない

  • [ZBX-3050] 既存のテンプレートと同じ名前のホストを登録できるよう修正

  • [ZBX-3019] DM設定内で発見されたホストにテンプレートのグラフをコピーしていなかったのを修正; Alexander Ignatyevに感謝

  • [ZBX-2860] ユーザグループの名前変更を修正

  • [ZBX-3027] popup_trexpr.php内にavg, delta, max, min, sum関数がタイムシフト入力を持つようにした, これでGUIを通して指定できるようになった

  • [ZBX-2827] メンテナンス期間を追加や更新する際のチェックを追加, これで重複した名前が追加できないようにした

  • [ZBX-2978] アイテムにY軸が設定されたグラフのインポートを修正

  • [ZBX-2507] グラフの最小サイズを20ピクセルに設定

  • [ZBX-2665] グラフ上のWebシナリオのステップの表示順序を修正

  • [ZBX-2995] zbx_mem_realloc()内でクラッシュするのを修正, 設定されたキャッシュ内でメモリ使用量とメモリのフラグメンテーションを削減

  • [ZBX-3024] トリガーの条件式選択用ポップアップ内でアイテムの型に依存して条件式をフィルタリング

  • [ZBX-3023] メンテナンス期間後に通知レポートが繰り返されたのを修正

  • [ZBX-3017] ホストにリンクされているテンプレートのトリガーへの依存関係を追加しようとしたときのエラーを修正

  • [ZBX-3008] 複数のアイテムのためのトリガーのためにサーバが複数の不明イベントを生成するのを修正

  • [ZBX-3011] メディアタイプ編集時のHTML内でパスワードの表示が短かった

  • [ZBXNEXT-510] Ez Textingを利用したSMSメッセージの送信をZabbixに統合

  • [ZBX-1425] ホストグループの追加と編集時にホストグループのドロップダウンに「全て」のオプションを追加

  • [ZBX-1675] マップの要素がドラッグされた後にマップの要素の座標が更新されなかったのを修正

  • [ZBX-1292] トリガーの説明ポップアップ内で別のホストから呼び出されたときにアイテム名はホスト名のプレフィックスがついて表示される

  • [ZBX-2844] 監視表示でスクリーン名のHTMLエスケープを追加

  • [ZBXNEXT-373] Web監視でNTLM認証のサポートを追加

  • [ZBX-1486] 複数のマップの要素が選択されているときに編集画面の「削除」を押したら選択していた全ての要素を削除

  • [ZBX-1442] マップ編集時にオブジェクトのリンクを張る際に「適用」を押してもフォームをクローズしない

  • [ZBX-2986] イベントの障害対応コメントを無効にしたら障害対応コメントは最新20件の障害内で表示されない

  • [ZBX-2988] 監視データ/イベントのスクリーン内でマクロ{ITEM.VALUE}を修正

  • [ZBX-2974] テンプレートのアプリケーションを削除してしまう可能性を修正

  • [ZBX-1172] 監査のリソースのドロップダウンにソートを追加

  • [ZBX-2982] ダッシュボードの「Zabbixサーバの状態」にZabbixサーバのIPアドレスとポート番号を追加

  • [ZBX-2964] システムでIPv6が有効ではない場合にプロセスのスタートが失敗するのを修正

  • [ZBX-2977] node_cksumテーブル内の利用していないレコードを削除; Łukasz Reszkaに感謝

  • [ZBX-2946] libexecinfoがインストールされた環境でFreeBSDのportsからビルドできるよう修正; Dmitry Yakovlevに感謝

  • [ZBX-2957] ダウンロードできる言語ファイルのMIMEタイプを変更

  • [ZBX-2493] デフォルトで廃止されたマクロを利用していたのを修正; デフォルトのアクションメッセージのために別のサブジェクトとメッセージを利用開始

  • [ZBX-2976] DebugLevel=4にしていてzabbix[items_unsupported]を処理する際、サーバがクラッシュするのを修正

  • [ZBX-2950] マップのアイコンのためのポップアップメニューを追加

  • [ZBX-2967] ホスト設定画面のためのフィルタを追加

  • [ZBX-2962] テンプレートのマクロの更新を修正

  • [ZBX-2572] zapcat互換モードのための設定定義を追加

  • [ZBX-2690] screens xmlの検証を追加

  • [ZBX-2942] ICMP pingの最小間隔を20msに延長; nelsonabに感謝

  • [ZBX-2945] メール送信する際、SMTPサーバから複数行の応答が返却されるのをハンドリング

  • [ZBXNEXT-360] zabbix_senderで入力ファイル内の"-"をデフォルトのホスト名とする; Dennis Jacobfeuerbornに感謝

  • [ZBX-1908] 子プロセスでファイルやソケットのデスクリプタのリークを修正; Dan Horakに感謝

  • [ZBX-2960] エージェントのuserparameterを分離しincludeで読み込めるようにした, そしてMySQLのサンプルも追加した

  • [ZBXNEXT-458] 例えば{$MACRO}のようなユーザマクロをアイテムやトリガーの説明に利用できるようにした

  • [ZBX-2959] 翻訳をダウンロードした際に末尾の空白文字や改行文字が消えてしまうのを修正

  • [ZBX-2910] Windows上で'strerror_from_system undefined'とコンパイル時の警告がでるのを修正; Takanori Suzukiに感謝

  • [ZBX-2902] Windows上でsystem.cpu.load[]とsystem.cpu.util[]がやや誇張された値になってしまうのを修正; Kodai Terashimaに感謝

  • [ZBX-2954] テンプレート削除ポップアップ内の翻訳を修正

  • [ZBX-2938] マップ上でメンテナンス中のホストの障害が表示されないのを修正

  • [ZBXNEXT-238] zabbix_senderで送信する前にできるだけ多くのデータを収集できるようにした

  • [ZBX-2948] トリガーの依存関係のエクスポートを修正

  • [ZBX-2949] テンプレートスクリーンで'削除'アクションとなっていたのを修正

  • [ZBX-2934] 新しい設定を追加 丸め誤差の設定定数

  • [ZBX-2907] 別のノードからトリガーが発生したアクション状態のエラーを修正

  • [ZBX-2928] トリガー情報の不明な数を修正, 分類されていないトリガー数を追加

  • [ZBX-2914] Gentoo用のinitscriptを綺麗にした

  • [ZBX-2914] Fedora用のinitscript内の誤った参照を修正

  • [ZBX-2925] 翻訳のための値が空だと結果ファイルに書き込めない

  • [ZBX-2933] IEで印刷ボタンを押したときのjsエラーを修正

  • [ZBX-2937] IE用のスタイルファイルがなかったのを修正

  • [ZBX-2864] プリントボタンで複数のsidのurlパラメータを生成するよう修正

  • [ZBX-2899] Zabbix 1.8.2からのアップグレード後、スライドショーの間隔設定がこわれてしまうのを修正

  • [ZBX-2923] 障害の発生しているトリガーに依存してマップ上の障害として表示するのを修正

  • [ZBX-2683] ラトビア語翻訳の小さな更新

  • [ZBX-2916] 監視マップ内の親マップへのリンクの重複を修正

  • [ZBX-2905] 1つしかトリガーが設定されていないホストのネットワークマップ上でのトリガー名の展開を修正

  • [ZBX-2914] Debianの起動スクリプトのサンプルと統一されたpidファイルのパスにしたサンプルの設定ファイルを用意

  • [ZBX-886] 重複していた言語設定用文字列「S_ACTIONS_BIG」を削除

  • [ZBX-633] IPMIデバイスが切断された際にサーバがクラッシュするのを修正

  • [ZBX-2904] いくつかの不明なトリガーがトリガー画面で表示されなかったのを修正

  • [ZBX-2900] メールヘッダの"From:"と"To:"にスペースを追加

  • [ZBX-2894] マップラベル内の同じ行の複数の参照を修正

  • [ZBX-2888] ホストのプロファイルのエクスポートを修正

  • [ZBX-2890] トリガーの条件式内の負の値の構文解析を修正

  • [ZBX-2798] 不明なノードのノード間の通信チェックを追加

  • [ZBX-2716] Daemonのパスであるsbinに全てのinitscriptのサンプルを作成




インストールとアップグレード方法



インストール


詳細はZabbixマニュアルを参照してください。




アップグレード


Zabbixのバイナリプログラムをリコンパイルし、WebインターフェースのPHPファイルを更新します。Zabbix 1.6.xからのマイグレーション時には、データベースパッチを実行します。詳細なアップグレード手順はZabbixマニュアルを参照してください。



リリース前のテスト


Zabbixサーバ


Zabbixサーバは以下のプラットフォームでテストを行っています。





  • Ubuntu Linux, AMD64, kernel 2.6.11, MySQL 5.x

  • Ubuntu Linux, Intel, kernel 2.6.15, MySQL 5.0.22, PostgreSQL 8.3

  • RedHat EL 5.3, Intel, kernel 2.6.18, Oracle 11gR2

  • Slackware Linux, x86, kernel 2.6.29.6, MySQL 5.1.x




Zabbixエージェント


Zabbixエージェントは以下のプラットフォームでコンパイルとテストを行っています。






  • AIX 5.2

  • FreeBSD 4.x, 5.x, 6.x

  • HP-UX 10.x, 11.x

  • Linux 2.4.x, 2.6.x

  • Linux CentOS

  • NetBSD 2.0

  • OS/X 10.2

  • Solaris 8, 9, 10

  • Tru64 5.1B

  • Windows XP, 2000, 2003, 2008, Vista






一部のプラットフォームとバージョンに限られますが、コンパイル済みのエージェントをhttp://www.zabbix.com/download.phpからダウンロードすることができます。



商用サポート


Zabbix SIAはプロフェッショナルサービスを全面的に提供しています。私たちはトラブルフリーで簡単にZabbix 1.8以前のバージョンから移行するためのアップグレードサービスも提供しています。価格やより詳細な情報については営業までお問い合わせください。



参考