【Zabbix × ゲーミフィケーション】日々の障害対応にユーモアを!監視連動型ゲームを作ってみた

こんにちは、SCSKの坂木です。

Zabbixのダッシュボードを眺め、アラートを受信しては対応する。

インフラ運用において障害対応は非常に重要ですが、定型的な作業の繰り返しは面白みに欠け、どうしてもモチベーションが下がりがちです。

そこで今回は、「障害対応にゲーム性を持たせてユーモアを取り入れられないか?」と考え、Zabbixの障害情報と連動する仮想キャラクター育成アプリを作成してみました。

 

監視連動型ゲームとは?

今回作成したのは、Zabbixのダッシュボード上で直接動作する育成シミュレーションゲームです。

ダッシュボードに組み込んだ初期状態の画面がこちらです。

可愛らしいヒヨコが殻に入った状態で、「元気です」と穏やかに過ごしています。
この平和な状態をいかに長く保てるかが、ミッションになります。

 

Zabbix APIを活用した裏側の仕組み

このゲームは、Zabbixのダッシュボード上に「URLウィジェット」として1つのHTMLファイルを読み込ませることで動作しています。

裏側の仕組みとして、HTML内に記述されたJavaScriptが定期的にZabbix API(problem.get)へポーリング通信を行い、現在発生しているアクティブな障害の件数を取得しています。

ダッシュボード画面自体をリロードすることなく、API経由でリアルタイムに障害件数の増減を検知し、その差分をそのままゲーム内の状態変化として画面へ反映させるアーキテクチャになっています。

実際にZabbixから障害情報を取得しているJavaScriptのコア部分は以下のようになっています。

// Zabbix APIへ現在のアクティブな障害件数を問い合わせ
async function fetchZabbixActiveProblemCount() {
const response = await fetch("http://<ZabbixのIP>/zabbix/api_jsonrpc.php", {
method: 'POST',
headers: {
'Content-Type': 'application/json-rpc',
// Zabbix 7.xの仕様に合わせ、Bearerトークンで認証
'Authorization': 'Bearer <APIトークン>'
},
body: JSON.stringify({
jsonrpc: '2.0',
method: 'problem.get', // 障害情報を取得
params: { output: 'extend' },
id: Date.now(),
}),
});

const data = await response.json();
// 取得した障害データの件数を返す
return Array.isArray(data.result) ? data.result.length : 0;
}

このように、Zabbix 7.x系のAPI仕様に合わせてHTTPヘッダーにBearerトークンを含め、problem.getメソッドを呼び出しています。
裏側で数秒おきにこの関数を実行し、前回取得した件数と比較することで、画面上の「ゴミ」の増減判定を行っています。

 

障害は放置厳禁!迫りくる「ゴミ」の恐怖

このゲームの最大の特徴は、Zabbixのアラート状態とキャラクターの住環境が直結している点です。
監視対象のシステムで障害が発生すると、APIがそれを検知し、未解決アラートの件数に応じてゲーム内の部屋に「ゴミ箱」がポイッと投げ込まれていきます。

実際にアラートを検知してゴミが反映された画面を見ると、キャラクターが少し困ったように「ちょっと散らかってます」と訴えかけてきます。

 

アラートを素早くクローズ(復旧)すればゴミは自動的に消え去りますが、障害対応を後回しにして放置し続けると事態は深刻化します。未対応のアラートが9件まで溜まった画面では、キャラクターが汗を流しながら「限界寸前…助けて…」と悲鳴を上げてしまいます。

 

そして、ゴミが上限の10個に達してしまうとどうなるのか。無情にもお墓と幽霊の姿に変わり、「天国へ旅立ちました…」というメッセージと共にゲームオーバーを迎えます。

システム障害の連鎖がキャラクターの命を奪うという、なかなかにシビアな現実を突きつける仕様です。。。

 

キャラクターの育成システム

キャラクターを死なせずに障害対応をこなし、一定の無障害時間を経過させることができれば、「進化」のイベントが発生します。

ただアラートを消して待つだけではなく、画面下部に用意された「ご飯をあげる」「なでる」「ボールを投げる」といったアクションボタンでキャラクターとコミュニケーションを取ることができます。これらのアクションによって「懐き度」のゲージを上昇させることが可能です。

 

懐き度をしっかりと上げておくことで、時間経過に伴い別の姿へと進化します。

 

この進化先は到達時点の「懐き度」によって分岐するため、日頃からのこまめなお世話(と平和なインフラ環境の維持)が欠かせません。

 

まとめ:遊び心で目指す「障害対応マスター」への道

本ブログでは、Zabbixの障害情報と連動して動くキャラクター育成アプリの作成を通じて、インフラ監視業務にゲーム性(ゲーミフィケーション)を取り入れるアイデアとそのサンプルをご紹介しました。

ただダッシュボードに表示されるだけの無機質なアラート通知も、可愛いキャラクターの部屋を汚す「ゴミ」だと思えば、「早く掃除して(対応して)あげなきゃ!」と少しだけ前向きなモチベーションが湧いてきませんか?

日々の障害対応を迅速にこなし、キャラクターを旅立たせること無く最終進化形態まで無事に育て上げることができたなら、あなたは間違いなく立派な「障害対応マスター」です。

インフラ運用はシステムの安定稼働を支える重要なミッションですが、だからこそ日々の業務にほんの少しのユーモアと遊び心を取り入れることで、単調になりがちな監視をもっと楽しく、ポジティブなものに変えていきましょう。

 

▼弊社ではZabbix関連サービスを展開しています。以下ページもご参照ください。

★Zabbixの基礎をまとめたeBookを公開しております!★

Zabbix資料ダウンロード|SCSK Plus サポート for Zabbix
Zabbix監視構築に必要な知識と最新機能についての資料をダウンロードできるページです。世界で最も人気のあるオープンソース統合監視ツール「Zabbix」の導入構築から運用保守までSCSKが強力にサポートします。

 

★SCSK Plus サポート for Zabbix★

SCSK Plus サポート for Zabbix
世界で最も人気のあるオープンソース統合監視ツール「Zabbix」の導入構築から運用保守までSCSKが強力にサポートします。

 

★SCSK Zabbixチャンネル★

SCSK Zabbixチャンネル
SCSK Zabbixチャンネルでは、Zabbixのトレンドや実際の導入事例を動画で解説。明日から使える実践的な操作ナレッジも提供しており、監視業務の効率化に役立つヒントが満載です。 最新のトピックについては、リンクの弊社HPもしくはXアカ...

 

★X(旧Twitter)に、SCSK Zabbixアカウントを開設しました!★

【公式】SCSK Zabbix (@SCSK_Zabbix) on X
SCSKが提供するZabbixサービスのオフィシャルアカウントです。#Zabbix #SCSKPlusサポートforZabbix #監視 #SCSK
×
タイトルとURLをコピーしました