LoginSignup
0

More than 1 year has passed since last update.

Exastro OASE でマッチポンプした話(活用編)

Last updated at Posted at 2021-05-24

前回のあらすじ

忙しくも充実した日々を送る花輪だったが、ひょんなことから低スペ環境の運用を 押し付け 任されることとなる。
吹けば倒れる貧弱サーバの運用を自動化し、平和な日々を取り戻すことができるのかっ!!

第1回 では、Exastro OASE をインストールしました。
第2回 では、Exastro OASE の検証を行うために、監視対象となる Web サーバ(貧弱サーバ)と Zabbix 監視サーバを構築しました。また、ITAサーバでアクション部分となる Conductor を設定しました。

Exastro OASEについて読む

1. Exastro OASE って何よ?

システム連携

「[Exastro OASE][公式ページ] はシステム運用の自立化・効率化・省力化を支援するためのOSSです。」
とのことで、平たくいえば、システムの運用を楽チンにしてくれるOSSってことみたいです。
OASE の読み方は「オアゼ」です。

2. Exastro OASE って誰得なの?

障害発生時には、以下のような対応フローが多いと思います。

  1. 監視システムによるアラート検知
  2. インシデント・イベント起票
  3. 一次切り分け
  4. 暫定復旧作業
  5. SEによる調査
  6. 恒久対応
  7. クローズ

問題が起こったときに、いかに迅速かつ確実に復旧できるかがポイントとなります。
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 ページ に切り替える

検証環境の構成(再掲)

システム構成

OASE_component.png

サーバ一覧

サーバ ホスト名 説明
Webサーバ target-web メディアサイトを公開するサーバ
監視サーバ zabbix Web サーバの監視を行う
OASEサーバ exastro-oase 今回の主役。運用を自動化
ITAサーバ exastro-ita OASE からの API コールをトリガーにオペレーションを実行

作業の流れ

  1. 周辺環境構築 ✔ Completed
    1. 監視対象の Web サーバ構築 ✔ Completed
    2. Zabbix 環境構築 ✔ Completed
    3. Exastro IT Automation (ITA) 環境を構築 ✔ Completed
  2. ディシジョンテーブルの作成
  3. Zabbix 監視アダプタの設定
  4. Exastro IT Automation (ITA) ドライバの設定
  5. ディシジョンテーブルのルール登録
  6. 動作確認

Exastro OASE をさわってみよう

今回の最終的な目標となるディシジョンテーブルは下記のとおりです。

条件1 条件2 アクション
Rules アクセス数が多い場合 アクセス数が低い場合
Rule1 N N 何もしない
Rule2 Y N Sorry ページ に切り替える
Rule3 N Y 元のページに切り替える
Rule4 Y Y Sorry ページ に切り替える

おおまかな作業の流れは、

  1. 大枠となるディシジョンテーブルを定義
  2. ディシジョンテーブルの 条件式Zabbix の監視アラート を紐付ける
  3. ディシジョンテーブルの アクションITA ドライバの Conductor を紐付ける
  4. ディシジョンテーブルの ルール を登録する

といった感じです。

前置きが長くなりましたが、ようやく OASE に触ります。

2. ディシジョンテーブルの作成

まずは、ディシジョンテーブルを作成をしましょう。
OASE にログインし、上メニューから ルール > ディシジョンテーブル を選択します。

image.png

ディシジョンテーブルの画面を開いたら、右上にある 新規追加 ボタンを押下します。

2021-05-18-01-44-12.png

2.1. 基本情報・権限

※注意: 何かしらのグループに対して「更新可能」にチェックを入れる必要があります。チェックがない場合、GUIから操作できなくなってしまいます。

大項目 項目名 入力値
基本情報 ディシジョンテーブル名 メディアサイト運用
概要 (任意)
権限の設定 システム管理者 すべて「更新可能」にチェック

2021-05-20-23-43-57.png

2.2. 条件式

※注意: 一度登録した条件式は変更できません。

条件名 条件式
このトリガーIDを含む 含む
このトリガーIDを含まない 含まない
このホストを含む 含む
このホストを含まない 含まない

2021-05-20-23-45-24.png

条件には 必ず対になる否定形を含める ようにしましょう。
理由は、否定系がないと表現できないルールが発生してしまうからです。
今回の目標となるディシジョンテーブルでは、Rule3 がそれに該当します。

