Slide 1

Slide 1 text

© NTT Communications Corporation All Rights Reserved. イベント処理について知りたかった5つのこと 2024 年 12 月 11 日 NTTコム エンジニアリング株式会社 菊池 裕 (@daifuku085)

Slide 2

Slide 2 text

© NTT Communications Corporation All Rights Reserved. 2 こんな経験ありませんか メ ー ル 送 っ た の に ま だ 起 票 さ れ な い ん で す が メ ー ル の 送 信 遅 れ て な い ? N o w S u p p o r t に 確 認 中 で す 根 本 原 因 と 再 発 防 止 策 を

Slide 3

Slide 3 text

© NTT Communications Corporation All Rights Reserved. 3 おことわり • 本資料ではServiceNowのシステムイベントについて説明しています。 ITOMの文脈における「イベント」の話題ではないためご留意ください。 • 製品ドキュメント、Communityの情報や動作検証結果を基に憶測を交えて記載しています。 指摘事項があればぜひ元記事へコメントをお願いします。 • 対象バージョンは Washington D.C.です。 ※Xanaduでは一部仕様が異なる部分があります。 https://qiita.com/daifuku085/items/6e3590d17174f817f381

Slide 4

Slide 4 text

© NTT Communications Corporation All Rights Reserved. 4 イベント処理について知りたかった5つのこと イベントとキュー イベント処理の同時実行数 sysevent テーブルの読み方 異常にどう気付くか もっと分かりやすいツールないの?

Slide 5

Slide 5 text

© NTT Communications Corporation All Rights Reserved. 5 イベント処理について知りたかった5つのこと イベントとキュー イベント処理の同時実行数 sysevent テーブルの読み方 異常にどう気付くか もっと分かりやすいツールないの?

Slide 6

Slide 6 text

© NTT Communications Corporation All Rights Reserved. 6 イベントはキューに格納される 負荷軽減のため、イベントは一旦キューに格納されてから順に実行される 用途ごとに用意されたキューもあるが、特に指定のない場合はデフォルトキューが使用される メールの受信 gs.eventQueue(“event_name”, …);※ プラグインの有効化 イベントへの応答 フローの実行 テキストインデックス作成 イベントキュー イベントの生成 メールの送信 text_index キュー flow_engine キュー デフォルトキュー ・ ・ ・ ※引数で指定しない場合

Slide 7

Slide 7 text

© NTT Communications Corporation All Rights Reserved. 7 gs.eventQueue() の第五引数 gs.eventQueue() メソッドは、第五引数でキューを指定することができる デフォルトキューの滞留を引き起こす場合、カスタムキューを作成※し、そちらで処理させることが可能 キューを指定する例(OOTBの「Attachment events」ビジネスルール) ※ServiceNow製品ドキュメント『カスタムキューを使用してイベントを処理する』

Slide 8

Slide 8 text

© NTT Communications Corporation All Rights Reserved. 8 イベント処理について知りたかった5つのこと イベントとキュー イベント処理の同時実行数 sysevent テーブルの読み方 異常にどう気付くか もっと分かりやすいツールないの?

Slide 9

Slide 9 text

© NTT Communications Corporation All Rights Reserved. 9 イベント処理の同時実行数=アクティブなノードの数に一致(注:デフォルトキューの場合) • イベント委任者(Delegator):準備完了(ready)状態のイベントをプロセッサーに割り当てる • イベントプロセッサー(Processor):割り当てられたイベントをキューから取り出し、処理する ノード #2 ノード #1 イベント処理の同時実行数 ノード #3 ノード #4 (例)合計4ノード(Failover 構成)の場合 イベント委任者 イベントプロセッサー イベントプロセッサー イベント

Slide 10

Slide 10 text

© NTT Communications Corporation All Rights Reserved. 10 イベント委任者/プロセッサーはスケジュール済みジョブ スケジュール [sys_trigger] テーブルで名前が “events process” で始まるレコードを検索 • イベント委任者:親フィールドが(空) • イベントプロセッサー:親フィールドがイベント委任者 イベント委任者 イベントプロセッサー ある日を境に遅くなったと感じたら、イベントプロセッサーが消えていないか確認しましょう!

Slide 11

Slide 11 text

© NTT Communications Corporation All Rights Reserved. 11 その他のキューも含めた同時実行数(?) イベントプロセッサー [sys_event_processor] テーブル

Slide 12

Slide 12 text

© NTT Communications Corporation All Rights Reserved. 12 イベント処理について知りたかった5つのこと イベントとキュー イベント処理の同時実行数 sysevent テーブルの読み方 異常にどう気付くか もっと分かりやすいツールないの?

