ServiceNow に Kompira Enterprise からチケット起票する

Kompira Enterprise でアラートを受信し何らかの処理を行った後に、インシデント管理システムにチケットを起票、内容更新を行いたい場合があると思います。

そこで本稿では、インシデント管理システム「ServiceNow」を例として、新規チケットを起票する方法をご紹介します。

※本稿では既に ServiceNow インスタンスが用意されており、ServiceNow API を利用するために必要なパスワードを保持していることを想定しています。


動作確認環境

ソフトウェア バージョン
Kompira Enterprise 1.5.5.post11
OS CentOS 7.8.2003

または

ソフトウェア バージョン
Kompira Enterprise 1.6.2.post4
OS CentOS 7.8.2003

チケットが起票される ServiceNow テーブル

ServiceNow 上のサイドバーにおける「Filter navigator」に「incident」と入力してください。

すると「Incident > All」が表示されますので、そちらをクリックしてください。以下の画像のようなテーブルが表示されます。

今回はこのインシデントテーブルに対しチケット起票を行っていきます。

 チケット起票に用いる ServiceNow API エンドポイント

ServiceNow へのチケット起票の方法には Webhook またはメールが考えられますが、本稿では Webhook を採用します。

また、ServiceNow 上のテーブルを Kompira Enterprise から操作するために「ServiceNow Table API」を利用します。

本稿ではインシデントテーブルを操作するため、API エンドポイントは以下のようになります。

POST /now/table/incident

チケット起票するジョブフロー

以下はチケット起票するジョブフローの一例です。

| instance | # ServiceNow インスタンスの ID
| user_name |
| password |
| short_description = 'アラート' |
| description = 'アラートです!!!' |
 
[
    parameters = {
        'url': 'https://{}.service-now.com/api/now/table/incident'.format(instance),
        'user': user_name,
        'password': password,
        'encode': 'json',
        'http_method': 'POST',
        'quiet': true,
        'data': {
            'short_description': short_description,
            'description': description
        }
    }
] ->
print('チケット起票開始') ->
urlopen(**parameters) ->
 
# レスポンス取得
[result = json_parse($RESULT.body).result] ->
print('チケット作成日時: {}'.format(result['sys_created_on'])) ->
print('チケット ID: {}'.format(result['sys_id'])) ->
print('short_description: {}'.format(result['short_description'])) ->
print('description: {}'.format(result['description'])) ->
 
print('チケット起票完了')

本稿では、起票する Webhook のペイロードとして “short_description” と “description” を採用しています。本稿では、これらに対応するジョブフローの引数にデフォルト値として、それぞれ「アラート」、「アラートです!!!」を与えていますが、実行時にお好きな値に変更して頂いても構いません。

※ Webhook で起票できる内容は、ServiceNow 上にあるチケット起票先のテーブルに依存します。

他の引数 “instance” 、”user_name” 、”password” は、利用されている ServiceNow インスタンスに合わせて実行時に設定してください。

またジョブフロー中の “urlopen(**parameters)” は、辞書 parameters の内容を展開して urlopen() に渡す場合の書き方です。

以下は、このジョブフローを実行したときのコンソール画面です。

ここで表示されている「チケット作成日時」、「チケット ID」、「short_description」、「description」はチケット起票時のレスポンスとして得られるものです。「チケット ID」は ServiceNow 上でユニークな値となっており、指定することでチケット更新をする際などに利用できます。

起票の結果得られる他のレスポンスについては、先程の API ドキュメントを参照してください。

また、上記ジョブフロー実行後の ServiceNow におけるインシデントテーブルは以下のようになります。

上記画像を見ると、Kompira Enterprise から ServiceNow に対しチケット起票が行われていることがわかると思います。

本稿で作成したチケットは、”short_description” と “description” のみが変更されたシンプルなものですが、ジョブフロー中の “data” パラメータを ServiceNow インシデントテーブルのパラメータに合わせて変更することで、よりリッチな情報を含んだチケットを起票することが可能です。

またチケット起票以外にも、チケット更新、削除、一覧表示なども可能です。各 API ごとに定められた URL と、HTTP メソッドの指定を適切に行うことで実行することができます。こちらも詳細については「ServiceNow API 仕様」をご覧ください。

Kompira Enterprise では、チャネルオブジェクト等を利用することで監視システム等からアラートを受信することも可能ですので、本稿の内容と組み合わせることにより、アラート受信、アラート解析、チケット起票などのワークフローを自動化することが可能です。

TOP