ZABBIXのインストールでyumを使って失敗

仕事でサーバ管理をしていて10台ほどのサーバを管理しています。一応サーバ管理という仕事ですが1から独学で覚えたのでいろいろ大変です。超基本的な部分でいけばサーバが落ちていないかというのは監視しないといけません。apacheが動いているか、CPU使用率はどうか、ハードディスクの空き容量はどうか、バックアップはちゃんととれているかとその先の問題はたくさんあります。
それで超基本のサーバが落ちていないかという部分に関しては、正直なところ客先などから落ちていると連絡がないとほぼ分からない状態です。ウェブサーバや何かシステムがのっているサーバはその連絡でわかります。もちろん客先から連絡がなくても分かるのが理想ですが、1から勉強して覚えているので難しいです。あとは客先が顔を見て話せる相手が多くすぐに対応し謝ればなんとかなるという状況もあります。ただウェブ系やシステムのものはそれで気づくことができますが、バックアップ用サーバや普段あまりアクセスされないサーバは気づくことができません。ついでにできるなら客に関係する部分もお客に指摘される前に自分でサーバの異変に気付くのが理想です。
その方法として現状は1日1回送られているlogwatchの報告メールで確認しています。通常の設定であれば朝4時くらいにサーバの使用量だとかアクセスのことなどがメールで送られてきます。このメールが送られてきたらサーバは動いているという判断です。本来はメールの内容までちゃんと見るべきなのですが、たくさんのサーバがあると一々見ていられないところがあります。時々ちゃんと内容を確認したりします。
そして、少し前にサーバが落ちていました。この猛暑の熱暴走かもしれません。原因は調べたがよくわかりませんでした。これは仕方ないとして、ただサーバが落ちたことに気づけませんでした。logwatchのメールも10通近く毎日来るので1通くらい来なくなっても気づけない、つまり手動確認は限界があるということがわかりました。
それで前から少しは導入を検討していたサーバ監視ソフトウェアをインストールしようと思いました。前にも調べているのでZABBIXというソフトウェアにしようと思いました。


前置きが長くなってしまいましたが、今回のZABBIXのインストール時のエラーはyumによるパッケージの依存性が解決できなかったエラーです。これはphpmysqlrpmでインストールでインストールしていたので、yumでZABBIXをインストールした時にバージョンが合わず依存性が解決できませんでした。なのでZABBIXではなくても何らかのソフトウェアをyumでインストールしようとしたときに、プログラムやデータベースをrpmでインストールしていて依存性でエラーがでる場合に応用できるかと思います。


ZABBIX.JPの情報に基づいてインストール作業をしていきます。OSはCentOS5.8で、mysqlphp関連はrpmでインストールされています。ZABBIXは1系の最新バージョンをインストールしようと思っています。後から2系がでていると知ってちょっとショックです。しかし、買って持っているZABBIXの書籍が1系だし、ネット上での情報も1系が多いと思うのでこれで進めていきます。
http://www.zabbix.jp/documents/installation/zabbix-jp-repository
http://www.zabbix.jp/documents/installation/install-rpm
作業に入っていきます。まずはyumで使うリポジトリを登録する。リポジトリというのは倉庫のようなもので、今回ZABBIXのリポジトリを登録することで、必要なデータをとりだせるようにする。

# rpm -ivh http://repo.zabbix.jp/relatedpkgs/rhel5/i386/zabbix-jp-release-5-6.noarch.rpm
http://repo.zabbix.jp/relatedpkgs/rhel5/i386/zabbix-jp-release-5-6.noarch.rpm を取得中
警告: /var/tmp/rpm-xfer.FVpjM5: ヘッダ V3 DSA signature: NOKEY, key ID f32904ff
準備中...                ########################################### [100%]
   1:zabbix-jp-release      ########################################### [100%]

現在使用しているリポジトリのバージョン確認。zabbix1.8らしい。切り替えることもできるみたいだけど、1系の最新安定版なので特に変更の必要はないと思う。

# alternatives --display zabbix-jp-release
zabbix-jp-release -ステータスは自動です。
リンクは現在 /usr/share/zabbix-jp-release/zabbix-jp-1.8.repo を指しています。
/usr/share/zabbix-jp-release/zabbix-jp-1.1.repo - 優先項目 10
/usr/share/zabbix-jp-release/zabbix-jp-1.4.repo - 優先項目 20
/usr/share/zabbix-jp-release/zabbix-jp-1.6.repo - 優先項目 30
/usr/share/zabbix-jp-release/zabbix-jp-1.8.repo - 優先項目 40
現在の「最適」バージョンは /usr/share/zabbix-jp-release/zabbix-jp-1.8.repo です。

