はじめに
今回は、Checkmkエージェントを利用して監視対象のWindows端末上でユーザーテストを自動実行する方法をご紹介します。Checkmkの新機能「Robotmk」で細かく設定したシナリオを実行させ、アプリケーションのエンドツーエンド監視を効率的に行うことができます。
Checkmkのネットワーク・個々の機器のリソース監視に加え、外形監視(synthetic monitoring)も組合せられれば、システム全体の状態を包括的に把握できるのでとても便利です!

本日設定するテスト内容は以下の通りです:
- Chrome画面を開く
- Teamsのログインページへアクセス
- ユーザーIDを入力し続行、パスワードを入力し続行
- Teamsの初期ブラウザ画面が立ち上がる
これらのステップを指定間隔で自動で実行させ、その実行時間を測定します。
前提条件
実行環境の前提条件です。
- Checkmkサーバー:Checkmkソフトウェアバージョン2.4.0以上
- 監視対象Windowsマシン:Windows 10以降/Windows Server 2019以降
- 監視対象にCheckmk Agentがインストール可能であること
- 監視対象にRobot Framework環境を構築可能(自動構築されます)
- - Browserライブラリを使用します
- - RCCで環境を作成します
- 監視対象で自由にディレクトリが作成可能であること
- Visual C++ Redistributableがインストール済である/インストールできること
- - 存在しない場合は以下を監視対象端末にインストール
- - https://aka.ms/vs/17/release/vc_redist.x64.exe
(※URLクリックするとexeダウンロードが開始します)
ステップ1:シナリオテストファイルの準備
ステップ1は全て監視対象Windowsマシン上で実施します。
作業ディレクトリの作成
powershellで以下を実行
mkdir C:\robots\cmk_synthetic_web
手動で直接作成しても問題ありません。
テストに必要な3種類のファイルを作成し格納
テスト実行に必要なファイルを3種類準備し、先ほど作成したパス↑に格納します。
①conda.yaml
# For more details on the format and content:
# https://github.com/robocorp/rcc/blob/master/docs/recipes.md#what-is-in-condayaml
channels:
- conda-forge
dependencies:
# packages listed here are fetched and installed from conda-forge.
- python=3.12.3
- pip=23.2.1
- nodejs=22.11.0
- pip:
# packages listed here are fetched from pypi.org and installed using pip.
- robotframework==7.1.1
- robotframework-browser==19.1
rccPostInstall:
- rfbrowser init # Initialization command for Playwright (npm)
<補足>
ブラウザを使用したテストを実施する場合、rccPostInstall:は必ず記載してください。
②robot.yaml
tasks:
task1:
shell: python -c "print('nothing to do')"
environmentConfigs:
- conda.yaml
artifactsDir: output
③testTeams.robot(こちらのみファイル名任意)
★の箇所は実際のURLやログイン情報に書き換えてください。
*** Settings ***
Documentation This test suite automates login to Microsoft Teams using Browser library (Playwright).
# Instead of saving the screenshots to the file system, the screenshots are embedded in the log file.
Library Browser run_on_failure=Take Screenshot \ EMBED \ fileType=jpeg \ quality=50
*** Variables ***
${SIGNIN_URL} ★TeamsログインページのURL
${MS_ID} ★実際のログインID
${MS_PASSWORD} ★実際のログインパスワード
*** Test Cases ***
Login to Microsoft Teams
New Browser browser=chromium headless=False
New Context locale=ja-JP
New Page ${SIGNIN_URL}
Wait For Elements State input[name="loginfmt"] visible timeout=20s
Fill Text input[name="loginfmt"] ${MS_ID}
Click input[type="submit"]
Wait For Elements State input[name="passwd"] visible timeout=20s
Fill Text input[name="passwd"] ${MS_PASSWORD}
Click input[type="submit"]
Run Keyword And Ignore Error Wait For Elements State input[id="idBtn_Back"] visible timeout=5s
Run Keyword And Ignore Error Click input[id="idBtn_Back"]
# ここをURL待機に変更
Wait For Elements State input[id="ms-searchux-input"] visible timeout=180s
Take Screenshot EMBED
Log To Console OAuth login completed successfully.

ステップ2:シナリオテストファイルの準備
以降、Checkmkエージェントをインストールしてある前提で解説しますので、インストールされていない場合はユーザーガイドを参考にこのタイミングで実施してください。エージェントは自動更新機能まで設定されていると便利です。
- ユーザーガイド参考手順
- 10 エージェント
- 24.3 エージェントの自動アップデート
- 10.2 Windowsの監視
エージェント登録済かどうかの確認方法:
モニター>”システム”>エージェントの更新ステータス のリストに対象のWindowsマシンが並んでおり、「ターゲットエージェント」と「インストールされたエージェント」のキーが一致していれば、最新インストール済かつ自動更新の設定が完了しています。

ステップ3:Checkmk GUIでRobotmkプランを作成
外形監視(synthetic monitoring)はRobotFrameworkを利用したRobotmkというルールを使用して設定していきます。
Robotmkプランの設定
セットアップの検索ボックスで「Robotmk」を検索し、「Robotmkスケジューラ(Windows)」を選択。


- RobotFrameworkプロジェクトのベースディレクトリ: C:\robots
- アプリケーション名: TeamsLogin(サービス名になります)
- シーケンス実行間隔: 10分(任意。テストケースの長さにより調節してください)
- テストスイートファイルまたはフォルダへの相対パス: cmk_synthetic_web\testTeams.robot
- ロボットフレームワークの再実行: 再実行を選択すると、一度失敗しても最大実行回数まで実行を繰り返します。再実行なしでももちろん問題なし。
- robot.yamlへの相対パス: cmk_synthetic_web\robot.yaml
- 環境変数: 60分(環境構築タイムアウトまでの制限。初回は時間がかかるため多めに設定)
- ワーキングディレクトリのクリーンアップ: 14日 この期間が経過するとデータがクリーンアップされます
- ROBOCORP_HOMEディレクトリのベースディレクトリ: C:\robotmk\rcc_home\
図1、図2の通りの設定値を推奨。最後に条件欄で対象のホストを限定してください。
エージェントベイク(手動)とエージェントの更新(自動)
「Robotmkスケジューラ(Windows)」を保存したら、セットアップ>”エージェント”>Windows…の画面でオレンジのボタンを押してエージェントベイクを実行。

