2.3. ルール設定について¶
Tip
イベント収集設定
ラベルの設定
OASEエージェントの設定
ルールの設定
2.3.1. イベント収集設定¶
2.3.1.1. イベント収集設定¶
イベント収集設定名 |
接続方式 |
リクエストメソッド |
接続先 |
認証情報 |
TTL |
|
---|---|---|---|---|---|---|
ユーザー名 |
パスワード |
|||||
リクエスト監視 |
IMAP パスワード認証 |
IMAP: Plaintext |
**.***.**.*** |
*****@**.*** |
** |
60 |
Tip
2.3.2. ラベルの設定¶
ラベルキー |
利用目的 |
---|---|
subject |
イベントの内容を特定できるようにするラベル |
requestcount |
基準となった閾値を把握するためのラベル |
instance |
現在のインスタンス数を示すラベル |
page |
Sorry画面への切り替え状況を示すラベル |
2.3.2.1. ラベルの作成¶
ラベルキー |
カラーコード |
---|---|
subject |
#FBFF00 |
requestcount |
#7F76F9 |
instance |
#00FF33 |
page |
#FF2600 |
pattern |
#A1DEB8 |
注釈
2.3.2.2. ラベルを付与する条件の設定¶
ラベリング設定名 |
イベント収集設定名 |
検索条件 |
ラベル |
||||
---|---|---|---|---|---|---|---|
キー |
値のデータ型 |
比較方法 |
比較する値 |
キー |
値 |
||
通知名 |
リクエスト監視 |
subject |
文字列 |
== |
[alert] Requests: Threshold reached |
subject |
リクエスト数超過 |
通知名 |
リクエスト監視 |
subject |
文字列 |
== |
[info] Requests: Threshold recovery |
subject |
リクエスト数回復 |
リクエスト数監視 |
リクエスト監視 |
body.plain |
その他 |
RegExp |
RequestCount . (\d{2,3}) |
requestcount |
\1 |
Tip
2.3.3. OASEエージェントの設定¶
注釈
2.3.3.1. .envの設定¶
exastro-docker-compose/ita_ag_oase/.env
に下記の内容を入力します。項目名 |
設定値 |
---|---|
AGENT_NAME |
ita-oase-agent-01 |
EXASTRO_URL |
http://******** |
EXASTRO_ORGANIZATION_ID |
******** |
EXASTRO_WORKSPACE_ID |
******** |
EXASTRO_USERNAME |
******** |
EXASTRO_PASSWORD |
******** |
EVENT_COLLECTION_SETTINGS_NAMES |
リクエスト監視 |
EXECUTE_INTERVAL |
5 |
LOG_LEVEL |
INFO |
Tip
2.3.3.2. エージェントの実行¶
docker compose up -d --wait
docker-compose up -d --wait
docker compose logs -f
docker-compose logs -f
2.3.4. ルールの設定¶
2.3.4.1. フィルターの設定¶
インスタンスが何台稼働しているかどのような通知が来たか
sorry画面に切り替わっているか
有効 |
フィルター名 |
フィルター条件 |
検索方法 |
---|---|---|---|
True |
パターン2 |
[["instance", "==", "2"], ["pattern", "≠", "2"]] |
ユニーク |
True |
パターン3 |
[["instance", "==", "3"], ["pattern", "≠", "3"]] |
ユニーク |
True |
パターン4 |
[["page", "==", "sorry"], ["pattern", "≠", "4"]] |
ユニーク |
True |
パターン5 |
[["instance", "==", "3"], ["pattern", "≠", "5"]] |
ユニーク |
True |
パターン6 |
[["instance", "==", "2"], ["pattern", "≠", "6"]] |
ユニーク |
True |
超過_通知 |
[["subject", "==", "リクエスト数超過"], ["_exastro_type", "≠", "conclusion"]] |
ユニーク |
True |
超過_閾値50以外 |
[["requestcount", "≠", "50"], ["subject", "==", "リクエスト数超過"]] |
ユニーク |
True |
超過_閾値150 |
[["requestcount", "==", "150"], ["subject", "==", "リクエスト数超過"]] |
ユニーク |
True |
回復_通知 |
[["subject", "==", "リクエスト数回復"], ["_exastro_type", "≠", "conclusion"]] |
ユニーク |
True |
回復_閾値150以外 |
[["requestcount", "≠", "150"], ["subject", "==", "リクエスト数回復"]] |
ユニーク |
True |
回復_閾値50 |
[["requestcount", "==", "50"], ["subject", "==", "リクエスト数回復"]] |
ユニーク |
2.3.4.2. フィルターの設定ポイント¶
- フィルター名について
- 任意で設定可能です。わかりやすいものを設定しましょう。
- それぞれのフィルターの性格について
- 「パターン*」は、それぞれ、パターンごとの状況把握のためのフィルターになります。それ以外のものは、通知内容を確認するものになります。
- 「超過_通知」「回復_通知」について
- こちらのフィルターは以下のパターンで用います。
パターン1 インスタンス1台のとき、リクエスト数超過通知:50/100/150
パターン4 sorry画面に切り替わっているとき、リクエスト数回復通知:50/100/150
イベントが発生したら、閾値に関わらず、アクションが実行されるものです。["_exastro_type", "≠", "conclusion"]が設定されているのは、「subject」だけだと、ほかの「元イベントのラベル継承」をした結論イベントでも該当するからです。意図せず、条件にあってしまうことを避けるために設定します。 - 「超過_通知」「回復_通知」以外の通知内容を把握するフィルターについて
- これらのフィルターでは、通知内容が届いたときのイベントから通知内容をフィルタリングする場合通知内容と状況に基づいてアクションが実行された後の結論イベントから通知内容をフィルタリングする場合があるため、["_exastro_type", "≠", "conclusion"]は条件に入っていません。また、それぞれ閾値の指定があるのは、
パターン2 インスタンス2台のとき、リクエスト数超過通知:100/150
パターン3 インスタンス3台のとき、リクエスト数超過通知:150
パターン5 インスタンス3台のとき、リクエスト数回復通知:50/100
パターン6 インスタンス2台のとき、リクエスト数回復通知:50
の閾値によって条件付けされているパターンに対応するためです。
2.3.4.3. アクションの設定¶
アクション名 |
Conductor名称 |
オペレーション名 |
ホスト |
---|---|---|---|
イベント連携 |
|||
scale-out |
インスタンススケールアウト |
インスタンススケールアウト |
false |
scale-in |
インスタンススケールイン |
インスタンススケールイン |
false |
sorry_switch |
Sorry画面切り替え |
Sorry画面切り替え |
false |
sorry_switch-back |
sorry画面切り戻し |
sorry画面切り戻し |
false |
Tip
2.3.4.4. ルールの設定¶
パターン1 インスタンス1台のとき、リクエスト数超過通知:50/100/150
パターン2 インスタンス2台のとき、リクエスト数超過通知:100/150
パターン3 インスタンス3台のとき、リクエスト数超過通知:150
パターン4 sorry画面に切り替わっているとき、リクエスト数回復通知:50/100/150
パターン5 インスタンス3台のとき、リクエスト数回復通知:50/100
パターン6 インスタンス2台のとき、リクエスト数回復通知:50
有効 |
ルール名 |
ルールラベル名 |
優先順位 |
条件 |
アクション |
結論イベント |
|||||
---|---|---|---|---|---|---|---|---|---|---|---|
フィルターA |
フィルター演算子 |
フィルターB |
アクションID |
元イベントのラベル継承 |
結論ラベル設定 |
TTL |
|||||
アクション |
イベント |
||||||||||
True |
パターン1 |
インスタンス数2台へscale-out |
2 |
超過_通知 |
scale-out |
True |
True |
[["instance", "2"], ["pattern", "1"]] |
3600 |
||
True |
パターン2 |
インスタンス数3台へscale-out |
1 |
超過_閾値50以外 |
A and B |
パターン2 |
scale-out |
True |
True |
[["instance", "3"], ["pattern", "2"]] |
3600 |
True |
パターン3 |
Sorryへ切り替え |
1 |
超過_閾値150 |
A and B |
パターン3 |
sorry_switch |
True |
false |
[["page", "sorry"], ["pattern", "3"]] |
3600 |
True |
パターン4 |
Sorry切り戻し |
1 |
回復_通知 |
A and B |
パターン4 |
sorry_switch-back |
True |
True |
[["page", "normal"], ["pattern", "4"], ["instance", "3"]] |
3600 |
True |
パターン5 |
インスタンス数2台へscale-in |
1 |
回復_閾値150以外 |
A and B |
パターン5 |
scale-in |
True |
True |
[["instance", "2"], ["pattern", "5"]] |
3600 |
True |
パターン6 |
インスタンス数1台へscale-in |
1 |
回復_閾値50 |
A and B |
パターン6 |
scale-in |
True |
false |
[["instance", "1"], ["pattern", "6"]] |
10 |
2.3.4.5. ルールの設定ポイント¶
- ルール名・ルールラベル名について
- 任意で設定可能です。わかりやすいものを設定しましょう。
- 条件について
- パターンの条件に合うフィルターを選択します。パターン1では、平常時のインスタンス数1台である状態をOASEのイベントとしては管理していないので、条件は「超過_通知」のみとなります。リクエスト数超過通知のイベントが発生したときに、前提となる状況を示す結論イベントがなければ、こちらのルールが適用されるように、優先順位を「2」とします。パターン1以外のパターンでは、前提となる状況を示す結論イベントが条件の一つになりますので、そちらを選択します。複数の条件がある場合は、それぞれの項目を以下のように設定します。フィルターA : 通知内容をフィルタリングするためのフィルターフィルター演算子 :「A and B」フィルターB : 前提となる状況をフィルタリングするためのフィルター同じキーがフィルターAとフィルターBそれぞれにフィルタリングされるイベントの両方に付与されていた場合、フィルターAでフィルタリングされたイベントのラベルの値が継承される仕様のためです。通知内容を示すラベルが次のアクションのために必要なので、通知内容を示すイベントのラベルをフィルタリングするフィルターをフィルターAに設定します。
- 結論ラベルについて
- アクションが実行された結果がわかるように、ラベルを付与するよう設定を行います。元イベントから継承するラベルの中に結論ラベル設定で設定するキーがある場合は、結論ラベル設定で設定した値が付与される仕様です。こちらの仕様を活用して、アクションが実行される前の状況を示す値となっているラベルの値を、アクションが実行された後の状況を示す値に更新するように設定を行います。これにより、結論イベントがその結論イベントを発生させたルールに再適用されるループの発生を回避することもできます。
- TTLについて
- 前提となる状況を示す結論イベントが各ルールの条件となるため、ルールに複数の条件を設定した場合のイベントのTTL問題について でも説明したように、TTLを通知内容を示すイベントが発生するまで伸ばす必要があります。今回は ルールに複数の条件を設定した場合のイベントのTTL問題について で提示したTTL切れを防ぐ方法のうち、TTLを長めに設定する方法を採用しました。もし結論イベントをループさせたい場合は、各ルールで発生する結論イベントにループ用の["event_status", "progress"]などを付与し、こちらのラベルが付与されたイベントをフィルタリングするフィルターを条件としたルールを追加してください。その際に、ループが発生するように「元イベントのラベル継承」をTrueにし、優先順位は「3」としましょう。これにより、ほかのルールが適用されなかった場合、このルールが適用されるようになります。
- パターン6について
- 平常時に戻った状態となり、次のイベントの条件になることはありません。そのため、意図しない形でほかの条件となってしまわないように、TTLを最小値にし、念のため、「元イベントのラベル継承」を「false」に設定しておくとよいでしょう。