ウェブフックフィールドの設定: メソッド、リソース、およびペイロード

webhookを設定する主な利点は、アラートやイベントからのNexthinkデータを、宛先に応じてさまざまなサードパーティツールにプッシュできることです。

webhook設定ページでは、宛先のサードパーティツールでアクションを実行するために重要な3つのフィールドがあります:

  • メソッド

  • リソース

  • ペイロード

以下のセクションでは、サードパーティツールでアクションを実行するための属性の設定方法を説明します。

メソッドの選択

webhookの設定ページから、資格情報を選択した後に:

  1. メソッドのドロップダウンから、POSTPUT、またはPATCHのいずれかのオプションを選択します。 以下の表を参照してください。

  2. オプションとして、各メソッドの意味を明確に把握するために、適切なサードパーティソフトウェアのドキュメントを確認してください。

    • すべてのベンダーやサードパーティツールのプロバイダーが同様に使用しているわけではないと仮定しないでください。

REST標準はHTTPを介して使用され、統一インターフェースの制約の主要部分を構成し、webhookに利用可能なリクエストメソッドを提供します。

HTTPメソッド
CRUD*
説明

POST

作成

POSTは新しいリソースを作成するために最も頻繁に使用されます。

PUT

更新/置換

PUTは、その更新機能のために最も頻繁に使用されます。 既知のリソースURIにPUTし、新しい更新されたオリジナルリソースの表現をリクエストボディに含めることができます。

PATCH

更新/修正

PATCHはその修正機能のために使用されます。 PATCHリクエストはリソース全体ではなく、リソースの変更点のみを含める必要があります。

*_CRUD_は作成、読み取り、更新、削除の頭字語です。

リソースフィールドの入力

リソースの特別な考慮事項:

  • リソースはエンドポイントを介してアクセス可能なデータセットで、APIで使用できます。

  • リソースは他のリソースと関連し、それらに対して実行できる操作によって制限されます。

  • リソースは関連データに基づいたエンドポイントグループとして表示されるか、またはそれらが操作できるオブジェクトに基づいて表示されます。

  • リソースは簡単な名前で表示され、ユーザーが正しいエンドポイントを見つけやすくなっています。 しかし、これは重要な機能を見落とす可能性があります。

webhook設定ページからのリソース値の追加:

  1. 第三者のREST APIで指定されたアクションであるリソース値を貼り付けてください。

    • URIは、webhookの資格情報で定義されたインスタンスURLに連結されるため、追加しないでください。

    • リソース値には、第三者ツールが必要とするパラメーター(key=value)を含めることができます。

  2. 必要に応じて、リソースにプレースホルダー{{variable_name}}を追加してください。 このページのペイロードにおけるデータモデル変数のプレースホルダーとしての使用セクションを参照してください。

有効なリソース値の例

ベンダーAPI URL
webhookでのリソース値

https://webhook.atlassian.net/rest/servicedeskapi/request

rest/servicedeskapi/request

https://api.4me.com/v1/requests

v1/requests

https://fra1.qualtrics.com/API/v3/users

API/v3/users

https://ven01063.service-now.com/api/now/v1/table/incident

api/now/v1/table/incident

https://api.4me.com/v1/requests?api\_\=

v1/requests?api_<token>=

ペイロードの作成

ペイロードはHTTPのPOST/PUT/PATCHメソッドで送信されるデータパックです。

webhook設定ページからペイロードの値を書くには:

  1. ペイロードに、APIをリクエストする際にサーバーに送信する重要な情報を含めてください。

    • オプションとして、webhookで使用されるツールに依存するため、適切なサードパーティフィールドと値を確認してください。

  2. 必要に応じて、Nexthinkのデータモデル変数をプレースホルダーとして使用する{{variable_name}}ペイロード内で使います。

    • webhookのNQL条件を入力した後、システムはNexthink webインターフェースにおいて、便宜のために許可されたプレースホルダーをリストします。

  3. このページに含まれる複数のプロバイダーからのメソッド、リソース、ペイロードの例をリファレンスとして使用します。

ペイロードフィールドはJSON形式のみを受け入れます。

データモデル変数をペイロード内のプレースホルダーとして使用する

Nexthinkからサードパーティツールへのデータをプッシュする最大の利点の一つは、発生したイベントに関する情報を伝達できることです。

