本ブログでは Alerts & AI 機能の destination (宛先) がコンソールでの操作で、削除できない際の確認方法と対処方法をご紹介します。
workflow で利用されている場合は該当の destination をはずせば、削除ができるようになります。workflow で利用されていない場合は channel での利用状況を確認します。channel はコンソールからは表示されないため、NerdGraph API から確認、削除をする必要があります。それぞれの方法についてご紹介します。
Failed to remove destination
Alerts & AI > Destinations にて、対象の destination を ”Delete destination” にて削除しようとした際に「Failed to remove destination」と表示され削除ができないことがあります。
destination は 利用中の場合、コンソールからは直接削除ができません。Workflow または Channel での利用状況を確認し、解除後に削除を行う必要があります。
権限上の問題
destination の削除権限がないユーザ操作の場合があります。Applied intelligence > Destinations または Incident Intelligence > Destinations にて Delete 権限が必要となります。
また最新の権限情報はドキュメントをご確認ください。
利用中の場合
workflow での利用状況を確認
Alerts & AI > Workflows にて、workflow で利用されている destination を検索などで見つけます (上手く見つからない場合は、後述の「channel での利用状況を確認」のステップ1-3 での検索をお試しください)。
対象の workflow の編集にて、Notify から対象の destination を含む通知を除外します。利用解除状態であれば destination は削除が可能になりますので、再度 Alerts & AI > Destinations から対象の destination の削除を実施ください。
channel での利用状況を確認 (NerdGraph API を利用)
channel はコンソールでは明示的には記載されませんが、workflow と destination を関連づける項目です。例えば、Email タイプの場合は、Email Subject や Custom Details が channel の設定項目となります。
destination は channel と紐付き、channell が workflow と関連づいています。
コンソールから操作する場合、Workflow 編集ページで (channel 情報を入力し) destination と workflow を結びつけます。
Notify の通知先から外すと Channel は自動で削除されるため、workflow と destination の関連もなくなります。
コンソールでの操作の場合、channel を意識せずに設定が行われます。
一方、NerdGraph API や terraform など API で Alerts 設定をする場合、channel を作成し、その後に workflow に結びつけるという操作を行います。
順番の都合上、workflow に結びついていない channel を作ることができます。
更新に失敗してしまった場合、動作テストや運用上の都合などで channel を workflow と結びつけるという操作をしなかった場合、野良 channel が残ってしまう場合があります。そして野良 channel に紐づいている destination は コンソールからは削除ができなくなってしまいます。
そのような destination を削除するには NerdGraph API にて、channel を削除する必要があります。
本ブログでは、NerdGraph API および Explorer の機能や概要は、割愛させていただきます。詳細はドキュメントをご確認ください。
野良 channel と結びついている destination を削除するには下記の 5ステップとなります。
- 対象の destination Id を取得する
- 対象の destination が利用されている channel を検索する
- 見つかった channel を利用している workflow が存在しないかを確認する
- 見つかった channel を削除
- destination を削除
また、NerdGraph API Explorer には、Apps > NerdGraph API Explorer からアクセスします。
1. 対象の Destination Id を取得する
NerdGraph API Explorer から DestinationId を検索することも可能ですが、コンソールから取得する方が簡易です。
Alerts & AI > Destinations にて、対象の destination に対して ”Copy destination id to clipboard” にて取得できます。
または、NerdGraph API Explorer にて Destination を検索して見つけることも可能です。
(方法は後述の channel の検索などを参照ください)
2. 対象の Destination が利用されている Channel を検索する
NerdGraph API Explorer には、Apps > NerdGraph API Explorer からアクセスします。
下記のようなクエリにて、アカウントID と先に取得した destination Id をフィルタ条件として、紐ついている channel 一覧を取得します。
参考ドキュメント: NerdGraphチュートリアル:適用されたインテリジェンスチャネル > 宛先IDですべてのチャネルを検索
{
actor {
account(id: YOUR_ACCOUNT_ID) {
aiNotifications {
channels(filters: { destinationId: "TARGET_DESTINATION_ID" }) {
entities {
id
name
product
properties {
key
value
}
status
type
}
}
}
}
}
}
channel id さえ分かれば十分ですが、誤削除を防ぐためにも必要に応じて、出力項目 (黄点線枠) を追加し、間違いがないかの確認しておきましょう。
対象の destination が複数の channel で利用されている場合は、すべての channel が出力されます。
3. 見つかった channel を利用している workflow が存在しないかを確認する
本ステップは、誤削除を防ぐための確認ステップです。必ずしも実施する必要はありません。
先と同様に アカウントID と先に見つかった channel Id をフィルタ条件として、紐ついている workflow 一覧を取得します。
参考ドキュメント: NerdGraphチュートリアル:適用されたインテリジェンスワークフローを作成および管理する > ワークフローの一覧表示とフィルタリング
query searchWorkflow {
actor {
account(id: YOUR_ACCOUNT_ID) {
aiWorkflows {
workflows(filters: {channelId: “TARGET_CHANNEL_ID”}) {
entities {
id
name
}
}
}
}
}
}
利用されていないことの確認なので、結果は対象がないことを期待します。結果があるようであれば workflow にて利用されていることになるので「workflow で利用されている場合」を参考に、コンソールから確認を実施ください。
4. 見つかった Channel を削除
ステップ 2 で見つかった channel が利用されていない野良 channel であることが確認できたので、channel の削除を実施します。失敗した場合に理由がわかるように error 出力にはチェックを入れておきましょう。
参考ドキュメント: NerdGraphチュートリアル:適用されたインテリジェンスチャネル > チャンネルの削除
入力が削除対象の channel id であることを確認し、削除を実行します。
mutation {
aiNotificationsDeleteChannel(
accountId: YOUR_ACCOUNT_ID
channelId: "TARGET_CHANNEL_ID"
) {
ids
error {
details
}
}
}
存在しない channel Id を指定された場合などは、エラーが出力されますが、workflow で利用中の channel Id の場合でも削除されてしまいます。
その場合は workflow では参照先の channel 情報がない Notify として残ってしまいます。削除操作を行う前にステップ3 のように事前確認を行っておくことを推奨します。
5. Destination を削除
最後に目的であった destination の削除を行います (ステップ4 削除したのは channel なので、destination は削除されていません) 。
コンソール操作にて、再度 Alerts & AI > Destinations から対象の destination の削除を実施ください。
または NerdGraph API Explorer から destination の削除を行うことも可能です。
参考ドキュメント : NerdGraphチュートリアル:適用されたインテリジェンスの目的地 > 宛先を削除する
まとめ
本ブログポストでは、Destination が コンソールから削除できない場合の例として、NerdGraph API Explorer を用いた確認方法をご紹介しました。NerdGraph API では、本用途以外にも多くの情報取得や設定変更が可能です。UI 操作で手間となるような操作にも便利ですので、ぜひご活用ください。
本ブログに掲載されている見解は著者に所属するものであり、必ずしも New Relic 株式会社の公式見解であるわけではありません。また、本ブログには、外部サイトにアクセスするリンクが含まれる場合があります。それらリンク先の内容について、New Relic がいかなる保証も提供することはありません。