ある日、Zabbix にWeb接続しようとすると、エラーがでていて接続できない状態でした。
しばらくすると、一部正常に表示されたり、更新するとだめだったり。。。DBのエラーっぽい感じだったので、調査した時のメモというか戒めというか。。。
MariaDBがエラーを吐いてZabbixに接続できない
環境は以下。
- CentOS 7.1
- MariaDB 5.5.56
- Zabbix 3.0
少し前にZabbixのバージョンを 2.4→3.0 にアップデートしたので、それがよくなかったのかなぁとかいろいろ考えが巡る。
MariaDB のログを確認すると以下の表示が出ていました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
171204 4:51:59 InnoDB: Error: Write to file ./zabbix/history_uint.ibd failed at offset 0 977272832. InnoDB: 1048576 bytes should have been written, only 0 were written. InnoDB: Operating system error number 28. InnoDB: Check that your OS and file system support files of this size. InnoDB: Check also that the disk is not full or a disk quota exceeded. InnoDB: Error number 28 means 'No space left on device'. InnoDB: Some operating system error numbers are described at InnoDB: http://dev.mysql.com/doc/refman/5.5/en/operating-system-error-codes.html 171203 4:51:59 InnoDB: Assertion failure in thread 140697601926912 in file os0file.c line 4361 InnoDB: Failing assertion: ret InnoDB: We intentionally generate a memory trap. InnoDB: Submit a detailed bug report to http://bugs.mysql.com. InnoDB: If you get repeated assertion failures or crashes, even InnoDB: immediately after the mysqld startup, there may be InnoDB: corruption in the InnoDB tablespace. Please refer to InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html InnoDB: about forcing recovery. 171203 4:51:59 [ERROR] mysqld got signal 6 ; This could be because you hit a bug. It is also possible that this binary or one of the libraries it was linked ag |
InnoDB Error や you hit a bug などいやな感じのメッセージが出ています。。。
もう少しよく確認してみると、
Check also that the disk is not full or a disk quota exceeded.
ディスクがいっぱいでないか、ディスククォータが超過していないかもチェックしてください。
や、error number 28. などと出ています。
Errcode:28 はディスク容量が足りないことを示しているようです。
さっき MariaDB のログを確認したあとに、zabbix のログも確認したのですが、zabbixのログの容量が9GBくらいになっていました。。。嫌な予感がして df コマンドで容量を確認してみると、なんと使用率100%・・・
なぜだ?? tail -f zabbix-server.log を打ってみると、すごい勢いでログが流れている(汗)そういえば、数日前に監視の設定がうまくいかずログレベルを debug にしたような記憶がある。。。
zabbixの設定ファイルをみるとやっぱりログレベルがdebugになっている。そうそうに以下のように修正。
1 2 3 |
DebugLevel=4 ↓ DebugLevel=3 |
あとはローテートされた10GBくらいのzabbixのログが出来上がっていたので削除して、MariaDB と 念のため Zabbix-Server を再起動する。
Webブラウザでアクセスしてみると、正常に表示されました。
バックアップを取っていなかったので焦りましたが、無事に復旧してよかったです。ログレベルはデバッグのままにしないのは当たり前ですが、せめてバックアップはしっかりとっておこう、と思った瞬間でした。。
ちなみに、zabbixのログレベルに関しては以下。デフォルトは3です。(公式サイトより引用)
0 - デバッグしない。
1 - 致命的な情報
2 - エラー情報
3 - 警告
4 - デバッグ用(多くの情報が生成されます)
以上です。
↓↓↓ 持っていると便利な一冊。