ペイロード内でNexthinkのデータモデル変数をプレースホルダーとして使用するには:

  1. ペイロードで報告された任意のフィールド内で、{{variable_name}}プレースホルダーを使用してNexthink変数を参照します。

  2. webhook NQL条件を入力した後、webhook設定ページはNexthink webインターフェースでの便宜のために許可されたプレースホルダーをリストします。

    • ペイロード内のプレースホルダーは、Nexthink変数を増加させるwebhook NQL条件と一致する必要があります。

  3. また、プレースホルダー用に利用可能なNexthink変数を決定するためにNQLデータモデルを確認することができます。

    • NQLデータモデルはnamespace > table > fieldで整理されていることを忘れないでください。

    • たとえば、プレースホルダー{{alert.monitor.name}}には、alerts namespaceのmonitor tableからのname fieldが含まれています。 より多くの情報のために、データの組織ドキュメントを参照してください。

  4. 生成されたサードパーティツール内で出力が読みやすくユーザーフレンドリーであることを保証するために、プレースホルダーにas(format = text)を追加してください。 例えば、 {{remote_action.execution.outputs.as(format = text)}}

  5. 必要に応じて、NQLデータモデルに厳密に定義されていない特別なプレースホルダーを使用し、このページに含まれ、Nexthinkウェブインターフェースの許可されたプレースホルダーにも参照されます:

下の画像は、Nexthinkのデータモデル変数を参照するプレースホルダーを含むペイロードの例です。 このケースに対してシステムが許可されたプレースホルダーをどのようにリストしているかに注意してください。

システムは空の値または無効な値についてプレースホルダーを置換できません。 このような場合、{{variable_name}}はそれ自体を表示します。

アラートデータモデル変数の特別なプレースホルダー

この表には、NQLデータプロパティで厳密に定義されていないアラートのための特別なプレースホルダーが含まれています。

NQLデータモデルにおけるプロパティ
特別なプレースホルダー

alert.monitor.thresholds

各配列アイテムにはalias(メトリック名)と対応するvalueがあります:

{{alert.monitor.thresholds[n].alias}}

{{alert.monitor.thresholds[n].values}}

[0]値は常に利用可能です。

[1]またはそれ以上の値はオプションです。

alert.trigger_values

各配列アイテムにはalias(メトリック名)と対応するvalueがあります:

{{alert.alert.trigger_values[n].alias}}

{{alert.alert.trigger_values[n].value}}

整数で[n]値を置き換えます: [0], [1], など。

alert.trigger_reference_value

{{alert.alert.trigger_reference_value}}

alert.context

{{alert.alert.context}}

{{alert.alert.context.<property name>}}

{{alert.alert.context.<property name>.label}}

{{alert.alert.context.<property name>.data_path}}

{{alert.alert.context.<property name>.data_type}}

以下の例を参照してください*:

{{alert.alert.context.binary.name}}

{{alert.alert.context.binary.name.label}}

{{alert.alert.context.binary.name.data_path}}

{{alert.alert.context.binary.name.data_type}}

したがって、contextフィールドには、アラートに関連付けられたバイナリ、デバイス、またはユーザーの名前が含まれる可能性があります。

alert.alert.issue_view_link

alert.alert.device_view_link

alert.alerts.links

これらのプロパティは現在NQLデータモデルにリストされていません。

リモートアクションデータモデル変数の特別なプレースホルダー

この表には、NQLデータプロパティで厳密に定義されていないリモートアクションのための特別なプレースホルダーが含まれています。

NQLデータモデルにおけるプロパティ
特別なプレースホルダー

remote_action.execution.outputs

{{remote_action.execution.outputs.<property name>}}

たとえば:

{{remote_action.execution.outputs.MeteredConnection}}

remote_action.execution.inputs

{{remote_action.execution.inputs.<property name>}}

たとえば:

{{remote_action.execution.inputs.InputPath}}

remote_action.execution.account_name

このプロパティは現在NQLデータモデルにリストされていません。

{{remote_action.execution.account_name}}

このプレースホルダーは、リモートアクションを実行したされるユーザー/従業員を提供します。

複数のプロバイダーおよびツールからのメソッド、リソース、ペイロードの例