yumリポジトリのキャッシュを削除。キャッシュ削除の必要性はいまいち僕はちゃんと分かっていない。

# yum clean all
Loaded plugins: fastestmirror
Cleaning up Everything
Cleaning up list of fastest mirrors

yumでインストールされるZABBIXのバージョンを確認する。選択したバージョン(たぶんzabbix1.8)が表示されれば成功。zabbix.jpのサイトではyum search zabbixになっていたけど、これではzabbix関連のインストールできるソフトの一覧は見れるがバージョンまで確認できなかった。なので個々にソフトウェアの情報を確認するコマンドを使ってバージョンを確認する。Version : 1.8.6となっているので1.8系なので問題ない。

# yum info zabbix
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: ftp.iij.ad.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
Available Packages
Name       : zabbix
Arch       : i386
Version    : 1.8.16
Release    : 1.el5.JP
Size       : 14 k
Repo       : zabbix-jp
Summary    : Open-source monitoring solution for your IT infrastructure
URL        : http://www.zabbix.com/
License    : GPL
Description: ZABBIX is software that monitors numerous parameters of a
           : network and the health and integrity of servers. ZABBIX
           : uses a flexible notification mechanism that allows users
           : to configure e-mail based alerts for virtually any event.
           : This allows a fast reaction to server problems. ZABBIX
           : offers excellent reporting and data visualisation features
           : based on the stored data. This makes ZABBIX ideal for
           : capacity planning.
           :
           : ZABBIX supports both polling and trapping. All ZABBIX
           : reports and statistics, as well as configuration
           : parameters are accessed through a web-based front end. A
           : web-based front end ensures that the status of your network
           : and the health of your servers can be assessed from any
           : location. Properly configured, ZABBIX can play an important
           : role in monitoring IT infrastructure. This is equally true
           : for small organisations with a few servers and for large
           : companies with a multitude of servers.

ここまでリポジトリ登録などの下準備が終わり。改めてここからインストール作業。

# yum install zabbix zabbix-agent zabbix-server zabbix-server-mysql zabbix-web zabbix-web-mysql
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: ftp.iij.ad.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package zabbix.i386 0:1.8.16-1.el5.JP set to be updated
---> Package zabbix-agent.i386 0:1.8.16-1.el5.JP set to be updated
---> Package zabbix-server.i386 0:1.8.16-1.el5.JP set to be updated
--> Processing Dependency: libssh2 >= 1.0.0 for package: zabbix-server
--> Processing Dependency: OpenIPMI-libs >= 2.0.14 for package: zabbix-server
--> Processing Dependency: net-snmp for package: zabbix-server
--> Processing Dependency: iksemel for package: zabbix-server
--> Processing Dependency: unixODBC for package: zabbix-server
--> Processing Dependency: fping for package: zabbix-server
---> Package zabbix-server-mysql.i386 0:1.8.16-1.el5.JP set to be updated
--> Processing Dependency: libodbc.so.1 for package: zabbix-server-mysql
---> Package zabbix-web.i386 0:1.8.16-1.el5.JP set to be updated
--> Processing Dependency: php-bcmath for package: zabbix-web
---> Package zabbix-web-mysql.i386 0:1.8.16-1.el5.JP set to be updated
--> Running transaction check
---> Package OpenIPMI-libs.i386 0:2.0.16-16.el5 set to be updated
---> Package fping.i386 0:2.4b2-16.el5.JP set to be updated
---> Package iksemel.i386 0:1.4-2.el5 set to be updated
---> Package libssh2.i386 0:1.2.5-1.el5.JP set to be updated
---> Package net-snmp.i386 1:5.3.2.2-20.el5 set to be updated
--> Processing Dependency: net-snmp-libs = 1:5.3.2.2-20.el5 for package: net-snmp
--> Processing Dependency: libsensors.so.3 for package: net-snmp
---> Package php-bcmath.i386 0:5.1.6-40.el5_9 set to be updated
--> Processing Dependency: php-common = 5.1.6-40.el5_9 for package: php-bcmath
---> Package unixODBC.i386 0:2.2.11-10.el5 set to be updated
---> Package unixODBC-libs.i386 0:2.2.11-10.el5 set to be updated
--> Running transaction check
---> Package lm_sensors.i386 0:2.10.7-9.el5 set to be updated
---> Package net-snmp-libs.i386 1:5.3.2.2-20.el5 set to be updated
---> Package php-bcmath.i386 0:5.1.6-40.el5_9 set to be updated
--> Processing Dependency: php-common = 5.1.6-40.el5_9 for package: php-bcmath
--> Finished Dependency Resolution
php-bcmath-5.1.6-40.el5_9.i386 from updates has depsolving problems
  --> Missing Dependency: php-common = 5.1.6-40.el5_9 is needed by package php-bcmath-5.1.6-40.el5_9.i386 (updates)
