cacti で CMDPHP: Poller[0] ERROR: SQL Assoc Failed!, Error:’1017′ エラーが出てグラフが描画されない



リソースモニタリングツールの Cacti 使ってますか? 私も最近は Zabbix がメインですが、古いシステムではまだ Cacti が残っています。そのグラフがうまく描画されていないことに気づきました。

Cacti のグラフ
Cacti のグラフが途中から全く描画されなくなっている

まず SNMP が動作しているかを疑いましたが、正常に動作していました。次にログを確認すると、以下のようなエラーが出ていました。

このログを手がかりに調べてみると、どうやらデータベースが破損しているときになるようです。 そこでいろいろな手段を試してみます。

Cacti の DB 修復ツールを実行する

Cacti には repair_database.php という修復ツールが備わっているのでそれを実行してみます。

しかし、残念ながらうまく行きませんでした。そこで次の方法に移ります。

Rebuild Poller Cache の実行

Cacti の Poller Cache を再構築します。この機能は Web の画面から実行できます。

Web 管理画面の下の方にある System Utilites メニューから Rebuild Poller Cache を実行します。

cacti_rebuild_poller_cache1
Cacti の Rebuild Poller Cache を実行するところ

しかしながら、この方法では何も変わりませんでした。。

MySQL データベースを確認する

MySQL のデータベースファイルを確認すると、テーブル一覧は poller_output テーブルは出てきますが、アクセスできません。データベースファイルを調べると

定義ファイル poller_output.frm だけが存在しています。 本来あるはずのデータファイル poller_output.MYD やインデックスファイル poller_output.MYI がありません。

このような場合はもうデータがありませんのでバックアップから復旧するか、あきらめて再構築します。今回は MySQL 5.6 リファレンスマニュアル MyISAM テーブルの修復方法 の方法に従って TRUNCATE をしました。

poller_output テーブルの Truncate

念のために poller_output.frm をコピーしておきます。次に mysql データベースにログインして TRUNCATE を実行します。

空の poller_output.MYD poller_output.MYI ファイルができます。待避していた poller_output.frm を戻します(そもそもデータが失われているので本来不要かもしれません。)

これでグラフの描画が無事復活しました。


この記事へ1件のコメント

  1. Thanks, that worked as a charm!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  • キュア子の紹介

人気記事ランキング