応用インテリジェンスの異常検出により、New Relic はチームに異常な行動を即座に警告します。New Relic は応用インテリジェンスを使用して、アプリケーションを常に監視します。この情報を使用して、アプリケーションのベースラインまたは期待されるパフォーマンスを判断します。行動がベースラインから逸脱するたびに、すぐにそれを認識してチームに警告するので、エラーに迅速かつ効率的に対処できます。
New Relic の異常検出には、 カスタムと自動の 2 種類があります。チームが監視する各状況に適した異常検出と、システムに異常検出を実装する方法について学びます。
チームがシステムの異常な動作を監視できる異常ダッシュボード。
アノマリーの使用方法
New Relic の開発者は、アプリケーションの状態を監視することがいかに重要かを知っています。お客様が必要なときにいつでも必要なデータにアクセスできるようにしたいので、システムのパフォーマンスに異常値がある場合はチームに警告する必要があります。New Relic の異常検出は、適用されたインテリジェンスを使用して、スループット、エラー率、レイテンシーの 3 つの重要なゴールデン シグナルを監視します。異常検出により、開発者はこれらの指標のベースライン パフォーマンスを監視します。
ある午後、応答時間が急上昇し、顧客がホームページにアクセスするのに通常よりも時間がかかったとします。異常検出は、レイテンシ メトリック データがベースラインから逸脱しているため、この異常な動作にフラグを立てます。これは必ずしも問題があることを意味するわけではなく、AI がシステムに通常とは異なる何かを登録したことを示しているだけであり、詳しく調べる必要があります。
この異常な動作をいくつかの方法で監視しています。まず、私たちのチームは異常ダッシュボードを使用して、何がいつ変更されたかを確認します。
システムのパフォーマンスの異常を調査して、受け取ったエラーとその理由をよりよく理解します。
また、Slack で配信される異常の通知を設定し、必要なときにメッセージを配信する Webhook を設定しました。
New Relic UI で異常の Slack または Webhook 通知を設定する方法。
これらのイベントは、クエリ、カスタム ダッシュボードの作成、アラートにも使用できます。異常検出構成 (関心のあるアプリのグループ) を設定したら、この構成をソースとして追加できます。その後、異常はインシデント インテリジェンスを介して他のデータ ソースと自動的に関連付けられます。
異常検出には、自動とカスタムの 2 種類があります。
自動異常は、チームが APM で監視されているアプリケーションの異常な動作について学習するための最も効率的な方法です。自動異常検出は、チームが実装できるハンズオフ ツールであり、アプリケーションの動作がベースラインから逸脱した瞬間に通知されるようにします。自動異常を使用して問題の原因を特定し、適切な手順を実行してシステムを再びスムーズに稼働させることができます。
カスタム異常により、チームの構成可能性が向上します。カスタム異常により、チームは NQRL の状態を警告し、しきい値を調整および最適化することができます。カスタム異常も静的アラートと同じ高度な調整設定を使用するため、チームは自分にとって重要な異常インシデントのみを確認できます。
オプション | 自動化レベル | いつ使用するか | カバレッジ |
---|
静的 | 完全に設定可能 | すべてのデータに対して単一のしきい値を設定する必要がある場合。 | すべてのエンティティ、すべてのシグナル |
異常 (設定可能) | 半自動 | データの傾向を自動的に学習したいが、しきい値を制御したい場合 | すべてのエンティティ、すべてのシグナル |
自動異常 | 完全自動 | 構成を必要とせずに、アプリケーションやサービスの主要な指標の変化を幅広く理解したい場合。データの傾向としきい値は、機械学習エンジンによって自動的に決定されます。 | エンティティ、ゴールデン シグナル |
異常のセットアップ
カスタム異常検出または自動異常検出のいずれかを使用してシステムの異常な動作を監視することを選択したら、異常な動作がチームに通知され、データをクエリして理解できるようにする必要があります。カスタム異常検出と自動異常検出のどちらを選択しても、セットアップは同じです。
New Relic の異常検出を使用するには、次のことを確認してください。
異常検出は、追加料金なしで自動的に有効になります。通知を受信したり、インシデント インテリジェンスのソースとして追加できる構成 (アプリのグループ) を用意したりするには、異常検出構成を作成する必要があります。
異常検出 UI で構成を作成できます。
one.newrelic.comから、[アラートと AI ] をクリックします。
[異常検出] で、[設定]をクリックします。
クリック Add a configuration.
以下の情報をフォームに入力してください。
- アカウント内の他の構成と簡単に区別できるように、構成の名前を決めてください。
- アカウントを選択します。
- 最大 1,000 件のアプリケーションを選択します。スループットの低い特定のアプリケーションは、少量のデータ変動により敏感になる可能性があるため、異常検出の対象として適していない可能性があることに注意してください。
オプション:異常を監視したいゴールデンシグナルを選択します。
オプション:インシデントインテリジェンスに接続します。
ヒント
ワークフローはまもなく構成に取って代わります。ワークフローの詳細については、 こちらをご覧ください。
Slack で異常検出を使用する:
Select Slack.
通知を受け取る Slack チャネルを選択します。既存のパブリックまたはプライベート チャネルを選択できます。これにより、適用されたインテリジェンス Slack アプリケーションを選択したチャネルに追加するワークフローが促されます。または、異常検出用の新しいチャネルを作成し、最初に Slack でチャネルを作成してから、そのチャネルを選択します。
設定を保存します。
各構成のアプリケーションは、構成表で構成を選択することで、いつでも変更することができます。
Webhook で異常検出を使用します。
Webhook を選択します。
以下の情報をフォームに入力してください。
- WebhookのURLを入力してください。
- オプションでカスタムヘッダーを用意
- カスタムペイロードを編集するか、デフォルトのペイロードを使用するかを選択します。
設定を保存します。
各構成のアプリケーションは、構成表で構成を選択することで、いつでも変更することができます。
ワークフローで異常検出を使用します。
ワークフローに移動します。
[詳細] を選択します。
クエリの作成を選択し、「オリジン」「含む」「異常」を選択します。
entitiesData.types
contains
APM Application
を選択します。
entit_guid
を選択して、選択したエンティティを選択します。
signalType
の内容と、通知を受け取りたいシグナルを選択します。
次に、目的のチャンネルを選択します。
ノイズを減らすために、Slack や電子メールなどの優先度の低い通知チャネルに異常を送信することをお勧めします。
Slack では、特定のアプリケーションからの検出を一時的または永続的にミュートできます。チャンネル全体を一時的にミュートすることもできます。これは、インシデントが発生した場合や、チャネルを中断してはならない場合に役立ちます。
Slack でミュートするには、[このアプリの警告をミュートする] または [すべての警告をミュートする] を選択し、期間を選択します。ミュート期間が終了すると、通知が再開されます。
アプリケーションをミュートすると、構成から永久に削除されます。再度追加するには、 one.newrelic.com > Alerts & AI > Anomaly detectionに移動し、編集する構成を選択します。
異常検出通知をミュートしても、アラートには影響しません。
それぞれの異常メッセージには、問題の詳細を把握し、トラブルシューティングを開始するために使用できるいくつかの重要な情報が含まれています。
アプリケーション名と、New Relic UI での詳細情報へのリンク。
異常が発生しているメトリックと、NewRelicUIの詳細へのリンク。
異常の動作と程度を視覚的に理解できるようにするための経時的なメトリックのグラフ。
適用されたインテリジェンスの分析ページに移動する[分析]ボタン。異常、上流または下流で検出された異常、およびその他の関連する信号に固有の主要な属性を識別します。
異常が正常に戻った時点で、フィードバックを提供するためのオプションを含む回復通知を送信します。お客様からのフィードバックは、開発チームが検出品質を向上させるための情報となります。スループットの異常に関するフィードバックの場合、より適切なモデルに適合させるために、フィードバックに基づいて毎時間評価が実行されます。私たちがお手伝いした場合は、 はい または いいえ を選択してください。
Slack または Webhook を介して情報を提供する異常の通知に加えて、アラートおよび適用されたインテリジェンスの概要ページの異常フィードを介して、環境内の異常に関する詳細情報を表示できます。このタブには、選択したアカウントのすべての構成からの最近のすべての異常のリストが表示され、詳細な分析のために異常を選択できます。
異常フィードで異常を表示するだけでなく、異常は他のインシデントに関連付けられ、問題にグループ化されます。異常は、重大な問題の周りで何が変わったかのコンテキストを提供します。すぐに使用できる異常は、同じエンティティ タイプのインシデントと関連付けられます。ユース ケースに固有の相関関係は、 decisionを使用して追加できます。
異常は、さまざまなNewRelicアクティビティストリームと適用されたインテリジェンス異常フィードに表示されます。異常の可視性設定を使用して表示内容をカスタマイズできます(たとえば、アクティビティストリームでスループットの異常を非表示にし、異常フィードに保持します)。
これらの設定を見つけるには、[アラートと AI ] の [異常検出] で、[設定]をクリックします。
これらの設定を使用する際の注意点
これらの設定は、ユーザーレベルで適用されます。あなたが行った変更は、あなたの組織内の他のユーザーには影響しません。
これらの設定にかかわらず、異常値は報告され、 NRQL クエリで利用可能です。 。
これらのUIセクションの詳細。
AI overview and anomalies tab: AI overview and anomalies tab の設定で、異常値を非表示にします。また、これらのビューに固有のフィルターも使用できますのでご注意ください。
グローバル アクティビティ ストリーム: グローバル アクティビティ ストリーム セクションを使用して、New Relic ホームページ、
まとめ、ルックアウト。
異常の種類: ここのチェック ボックスを使用して、特定の種類の異常を非表示にします。たとえば、[ Web スループット] と [非 Web スループット異常] のチェックを外して、これらのタイプの異常をアクティビティ ストリームと [AI の概要と異常] タブの両方から非表示にします。それらは引き続きレポートされ、クエリに使用できることに注意してください。
NRQLを使用して、 NrAiAnomaly
イベントを使用して異常検出データのクエリとグラフ化を行うことができます。例えば:
FROM NrAiAnomaly SELECT *
重要
このデータは以前にProactiveDetection
イベントに添付されています。そのイベントは 2021 年 4 月 7 日に廃止されました。カスタム グラフでProactiveDetection
を使用する場合は、これらのクエリをNrAiAnomaly
を使用するように変換する必要があります。
このイベントに付随する重要な属性は以下の通りです。
属性 | 説明 |
---|
closeTime
タイムスタンプ
| 異常が終了した時刻。例: 1615304100000 。 |
configurationType
ストリング
| イベントを監視する構成のタイプ。少なくとも1つの構成がエンティティを監視している場合、これはconfiguration に設定されます。それ以外の場合は、 automatic に設定されます。 |
entity.accountId
番号
| エンティティが所属するNew RelicアカウントID。 |
entity.domain
番号
| エンティティのドメイン(現在はAPM のみですが、将来の機能で変更されます)。 |
entity.guid
ストリング
| エンティティのGUID。これは、NerdGraphを介してエンティティに関するデータを識別および取得するために使用されます。 entityGuid と同じです。 |
entityGuid
ストリング
| エンティティのGUID。これは、NerdGraphを介してエンティティに関するデータを識別および取得するために使用されます。 entity.guid と同じです。 |
entity.name
ストリング
| データが異常であると判断されたエンティティの名前。 entityName と同じです。例: Laura's coffee service 。 |
entityName
ストリング
| データが異常であると判断されたエンティティの名前。 entity.name と同じです。 |
entity.type
ストリング
| エンティティのタイプ(現在はAPPLICATION のみですが、将来の機能で変更されます)。 |
evaluationType
ストリング
| これは常にanomaly です。 |
event
ストリング
| 異常データの始まり( open )か終わり( close )かを示します。 |
openTime
タイムスタンプ
| 異常が開いた時間。例: 1615303740000 。 |
signalType
ストリング
| 分析されたデータのタイプ。たとえば、 error_rate またはresponse_time.non_web 。 |
timestamp
タイムスタンプ
| イベントが書き込まれた時間です。 |
title
ストリング
| 異常の説明。例: Error rate was much higher than normal 。 |
インシデント インテリジェンスを異常検出と統合することで、コンテキストと相関関係を取得できます。インシデント インテリジェンスでこれを行う方法については、「 ソースの構成」を参照してください。
構成内から[インシデントインテリジェンスに接続]を選択することもできます。
自動異常検出は、イベント本文を HTTPS POST 経由で JSON 形式で送信します。システムは、エンドポイントが正常な HTTP コード (2xx) を返すことを期待しています。Webhook を使用して自動異常検出を構成する場合は、Webhook 本文の形式と JSON スキーマの例を使用してください。
属性 | 説明 |
---|
category
列挙型
| 分析対象となったデータのカテゴリー。 カテゴリーには、ウェブ・スループット、非ウェブ・スループット、ウェブ・トランザクション、非ウェブ・トランザクション、エラー・クラスがあります。 |
data
リスト
| 検知に至るまでの時系列データです。 |
data[].timestamp
番号
| データポイントのタイムスタンプ(Unix エポックからの ミリ秒) 。例:1584366819000 |
data[].unit
ストリング
| データポイントの値を表す単位。 データ単位には、 count 、 milliseconds 、およびerror_rate が含まれます。 |
data[].value
番号
| データポイントの値です。例:1.52 |
detectionType
列挙型
| 分析されたデータのタイプ。タイプには、 latency 、 throughput 、およびerror_rate が含まれます。 |
entity
物体
| 異常なデータを報告した企業。 |
entity.accountId
番号
| エンティティのアカウントのIDです。 |
entity.domain
列挙型
| エンティティのドメインです。例APMです。 |
entity.domainId
ストリング
| ドメイン内のエンティティを一意に識別するためのID。 |
entity.guid
ストリング
| すべての製品においてエンティティを一意に識別するために使用されるguidです。 |
entity.name
ストリング
| エンティティの名前。例: Laura’s coffee service |
entity.link
ストリング
| エンティティを表示するためのリンクです。例 https://rpm.newrelic.com/accounts/YOUR_ACCOUNT_ID/applications/987654321”
|
severity
列挙型
| NORMAL 、 WARNING 、またはCRITICAL を含む、異常な変更がどのように発生したかの説明。
|
version
ストリング
| 提供されるデータを説明するために使用されるバージョン。 例:v1 |
viewChartImageUrl
ストリング
| 異常データのチャートを示す画像。 |
anomalyzerUrl
ストリング
| NewRelicの異常を分析するために開くことができるURL。 |
JSONスキーマの例
適用されたインテリジェンスは、HTTPSPOSTを介してJSON形式でイベント本文を送信します。システムは、エンドポイントが成功したHTTPコード(2xx)を返すことを期待しています。
テンプレートです。
"version": "{{version}}",
"type": "{{entity.type}}",
"name": "{{entity.name}}",
"link": "{{entity.link}}",
"entityGuid": "{{entity.entityGuid}}",
"domainId": "{{entity.domainId}}",
"domain": "{{entity.domain}}",
"accountId": {{entity.accountId}}
"detectionType": "{{detectionType}}",
"category": "{{category}}",
"timestamp": {{timestamp}}
{{#unless @last}},{{/unless}}
"viewChartImageUrl": "{{viewChartImageUrl}}",
"anomalyzerUrl": "{{anomalyzerUrl}}"
サンプルペイロード。
"name": "My Application",
"link": "https://rpm.newrelic.com/accounts/ACCOUNT_ID/applications/123",
"accountId": YOUR_ACCOUNT_ID
"detectionType": "metric",
"category": "web throughput",
"timestamp": 1637260259819
"timestamp": 1637260319819
"timestamp": 1637260379819
"viewChartImageUrl": "https://www.example.com/image/8353cf2c-945c-48e8-99de-e903f033a881?height=200&width=400&show_timezone=true",
"anomalyzerUrl": "https://www.example.com/anomalyzerUrlExample"