Error: Missing Dependency: php-common = 5.1.6-40.el5_9 is needed by package php-bcmath-5.1.6-40.el5_9.i386 (updates)
 You could try using --skip-broken to work around the problem
 You could try running: package-cleanup --problems
                        package-cleanup --dupes
                        rpm -Va --nofiles --nodigest
The program package-cleanup is found in the yum-utils package.

インストール失敗しました。一気にいろんなメッセージがでたので意味がわかりにくい。でも、ちゃんとちょっとずつ見ていけばわかる。yumというのはパッケージの依存関係を基本的に自動で解決してくれる。このパッケージをインストールするためには、このパッケージがないといけないというのが依存関係。それを順番に解決しようとしているの表示されている。で最終的にError: Missing Dependency: php-common = 5.1.6-40.el5_9 is needed by package php-bcmath-5.1.6-40.el5_9.i386 (updates)というのがエラーで、php-bcmathをインストールするためのphp-commonのパッケージがないというのが問題。
php-commonはrpmであらかじめインストールしてある。しかしバージョンが5.2.17になっていてrpmでインストールしているので、うまくyumと結びついていないのかも。php-bcmathをインストールできれば解決する。解決方法としては、php-commonのバージョンを5.1.6にしてyumにまかせる、rpmphp-bcmathをインストールしてしまうかということになる。php-commonのバージョン合わせをするとなると、他のphp関連のバージョンも全部5.1.6に合わせないといけなくなるのでやめておく。php-bcmathをrpmでインストールすることにして、他のphp関連と同様に5.2.17で合わせる。まずはrpmパッケージをダウンロード。

# wget http://centos.alt.ru/repository/centos/5/i386/php-bcmath-5.2.17-29.el5.i386.rpm
--2013-08-09 15:00:21--  http://centos.alt.ru/repository/centos/5/i386/php-bcmath-5.2.17-29.el5.i386.rpm
centos.alt.ru をDNSに問いあわせています... 80.247.97.12
centos.alt.ru|80.247.97.12|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 34089 (33K) [application/x-redhat-package-manager]
`php-bcmath-5.2.17-29.el5.i386.rpm' に保存中

100%[======================================>] 34,089      21.4K/s 時間 1.6s

2013-08-09 15:00:24 (21.4 KB/s) - `php-bcmath-5.2.17-29.el5.i386.rpm' へ保存完了 [34089/34089]

ダウンロードできたので、インストールしてみる。

# rpm -ivh php-bcmath-5.2.17-29.el5.i386.rpm
警告: php-bcmath-5.2.17-29.el5.i386.rpm: ヘッダ V3 DSA signature: NOKEY, key ID e9bc4ae1
エラー: 依存性の欠如:
        php-common = 5.2.17-29.el5 は php-bcmath-5.2.17-29.el5.i386 に必要とされています

依存関係で失敗した。php-bcmathは5.2.17系の最新で、php-bcmath-5.2.17-29.el5となっていた。しかしphp-commonは元々インストールしてあったのだけどバージョンが5.2.17-15.el5と少し低いのが依存性を解決できない原因らしい。php関連のすべてのrpmをアップデートするのはめんどくさいし、一応サーバで動いている他のシステムもあるので少しのアップデートとはいえバージョンを変更するのはあまりしたくない。そこでphp-commonのバージョンにあわせた古いものをインストールすることにした。

# wget http://77.120.56.11/repository/centos/5/i386/php-bcmath-5.2.17-15.el5.i386.rpm
--2013-08-09 15:12:57--  http://77.120.56.11/repository/centos/5/i386/php-bcmath-5.2.17-15.el5.i386.rpm
77.120.56.11:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 33833 (33K) [application/x-redhat-package-manager]
`php-bcmath-5.2.17-15.el5.i386.rpm' に保存中

100%[======================================>] 33,833      33.4K/s 時間 1.0s

2013-08-09 15:12:59 (33.4 KB/s) - `php-bcmath-5.2.17-15.el5.i386.rpm' へ保存完了 [33833/33833]

なんとか同じバージョンを見つけることができたのインストール。