条件1 条件2 アクション
Rules アクセス数が多い場合 アクセス数が少ない場合
Rule1 N N 何もしない
Rule2 Y N Sorry ページ に切り替える
Rule3 N Y 元のページに切り替える
Rule4 Y Y Sorry ページ に切り替える

Rule1 はそもそもアクションがないので、登録の必要はありません。
Rule2Rule4 は、「アクセス数が多いトリガーID含む」とすればいいです。

では、Rule3 はどうでしょうか。この場合、「アクセス数が少ないトリガーID含む」 とだけ設定すると、Rule4 も含んでしまい、Rule4 のアクションとバッティングしてしまいます。
以上の理由から、「アクセス数が少ないトリガーID含む」、かつ、「アクセス数が多いトリガーID含まない」とすれば、Rule3 だけにマッチするルールを作成できます。
(使わなければ、何も入力しなければいいだけの話ですしおすし。後から追加のほうが苦労します)

以上のことから、条件には 必ず対となる否定形を含める ようにしましょう。

2.3. 未知事象通知

ルールにマッチしないリクエストを検知した場合に、メールを送ることができます。
今回は、メールサーバの用意はしていないので、メール機能は使わないです。

未知事象通知
通知しない

すべて入力が完了したら、保存 ボタンを押し、確認ダイアログの OK を押下します。

2021-05-21-00-18-23.png

3. Zabbix 監視アダプタの設定

Zabbix 監視アダプタの設定を行います。

上メニューから システム > 監視アダプタ を選択します。
次に、右上の 監視先の追加 ボタンを押下します。

2021-05-18-02-27-24.png

監視先の設定の項目から、ZABBIX Adapter ver1 を選択します。

2021-05-18-02-30-55.png

Zabbix 監視アダプタの設定項目は下記のようにしました。

トリガーから取得可能な項目のうち、よく使いそうなものは、triggeriddescriptionhosts といったところでしょうか。
triggerid は、そのままの意味で各トリガーに割り当てられるユニークな数値となります。
description は、トリガーを作成する際にユーザが任意に設定可能な名前のことです。
hosts は、トリガーが引かれた対象のホスト名です。
他にもいくつか項目がありますが、このあたりを利用すれば大体なんとかなると思います。

トリガーの各項目の意味については、Zabbix公式ドキュメントのココに記載があるので、こちらを参照するといいです。

項目 設定値
名前 Webサーバ監視 (任意)
プロトコル http
ホスト/IP ZabbixサーバのIPアドレス
ポート Zabbixの公開ポート
ユーザ名 Zabbixのユーザ名
パスワード Zabbixのパスワード
ディシジョンテーブル名選択 メディアサイト検証
突合情報 - このトリガーIDを含む triggerid
突合情報 - このトリガーIDを含まない triggerid
突合情報 - このホストを含む hosts
突合情報 - このホストを含まない hosts

2021-05-21-00-23-27.png

すべて入力が完了したら、保存 ボタンを押し、確認ダイアログの OK を押下します。

4. Exastro IT Automation (ITA) ドライバの設定

上メニューから システム > アクション設定 を選択します。
次に、右上の アクション先の追加 ボタンを押下します。

image.png

アクション先の設定の項目から、ITA Driver ver1 を選択します。

2021-05-18-20-50-16.png

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 を利用します。

image.png

すべて入力が完了したら、保存 ボタンを押し、確認ダイアログの 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 を確認します。

2021-05-18-21-15-56.png

上記の画面から、オペレーションの情報が確認できました。

オペレーションID オペレーション名
1 Sorryページ切り替え
2 Sorryページ戻し

5.3. Conductor 情報の取得

メインメニュー を開き、メニューグループ 画面から Conductor を選択します。
左メニューの Conductorクラス一覧 をクリックします。
下記の画像のように、Conductor クラスID を確認します。

2021-05-18-21-03-55.png

上記の画面から、Conductor の情報が確認できました。

ConductorクラスID Conductor名称
1 Webサーバ高負荷対応
2 Webサーバ高負荷戻し対応

5.4. Conductor紐付Node一覧メニューの復活

デフォルトの状態の ITA では、OASE からドライバによる呼び出し時に処理に失敗してしまいます。
なので、必ず Conductor紐付Node一覧メニュー を復活させましょう。