その後変更の適用を行い、エージェントの自動更新間隔が来るのを待ちます。
モニター>”システム”>エージェントの更新ステータス 画面でエージェントが完全にインストールされたことを確認し、エージェント更新は完了です。

ステップ4:Robotmk用サービスを取得
テスト環境の自動構築開始
Checkmk上でWindowsマシンのサービスディスカバリを実行し、「RMK Scheduler Status」という未決定のサービスとしてできていることを確認し、監視対象に追加。

サービス状態がOKであれば問題なく環境構築が行われています。

サービスディスカバリ取得直後の画面が図8です。概要欄を見ると「Environment building」という状態となっており、現在自動環境構築中であること、環境構築で2分53秒経過していることがわかります。
このサービスは「Setup」→「Environment building」→「Plan scheduling」というように概要の記載が変わっていくため、ひとまずは環境構築が完了するまで待機します。環境構築にはコアなどのリソースにもよりますが、10~40分程度かかることがあります。ルール上の環境変数として「60分」と設定しているのはこのためです。
環境構築に失敗、また設定時間を超えるとタイムアウトとなり、サービス状態がOKからCRITへ赤く変化します。エラーログの内容、パスなどが詳細欄に記載されますのでそれに従い異常を解消してください。

正常に環境構築が完了すると、図9のように概要の記載内容が「Plan scheduling」に変化します。またサービスディスカバリを実行してください。

サービスディスカバリを実行すると「RMK TeamsLogin_testTeams Plan」「RMK TeamsLogin_testTeams Test:Login to Microsoft Teams」という2つのサービスが新しく取得できます。取得できない場合は、テストの実行間隔分の時間待機してから再度サービスディスカバリを実行してください。これらのサービスは、Checkmkエージェントがテストを1度実行し成功すると取得できるサービスのため、実行間隔のタイミングにより取得できない場合があります。その場合は、今回は実行間隔を10分に設定しているので、10分程度待機してから取得し、監視対象に追加してください。
変更の適用を実行すれば、以上でRobotmkの設定は完了です。このように、環境は自動で構築されるためpythonやRobot Frameworkを自身でインストールする必要はありません。
自動構築が失敗した場合
自動構築時にエラーが発生した、またタイムアウトが発生した場合などは必要に応じて手動で再構築を行う必要があります。
cmdまたはPowershell上で以下のCheckmkエージェントを手動再起動するコマンドを実行してください。
net stop "Checkmk Service"
net start "Checkmk Service"
このコマンドを実行すると、図8の説明の通り、「RMK Scheduler Status」サービスの概要欄が「Setup」→「Environment building」→「Plan scheduling」の順で変化します。確認しながら進めて下さい。
Robotmkの監視結果

先の説明のとおり、Robotmkの設定を行うと3つのサービスが作成されます。
RMK Scheduler Status

環境構築、プランスケジューリング状態を確認するサービスです。手順で見てきたように、テスト環境構築の進捗を確認することができます。
RMK TeamsLogin_testTeams Plan

テストプランのステータスを確認するサービスで、グラフは2種類用意されています。
ランタイムリミットレート(ピークトライ):ルールで設定された制限時間(今回の場合デフォルト1分)に対する最長トライ時間の比率です。この比率に対してしきい値を設定できます。
ランタイム(ピーク時):Robot Framework スイートを 1 回実行するのにかかった実行時間をグラフ化しています。ルールで再試行を設定しており複数回実行された場合は、最も長い実行時間がグラフ化されます。
名称は「RMK(ルール設定のアプリケーション名)_(.robotファイル名) Plan」が設定されます。
RMK TeamsLogin_testTeams Test: Login to Microsoft Teams

テスト単一のステータス、を見ることができるサービスです。最新のテストが成功したかどうか、また実行時間に関する情報(実行時間)のグラフを表示します。テストがスキップされたり、実行間隔でテストが実行されなかった場合は監視更新停止(蜘蛛の巣アイコン)状態となります。
また、サービスアイコンに表示されている水色のレポートのようなボタンをクリックすると、
ロボットフレームワークの実行ログが表示されます。各テスト工程にかかった時間を振り返ることができます。

名称は「RMK (ルール設定のアプリケーション名)_(.robotファイル名) Test: (.robotファイルのTest Case1行目)」が設定されます。
専用ダッシュボード
外形監視(synthetic monitoring)専用のダッシュボードも用意されています。

まとめ
以上のように、指定した間隔でテストを自動実行し、結果をレポートとして蓄積できる環境が整いました。Checkmkと外形監視を組み合わせることで、従来のCheckmkでの監視では見えにくかった「実際のユーザー操作感」を監視に取り込むことができるようになります。
シナリオに応じて自由にテストを組み立てられるので、ログインや画面遷移など本番さながらの動きを再現可能です。
さらに、失敗時の詳細ログも取得できるため、トラブルシュートにも役立ちます。運用の手間を減らせる、とても便利な仕組みとなっています。ぜひ一度お試し下さい。
本機能はアドオンです。Checkmkご利用中の方であれば3つのテストまでは無料でお試しいただけますが、無制限で実行されたい場合はアドオンの追加が必要となりますのでお問い合わせください。