はじめに
ZabbixのWebシナリオ機能は非常に強力ですが、
LaravelのCSRFトークン(_token
)やCookieの扱いには少し工夫が必要です。
今回は、
- Laravelのログイン画面にアクセス
- ログイン処理
- ログアウト処理
という一連の流れをZabbixのWebシナリオで監視する方法をまとめました。
環境
- Laravel 11.x(CSRF・Cookie有効)
- Zabbix 7.0
- Webサーバ:nginx + PHP-FPM
- セキュリティトークン:
- hiddenフィールド
_token
- Cookie
XSRF-TOKEN
- hiddenフィールド
やりたかったこと
- トップページにアクセスして、必要なトークンとセッションを取得
- トークン&Cookieを使ってログイン処理をPOST送信
- 正常なログインができたことを確認
- 最後にログアウト処理まで実施
Webシナリオのステップ構成
ステップ1:トップページアクセス
-
URL:
https://your.domain.com/
- 変数の取得:
{XSRF-TOKEN} = regex:XSRF-TOKEN=(.*?); #最短マッチ
{_token} = regex:name="_token" value="(.*?)" #最短マッチ
- 取得モード:ボディとヘッダー
ステップ2:ログイン処理
- URL:https://your.domain.com/do_login
- POSTフィールド:
login_id = {login_id}
password = {password}
_token = {_token}
- ヘッダー:
Cookie: XSRF-TOKEN={XSRF-TOKEN}; cpkim_session={cpkim_session}
- 期待するステータスコード:200
ステップ3:ログアウト処理
- URL:https://your.domain.com/do_logout
- POSTデータなし(GETでもOK)
- 期待するステータスコード:200
工夫ポイント
- LaravelのCSRFトークンはページアクセスごとに変化するため、最初のステップで正確に取得が必要
- Cookieも同様に取得&ステップ間で維持が必要
- POST時のヘッダーにCookieをセットしないと419エラーになる
- ステップを3つに分けることで、トラブル時の切り分けも容易に
監視の結果
- Zabbix Webシナリオでもここまでできれば、実質E2E監視と同等の信頼性が得られます
- Laravelベースの管理画面や業務アプリでも応用可能です
最後に
- Laravelの仕組みを理解すれば、Zabbixだけでかなり高度な監視が可能です
- CSRFトークンやCookieの扱いで悩んでいる方の参考になれば嬉しいです
ご要望があれば、スクリーンショット付きの詳細設定手順も追記いたします!