動作環境
- MySQL 5.6.19
- Zabbixサーバ or プロキシ 2.0.12
- Postfix 2.6.6
EC2インスタンスにZabbixプロキシをソースからインストールし起動したらなぜかプロセスが立ち上がらなくてログを見たところ、次のようなエラーログが出てました。
/var/log/zabbix/zabbix_proxy.log
26489:20140716:165749.623 Starting Zabbix Proxy (active) [platform-zabbix_proxy]. Zabbix 2.0.12 (revision 45390).
26489:20140716:165749.623 **** Enabled features ****
26489:20140716:165749.623 SNMP monitoring: NO
26489:20140716:165749.623 IPMI monitoring: NO
26489:20140716:165749.623 WEB monitoring: YES
26489:20140716:165749.623 ODBC: NO
26489:20140716:165749.623 SSH2 support: NO
26489:20140716:165749.623 IPv6 support: NO
26489:20140716:165749.623 **************************
/usr/local/sbin/zabbix_proxy: relocation error: /usr/local/sbin/zabbix_proxy: symbol mysql_init, version libmysqlclient_18 not defined in file libmysqlclient.so.18 with link time reference
libmysqlclinet.so
の読み込みができていないっぽい。
読み込んでいる共有ライブラリを調べたらMySQLをインストールしたパスと異なっていました。
インストールしたMySQLの共有ライブラリは/var/lib64
直下にありました。
$ ldd /usr/local/sbin/zabbix_proxy | grep libmysqlclient
libmysqlclient.so.18 => /usr/lib64/mysql/libmysqlclient.so.18 (0x00007f8dffec7000)
インストールされているパッケージを調べるとmysql55-lib.x86_64
という入れた覚えがないものが入っていました。
$ yum list installed | grep -i mysql
MySQL-client.x86_64 5.6.19-1.el6 @/MySQL-client-5.6.19-1.el6.x86_64
MySQL-devel.x86_64 5.6.19-1.el6 @/MySQL-devel-5.6.19-1.el6.x86_64
MySQL-embedded.x86_64 5.6.19-1.el6 @/MySQL-embedded-5.6.19-1.el6.x86_64
MySQL-server.x86_64 5.6.19-1.el6 @/MySQL-server-5.6.19-1.el6.x86_64
MySQL-shared.x86_64 5.6.19-1.el6 @/MySQL-shared-5.6.19-1.el6.x86_64
MySQL-shared-compat.x86_64 5.6.19-1.el6 @/MySQL-shared-compat-5.6.19-1.el6.x86_64
MySQL-test.x86_64 5.6.19-1.el6 @/MySQL-test-5.6.19-1.el6.x86_64
mysql55-libs.x86_64 5.5.38-1.0.amzn1 @amzn-updates
どうやらPostfixをyumでインストールしたときに一緒に入ってきたみたいで、このままでは削除できません。
$ sudo rpm -e mysql55-libs.x86_64
エラー: 依存性の欠如:
libmysqlclient.so.18(libmysqlclient_16)(64bit) は (インストール済み)postfix-2:2.6.6-2.14.amzn1.x86_64 に必要とされています
$ ldd /usr/sbin/postfix | grep libmysqlclient
libmysqlclient.so.18 => /usr/lib64/mysql/libmysqlclient.so.18 (0x00007fe9f4641000)
/etc/ld.so.conf.d/mysql55-x86_64.conf
のパスを/usr/lib64
に変更しようとしましたが、今度はPostfixが動かなくなってしまうため、とても困りました。
苦し紛れの対応として、Zabbixプロキシの起動スクリプト(/etc/init.d/zabbix_proxy
)で共有ライブラリのパスを変更することで対処しました。
/etc/init.d/zabbix_proxy
ZABBIX_BIN="/usr/local/sbin/zabbix_proxy"
# 追加
LD_LIBRARY_PATH=/usr/lib64
export LD_LIBRARY_PATH
これでZabbixプロキシを再起動するとちゃんと動きました。
今回はZabbixプロキシでしたが、Zabbixサーバも同じだと思います。