Comments
Description
Transcript
PandoraFMSによるWebサービス監視
PandoraFMSによるWebサービス監視 株式会社アールワークス/PandoraFMS JP 打田 旭宏 1 目次 ‣ PandoraFMS について ‣ ポート監視(ネットワークサーバ) ‣ http 応答監視(プラグインサーバ) ‣ 標準プラグイン/Nagios プラグイン ‣ ブラウザを利用する監視(プラグインサーバ ) ‣ Selenium WebDriver ‣ Pandora console 拡張機能 2 PandoraFMS ご紹介 ‣ スペイン発の統合監視ツール ‣ コミュニティページ: http://pandorafms.org ‣ ドキュメント: http://wiki.pandorafms.com ‣ 開発: https://github.com/pandorafms/pandorafms ‣ 日本語コミュニティ: http://pandorafms.jp ‣ 最新リリースは 6.0SP1 ライセンスは GPLv2 ‣ 商用版 (Enterprise 版)も http://pandorafms.com 3 PandoraFMS のアーキテクチャ クライアント pandora_console データベース Apache + PHP 監視対象 pandora_server ソフトウェアエージェント Oracle データサーバ ICMP/TCP/SNMP ネットワークサーバ WMIクエリ WMIサーバ スクリプト プラグインサーバ 等 4 MySQL PostgreSQL PandoraFMS 用語 ‣ エージェント ‣ 通常 PandoraFMS での監視対象機器のことです ‣ より細かくいえばモジュールをまとめる単位 ‣ モジュール ‣ 監視項目 ‣ 監視手法により更に分類されます 5 モジュールの分類 ‣ データサーバモジュール ‣ ネットワークサーバモジュール ‣ プラグインサーバモジュール ‣ WMIサーバモジュール ‣ 予測サーバモジュール(エンタープライズ版のみ) ‣ Webサーバモジュール(エンタープライズ版のみ) 6 お試し Docker 環境 ‣ docker-compose 環境を用意しました $gitclonehttps://github.com/rworksjp/docker-compose-osc2016-tokyo-spring $cddocker-compose-osc2016-tokyo-spring $cpdot.env.env $edit.env $docker-composepull $docker-composeup-dmysql $docker-composeup-dpandora_console $docker-composeup-dpandora_server $docker-composeup-dpandora_agent ‣ 今回紹介する監視方法を試せます ‣ Docker ホストの 80 番ポートで pandora_console が 閲覧できます。ユーザ名: admin パスワード: pandora 7 ポート監視 ネットワークサーバモジュールを利用すると以下の 情報収集ができます ‣ ICMP (レイテンシー/真偽値) ‣ SNMP (文字列/数値データ/数値差分/真偽値) ‣ TCP (文字列/数値データ/数値差分/真偽値) Web 監視ということで http の応答を確認するために TCP(真偽値) で情報収集する例を考えます 8 ポート監視 設定に必要な情報 ‣ 「対象IP」と「ポート番号」 ‣ 「TCP 送信文字列」と「TCP 受信文字列」 例: / に対する GET リクエストで 200 OK が返るか ‣ TCP 送信文字列: GET/HTTP/1.1^M^M ‣ TCP 受信文字列: 200OK http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_ja:Remote_Monitoring 9 http応答監視 プラグインサーバモジュールでは pandora_server 上でコ マンドを実行して以下の情報収集ができます ‣ 2種類のプラグインタイプ ‣ 標準タイプ(文字列/数値データ/数値差分/真偽値) ‣ Nagios タイプ(真偽値) 単純なプラグインとして真偽値の標準タイププラグイン と Nagios プラグインでの監視する例を考えます 10 http応答監視(標準タイプ) ‣ 標準タイプのプラグインは登録したコマンドの標準 出力を結果として受け取ります ‣ 例えば curl を利用して監視するなら /bin/sh-c'curl-sf--connect-timeout_field2_"_field1_">/dev/null&&echo1||echo0' ‣ 前後に「_」を含む文字列は実行前にマクロとして 評価されます ‣ 真偽値の場合は 1 が正常、0 が障害を表します http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_ja:Remote_Monitoring 11 http応答監視(標準タイプ) 各監視対象に対して共通で利用する コマンドをプラグインとして登録し ます 右の設定例では ‣ パラメータマクロとして 「URL」と「タイムアウト」を とります 監視対象毎にパラメータマクロを変 更して利用します 12 http応答監視(標準タイプ) 設定例 13 http応答監視(Nagiosタイプ) Nagios プラグインの実行結果(OK/CRITICAL)などに応じ て結果を返します ‣ http 応答を nagios の check_http プラグインで監視 する例 /usr/lib64/nagios/plugins/check_http-H"_field1_"-p_field2_-u"_field3_"-t"_field4_"_field5_ Nagios タイプのプラグインは Nagios プラグインの実行 結果に応じて結果を返す以外は標準タイプのプラグイ ンと同じように動きます 14 http応答監視(Nagiosタイプ) ‣ プラグインタイプを「標準」か ら「Nagios」にする以外は標準 タイプのプラグインと同様 ‣ 利用する Nagios プラグインの オプション(-H/-p/-u/-t など)を パラメータマクロとして利用 ‣ 他にも -s オプションを利用する ことで文字列チェックなども可 http://nagios-plugins.org/doc/man/check_http.html 15 http応答監視(Nagiosタイプ) 設定例 16 Webサーバモジュール エンタープライズ版に含まれるWebサーバモジュールを 利用すると以下のような機能を含む監視が可能です ‣ 文字列存在を含むかの監視(正規表現) ‣ プロキシ経由での監視 ‣ フォームへの入力を含む監視 ‣ HTTP認証を含むページの監視 http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_ja:Web_Monitoring シナリオ監視 ‣ ユーザ操作を実際のブラウザで再現し、Webサイト が意図通りに動作しているか確認 ‣ 実際のブラウザを利用するメリット ‣ 想定するユーザ環境に近い状況で動きを確認 ‣ ブラウザ上での JavaScript の実行・再現 ‣ 今回は Selenium WebDriver を使う方法を扱います。 他にも JavaScript で PhantomJS/SlimerJS といった ヘッドレスブラウザを呼び出す方法もあります。 18 WebDriver のアーキテクチャ ‣ 対象Webサイト 主な構成要素 ‣ クライアント(ライブラリなど) ‣ ブラウザドライバ(リクエストを受け て実際にブラウザを動かす部分) ‣ ブラウザ ブラウザのAPI Selenium Server (構成によっては省略 可能、複数ブラウザがある場合の割 り振り、ドライバ起動などを担当) ‣ 各要素は WebDriver specに従い通信 https://www.w3.org/TR/webdriver/ (実態は RESTful API) ‣ クライアント側がブラウザドライバの 実装を気にしなくて済む、独自ブラウ ザドライバ実装によるモバイル対応な どの利点 ブラウザドライバ ChromeDriver Selenium Server 19 クライアント (言語バインディング等) (各ドライバの実装依存) FirefoxDriver IEDriver WebDriver Protocol (JSON Wire Protocol) WebDriver Protocol (JSON Wire Protocol) WebDriver を利用するツール ‣ 各言語向けバインディングを利用したスクリプト ‣ Selenium 公式: Java/C#/Ruby/Python/JavaScript ‣ サードパーティライブラリ(Perl/PHP/Haskel…) ‣ 今回は selenese-runner-java を使います ‣ SeleniumIDE (Firefox 拡張) でブラウザ操作を録画 ‣ 生成されたテストケース(WebDriver 以前の Selenium 向け)を WebDriver に変換し実行 20 今回扱う環境 お試し環境として用意している環境 ‣ 対象Webサイト クライアント: selenese-runner-java ブラウザ ‣ ブラウザドライバー: chromedriver ‣ 今回紹介する方法の制限 ‣ ブラウザドライバ ChromeDriver 複数種類のブラウザを利用する方法 については扱いません クライアント ‣ ‣ ブラウザドライバを含むシナリオの 実行環境の監視方法についても扱い ません selenese-runnar-java 複数種のブラウザを扱う場合は例えば selenium-grid-hub などが利用できます 21 selenese-runner-java ‣ https://github.com/vmi/selenese-runner-java/releases から入手可能 ‣ SeleniumIDE でテストケース html ファイルを作成 ‣ 以下のようなコマンドで利用(今回の環境では) $java-jar/opt/selenese/selenese-runner.jar--driverremote\ --remote-browserchrome--remote-urlhttp://chromedriver:9515\ --cli-args"--no-sandbox""_field1_"&&echo1||exit0 ‣ selenese-runnar-java には色々なオプションがあるの で今回紹介する方法以外でも使えます 22 selenese-runner-java お試し環境に JavaScript ベースの Web アプリ ケーションを同梱しています そのアプリケーションを監視するテストケー スファイル例 ‣ open コマンドでページを開く ‣ waitForElementPresent コマンドで特定 の要素が表われるのを待つ ‣ click コマンドで特定要素のクリック ‣ assertText コマンドで特定要素に意図し た文字列があるか確認 23 シナリオ監視 設定例 24 PandoraFMS の console 拡張機能 シナリオ監視できても、実行結果の確認がしにくいと いう問題が… ‣ PandoraFMS には監視コンソールを拡張する機能が あります。 ‣ 監視プラグインと協調動作させることで実行結果の 詳細を表示することもできます http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_ja:Anexo_Console_extensions_development 25 pandoa_console 拡張例 26 宣伝 株式会社アールワークスでは Selenium WebDriver を利用 した Web シナリオ監視サービスを SaaS 提供しています ‣ シナリオ監視用 pandora_console 拡張を含む PandoraFMS Enterprise がフロントエンド ‣ ブラウザは Firefox, Chrome(PC/Android), IE を選択可 SaaS なのでブラウザ実行環境を用意いただく必要が ありません ‣ http://ms.rworks.jp/saas/s-scenario-monitoring/ 27