この記事はSelenium/Appium Advent Calendar 2017の2日目の記事です。
こんにちは!
監視してますか!! されてますか!!!
サーバーが落ちてたのに誰も気づかないで2ヶ月放置とかほんと勘弁してくださいよ!!!!
私は、Seleniumの新バージョンがリリースされたら、一応更新内容をざっとチェックするようにしているのですが、Selenium 3.8.0のJava部分の更新内容には今までにない項目があり目を引きました。
* Added initial support for managing Grid Hubs and Nodes via JMX
JMXだと???
Selenium 3.8.0から、Selenium GridがJMXをサポートしました
誰得!?
GitHubのissueを見ると、たまに話が上がっていたようですが...
そもそもJMXとはなんなのですか
Javaアプリの状態をいろいろ管理するためのやり方についての公開規格です。
サーバーの状態を管理するのにSNMPを使ったりしますよね。あんな感じでJavaアプリの状態を管理するのにJMXを使うというわけです。
実際にJMXでSelenium Gridのハブとノードの状態を見てみよう
現時点でどんな情報が見られるのでしょうか。
かんたんにできる範囲で、実際に試してみましょう。
Selenium Gridのハブとノードを適当に立ち上げておきます
この記事では、後でロールを判別しやすくするためのラベルとして、なるべくおいしそうなシステムプロパティを与えます。
$ java -Dロールケーキ=小山ロール \
-jar selenium-server-standalone-3.8.0.jar \
-role hub
$ java -Dロールケーキ=堂島ロール \
-jar selenium-server-standalone-3.8.0.jar \
-role node
jpsコマンドで、Selenium GridのハブとノードのプロセスIDを確認します
l
オプションと v
オプションをつけておくとわかりやすくなります。
$ jps -lv
32999 selenium-server-standalone-3.8.0.jar -Dロールケーキ=小山ロール
33001 selenium-server-standalone-3.8.0.jar -Dロールケーキ=堂島ロール
見つかりました。おいしそうですね。
jconsoleコマンドで特定のプロセスを監視してみます
まずハブのプロセスの方から見てみましょう。ラベルが小山ロールの方です。
なお、小山ロールはたっぷりのハチミツと卵黄を泡立てて、丁寧に空気を抱き込ませた生地をじっくり焼き上げ、しっとりときめ細やかなスポンジになっているそうです。 1
$ jconsole 32999
何か言われてしまいますが、今回はちょっと確認したいだけなのであまり気にせず「保護されていない接続」で進めてしまいます。
jconsoleの画面が表示されます。タブ「MBeans」をクリックしましょう。
MBeansタブの左側には、監視可能な内容の一覧が表示されています。
org.selenium.grid
というのが、Selenium 3.8.0で新しく見られるようになった部分です。中身をのぞいてみましょう。
オッ それらしいのがいろいろありますね〜
「Hub」がハブ自身の情報で、「RemoteProxy」が接続しているノードの情報となります。
いずれの項目も昔から取得するためのAPIはあったのですが、JMX経由での取得が標準で可能になったことで敷居が下がったのではないでしょうか。
ZABBIXなどJMXを利用できる監視ツールと組み合わせて使うと、また一味違ったSelenium Gridの運用ができそうですね。
次にノードのプロセスの方を見てみましょう。ラベルが堂島ロールの方です。
なお、堂島ロールは北海道産の生乳を数種厳選し、世界でも類を見ない独自の製法で仕上げたオーダーメイドクリームが、搾りたてミルクのようなフレッシュな味わいだそうです。2
$ jconsole 33001
おや? こちらは何も見えませんね。
JMXサポートは、ハブの方を監視すればノードまで含めてすべて見られるように設計されているようです。
今回はここまで
次回は...誰かー! 誰か来てくれーーー!!!
Selenium/Appium Advent Calendar 2017はまだまだ君の挑戦を待っているぜ!