# rpm -ivh php-bcmath-5.2.17-15.el5.i386.rpm
準備中...                ########################################### [100%]
   1:php-bcmath             ########################################### [100%]

依存性の問題もなくなくインストールできた。


再度zabbixのインストールに挑戦。

# yum install zabbix zabbix-agent zabbix-server zabbix-server-mysql zabbix-web zabbix-web-mysql
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: ftp.iij.ad.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package zabbix.i386 0:1.8.16-1.el5.JP set to be updated
---> Package zabbix-agent.i386 0:1.8.16-1.el5.JP set to be updated
---> Package zabbix-server.i386 0:1.8.16-1.el5.JP set to be updated
--> Processing Dependency: libssh2 >= 1.0.0 for package: zabbix-server
--> Processing Dependency: OpenIPMI-libs >= 2.0.14 for package: zabbix-server
--> Processing Dependency: net-snmp for package: zabbix-server
--> Processing Dependency: iksemel for package: zabbix-server
--> Processing Dependency: unixODBC for package: zabbix-server
--> Processing Dependency: fping for package: zabbix-server
---> Package zabbix-server-mysql.i386 0:1.8.16-1.el5.JP set to be updated
--> Processing Dependency: libodbc.so.1 for package: zabbix-server-mysql
---> Package zabbix-web.i386 0:1.8.16-1.el5.JP set to be updated
---> Package zabbix-web-mysql.i386 0:1.8.16-1.el5.JP set to be updated
--> Running transaction check
---> Package OpenIPMI-libs.i386 0:2.0.16-16.el5 set to be updated
---> Package fping.i386 0:2.4b2-16.el5.JP set to be updated
---> Package iksemel.i386 0:1.4-2.el5 set to be updated
---> Package libssh2.i386 0:1.2.5-1.el5.JP set to be updated
---> Package net-snmp.i386 1:5.3.2.2-20.el5 set to be updated
--> Processing Dependency: net-snmp-libs = 1:5.3.2.2-20.el5 for package: net-snmp
--> Processing Dependency: libsensors.so.3 for package: net-snmp
---> Package unixODBC.i386 0:2.2.11-10.el5 set to be updated
---> Package unixODBC-libs.i386 0:2.2.11-10.el5 set to be updated
--> Running transaction check
---> Package lm_sensors.i386 0:2.10.7-9.el5 set to be updated
---> Package net-snmp-libs.i386 1:5.3.2.2-20.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package               Arch   Version             Repository               Size
================================================================================
Installing:
 zabbix                i386   1.8.16-1.el5.JP     zabbix-jp                14 k
 zabbix-agent          i386   1.8.16-1.el5.JP     zabbix-jp               348 k
 zabbix-server         i386   1.8.16-1.el5.JP     zabbix-jp               425 k
 zabbix-server-mysql   i386   1.8.16-1.el5.JP     zabbix-jp               366 k
 zabbix-web            i386   1.8.16-1.el5.JP     zabbix-jp               4.8 M
 zabbix-web-mysql      i386   1.8.16-1.el5.JP     zabbix-jp                13 k
Installing for dependencies:
 OpenIPMI-libs         i386   2.0.16-16.el5       base                    571 k
 fping                 i386   2.4b2-16.el5.JP     zabbix-jp-relatedpkgs    32 k
 iksemel               i386   1.4-2.el5           epel                     48 k
 libssh2               i386   1.2.5-1.el5.JP      zabbix-jp-relatedpkgs    79 k
 lm_sensors            i386   2.10.7-9.el5        base                    511 k
 net-snmp              i386   1:5.3.2.2-20.el5    base                    704 k
 unixODBC              i386   2.2.11-10.el5       base                    290 k
 unixODBC-libs         i386   2.2.11-10.el5       base                    551 k
Updating for dependencies:
 net-snmp-libs         i386   1:5.3.2.2-20.el5    base                    1.3 M

Transaction Summary
================================================================================
Install      14 Package(s)
Upgrade       1 Package(s)