メインメニュー を開き、メニューグループ 画面から 管理コンソール を選択します。
左メニューの ロール・メニュー紐付管理 をクリックします。
下記の画像のように、表示フィルタメニューグループ名称 から Conductor を選択します。
表示された一覧の中から、2,100,180,007Conductor紐付Node一覧復活 ボタンを押下します。

2021-05-21-00-44-23.png

メインメニュー を開き、メニューグループ 画面から Conductor を選択します。
左メニューの中に、 Conductor紐付Node一覧 メニューが表示されていることを確認します。

2021-05-21-00-50-49.png

5.5. トークン払い出し

※注意: 「権限あり」にチェックを入れる必要があります。チェックがない場合、GUIから操作できなくなってしまいます。

OASE にログインし、ルール > トークン払い出し を選択します。
次に、右上の 新規トークン払い出し ボタンを押下します。

下記の設定値を入力し、トークン払い出し ボタンを押下します。

項目 設定値
トークン名 oase_survey
有効期限 (未入力)
グループ別権限 - システム管理者 制限あり

2021-05-18-21-33-15.png

トークン内容を確認します。※記録は不要です。

2021-05-18-21-33-32.png

トークンが一覧に追加されたことを確認します。

2021-05-18-21-33-44.png

5.6. ディシジョンテーブルの記述

5.6.1. ディシジョンテーブルファイルのダウンロード

OASE の画面の上メニューから ルール > ディシジョンテーブル を選択します。
次に、メディアサイト検証 のディシジョンテーブルのダウンロードアイコンをクリックする。

image.png

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 のパラメータを埋めて行きましょう。

image.png

ご覧の通りシートの中身が横に長いので、下記は 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. ルールファイルのアップロード

上メニューから ルール > ルール を選択します。

image.png

次に、右上の ファイルを選択 ボタンを押下し、ダイアログから id00000000001.xlsx を選択します。

image.png

右上の アップロード ボタンを押下します。

2021-05-18-21-24-16.png

一覧画面に、アップロードしたファイルとそれに対応するディシジョンテーブルが表示されます。
作業ステータス が、ステージング適用完了 となるまで待ちます。
※ルールファイルのアップロードに失敗した場合は、結果ファイルをダウンロードすると、失敗時のログを確認することが可能です。

2021-05-21-01-13-24.png

5.6.5. ディシジョンテーブルのテスト

テストリクエスト ボタンを押下します。

2021-05-21-01-13-24.png

ディシジョンテーブル名選択 の項目に、今回作成したディシジョンテーブル メディアサイト運用 を選択します。

2021-05-21-01-14-01.png

今回は、網羅的にテストを行いたいので、単発テスト ではなく、一括テスト によってテストリクエストを実行します。
一括テスト用Excelファイルのダウンロード ボタンをクリックし、id00000000001_testrequest.xlsx ファイルをダウンロードします。

2021-05-21-01-14-52.png

網羅的なにテストを行うにあたり、要素としては下記の3つがあります。

  • アクセス数が多いトリガー
  • アクセス数が少ないトリガー
  • target-web

この3つの「あり」or「なし」でテストパターンを作成します。
今回は、有効期限を設定していないので、Event start date/time は適当です。

▼一括テスト用Excelファイルのパラメータ記載

id00000000001_testrequest.xlsx ファイルに下記のパラメータを設定します。

2021-05-22-14-35-08.png

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-01-20-11.png

実行 ボタンを押下します。

2021-05-21-01-20-56.png

実行ログを確認しましょう。

2021-05-21-15-25-20.png

ログ全文を表示
ステージング実行開始
日時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 ボタンを押下します。

2021-05-21-15-39-58.png

運用ステータス が、検証完了 に変わり、操作 項目のチェックボタン(✓)がアクティブになっているはずです。

2021-05-21-15-42-02.png

5.6.6. プロダクション定期用ルールに反映

操作 項目のチェックボタン(✓)を押下します。

2021-05-21-15-44-25.png

プロダクション適用ルール に、メディアサイト運用 が追加されます。

2021-05-21-15-44-52.png

これで、すべての準備が整いました。
トテモナガカッタヨ。。。

6. 動作確認

6.1. 想定している挙動

6.1.1. 高アクセス発生時

▼状況

エンドユーザからの Web サーバへのアクセスが21回を超えた