webhookのユースケースセットアップドキュメントを参照し、いくつかのサードパーティツールの完全なwebhook設定を確認してください。

ITSMツール

ServiceNowでインシデントを作成する

メソッド: POST

リソース: api/now/v1/table/incident

ペイロード:

{
 "assignment_group":"Application Team",
 "business_service":"MS Teams",
 "caller_id":"Nexthink Alert",
 "description":"アラートチームから作成されたアラート",
 "impact":"5",
 "short_description":"テスト目的のアラート David G {{alert.monitor.name}}",
 "sys_created_by":"Nexthink テスト David G.",
 "urgency":4
}

このガイドラインに従って、アラートとイベントを検出し、ServiceNowにインシデントを作成するために伝達するwebhookを設定してください。

AmplifyからのServiceNowインシデントチケットの更新

メソッド: PATCH

リソース: api/now/v1/table/incident/{{remote_action.execution.external_reference}}

ペイロード (メッセージ):

{"work_notes": "Amplifyユーザー{{remote_action.execution.account_name}}によって{{remote_action.execution.request_time}}にこのチケットのためにリモートアクション{{remote_action.execution.outputs.as(format = text)}}がトリガーされました"}

"work_notes"に as(format = text) 機能を含め、リモートアクションの出力を読みやすい形式で表示します。

このガイドラインに従ってください AmplifyからServiceNowの実行アクションログを更新するためにwebhookを設定する方法。

ServiceNowの問題を作成する

方法: POST

リソース: api/now/v1/table/problem

ペイロード:

{
 "impact":"1",
 "urgency":"2",
 "category":"Hardware",
 "short_description":"警告: {{alert.monitor.name}} がNexthinkによって発生しました",
 "description":"警告 {{alert.monitor.name}} はNexthinkによって自動的に {{alert.monitor.time}} に発生しました。警告をトリガーしたNQLクエリは https://tinyurl.com/29k9xy8d です",
 "assignment_group":"アプリケーションチーム",
 "business_service":"MS Teams",
}

BMCのインシデントを作成する

方法: POST

リソース: api/arsys/v1/entry/HPD:IncidentInterface_Create?fields=values(Incident Number , Request ID, First_Name)

ペイロード:

{
 "values": {
 "First_Name": "Allen",
 "Last_Name": "Allbrook",
 "Description": "REST API: Nexthink警告 {{alert.monitor.name}} がトリガーされました",
 "Impact": "1-大規模/広範囲",
 "Urgency": "1-クリティカル",
 "Status": "割り当て済み",
 "Reported Source": "直接入力",
 "Service_Type": "ユーザー サービス 検出"
 }
}

4meのインシデントを作成する

方法: POST

リソース: v1/requests

ペイロード:

{
"category":"incident",
"subject":"これは警告 {{alert.monitor.name}} によって起動された結果です",
"impact":"低",
"service_instance_id":"147488",
"ci":"21819154",
"ci_id":"21819154",
"note":"警告は {{alert.alert.trigger_time}} に次の値でトリガーされました: {{alert.alerts.trigger_values[0].alias}}: {{alert.alerts.trigger_values[0].value}}, {{alert.alerts.trigger_values[1].alias}}: {{alert.alerts.trigger_values[1].value}}"
}

Jira Service Deskのサービスリクエストを作成する

方法: POST

リソース: rest/servicedeskapi/request

ペイロード:

{
 "serviceDeskId": "1",
 "requestTypeId": "5",
 "requestFieldValues": {
 "summary": "REST を介してJSDヘルプを依頼する",
 "description": "Mac用の新しい*マウス*が必要です"
 }
}

アラートツール

Pager Dutyのインシデントを作成する

方法: POST

リソース: incidents

ペイロード:

{
 "incident": {
 "type": "incident",
 "title": "Nexthink警告 {{alert.monitor.name}} のためのAPIインシデント",
 "service": {
 "id": "PXZF637",
 "summary": null,
 "type": "service_reference",
 "self": null,
 "html_url": null
 },
 "priority": {
 "id": "高",
 "summary": null,
 "type": "priority_reference",
 "self": null,
 "html_url": null
 },
 "urgency": "高",
 "body": {
 "type": "incident_body",
 "details": "string"
 },
 "incident_key": "incident_{{alert.alert.trigger_time}}",
 "escalation_policy": {
 "id": "P14MFQ2",
 "summary": null,
 "type": "escalation_policy_reference",
 "self": null,
 "html_url": null
 },
 "conference_bridge": {
 "conference_number": "string",
 "conference_url": "string"
 }
 }
}

