Webhook アラート・チャネル
Webhook を使用したアラート通知の送信方法について学びましょう。
Webhook を使用してアラート通知を送信するには、汎用 Webhook アラートチャネルを作成してください。
Webhookアラートチャネルの作成
汎用的なWebhookアラートチャネルを作成するには、 Instana のUIで、 [設定] > [グローバル設定 ] > [イベントとアラート ] > [アラートチャネル ] > [アラートチャネルを追加] の順にクリックします。

Webhook URL の形式は protocol://domainOrIPAddress:port/path
アラートの例
設定されたURL( HTTP または HTTPS )に対して、以下の WebhookPOST イベントが HTTP として受信されます:
未解決の問題やインシデントについて
{
"issue": {
"id": "53650436-8e35-49a3-a610-56b442ae7620",
"type": "issue",
"state": "OPEN",
"start": 1460537793322,
"severity": 5,
"text": "Garbage Collection Activity High (11%)",
"suggestion": "Tune your Garbage Collector, reduce allocation rate through code changes",
"link": "https://XXXXXXX/#/?snapshotId=rjhkZXdNzegliVVEswMScGNn0YY",
"zone": "prod",
"fqdn": "host1.demo.com",
"entity": "jvm",
"entityLabel": "Test jvm",
"tags": "production, documents, elasticsearch",
"container": "test-container"
}
}
重大な問題や事案について
{
"issue": {
"id": "53650436-8e35-49a3-a610-56b442ae7620",
"type": "issue",
"state": "CLOSED",
"start": 1460537793322,
"end": 1460538393322,
"severity": 5,
"text": "Garbage Collection Activity High (11%)",
"suggestion": "Tune your Garbage Collector, reduce allocation rate through code changes",
"link": "https://XXXXXXX/#/?snapshotId=rjhkZXdNzegliVVEswMScGNn0YY",
"zone": "prod",
"fqdn": "host1.demo.com",
"entity": "jvm",
"entityLabel": "Test jvm",
"tags": "production, documents, elasticsearch",
"container": "test-container"
}
}
変更イベントについて
{
"issue": {
"id": "G9KRvijARFw6vffuygCvl_Fyg",
"type": "change",
"start": 1743798954000,
"text": "Change detected",
"description": "The value has changed from X to Y.\n",
"link": "https://X/#/events;eventId=G9KRvijARFw6vffuygCvl_Fyg?&snapshotId=mTraati8sdfl0H5qrEagmIRIBYoM4",
"end": 1743798954000,
"zone": "prod",
"fqdn": "something.com",
"entity": "Kubernetes Pod",
"entityLabel": "Test",
"tags": "docs",
"container": "b-container"
}
}
}
オフラインおよびオンラインのイベント
{
"issue": {
"id": "53650436-8e35-49a3-a610-56b442ae7620",
"type": "presence",
"start": 1460537793322,
"text": "online",
"description": "Java virtual machine on Host host1.demo.com",
"link": "https://XXXXXXX/#/?snapshotId=rjhkZXdNzegliVVEswMScGNn0YY",
"zone": "prod",
"fqdn": "host1.demo.com",
"entity": "jvm",
"entityLabel": "Test jvm",
"tags": "production, documents, elasticsearch",
"container": "test-container"
}
}
エージェントによるイベントの監視について
{
"issue": {
"id": "ah7cCh99TjGqnZJ4UL-uZHA",
"type": "monitoringIssue",
"state": "OPEN",
"start": 1743798151988,
"severity": 5,
"text": "Monitoring issue: nodejs_collector_not_installed",
"suggestion": "Our Agent observed a problem with monitoring the linked process.",
"link": "https://XX/#/events;eventId=ah7cCh99TjGqnZJ4UL-uZHA?&snapshotId=UhgAKBptVGeu04DsagNGU",
"zone": "ava",
"fqdn": "cool.fyre.ibm.com",
"entity": "Process",
"entityLabel": "node (7532267)",
"tags": "proc",
"container": "c-container"
}
}
OAuth 2.0 承認
OAuth 2.0 による認証が必要なサービスと Webhook の配信を連携させるには、 Instana 内で Webhook アラートチャネル用の OAuth プロファイルを設定できます。 Webhookチャネルが OAuth を有効にして設定されると、 Instana はアクセストークンのライフサイクルを自動的に管理します。具体的には、トークンの取得や更新処理を行い、送信リクエストに対してBearerトークンとしてトークンを安全に付加します。
OAuth の構成
Webhookチャネル用に OAuth を設定するには、以下の手順を実行してください:
- Go Instana のUIで、 「設定 」>「 グローバル設定 」> 「イベントとアラート 」>「 アラートチャネル 」> 「アラートチャネルを追加」 の順に進みます。
- Webhookチャネルで OAuth のサポートを有効にするには、 「 OAuth を有効にする」 を「 オン」 に設定してください。
- OAuth の認証情報を入力してください:
- クライアントID: 認証サーバーによって発行される、アプリケーションの公開識別子。
- クライアントシークレット: アプリケーションと認証サーバーのみが知る機密鍵。
- アクセス トークン URL : アプリケーションがクライアント認証情報をアクセス トークンと交換するためにリクエストを送信するエンドポイント。
- 受信者(任意): アクセストークンの宛先を指定します。通常はリソースサーバーの識別子(例: API エンドポイント)です。 特定のリソースに対するトークンの有効性を確認するために、一部の OAuth フローで使用されます。
- 適用範囲(オプション): クライアントが要求する権限またはアクセスレベルを定義します(例:「読み取り」、「書き込み」)。
HTTP 要求ヘッダー
カスタム HTTP 要求ヘッダーの指定
一部の Webhook 連携機能では、このセクションで追加できるヘッダーの指定が必要となります。 例えば、AWS API Gateway 用の API トークンの追加などです。
Webhook URL 基本認証
HTTPAuthorization リクエストヘッダーを手動で指定する代わりに、Webhook( URL )経由で HTTP の基本認証を使用することもできます。 ホスト名の先 password 頭に および を username 付加する(例: https://username:password@webhookurl.com )、認証情報は自動的に Base64-encoded として取得され、以下の HTTP ヘッダー値として提供されます:
Authorization: Basic <base64 encoded credentials>
JSONata によるペイロードの変換
API を使用して Webhook アラートチャネルを作成する際、JSONata 式を使用して Webhook のペイロードを変換することができます。 この機能は現在、 API の設定を通じてのみ利用可能であり、 Instana のUIからは利用できません。 これにより、Webhookのペイロード構造をカスタマイズして、サードパーティ製システムとの連携を強化することができます。
制限事項とベストプラクティス
変換式はアラートチャネルレベルでグローバルに適用され、そのチャネルを通じて送信されるすべてのアラートに影響します。 以下の指針を検討します。
- アラートごとの変換 :アラートごとに異なる変換が必要な場合は、複数のWebhookアラートチャネルを作成し、それぞれに独自の変換式を設定してください。
- エラー処理 :無効なJSONata式により、アラートの配信に失敗する可能性があります。 設定を作成する前に「 テストチャンネル 」ボタンを使用し、式が有効であることを確認するとともに、NULL値や欠損値が想定される場合に適切に対処してください。
JSONata は、JSON データに対して照会と変換を行うための軽量の言語です。 JSONataの構文に関する詳細については、 JSONataのドキュメントを参照してください。
ペイロード変換機能付きのWebhookの作成
変換機能付きのWebhookアラートチャネルを作成するには、エンド POST /api/events/settings/alertingChannels ポイントへの API リクエストにオプションの transformationExpression フィールドを含めてください。 この transformationExpression フィールドは、次の例に示すように、JSONataの構文に従う必要があります。 API の詳細については、 Instana OpenAPI specification をご覧ください。
{
"transformationExpression": "{\"issue\": $merge([issue, {\"metricNames\": issue.text}])}",
"headers": [],
"rbacTags": [],
"webhookUrls": [
"https://webhook.example.com/endpoint"
],
"kind": "WEB_HOOK",
"name": "Transformed Webhook",
"oauthEnabled": false
}
変換例
例:アラートのタイトルを metricNames にマッピングする
例えば、フィールド metricNames にアラートのタイトル(に保存されている issue.text)を入力するという要件があります:
変換式:
{
"issue": $merge([issue, {"metricNames": issue.text}])
}
変更前:
{
"issue": {
"id": "<event-id>",
"type": "issue",
"state": "OPEN",
"start": 1749498047273,
"severity": 5,
"text": "<issue-title>",
"suggestion": "<issue-description>",
"link": "<issue-link>",
"entityType": "Host",
"customZone": "<custom-zone>",
"availabilityZone": "<availability-zone>",
"zone": "<zone>",
"fqdn": "<host-fqdn>",
"entity": "Host",
"entityLabel": "<entity-label>",
"tags": "<tag1>, <tag2>",
"container": "<container-name>",
"service": "not available",
"containerNames": [],
"metricNames": [
"cpu.used"
],
"customPayloads": {
"custom:stringKey": [
"<string-value>"
],
"custom:stringSetSingleton": [
"<singleton-value>"
],
"custom:stringSet": [
"<item-1>",
"<item-2>",
"<item-3>",
"<item-4>",
"<item-5>"
]
}
}
}
変換後:
{
"issue": {
"id": "<event-id>",
"type": "issue",
"state": "OPEN",
"start": 1749498047273,
"severity": 5,
"text": "<issue-title>",
"suggestion": "<issue-description>",
"link": "<issue-link>",
"entityType": "Host",
"customZone": "<custom-zone>",
"availabilityZone": "<availability-zone>",
"zone": "<zone>",
"fqdn": "<host-fqdn>",
"entity": "Host",
"entityLabel": "<entity-label>",
"tags": "<tag1>, <tag2>",
"container": "<container-name>",
"service": "not available",
"containerNames": [],
"metricNames": "<issue-title>",
"customPayloads": {
"custom:stringKey": [
"<string-value>"
],
"custom:stringSetSingleton": [
"<singleton-value>"
],
"custom:stringSet": [
"<item-1>",
"<item-2>",
"<item-3>",
"<item-4>",
"<item-5>"
]
}
}
}
FAQ
Instana のバックエンドが、 TCP / TLS への接続を確立できるようにするにはどうすればよいですか?
Instana のバックエンドは、 AWS および Google Cloud のサーバーからリクエストを送信しています。 そのため、JavaScript ファイルとソース・マップ・ファイルがインターネットから一般的にアクセス可能であることが重要です。 また、バックエンドで TLS の設定が正しく機能しており、 完全な証明書チェーンが構成されていることを確認してください。 SSL Labs/Qualysが提供する無料の「 SSL 」テストを利用するか、以下のコマンドを実行することで、 TLS に関する問題の有無を確認できます:
openssl s_client -showcerts -connect {{YOUR_DOMAIN_HERE}}:443