zabbixサーバ停止とSQL接続不可
お世話になります。
現在、RHELにzabbixマネージャーを構築しているのですが、以下の事象で困っています
(すみません長文です)。
【事象1】
Web画面に赤帯で「zabbixサーバが動作していません」と出る。
service --status-allコマンドでは、「zabbix_server (pid 2148) を実行中...」と出る。
【事象2】
ログファイル(/var/log/zabbix/zabbix_server.log)に、
以下の内容が10秒おきに出る。
[Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)
database is down: reconnecting in 10 seconds
上記事象をどう解決したらよいのか、ご教授いただけないでしょうか。
なお、似たご質問は以前にも出ているようで、それらの内容は一通りチェックしました。
類似質問① http://www.zabbix.jp/node/1562
類似質問② http://www.zabbix.jp/node/1656
【環境】
OS:RHEL6.5(vmWare による仮想サーバ)
インストール内容(すべてrpmパッケージでインストール)
①zabbix本体
zabbix-server-2.4.6-1.el6.x86_64
zabbix-server-mysql-2.4.6-1.el6.x86_64
zabbix-2.4.6-1.el6.x86_64
②MySQL
MySQL-client-5.6.26-1.el6.x86_64.rpm
MySQL-devel-5.6.26-1.el6.x86_64.rpm
MySQL-server-5.6.26-1.el6.x86_64 .rpm
MySQL-shared-5.6.26-1.el6.x86_64.rpm
MySQL-shared-compat-5.6.26-1.el6.x86_64.rpm
③zabbix Webインタフェース
zabbix-web-mysql-2.4.6-1.el6.noarch
zabbix-web-japanese-2.4.6-1.el6.noarch
zabbix-web-2.4.6-1.el6.noarch
php-mysql-5.3.3-26.el6.x86_64 →これは最初からインストール済
※fpingなど、これらの前提となるrpmは割愛。
【主に確認した点・気になっている点】
・rpmパッケージを入れる順番に問題はなかったか。
(【環境】にあるインストール内容は、①→②→③の順番で入れてしまった。
参考書(寺島広大氏著 Zabbix統合監視 実践入門)では、
②→①→③の順番で説明されている。)
・インストール内容③は、MySQL-server-5.6.26-1.el6.x86_64 .rpm内の一部のファイルが
既存パッケージのファイルと競合するため、「rpm -ivh --replacefiles」とした。
・1656にある「netstatコマンドなどで、LISTEN状態になっているか確認してください。」
とあるのは、以下の結果で問題ないでしょうか。
ただし、netstatコマンド(オプションなし)では、「zabbix」と
書かれた行は出てこない。これも問題ないでしょうか。
---------------------
[root@RHEL65Aplus1 ~]# netstat -l (抜粋結果)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:http *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 *:https *:* LISTEN
tcp 0 0 *:pcsync-https *:* LISTEN
tcp 0 0 *:mysql *:* LISTEN
---------------------
・php設定ファイル(/etc/zabbix/web/zabbix.conf.php)
の抜粋は以下のようになっている。
---------------------
<?php
// Zabbix GUI configuration file.
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '127.0.0.1';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'zabbix';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';
$ZBX_SERVER = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = '';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
?>
---------------------
類似質問①の中では、$DB['SERVER']と$ZBX_SERVERは両方とも「localhost」だったが、
統一させなくても問題ないか
(そもそも、localhostと127.0.0.1の違いがよくわかっておりません・・・)。
・SElinuxは無効。
・zabbix_server.conf の「ListenIP=」はデフォルト(コメントアウト状態)
・各サービスは正常に起動/停止が可能。
---------------------
[root@RHEL65Aplus1 ~]# service --status-all (結果抜粋)
httpd (pid 4972) を実行中...
MySQL running (2109) [ OK ]
zabbix_server (pid 2148) を実行中...
---------------------
・MySQLにもログイン可能。ユーザ・データベース作成済み。
---------------------
[root@RHEL65Aplus1 ~]# mysql -uzabbix zabbix -p
Enter password:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
| zabbix |
+--------------------+
3 rows in set (0.00 sec)
---------------------
・/etc/my.cnfの内容
---------------------
[root@RHEL65Aplus1 ~]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server=utf8
skip-character-set-client-handshake
explicit_defaults_for_timestamp = true
innodb_file_per_table
innodb_buffer_pool_size=64M
innodb_log_file_size=16M
innodb_log_files_in_group=2
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
---------------------
・MySQLログ(/var/log/mysqld.log)には、WarningやErrorのメッセージは特になし。
長くなりすみません。
原因に心当たりがありましたら、ご教授のほどよろしくお願いいたします。
TNK - 投稿数: 4769
/var/lib/mysql/mysql.sock というソケットは存在しますか?
存在するのであれば、zabbix_serverのプロセスを実行している
ユーザ(恐らくzabbix)で、/var/lib/mysql/ ディレクトリにアクセス
できるようなパーミッションになっていますか?
k-momonga - 投稿数: 2
TNK 様
レスありがとうございます。
解決しました!
①
/var/lib/mysql/mysql.sockは存在しました。
②
zabbix_serverプロセスを実行しているユーザーは、
ご指摘の通りzabbixでした。
# ps -ef | grep zabbix
zabbix (中略) zabbix_server -c /etc/zabbix/zabbix_server.conf
③
/var/lib/mysqlディレクトリの権限を確認しました。
これもご指摘の通り、/var/lib/mysqlディレクトリには
mysqlというユーザー以外はアクセスできないようになっていました。
# ls -ld /var/lib
drwx------ 6 mysql mysql 4096 8月 26 17:30 2015 /var/lib/mysql
chmod 777 /var/lib/mysql を実行したとたん、
ログファイル(/var/log/zabbix/zabbix_server.log)に
DBに接続した旨の書き込みがあり、コネクション不可の書き込みは
発生しなくなりました。
大変助かりました。ありがとうございました!