...

PandoraFMSによるWebサービス監視

by user

on
Category: Documents
9

views

Report

Comments

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
Fly UP