現状と違うバージョンのデータをDBにリストアしてしまった場合の対処
「Session terminated, re-login, please.」と表示され、管理者権限でのログインができない
http://www.zabbix.jp/node/3327
に書かれている内容と同様と思われるのですが、具体的な対応法としてどのようにするのが適切かご教授いただければと書き込んでおります。
環境 zabbix 3.4.15
DB mariadb 10.1
zabbixのDBのみ破損してしまい、回復を図ったのですがうまく修復できず、バックアップしていたデータからリストアしました。
この時バックアップしていたデータが現状のバージョンの物ではなく、古い物だったため「Session terminated, re-login, please.」と画面に表示される状態となりました。
先に示したスレッドで、バージョンを合わせれば良い、との回答があったのですが、手順としてはどのようにするのがベターでしょうか?
システム側を全体的にリストアしたDBで利用していたバージョンに戻し、そこから再度3.4.15まであげる、と言うのが適切かと思うのですが、もしDB側のバージョンのみあげられるようであれば
そちらの対処が出来ないかと思い、書き込んでおります。
バックアップを怠ったのが最大の問題なのですが、このような場合の適切な対処法をご存じであれば、お力をお貸しください。
TNK - 投稿数: 4740
バージョン2.0以降で3.4以前のデータベースであれば、Zabbixサー
バーを起動したときに、使用しているZabbixサーバーのバージョン
に合わせたデータベースへアップグレード処理が実行されます。
アップグレード処理が終了すれば、Webインターフェースからログ
インしてしようできるようになるはずです。
yas - 投稿数: 43
ありがとうございます。
となればzabbixサーバの起動時に対応されるはずですが、状況に変化ありません。
ログを調べて行くとalertsテーブルが存在せず、スキーマ作成用のsqlからalertsテーブルのクリエイト文を探して作成しました。
ただ、これでもエラーは無くなった物の、
画面の至る所で Session terminated, re-login, please. が表示される
ログアウトして管理者でログインしようとしても同じ画面に戻ってしまう
と言う症状が出ています。
一部ホストデータは消えてしまっているようなのですが、監視データの取得自体は出来ているようで、非常に中途半端な状態になっている、と言う状況のようです。
過去の書き込みを参照しても、Session terminated, re-login, please.が出る場合については、DBとサーバのバージョンが一致していない場合、との回答があるだけのため、現状のバックアップを取得し
zabbix環境を再構築してから今あるデータを流し込む、と言うのが最善かなとも考えていますが、丸々リストアするとトラブル毎戻すことになるかと言う心配があります。
データベースをバックアップから戻した状態で、存在しなかったテーブルを作成、その後zabbixサーバを起動してどうなるか、は試してみる価値がありそうですので、そちらを試してみます。
これでうまく行ってくれるならよいのですが…
yas - 投稿数: 43
再度DBのリストアを行い、消えていたテーブルを作成した上で試してみましたが、やはり状況に変わりがありませんでした。
Session terminated, re-login, please. の表示がされているため、セッション周りの問題かとは思うのですがこれという解決方法が見つかりません。
Versionの違うDBを戻してしまった、と原因を決めてしまったのですが、他にこのエラーが起こりうる要素などあるのでしょうか?
TNK - 投稿数: 4740
バックアップされたデータベースが破損しているか、完全なバック
アップではない場合は、同様にあるはずのテーブルが存在しなかっ
たりする可能性があります。
他にも破損したテーブルなどがあるかもしれないので、PHPのログ
なども確認してどのようなエラーが発生しているのか見てみてくだ
さい。
yas - 投稿数: 43
Zabbix-serverのzabbix-server.logから確認してみました。ログレベルは3のままですが、問題の状況から何か起こっているのであればこれで出力されるはず、と考えています。
通常時のエラーログ(アイテム取得できずなど)に加えて、DBへのSQLでスロークエリになった物が出力されているようです。
ただ、数として極端に多く出力されているわけではないため、問題の主原因では無さそうです。
PHPのログ、と言う事でしたのでhttpdのログを確認してみましたが、エラーログの方には特に問題を特定できそうな内容は出力されておりませんでした。
php.iniでデフォルト設定のため、問題があればhttpdのエラーログに出力される、と言う認識です。
気になるのは発生しているスロークエリですが、Session terminated, となっている理由がつかめません。
戻したバックアップ自体は存在しているため、DBを一度Dropして完全に何も無い状態で初期設定から行ってどうなるか、を確認してみます。
ホストとアイテム関係だけでも復元できれば良いのですが
アドバイスありがとうございます。
yas - 投稿数: 43
その後、データベースごとDropし、 create.sqlを実行、初期状態のDBを作成後、zabbix-serverを起動してみたのですが初期設定画面が現れず、データが無い状態で
Session terminatedの表示が各所にある、と言う状況になりました。
DBは完全に初期設定の状態ですので、DB以外の要因が問題、と切り分けられました。
逆にこうなると、zabbixサーバを再構築してみるぐらいしか方策が無さそうです。
TNK - 投稿数: 4740
初期設定画面がでるかどうかは、Webインターフェース用の設定フ
ァイルの有無で変わります。
RHELやCentOSでZabbix標準のパッケージを使用していれば、
/etc/zabbix/web/zabbix.conf.php
というファイルが最初のセットアップウィザードの終了時に作成さ
れるようになっています。
データベースを初期化してもだめならば、PHPの動作環境に何らか
の問題が発生していると思われます。
セッション管理用のディレクトリのパーミッションも確認してみて
ください。
OS標準のパッケージを使用して構成されているのであれば、
/var/lib/php/session
というディレクトリのはずです。
WebサーバーもしくはPHPの動作環境用のプロセスを起動しているア
カウントでの読み書きが可能であるかを確認してください。
TNK - 投稿数: 4740
Webインターフェースで「Session terminated, re-login, please.」
と表示されてしまう問題でもう一つの原因が考えられます。
ブラウザが古いコンテンツやクッキーを保持したまま、同じURLで
新しいバージョンのZabbixのWebインターフェースでアクセスした
場合に発生することがあります。
この場合、正常にZabbix自体は機能していてもWebインターフェー
スからの操作を行うことができません。
以前のバージョンで使用してブラウザとは別のブラウザでアクセス
できるか試してみてください。
yas - 投稿数: 43
ありがとうございます、こちらが当たりでした。
普段利用していないMicrosoft Edgeでアクセスしたところ画面が正常に出たため、残っていたバックアップをDBに戻し、serverを起動したところその段階までのデータは戻すことが出来ました。
メインで利用しているFirefoxも全てのキャッシュ、cookieを削除した上で再度アクセスしたところ正常に動作することを確認しました。
一度ログアウトすれば再度セッションが貼られるはずだ、と思い込んでいたのが問題でした。
何度もコメントありがとうございました。