メッセージングツール

MS Teamsチャンネルにメッセージを投稿する

方法: POST

リソース: /workflows/XXXXXXXXXXXXXXXXXXX/triggers/manual/paths/invoke?api-version=?????&sp=/triggers/manual/run&sv=1.0&sig=XXXXXXXXXXXXXXX

ペイロード:

{
 "type": "message",
 "attachments": [
 {
 "contentType": "application/vnd.microsoft.card.adaptive",
 "content": {
 "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
 "type": "AdaptiveCard",
 "version": "1.0",
 "msteams": { 
 "width": "Full" 
 }, 
 "body": [
 {
 "type": "TextBlock",
 "text": "Nexthink 警告",
 "id": "Title",
 "spacing": "Medium",
 "horizontalAlignment": "Center",
 "size": "ExtraLarge",
 "weight": "Bolder",
 "color": "Accent"
 },
 
 {
 "type": "Container",
 "items": [
 {
 "type": "TextBlock",
 "text": "{{alert.alert.context.application.name}},{{alert.monitor.name}}",
 "wrap": true,
 "color": "Default",
 "size": "Medium"
 }
 ],
 "style": "emphasis"
 },
 {
 "type": "FactSet",
 "facts": [
 {
 "title": "担当",
 "value": "インフラスチーム"
 }, {
 "title": "トリガーされた日時:",
 "value": "{{alert.alert.trigger_time}}"
 }, {
 "title": "アプリケーション名",
 "value": "{{alert.alert.context.application.name}}"
 },
 ]
 },
 {
 "type": "TextBlock",
 "text": "条件違反:",
 "wrap": true
 },
 {
 "type": "Table",
 "columns": [
 {
 "width": 1
 },
 {
 "width": 1
 },
 {
 "width": 1
 },
 {
 "width": 1
 }
 ],
 "rows": [
 {
 "type": "TableRow",
 "cells": [
 {
 "type": "TableCell",
 "items": [
 {
 "type": "TextBlock",
 "text": "メトリック名",
 "wrap": true
 }
 ]
 },
 {
 "type": "TableCell",
 "items": [
 {
 "type": "TextBlock",
 "text": "しきい値",
 "wrap": true
 }
 ]
 },
 {
 "type": "TableCell",
 "items": [
 {
 "type": "TextBlock",
 "text": "メトリック値",
 "wrap": true
 }
 ]
 },
 {
 "type": "TableCell",
 "items": [
 {
 "type": "TextBlock",
 "text": "基準値",
 "wrap": true
 }
 ]
 }
 ]
 },
 {
 "type": "TableRow",
 "cells": [
 {
 "type": "TableCell",
 "items": [
 {
 "type": "TextBlock",
 "text": "{{alert.alert.trigger_values[0].alias}}",
 "wrap": true
 }
 ]
 },
 {
 "type": "TableCell",
 "items": [
 {
 "type": "TextBlock",
 "text": "{{alert.monitor.thresholds[0].value}}",
 "wrap": true
 }
 ]
 },
 {
 "type": "TableCell",
 "items": [
 {
 "type": "TextBlock",
 "text": "{{alert.alert.trigger_values[0].value}}",
 "wrap": true
 }
 ]
 },
 {
 "type": "TableCell",
 "items": [
 {
 "type": "TextBlock",
 "text": "{{alert.alert.trigger_reference_value}}",
 "wrap": true
 }
 ]
 }
 ]
 },
 {
 "type": "TableRow",
 "cells": [
 {
 "type": "TableCell",
 "items": [
 {
 "type": "TextBlock",
 "text": "{{alert.alert.trigger_values[1].alias}}",
 "wrap": true
 }
 ]
 },
 {
 "type": "TableCell",
 "items": [
 {
 "type": "TextBlock",
 "text": "{{alert.monitor.thresholds[1].value}}",
 "wrap": true
 }
 ]
 },
 {
 "type": "TableCell",
 "items": [
 {
 "type": "TextBlock",
 "text": "{{alert.alert.trigger_values[1].value}}",
 "wrap": true
 }
 ]
 },
 {
 "type": "TableCell",
 "items": [
 {
 "type": "TextBlock",
 "text": "",
 "wrap": true
 }
 ]
 }
 ]
 },
 {
 "type": "TableRow",
 "cells": [
 {
 "type": "TableCell",
 "items": [
 {
 "type": "TextBlock",
 "text": "",
 "wrap": true
 }
 ]
 },
 {
 "type": "TableCell",
 "items": [
 {
 "type": "TextBlock",
 "text": "",
 "wrap": true
 }
 ]
 },
 {
 "type": "TableCell",
 "items": [
 {
 "type": "TextBlock",
 "text": "",
 "wrap": true
 }
 ]
 },
 {
 "type": "TableCell",
 "items": [
 {
 "type": "TextBlock",
 "text": "",
 "wrap": true
 }
 ]
 }
 ]
 }
 ], "showGridLines": false
 },
 {
 "type": "ActionSet",
 "actions": [
 {
 "type": "Action.OpenUrl",
 "title": "Nexthinkで表示",
 "URL": "{{alert.alert.issue_view_link}}"
 }
 ]
 }
 ] 
 }
 }
]

このガイドラインに従ってください MS Teamsを設定してリクエストを受信します。

Slackの特定のチャンネルにメッセージを投稿する

方法: POST

リソース: services/T01S01V0HB3/B02GY9BKZ7G/DIDFWXuCAeFfqkgNntQqJV7e

ペイロード:

{
 "channel":"C01R6KV8CA3",
 "text":"{{alert.monitor.name}}についての警告があり、デジタルエクスペリエンスに影響があります",
 "attachments":[
 {
 "text":"誰がこれを確認するべきですか?",
 "fallback":"Chocolateを一生分持っていると、コンピューターに何が出来るか詳しく話せるかもしれません。",
 "color":"#3AA3E3",
 "attachment_type":"default",
 "callback_id":"select_simple_1234",
 "actions":[
 {"name":"winners_list",
 "text":"警告を誰が処理すべきか?",
 "type":"select",
 "data_source":"ユーザー"
 }
 ]
 }
 ]
}

このガイドラインに従ってください Slackを設定してリクエストを受信します。

Zoomにメッセージを投稿する

方法: POST

リソース: chat/webhooks/incomingwebhook/dSUcla-dQaGYgqGuBk3BsQ.

上記のURLリソースは説明用であり、Zoomで直接設定するエンドポイントURLに依存します。

ペイロード: Zoomに送信したいメッセージを追加します。 以下の例を参照してください。

[
{
"text":"入力メッセージ",
"img":["file1","file2"]
}
]

このガイドラインに従ってください Zoomを設定してリクエストを受信します。

生産性ツール

Jiraの特定のプロジェクトにバグを作成する

方法: POST

リソース: services/T01S01V0HB3/B02GY9BKZ7G/DIDFWXuCAeFfqkgNntQqJV7e

ペイロード:

{
 "fields": {
 "project":
 {
 "key": "WHKBUG"
 },
 "summary": "ユーザーが悪い音質の通話を体験しています",
 "description": "Nexthink警告 {{alert.monitor.name}} がトリガーされました",
 "issuetype": {
 "name": "不具合"
 },
 "priority":{
 "name": "{{alert.alert.priority}}"
 },
 "timetracking":
 {
 "originalEstimate": "1d 2h",
 "remainingEstimate": "3h 25m"
 }
 }
}

データプラットフォーム

Splunkのイベントコレクターにイベントを送信する

方法: POST

リソース: services/collector?index=_main

ペイロード:

{
 "event": "metric",
 "source": "metrics",
 "sourcetype":"perflog",
 "fields": {
 "event_name":"システムクラッシュ",
 "event_label":"{{device_performance.system_crash.label}}",
 "event_error_code":"{{device_performance.system_crash.error_code}}",
 "event_time":"{{device_performance.system_crash.time}}",
 "region": "us-west-1",
 "datacenter": "dc2",
 "rack": "63",
 "os": "Ubuntu16.10",
 "arch": "x64",
 "team": "LON",
 "service": "6",
 "service_version": "0",
 "service_environment": "test",
 "path": "/dev/sda1",
 "fstype": "ext3"
 }
}

Last updated