Slide 13

Slide 13 text

© NTT Communications Corporation All Rights Reserved. 13 イベントテーブルの読み方 製品マニュアルはどちらかというと開発者目線の内容が多い ServiceNow 製品ドキュメント『システムイベント』

Slide 14

Slide 14 text

© NTT Communications Corporation All Rights Reserved. 14 イベントテーブルの読み方 システム管理者目線で押さえておきたいフィールド フィールド名 説明 (参考)日本語ラベル Queue イベントの処理に使用するキュー。 デフォルトキューの場合は(空)。 キュー State 現在のイベントの状態。 ステータス Claimed by イベントを割り当てられたイベントプロセッサー名。 要求元 Process on イベントの処理開始予定日時。 未来日が入る場合もある(スケジュール済みジョブの場合など) 処理日時 Processed イベントの処理を実際に開始した日時。 処理済み Processing duration イベントの処理にかかった時間(ミリ秒)。 処理期間

Slide 15

Slide 15 text

© NTT Communications Corporation All Rights Reserved. 15 イベント処理のステータス遷移(こんな感じ?) Process on (開始予定日時) Processed (開始日時) ready queued. processed / error Processing duration (処理時間(ミリ秒)) State : Updated (終了日時≒最終更新日時) Created (イベント登録日時) キューの滞留を引き起こしているイベントを調査し、「ボトルネックを取り除いて処理を改善する」 「カスタムキューで捌く」などの措置を施しましょう。

Slide 16

Slide 16 text

© NTT Communications Corporation All Rights Reserved. 16 イベント [sysevent] テーブル transferred ステータスとは? ローテーションテーブルの切り替え時、積み残しになったイベントを次のシャードに転送(コピー)する sysevent0000 sysevent0001 sysevent0002 sysevent0005 sysevent0006 ・ ・ ・ ready ready sysevent0000 sysevent0001 sysevent0002 sysevent0005 sysevent0006 ・ ・ ・ transferred transferred ready ready イベント [sysevent] テーブル 現在使用中のシャード (サブテーブル) 現在使用中のシャード (サブテーブル)

Slide 17

Slide 17 text

© NTT Communications Corporation All Rights Reserved. 17 イベント処理について知りたかった5つのこと イベントとキュー イベント処理の同時実行数 sysevent テーブルの読み方 異常にどう気付くか もっと分かりやすいツールないの?

Slide 18

Slide 18 text

© NTT Communications Corporation All Rights Reserved. 18 デフォルトでルールが5つ用意されており、適宜変更が可能 ウォッチリストに登録されたユーザーに通知が飛ぶ イベントアラートの構成テーブル 条件に合致したらInsert 書き込まれたら通知 イベントアラートテーブル [sysevent_alert]

Slide 19

Slide 19 text

© NTT Communications Corporation All Rights Reserved. 19 System Event Processing ダッシュボード プラットフォーム上のイベントとキューに関する状態、傾向を把握できる

Slide 20

Slide 20 text

© NTT Communications Corporation All Rights Reserved. 20 イベント処理について知りたかった5つのこと イベントとキュー イベント処理の同時実行数 sysevent テーブルの読み方 異常にどう気付くか もっと分かりやすいツールないの?

Slide 21

Slide 21 text

© NTT Communications Corporation All Rights Reserved. 21 Application Insights というものがあるらしいが…… ServiceNow Store から入手可能だったが、現在はインストール不可(Zurichで廃止予定のため) 後継は “Impact Instance Observer”? (参考)https://www.youtube.com/watch?v=P72zNA9C0Ik • システムの状態を基準と比較し、 異常を特定するデータを提供 • データを深掘りして、問題の原因や 状況を特定する機能 • 発生したイベントを重ね合わせ、 問題の因果関係や関連性を分析する 機能 • ユーザーが独自の条件に基づいた しきい値を設定可能 • しきい値を超えた場合に、アラート や通知を送信する機能の設定

Slide 22

Slide 22 text

© NTT Communications Corporation All Rights Reserved. 22 “System Event Chart” ダッシュボード イベント処理を可視化するダッシュボードを作ってみた ServiceNow Share – “System Event Chart” 本機能は個人が独自に開発したものであり、所属する企業・団体とは一切関係ありません。 プログラムの動作やその影響について保証するものではありませんのでご了承ください。 • 指定された期間およびキューの イベントを時系列順に描画 • イベントプロセッサーごとに 色分けしてイベントをプロット • プロットするイベント数の上限を システムプロパティで制御可能 (デフォルト10,000件)

Slide 23

Slide 23 text

© NTT Communications Corporation All Rights Reserved. 23 ご清聴ありがとうございました