Total download size: 9.9 M
Is this ok [y/N]: y
Downloading Packages:
(1/15): zabbix-web-mysql-1.8.16-1.el5.JP.i386.rpm        |  13 kB     00:00
(2/15): zabbix-1.8.16-1.el5.JP.i386.rpm                  |  14 kB     00:00
(3/15): fping-2.4b2-16.el5.JP.i386.rpm                   |  32 kB     00:00
(4/15): iksemel-1.4-2.el5.i386.rpm                       |  48 kB     00:00
(5/15): libssh2-1.2.5-1.el5.JP.i386.rpm                  |  79 kB     00:00
(6/15): unixODBC-2.2.11-10.el5.i386.rpm                  | 290 kB     00:00
(7/15): zabbix-agent-1.8.16-1.el5.JP.i386.rpm            | 348 kB     00:00
(8/15): zabbix-server-mysql-1.8.16-1.el5.JP.i386.rpm     | 366 kB     00:00
(9/15): zabbix-server-1.8.16-1.el5.JP.i386.rpm           | 425 kB     00:00
(10/15): lm_sensors-2.10.7-9.el5.i386.rpm                | 511 kB     00:00
(11/15): unixODBC-libs-2.2.11-10.el5.i386.rpm            | 551 kB     00:00
(12/15): OpenIPMI-libs-2.0.16-16.el5.i386.rpm            | 571 kB     00:00
(13/15): net-snmp-5.3.2.2-20.el5.i386.rpm                | 704 kB     00:00
(14/15): net-snmp-libs-5.3.2.2-20.el5.i386.rpm           | 1.3 MB     00:00
(15/15): zabbix-web-1.8.16-1.el5.JP.i386.rpm             | 4.8 MB     00:01
--------------------------------------------------------------------------------
Total                                           2.4 MB/s | 9.9 MB     00:04
警告: rpmts_HdrFromFdno: ヘッダ V3 DSA signature: NOKEY, key ID f32904ff
zabbix-jp-relatedpkgs/gpgkey                             | 1.7 kB     00:00
Importing GPG key 0xF32904FF "ZABBIX-JP (Japanese ZABBIX Support Site) <webmaster@zabbix.jp>" from /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-JP
Is this ok [y/N]: y
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 217521f6
epel/gpgkey                                              | 1.7 kB     00:00
Importing GPG key 0x217521F6 "Fedora EPEL <epel@fedoraproject.org>" from /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating       : net-snmp-libs                                           1/16
  Installing     : OpenIPMI-libs                                           2/16
  Installing     : iksemel                                                 3/16
  Installing     : unixODBC-libs                                           4/16
  Installing     : libssh2                                                 5/16
  Installing     : unixODBC                                                6/16
  Installing     : fping                                                   7/16
  Installing     : lm_sensors                                              8/16
  Installing     : zabbix                                                  9/16
  Installing     : net-snmp                                               10/16
  Installing     : zabbix-agent                                           11/16
  Installing     : zabbix-server                                          12/16
  Installing     : zabbix-web                                             13/16
  Installing     : zabbix-web-mysql                                       14/16
  Installing     : zabbix-server-mysql                                    15/16
  Cleanup        : net-snmp-libs                                          16/16

Installed:
  zabbix.i386 0:1.8.16-1.el5.JP
  zabbix-agent.i386 0:1.8.16-1.el5.JP
  zabbix-server.i386 0:1.8.16-1.el5.JP
  zabbix-server-mysql.i386 0:1.8.16-1.el5.JP
  zabbix-web.i386 0:1.8.16-1.el5.JP
  zabbix-web-mysql.i386 0:1.8.16-1.el5.JP

Dependency Installed:
  OpenIPMI-libs.i386 0:2.0.16-16.el5     fping.i386 0:2.4b2-16.el5.JP
  iksemel.i386 0:1.4-2.el5               libssh2.i386 0:1.2.5-1.el5.JP
  lm_sensors.i386 0:2.10.7-9.el5         net-snmp.i386 1:5.3.2.2-20.el5
  unixODBC.i386 0:2.2.11-10.el5          unixODBC-libs.i386 0:2.2.11-10.el5

Dependency Updated:
  net-snmp-libs.i386 1:5.3.2.2-20.el5

Complete!

インストール成功。けっこういろいろやってようやく成功したのだけど、成功すると特にコメントないなぁ。マニュアル通りにやってうまくいったら考える必要のでてくる部分もないからなぁ。


参考サイト1。同じようにパッケージ関連で問題起こしたみたい。サポート側がかなりしっかりやってくれてます。
http://www.zabbix.jp/node/1027
参考サイト2.phpをremiでインストールしていた場合の対処法ではあるが、状況が近いように思う。
http://www.polidog.jp/2013/02/20/centos5-9%E3%81%ABzabbix%E3%82%92%E3%81%84%E3%82%8C%E3%82%8Bremi%E4%BD%BF%E3%81%A3%E3%81%A6php%E5%85%A5%E3%82%8C%E3%81%A6%E3%81%9F%E5%A0%B4%E5%90%88/