▼アクション
  1. Zabbix でアクセス数が多い場合のトリガー が引かれる
  2. OASE は、トリガーが引かれたことを確認する
  3. OASE は、ディシジョンテーブルのルールにマッチするかを評価
  4. OASE は、検知したトリガーがルールにマッチするため ITA の Conductor を実行
  5. ITA は、Web サーバに対し、コンテンツを Sorry ページ に切り替える

6.1.2. 高アクセス収束時

▼状況

エンドユーザからの Web サーバへのアクセスが11回を下回った

▼アクション
  1. Zabbix でアクセス数が少ない場合のトリガー が引かれる
  2. OASE は、トリガーが引かれたことを確認する
  3. OASE は、ディシジョンテーブルのルールにマッチするかを評価
  4. OASE は、検知したトリガーがルールにマッチするため ITA の Conductor を実行
  5. ITA は、Web サーバに対し、コンテンツを 元のページ に切り替える

6.2. 実際にやってみよう

6.2.1. 高アクセス発生時の動作検証

まずは、監視対象の Web サーバにアクセスします。
完全にページが表示されるまで待ちましょう。(コレをやらないと F5 連打がうまく行かないです)
ページが表示されたら F5 キー を連打しましょう。
今回は、time=120 と長めに設定してますが、ぱぱっとやるなら30秒くらいでもいいんじゃないでしょうか。

2021-05-21-17-21-47.png

Zabbix 上でグラフを確認します。
17:22:07アクセス数が多い場合のトリガー が引かれたようです。

2021-05-21-17-24-51.png

次に、OASE の画面から、リクエスト履歴とアクション履歴を確認してみましょう。

2021-05-21-17-23-14.png

2021-05-21-17-23-32.png

想定通り、リクエストを受け取り、Sorry ページへの切り替えアクションが実行されたようです。
17:22:24 に ITA ドライバでアクションを実行し、
17:22:45 にアクションが完了しています。

ログ1.png

2021-05-21-17-35-51.png

再度、監視対象の Web サーバにアクセスします。
イェースッ! 想定通り、「Sorry. Please try again leter.」にコンテンツが切り替わっています。

2021-05-21-17-23-47.png

6.2.2. 高アクセス収束時の動作検証

再び、Zabbix 上でグラフを確認します。
2分経過したので、コネクション数が徐々に低下してきます。
17:24:11アクセス数が少ない場合のトリガー が引かれました。

2021-05-21-17-25-11.png

先程と同じように、OASE の画面から、リクエスト履歴とアクション履歴を確認してみましょう。

2021-05-21-17-25-36.png

2021-05-21-17-25-50.png

想定通り、リクエストを受け取り、Sorry ページへの切り替えアクションが実行されたようです。
17:24:26 に ITA ドライバでアクションを実行し、
17:24:47 にアクションが完了しています。

ログ2.png
2021-05-21-17-38-30.png

最後にもう一度、監視対象の Web サーバにアクセスします。
コンテンツが元のページに戻っています。

2021-05-21-17-21-47.png

コレ面白いヨ~

まとめ

Exastro OASE を使って、監視サーバと Exastro IT Automation を連携させました。
周辺環境の準備に苦労しましたが、OASE の画面操作自体は非常にシンプルで、

  1. ディシジョンテーブルの作成
  2. Zabbix 監視アダプタの設定
  3. Exastro IT Automation (ITA) ドライバの設定
  4. ディシジョンテーブルのルール登録

の操作で特に迷うところはありませんでした。

ただ、自分の思い描いた挙動を OASE にさせるために、ディシジョンテーブルのルールをどう書くかを考えるところが少し頭を使いました。
また、本項では触れなかったですが、オプションも色々取り揃えられているので、この辺も使いこなしていきたいと思います。

ルールのテスト機能はかなりいい機能ですね。
網羅的にテストパターンを作成して OASE に食べさせるだけで、ディシジョンテーブルのルールの動きを見ることができるので、安心して本番環境にもルールを適用できますね。

登録したルールに従い、監視サーバ → OASE → ITA → Webサーバと処理が流れていくのを見ているのが、ピタ○ラスイッチみたいで面白かったです。ガハハハっ

この辺の仕組み使ってマルチクラウドのオートスケールとかやると面白いかも。
至極個人的な用途だと、死んだらハードディスクのデータを消去するとかね。笑
自分(人間)の死活監視をどうするかとか考え出すと結構面白いな。

でもそれはまた別のお話。
じゃぁの!ヽ(*・ω・)ノ

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0