前回のあらすじ
忙しくも充実した日々を送る花輪だったが、ひょんなことから低スペ環境の運用を 押し付け 任されることとなる。
吹けば倒れる貧弱サーバの運用を自動化し、平和な日々を取り戻すことができるのかっ!!
第1回 では、Exastro OASE をインストールしました。
第2回 では、Exastro OASE の検証を行うために、監視対象となる Web サーバ(貧弱サーバ)と Zabbix 監視サーバを構築しました。また、ITAサーバでアクション部分となる Conductor を設定しました。
Exastro OASEについて読む
1. Exastro OASE って何よ?
「[Exastro OASE][公式ページ] はシステム運用の自立化・効率化・省力化を支援するためのOSSです。」
とのことで、平たくいえば、システムの運用を楽チンにしてくれるOSSってことみたいです。
OASE の読み方は「オアゼ」です。
2. Exastro OASE って誰得なの?
障害発生時には、以下のような対応フローが多いと思います。
- 監視システムによるアラート検知
- インシデント・イベント起票
- 一次切り分け
- 暫定復旧作業
- SEによる調査
- 恒久対応
- クローズ
問題が起こったときに、いかに迅速かつ確実に復旧できるかがポイントとなります。
OASE でできるのは、この「3. 一次切り分け」と「4. 暫定復旧作業」といった初期対応の部分です。
「3. 一次切り分け」と「4. 暫定復旧作業」を OASE により自動化することで、サービス復旧までの時間を短縮できます。
また、未知のインシデントが発生した場合は1次切り分けルールと暫定復旧のアクションを増やしていくことで、次第に運用者の対応が減っていくので運用コストを抑える効果も期待できます。
3. Exastro OASE の機能をざっくり見てみよう
もう少し OASE の機能について見てみます。
外部連携機能
OASE は単体では機能しません。
監視機能を持ちませんし、障害発生時のアクションを実行する機能も持っていません。
代わりに、OASE は他のシステムと連携することで監視からアクションまでの一連の処理を実施します。
OASE の構成としては、主に
- 監視システムからのアラートを受け取る__監視アダプタ__
- 受け取ったアラートをルールに従って推論する__ディシジョンテーブル__
- 推論の結果を元にアクションをキックするための__ドライバ__
によって構成されています。
Ver. 1.2 までは監視ソフトウェアには ZABBIX、アクション部分の処理には Exastro IT Automation (ITA) と連携できたようですが、Ver. 1.3 からは Prometheus と連携できるようになったようです。今後この辺の連携機能も更に拡充されていくようです。
テスト実行
障害が発生する度にルールを追加すると記載しましたが、本番環境にテストもせずにアクションを導入することは通常ありえません。
必ず検証環境などで事前にテストを行ってから導入すると思います。
OASE では、検証環境を内部に持っており、アラート検知からアクション実行までのテストを本番に影響を与えることなく実施可能です。
これにより、安心して継続的なルールの管理を行うことが可能となります。
ざっくりまとめる
As-Is: 現状の問題と対応方法
項目 | 内容 |
---|---|
サービス内容 | 一般公開型のメディアサイト |
問題点 | アクセスが多い場合に OS がハングアップ |
暫定対策 | OSの再起動 |
根本原因 | リソース不足 |
恒久対策 | リソース増強 |
To-Be: OASE を使った自動化の方針(ディシジョンテーブル)
条件1 | 条件2 | アクション | |
---|---|---|---|
Rules | アクセス数が多い場合 | アクセス数が低い場合 | |
Rule1 | N | N | 何もしない |
Rule2 | Y | N | Sorry ページ に切り替える |
Rule3 | N | Y | 元のページに切り替える |
Rule4 | Y | Y | Sorry ページ に切り替える |
検証環境の構成(再掲)
システム構成
サーバ一覧
サーバ | ホスト名 | 説明 |
---|---|---|
Webサーバ | target-web | メディアサイトを公開するサーバ |
監視サーバ | zabbix | Web サーバの監視を行う |
OASEサーバ | exastro-oase | 今回の主役。運用を自動化 |
ITAサーバ | exastro-ita | OASE からの API コールをトリガーにオペレーションを実行 |
作業の流れ
-
周辺環境構築 ✔ Completed
- 監視対象の Web サーバ構築 ✔ Completed
- Zabbix 環境構築 ✔ Completed
- Exastro IT Automation (ITA) 環境を構築 ✔ Completed
- ディシジョンテーブルの作成
- Zabbix 監視アダプタの設定
- Exastro IT Automation (ITA) ドライバの設定
- ディシジョンテーブルのルール登録
- 動作確認
Exastro OASE をさわってみよう
今回の最終的な目標となるディシジョンテーブルは下記のとおりです。
条件1 | 条件2 | アクション | |
---|---|---|---|
Rules | アクセス数が多い場合 | アクセス数が低い場合 | |
Rule1 | N | N | 何もしない |
Rule2 | Y | N | Sorry ページ に切り替える |
Rule3 | N | Y | 元のページに切り替える |
Rule4 | Y | Y | Sorry ページ に切り替える |
おおまかな作業の流れは、
- 大枠となるディシジョンテーブルを定義
- ディシジョンテーブルの 条件式 と Zabbix の監視アラート を紐付ける
- ディシジョンテーブルの アクション と ITA ドライバの Conductor を紐付ける
- ディシジョンテーブルの ルール を登録する
といった感じです。
前置きが長くなりましたが、ようやく OASE に触ります。
2. ディシジョンテーブルの作成
まずは、ディシジョンテーブルを作成をしましょう。
OASE にログインし、上メニューから ルール > ディシジョンテーブル を選択します。
ディシジョンテーブルの画面を開いたら、右上にある 新規追加 ボタンを押下します。
2.1. 基本情報・権限
※注意: 何かしらのグループに対して「更新可能」にチェックを入れる必要があります。チェックがない場合、GUIから操作できなくなってしまいます。
大項目 | 項目名 | 入力値 |
---|---|---|
基本情報 | ディシジョンテーブル名 | メディアサイト運用 |
概要 | (任意) | |
権限の設定 | システム管理者 | すべて「更新可能」にチェック |
2.2. 条件式
※注意: 一度登録した条件式は変更できません。
条件名 | 条件式 |
---|---|
このトリガーIDを含む | 含む |
このトリガーIDを含まない | 含まない |
このホストを含む | 含む |
このホストを含まない | 含まない |
条件には 必ず対になる否定形を含める ようにしましょう。
理由は、否定系がないと表現できないルールが発生してしまうからです。
今回の目標となるディシジョンテーブルでは、Rule3 がそれに該当します。
条件1 | 条件2 | アクション | |
---|---|---|---|
Rules | アクセス数が多い場合 | アクセス数が少ない場合 | |
Rule1 | N | N | 何もしない |
Rule2 | Y | N | Sorry ページ に切り替える |
Rule3 | N | Y | 元のページに切り替える |
Rule4 | Y | Y | Sorry ページ に切り替える |
Rule1 はそもそもアクションがないので、登録の必要はありません。
Rule2 と Rule4 は、「アクセス数が多いトリガーID を 含む」とすればいいです。
では、Rule3 はどうでしょうか。この場合、「アクセス数が少ないトリガーID を 含む」 とだけ設定すると、Rule4 も含んでしまい、Rule4 のアクションとバッティングしてしまいます。
以上の理由から、「アクセス数が少ないトリガーID を 含む」、かつ、「アクセス数が多いトリガーID を 含まない」とすれば、Rule3 だけにマッチするルールを作成できます。
(使わなければ、何も入力しなければいいだけの話ですしおすし。後から追加のほうが苦労します)
以上のことから、条件には 必ず対となる否定形を含める ようにしましょう。
2.3. 未知事象通知
ルールにマッチしないリクエストを検知した場合に、メールを送ることができます。
今回は、メールサーバの用意はしていないので、メール機能は使わないです。
未知事象通知 |
---|
通知しない |
すべて入力が完了したら、保存 ボタンを押し、確認ダイアログの OK を押下します。
3. Zabbix 監視アダプタの設定
Zabbix 監視アダプタの設定を行います。
上メニューから システム > 監視アダプタ を選択します。
次に、右上の 監視先の追加 ボタンを押下します。
監視先の設定の項目から、ZABBIX Adapter ver1 を選択します。
Zabbix 監視アダプタの設定項目は下記のようにしました。
トリガーから取得可能な項目のうち、よく使いそうなものは、triggerid と description、 hosts といったところでしょうか。
triggerid は、そのままの意味で各トリガーに割り当てられるユニークな数値となります。
description は、トリガーを作成する際にユーザが任意に設定可能な名前のことです。
hosts は、トリガーが引かれた対象のホスト名です。
他にもいくつか項目がありますが、このあたりを利用すれば大体なんとかなると思います。
トリガーの各項目の意味については、Zabbix公式ドキュメントのココに記載があるので、こちらを参照するといいです。
項目 | 設定値 |
---|---|
名前 | Webサーバ監視 (任意) |
プロトコル | http |
ホスト/IP | ZabbixサーバのIPアドレス |
ポート | Zabbixの公開ポート |
ユーザ名 | Zabbixのユーザ名 |
パスワード | Zabbixのパスワード |
ディシジョンテーブル名選択 | メディアサイト検証 |
突合情報 - このトリガーIDを含む | triggerid |
突合情報 - このトリガーIDを含まない | triggerid |
突合情報 - このホストを含む | hosts |
突合情報 - このホストを含まない | hosts |
すべて入力が完了したら、保存 ボタンを押し、確認ダイアログの OK を押下します。
4. Exastro IT Automation (ITA) ドライバの設定
上メニューから システム > アクション設定 を選択します。
次に、右上の アクション先の追加 ボタンを押下します。
アクション先の設定の項目から、ITA Driver ver1 を選択します。
ITA ドライバの設定項目は下記のようにしました。
※注意: 何かしらのグループに対して「更新可能」にチェックを入れる必要があります。チェックがない場合、GUIから操作できなくなってしまいます。
項目 | 設定値 |
---|---|
名前 | exastro-ita(任意) |
バージョン | 1.7.0(1.7.1)※ |
プロトコル | http |
ホスト/IP | (ITA サーバの IP アドレス) |
ポート | (ITAの公開ポート) |
ユーザ名 | (ITAのユーザ名) |
パスワード | (ITAのパスワード) |
権限の設定 - 新規作成 | 「更新可能」にチェック |
※バージョンは本来、1.7.1 を使用すべきですが、2021/05 現在 OASE v1.3.0 では未リリースのため互換性がありそう 1.7.0 を利用します。
すべて入力が完了したら、保存 ボタンを押し、確認ダイアログの OK を押下します。
5. ディシジョンテーブルのルール登録
5.1. トリガー情報の取得
第2回で作成したトリガーの情報を取得してみましょう。
今回は Zabbix で提供される REST API を使って、目的のトリガー情報を取得していきます。
# JSON 整形用のコマンドをインストール
yum -y install jq
# Zabbix サーバの IP を変数に格納する
ZABBIX_IP=XXX.XXX.XXX.XXX
# Zabbix に API ログインするためのトークンを取得する
# user: Zabbix 画面のログインユーザ名
# password: Zabbix 画面のパスワード
ZABBIX_TOKEN=`curl -s -X GET -H "Content-Type:application/json-rpc" -d '{"jsonrpc":"2.0","method":"user.login","params":{"user":"Admin","password":"zabbix"},"id":1,"auth":null}' http://${ZABBIX_IP}/zabbix/api_jsonrpc.php | jq -r .result`
# コネクション数閾値超えのトリガー情報
curl -X GET -H "Content-Type:application/json-rpc" \
-d '{"jsonrpc":"2.0","method":"trigger.get","params":{"filter":{"description":"More than 20 connections"},"selectHosts":["hostid","host"]},"auth":"'${ZABBIX_TOKEN}'","id":1}' \
http://${ZABBIX_IP}/zabbix/api_jsonrpc.php | \
jq -r ".result[]|{"triggerid": .triggerid, "description": .description}"
{
"triggerid": "18467",
"description": "More than 20 connections"
}
# コネクション数閾値下回りのトリガー情報
curl -X GET -H "Content-Type:application/json-rpc" \
-d '{"jsonrpc":"2.0","method":"trigger.get","params":{"filter":{"description":"Less than 11 connections"},"selectHosts":["hostid","host"]},"auth":"'${ZABBIX_TOKEN}'","id":1}' \
http://${ZABBIX_IP}/zabbix/api_jsonrpc.php | \
jq -r ".result[]|{"triggerid": .triggerid, "description": .description}"
{
"triggerid": "18468",
"description": "Less than 11 connections"
}
上記の結果から、前回設定したトリガーの ID が取得できました。
トリガー名(description) | トリガーID(triggerid) |
---|---|
More than 20 connections | 18467 |
Less than 11 connections | 18468 |
5.2. オペレーション情報の取得
ITA にログインし、メインメニュー を開き、メニューグループ 画面から 基本コンソール を選択します。
左メニューの オペレーション一覧 をクリックします。
下記の画像のように、オペレーション ID を確認します。
上記の画面から、オペレーションの情報が確認できました。
オペレーションID | オペレーション名 |
---|---|
1 | Sorryページ切り替え |
2 | Sorryページ戻し |
5.3. Conductor 情報の取得
メインメニュー を開き、メニューグループ 画面から Conductor を選択します。
左メニューの Conductorクラス一覧 をクリックします。
下記の画像のように、Conductor クラスID を確認します。
上記の画面から、Conductor の情報が確認できました。
ConductorクラスID | Conductor名称 |
---|---|
1 | Webサーバ高負荷対応 |
2 | Webサーバ高負荷戻し対応 |
5.4. Conductor紐付Node一覧メニューの復活
デフォルトの状態の ITA では、OASE からドライバによる呼び出し時に処理に失敗してしまいます。
なので、必ず Conductor紐付Node一覧メニュー を復活させましょう。
メインメニュー を開き、メニューグループ 画面から 管理コンソール を選択します。
左メニューの ロール・メニュー紐付管理 をクリックします。
下記の画像のように、表示フィルタ の メニューグループ の 名称 から Conductor を選択します。
表示された一覧の中から、2,100,180,007 の Conductor紐付Node一覧 の 復活 ボタンを押下します。
メインメニュー を開き、メニューグループ 画面から Conductor を選択します。
左メニューの中に、 Conductor紐付Node一覧 メニューが表示されていることを確認します。
5.5. トークン払い出し
※注意: 「権限あり」にチェックを入れる必要があります。チェックがない場合、GUIから操作できなくなってしまいます。
OASE にログインし、ルール > トークン払い出し を選択します。
次に、右上の 新規トークン払い出し ボタンを押下します。
下記の設定値を入力し、トークン払い出し ボタンを押下します。
項目 | 設定値 |
---|---|
トークン名 | oase_survey |
有効期限 | (未入力) |
グループ別権限 - システム管理者 | 制限あり |
トークン内容を確認します。※記録は不要です。
トークンが一覧に追加されたことを確認します。
5.6. ディシジョンテーブルの記述
5.6.1. ディシジョンテーブルファイルのダウンロード
OASE の画面の上メニューから ルール > ディシジョンテーブル を選択します。
次に、メディアサイト検証 のディシジョンテーブルのダウンロードアイコンをクリックする。
5.6.2. 事前情報
まずは事前確認しておいた情報をまとめます。
これらの情報を元に、ディシジョンテーブルファイルのパラメータを埋めていきます。
▼Zabbix
トリガー名(description) | トリガーID(triggerid) | ホスト |
---|---|---|
More than 20 connections | 18467 | target-web |
Less than 11 connections | 18468 | target-web |
▼ITA
作業 | オペレーションID | オペレーション名 | ConductorクラスID | Conductor名称 |
---|---|---|---|---|
Sorryページ切り替え作業 | 1 | Sorryページ切り替え | 1 | Webサーバ高負荷対応 |
Sorryページ戻し作業 | 2 | Sorryページ戻し | 2 | Webサーバ高負荷戻し対応 |
5.6.3. ルールテーブルの記載
先程ダウンロードしたファイル id00000000001.xlsx のパラメータを埋めて行きましょう。
ご覧の通りシートの中身が横に長いので、下記は Excel ファイルに記載している内容を分割して下に表示しています。
▼条件
条件は、ここでも記載した通り、
- 「アクセス数が多いトリガーID(18467) を 含む」場合、Sorry ページ に切り替える
- 「アクセス数が少ないトリガーID(18468) を 含む」、かつ、「アクセス数が多いトリガーID(18467) を 含まない」場合、元のページに切り替える
となりますので、これを元にパラメータを埋めていきます。
特に値を入れない場合は、何も記載しないとその条件自体が存在しないものとして処理されます。
Rule description | このトリガーIDを含む(含む) | このトリガーIDを含まない(含まない) | このホストを含む | このホストを含まない |
---|---|---|---|---|
Sorryページ切り替え | 18467 | target-web | ||
Sorryページ戻し | 18468 | 18467 | target-web |
▼アクションの定義
条件に対応するアクションを設定します。
Rule name は、何でもいいですが、後述のテストリクエストの結果で表示されるため、ルールの内容ができるだけわかりやすい内容にするのがいいと思います。
Rule description | Rule name | Action type | Action parameter information | Pre-execution action parameter information |
---|---|---|---|---|
Sorryページ切り替え | ToLitePage | ITA(ver1) | ITA_NAME=exastro-ita,CONDUCTOR_CLASS_ID=1,OPERATION_ID=1 | X |
Sorryページ戻し | ToOriginalPage | ITA(ver1) | ITA_NAME=exastro-ita,CONDUCTOR_CLASS_ID=2,OPERATION_ID=2 | X |
▼アクションの実行条件
Rule description | Action retry interval | Number of Action retries | Action deterrent interval | Number of deterrent actions | Number of action conditions | Action condition period(Seconds) |
---|---|---|---|---|---|---|
Sorryページ切り替え | 1 | 1 | 0 | 0 | X | X |
Sorryページ戻し | 1 | 1 | 0 | 0 | X | X |
▼ルールの優先度
今回は特に優先度は設定しません。
Rule description | Big group | Big group priority | Small group(Required) | Small group priority |
---|---|---|---|---|
Sorryページ切り替え | X | X | X | X |
Sorryページ戻し | X | X | X | X |
▼ルールの有効期間
今回は特に有効期限は設定しません。
Rule description | Date Effective | Expiration date |
---|---|---|
Sorryページ切り替え | ||
Sorryページ戻し |
5.6.4. ルールファイルのアップロード
上メニューから ルール > ルール を選択します。
次に、右上の ファイルを選択 ボタンを押下し、ダイアログから id00000000001.xlsx を選択します。
右上の アップロード ボタンを押下します。
一覧画面に、アップロードしたファイルとそれに対応するディシジョンテーブルが表示されます。
作業ステータス が、ステージング適用完了 となるまで待ちます。
※ルールファイルのアップロードに失敗した場合は、結果ファイルをダウンロードすると、失敗時のログを確認することが可能です。
5.6.5. ディシジョンテーブルのテスト
テストリクエスト ボタンを押下します。
ディシジョンテーブル名選択 の項目に、今回作成したディシジョンテーブル メディアサイト運用 を選択します。
今回は、網羅的にテストを行いたいので、単発テスト ではなく、一括テスト によってテストリクエストを実行します。
一括テスト用Excelファイルのダウンロード ボタンをクリックし、id00000000001_testrequest.xlsx ファイルをダウンロードします。
網羅的なにテストを行うにあたり、要素としては下記の3つがあります。
- アクセス数が多いトリガー
- アクセス数が少ないトリガー
- target-web
この3つの「あり」or「なし」でテストパターンを作成します。
今回は、有効期限を設定していないので、Event start date/time は適当です。
▼一括テスト用Excelファイルのパラメータ記載
id00000000001_testrequest.xlsx ファイルに下記のパラメータを設定します。
Request name | Event start date/time | このトリガーIDを含む | このトリガーIDを含まない | このホストを含む | このホストを含まない |
---|---|---|---|---|---|
NoAlert on not-target | 2021-05-21 1:16:10 | [""] | [""] | ["not-target"] | ["not-target"] |
NoAlert on target-web | 2021-05-21 1:16:10 | [""] | [""] | ["target-web"] | ["target-web"] |
ManyAccess on not-target | 2021-05-21 1:16:10 | ["18467"] | ["18467"] | ["not-target"] | ["not-target"] |
ManyAccess on target-web | 2021-05-21 1:16:10 | ["18467"] | ["18467"] | ["target-web"] | ["target-web"] |
LessAccess on not-target | 2021-05-21 1:16:10 | ["18468"] | ["18468"] | ["not-target"] | ["not-target"] |
LessAccess on target-web | 2021-05-21 1:16:10 | ["18468"] | ["18468"] | ["target-web"] | ["target-web"] |
both ManyAccess and LessAccess on not-target | 2021-05-21 1:16:10 | ["18467","18468"] | ["18467","18468"] | ["not-target"] | ["not-target"] |
both ManyAccess and LessAccess on target-web | 2021-05-21 1:16:10 | ["18467","18468"] | ["18467","18468"] | ["target-web"] | ["target-web"] |
この時のテストの期待値としては、下記の通りです。
行数 | Request name | 期待値 |
---|---|---|
3行目 | NoAlert on not-target | 該当ルールなし |
4行目 | NoAlert on target-web | 該当ルールなし |
5行目 | ManyAccess on not-target | 該当ルールなし |
6行目 | ManyAccess on target-web | Sorry切り替え作業実施 |
7行目 | LessAccess on not-target | 該当ルールなし |
8行目 | LessAccess on target-web | Sorry戻し作業実施 |
9行目 | both ManyAccess and LessAccess on not-target | 該当ルールなし |
10行目 | both ManyAccess and LessAccess on target-web | Sorry切り替え作業実施 |
ファイルを選択する ボタンを押下し、一括テスト用Excelファイル (id00000000001_testrequest.xlsx)をアップロードします。
実行 ボタンを押下します。
実行ログを確認しましょう。
ログ全文を表示
ステージング実行開始
日時2021-05-21 15:23:38
ファイル名id00000000001_testrequest.xlsx
処理件数 8 / 8
3行目
ルールが検出できませんでした
4行目
ルールが検出できませんでした
5行目
ルールが検出できませんでした
6行目 マッチング件数 :1件
1件目
ルール名:ToLitePage
アクション実行順:1
アクション種別:ITA(ver1)
アクションパラメータ情報:['ITA_NAME=exastro-ita', 'CONDUCTOR_CLASS_ID=1', 'OPERATION_ID=1']
アクション実行前パラメータ情報:無
アクションリトライ間隔:1
アクションリトライ回数:1
アクション抑止間隔:0
アクション抑止回数:0
アクション条件回数:X
アクション条件期間:X
大グループ:X
大グループ優先順位:X
小グループ:X
小グループ優先順位:X
正常に処理されました
7行目
ルールが検出できませんでした
8行目 マッチング件数 :1件
1件目
ルール名:ToOriginalPage
アクション実行順:1
アクション種別:ITA(ver1)
アクションパラメータ情報:['ITA_NAME=exastro-ita', 'CONDUCTOR_CLASS_ID=2', 'OPERATION_ID=2']
アクション実行前パラメータ情報:無
アクションリトライ間隔:1
アクションリトライ回数:1
アクション抑止間隔:60
アクション抑止回数:1
アクション条件回数:X
アクション条件期間:X
大グループ:X
大グループ優先順位:X
小グループ:X
小グループ優先順位:X
正常に処理されました
9行目
ルールが検出できませんでした
10行目 マッチング件数 :1件
1件目
ルール名:ToLitePage
アクション実行順:1
アクション種別:ITA(ver1)
アクションパラメータ情報:['ITA_NAME=exastro-ita', 'CONDUCTOR_CLASS_ID=1', 'OPERATION_ID=1']
アクション実行前パラメータ情報:無
アクションリトライ間隔:1
アクションリトライ回数:1
アクション抑止間隔:0
アクション抑止回数:0
アクション条件回数:X
アクション条件期間:X
大グループ:X
大グループ優先順位:X
小グループ:X
小グループ優先順位:X
正常に処理されました
では、答え合わせです。
行数 | Request name | 期待値 | 結果 |
---|---|---|---|
3行目 | NoAlert on not-target | 該当ルールなし | 該当ルールなし |
4行目 | NoAlert on target-web | 該当ルールなし | 該当ルールなし |
5行目 | ManyAccess on not-target | 該当ルールなし | 該当ルールなし |
6行目 | ManyAccess on target-web | Sorry切り替え作業実施 | Sorry切り替え作業実施 |
7行目 | LessAccess on not-target | 該当ルールなし | 該当ルールなし |
8行目 | LessAccess on target-web | Sorry戻し作業実施 | Sorry戻し作業実施 |
9行目 | both ManyAccess and LessAccess on not-target | 該当ルールなし | 該当ルールなし |
10行目 | both ManyAccess and LessAccess on target-web | Sorry切り替え作業実施 | Sorry切り替え作業実施 |
期待値とテストの実行結果が一致しています。
期待値と異なる場合は、テスト内容や条件式の設定に誤りがないかを確認して、再度テストを実施しましょう。
最後に、閉じる ボタンを押してテストリクエストの実行を終了します。
検証完了のステータスに変更するかのダイアログが出ますので、OK ボタンを押下します。
運用ステータス が、検証完了 に変わり、操作 項目のチェックボタン(✓)がアクティブになっているはずです。
5.6.6. プロダクション定期用ルールに反映
操作 項目のチェックボタン(✓)を押下します。
プロダクション適用ルール に、メディアサイト運用 が追加されます。
これで、すべての準備が整いました。
トテモナガカッタヨ。。。
6. 動作確認
6.1. 想定している挙動
6.1.1. 高アクセス発生時
▼状況
エンドユーザからの Web サーバへのアクセスが21回を超えた
▼アクション
- Zabbix で___アクセス数が多い場合のトリガー___ が引かれる
- OASE は、トリガーが引かれたことを確認する
- OASE は、ディシジョンテーブルのルールにマッチするかを評価
- OASE は、検知したトリガーがルールにマッチするため ITA の Conductor を実行
- ITA は、Web サーバに対し、コンテンツを Sorry ページ に切り替える
6.1.2. 高アクセス収束時
▼状況
エンドユーザからの Web サーバへのアクセスが11回を下回った
▼アクション
- Zabbix で___アクセス数が少ない場合のトリガー___ が引かれる
- OASE は、トリガーが引かれたことを確認する
- OASE は、ディシジョンテーブルのルールにマッチするかを評価
- OASE は、検知したトリガーがルールにマッチするため ITA の Conductor を実行
- ITA は、Web サーバに対し、コンテンツを 元のページ に切り替える
6.2. 実際にやってみよう
6.2.1. 高アクセス発生時の動作検証
まずは、監視対象の Web サーバにアクセスします。
完全にページが表示されるまで待ちましょう。(コレをやらないと F5 連打がうまく行かないです)
ページが表示されたら F5 キー を連打しましょう。
今回は、time=120 と長めに設定してますが、ぱぱっとやるなら30秒くらいでもいいんじゃないでしょうか。
Zabbix 上でグラフを確認します。
17:22:07 に アクセス数が多い場合のトリガー が引かれたようです。
次に、OASE の画面から、リクエスト履歴とアクション履歴を確認してみましょう。
想定通り、リクエストを受け取り、Sorry ページへの切り替えアクションが実行されたようです。
17:22:24 に ITA ドライバでアクションを実行し、
17:22:45 にアクションが完了しています。
再度、監視対象の Web サーバにアクセスします。
イェースッ! 想定通り、「Sorry. Please try again leter.」にコンテンツが切り替わっています。
6.2.2. 高アクセス収束時の動作検証
再び、Zabbix 上でグラフを確認します。
2分経過したので、コネクション数が徐々に低下してきます。
17:24:11 に アクセス数が少ない場合のトリガー が引かれました。
先程と同じように、OASE の画面から、リクエスト履歴とアクション履歴を確認してみましょう。
想定通り、リクエストを受け取り、Sorry ページへの切り替えアクションが実行されたようです。
17:24:26 に ITA ドライバでアクションを実行し、
17:24:47 にアクションが完了しています。
最後にもう一度、監視対象の Web サーバにアクセスします。
コンテンツが元のページに戻っています。
コレ面白いヨ~
まとめ
Exastro OASE を使って、監視サーバと Exastro IT Automation を連携させました。
周辺環境の準備に苦労しましたが、OASE の画面操作自体は非常にシンプルで、
- ディシジョンテーブルの作成
- Zabbix 監視アダプタの設定
- Exastro IT Automation (ITA) ドライバの設定
- ディシジョンテーブルのルール登録
の操作で特に迷うところはありませんでした。
ただ、自分の思い描いた挙動を OASE にさせるために、ディシジョンテーブルのルールをどう書くかを考えるところが少し頭を使いました。
また、本項では触れなかったですが、オプションも色々取り揃えられているので、この辺も使いこなしていきたいと思います。
ルールのテスト機能はかなりいい機能ですね。
網羅的にテストパターンを作成して OASE に食べさせるだけで、ディシジョンテーブルのルールの動きを見ることができるので、安心して本番環境にもルールを適用できますね。
登録したルールに従い、監視サーバ → OASE → ITA → Webサーバと処理が流れていくのを見ているのが、ピタ○ラスイッチみたいで面白かったです。ガハハハっ
この辺の仕組み使ってマルチクラウドのオートスケールとかやると面白いかも。
至極個人的な用途だと、死んだらハードディスクのデータを消去するとかね。笑
自分(人間)の死活監視をどうするかとか考え出すと結構面白いな。
でもそれはまた別のお話。
じゃぁの!ヽ(*・ω・)ノ