再ログイン後、ダッシュボードアクセス不能
はじめまして。
環境:RHEL7 / Zabbix-4.4.1 / mysql(mariadb)
事象:
ユーザから「ログイン後、WEBインターフェースが表示されない」との申告があり設定を確認。
自分(特権)と比較してユーザグループ(権限が参照のみ)が違うくらいで問題点が見付からず、
そのユーザのみログイン後のURLを指定(特定ダッシュボード)したりしましたがアクセス不能。
自分はログインできるよな?とログアウト→ログインしたところ、
You are not logged in
- You must login to view this page.
- If you think this message is wrong, please consult your administrators about getting the necessary permissions.
と表示されアクセス不能に。Adminアカウントでもアクセスしましたが同じ状態になりました。
再起動(アクセスしていたブラウザ/Zabbixとも)を行ないましたが変化なし。debuglevelも変更しましたが、ログイン周りでとくに有用な情報も出力されない状態。
こうなるとDBを直で変更するくらいしか回復する術がなさそうなのですが、どこから手を付けるべきか参考情報はございませんでしょうか?
(追記)
APIについては、ログイン不能になった自分のアカウントでアクセスしましたが、がっつり応答がある状態です。
usrgrpテーブルで自身が所属しているグループの gui_access の値は 0 でアクセスそのもの許可されていると思われます。
Adminについても同様です。
TNK - 投稿数: 4742
ブラウザのキャッシュを一度クリアしてみてください。
ngc7293 - 投稿数: 13
FF/IEともにキャッシュクリア・再起動を実行しておりますが変化なしでした。
「TNKさんがわざわざ『クリアしてみて』と書いている以上、絶対基本的な罠がなにかあるな。。。」、とアクセス環境を
思い描いて「まさかHTTPプロキシが悪さしている?」と言うことに思い至りました。
そこで、HTTPプロキシ経由不要なアクセス環境に変更して試したところ、あっさりダッシュボードが表示されました。
環境を変更して試すと言う基本的なことを忘れてました。1分前まで正しくログインできていたのにログインできなくなり
焦ったのが敗因でした。
本当にお騒がせしました。(なさけなし。。。)
ngc7293 - 投稿数: 13
続報となります。
プロキシ経由の環境だとログインができない状況が続いたためいろいろ情報を漁ったところ、ロシアのコミュニティでも同様の問題が発生している旨の投稿を見付けました。(Google先生ありがと!)
そこには以下の記載がありました。
+ 4.4.1 の不具合
+ 解決には 4.4.0 にdowngrade する、あるいは、4.4.2 にupdateする
本体(zabbix-server-mysql)ではなく、zabbix-web-で始まる3パッケージをdowngradeしたところ、以前とかわらずHTTPプロキシ経由の環境からでもログインできるようになりました。
もし同様の問題ではまっていらっしゃる方がいましたら、4.4.2にあげる(まだrc1ですが)か、4.4.0に戻すようにしてください。
TNK - 投稿数: 4742
この↓あたりですね。
https://www.zabbix.com/forum/in-russian/388891-%D0%BD%D0%B5%D1%82-%D0%B2...
よく見つけられましたね。
ngc7293 - 投稿数: 13
4.4.3がリリースされていますが、まだ直っていないようです。
前回のことがあったので問題なく戻ってはこれました(汗。
変遷としては以下な感じとなります。
4.4.0→4.4.1→4.4.0(前回)→4.4.3→4.4.2→4.4.1→4.4.0(今回)
直っているはずとされる4.4.2でもダメ、結局元のところまで戻ることになりました。
なお、Web以外(本体/get/sender)の方は普通に4.4.3で動いております。
ngc7293 - 投稿数: 13
こんな報告ばかりですいません。
4.4.4でも修正されていないようです。三度4.4.0まで戻しました。
ロシア方面から修正依頼でていると思うんですけどねぇ。。。
ngc7293 - 投稿数: 13
すこし真面目にコードを確認して原因がわかりました。
/usr/share/zabbix/include/func.inc.php 内で定義されている zbx_setcookie() の変更が問題でした。
diff func.inc.php*
104c104
< setcookie($name, $value, isset($time) ? $time : 0, null, null, HTTPS, true);
---
> setcookie($name, $value, isset($time) ? $time : 0, CSession::getDefaultCookiePath(), null, HTTPS, true);
利用環境がリバプロ背後だったこともあり、cookie path の定義が不味かったようです。
元のnullにしてやることで4.4.4でも稼動を確認しました。
いやぁ。。。長かったです。。。