New Relic株式会社のQiita Organizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
最新のアップデートの詳細はこちら
New Relic アップデート(2024年4月)
New Relic アップデート一覧
はじめに
New Relic Universityというオンラインセミナーで時折アラート周りの講師をすることがあるのですが、New Relicのアラート機能の柔軟さを理解するまで苦戦をされる方が思ったい以上に多いなと感じています。完全に個人的な感想ですが、その1つの理由としては、ダミーのアラートを発報させて色々と試す方法があまり知られていないからかな?と感じています。
じゃあ、その方法を早速共有した方がいいんじゃないかなということで、Qiitaに投稿してみることに。その具体的な方法は、Event APIやLog APIを使うことなのですが・・・「はて?APIを使うって、誰もが当たり前の様にできるっけ?」ということで、簡単にAPIを叩く方法も併せてお知らせすると役に立つのではということで、完全に個人的に最高だと思っているPostmanを使って紹介してみることに。
Postmanは個人的見解で最高だと思っていますが、New Relicの公式見解ではないです。ですが、使ってもらうと、アラート検証の効率が劇的に改善するので、Postmanを使ったことがない人は試しに使ってもらえると幸いです。
フリーでサインアップして多くの機能を使うことができます。また、コンソール版もあったり、最近日本語対応してくれたりで、感謝感謝です!!
補足: Postmanのサインアップは完了済みという前提で以降は記載しています。また、筆者はPostmanの専門家ではないので・・・最大限具体的な手順を記載するように努めますが、至らない点がありましたらご容赦下さい。
New RelicのAPIを使うと何ができる?
New Relicの主要なAPIは、先に紹介したEvent APIやLog APIの他にMetric APIやTrace APIがあります。このAPIを介して任意のデータをNew Relic上に記録することができる様になります。それぞれのデータの違いはこちらのブログを一読してもらうとイメージがつくかと思います。
例えば、特定のツールやバッチ処理の計測開始時点から終了時間までかかった時間を計測し、その計測結果をEvent APIを介して記録するなどでもできます。あるいは、サーバ&クライアントのクライアントが内部で重要なログ情報を出力しているのなら、このログの内容をそのままNew Relicに転送するなどが可能です。
また、GraphQLに対応したNerdGraph APIも用意されており、このAPIを介して、さまざまな設定を新たに追加したり、設定を参照し、変更するなどを行うことができます。具体的には、アラートの閾値条件などを定義したcondtionの作成や、特定の監視対象にタグを追加したりなど、多岐に渡って利用することができるAPIとなっています。
ここまで読まれて、「あれ?アラートの検証とNew RelicのAPIってどう関係があるの?」と思われた方、すごい良いポイントに気づかれました!!
先にも書かせてもらいましたが、APIを活用することで、New Relicのエージェントが計測したアプリケーションやサーバキャパシティなどのデータとまったく同じ形式のダミーデータをAPI経由で生成することができるんです。とはいえ、これを実際に行うとすると、かなり大量のパラメータをAPIのリクエスト内で記載しないといけなくなるので、今回はエージェントとはまったく関係のないダミーデータを生成する方法をお伝えしています。でも、ダミーデータで十二分にアラートのロジックや挙動を試すことが可能なので、「えっ?ダミーデータなの?」と思わず、最後まで読んでくれたら嬉しいです。
Postmanを使って早速APIを叩いてみよう
アラート検証を行うことを目的とした場合、Event APIかLog APIを使うと簡単です。今回はEvent APIを例に進めますが、どちらも必須の項目はほぼ同じでエンドポイントが異なっているというイメージを持ってもらうと良いかもしれません。
Event APIを用いるための事前準備
- 利用しているデータセンタはUSかEUかを確認する
- データを送信する先のアカウントIDを確認する
- 上記で選択したアカウントIDに紐づいたAPIキー(INGEST - LICENSE Key)を取得する
- 送信したEventを格納するための任意のテーブル名(eventType名)を決める
それでは、早速Postmanの環境にアクセスし、Event APIを叩く設定を行ってみましょう。
ステップ1: HTTPリクエストのテンプレート起動
コレクション配下に新規ボタンからHTTPリクエストを選択し、無題のリクエストを生成します。
ステップ2: Event APIの必須項目の設定
Event APIを実行するために必須の項目を設定します。
- HTTPメソッドをPOSTに変更します
- Event APIの送信先(エンドポイント)URLを入力します
- USデータセンタを利用している場合: https://insights-collector.newrelic.com/v1/accounts/***/events
- EUデータセンタを利用している場合: https://insights-collector.eu01.nr-data.net/v1/accounts/***/events
上記URLの"***"部分には、事前準備で確認したアカウントIDが入ります。もし、アカウントIDが12345678でUSデータセンタを利用している場合には、エンドポイントURLは、https://insights-collector.newrelic.com/v1/accounts/12345678/events となります。
一旦ここで設定を保存してみましょう。もしPostman上で複数のコレクションがある場合には、保存先のコレクションを選択することができ、かつ、任意のリクエスト名を設定することができます。
次に、リクエストをエンドポイントに受け取ってもらうための認証情報をヘッダーに設定します。
-
ヘッダータブを選択します
- 必要であれば、非表示となっているヘッダーを表示してください
- Api-Keyヘッダーを追加し、事前準備で取得したINGEST - LICENSEキーの値を設定します
- Content-Typeヘッダーを追加し、application/jsonの値を設定します
ステップ3: データの内容として送信したい中身を指定し、送信する
実際にリクエストを飛ばすまであと一歩です。次に、リクエストのボディを設定します。
- ボディタブを選択します
- Rawを選択し、ボディの内容をJSON形式で記載します
- eventTypekeyを記載し、送信したデータを格納したいEvent space名(SQLで言うところのテーブル名に相当)をvalueに指定します
- また、格納するデータレコードに含めるカラムや値を記載することができます
- 余裕があれば、以下の設定例を参考に、利用したいカラムを追加してください
[{
"eventType": "EventAPIByPostman",
"title": "PostmanでNew Relic Event APIを叩いてみた件について",
"description": "これでアラートの理解が進むといいな",
"severity": "Critical"
}]
ここまでくれば、あとは実際にEvent APIのリクエストを発報するだけです。右上の青い発信ボタンをクリックしてください。Go!Go!
正しく発信できれば、エンドポイントがレスポンスを返すので、PostmanのUI下部が以下の様な表示に変わります。
補足: ヘッダータブやボディタブと同じ箇所にScriptsタブがあるのですが、そこをうまく使うと送信するボディに乱数や特定の処理を行った結果を埋め込むことができるようです。Postmanをもっと使いこなせたら・・・。
ステップ4: New Relicポータル上で、送信したデータを確認する
送信したデータを参照してみましょう。
- New Relicポータルにログインします
- ログイン後、Webブラウザの最下部にStart querying your dataと表記されている箇所があるので、そちらをクリックします
- クエリ(NRQL)を記載するUIが画面下部より競り上がってくるので、送信したデータを参照するためのクエリを記載します
- 以下は、クエリ例となっており、FROM句に続けるテーブル名は、ボディ設定時に指定したeventTypeのvalueとなります
- もし他のvalueを指定している場合には、以下のクエリ例のFROM句で指定するテーブル名は環境にある様に置き換えてください
FROM EventAPIByPostman SELECT *
クエリを記載後、Enterキーを押すことで、クエリ結果が以下のスクリーンショットの様に返ってきます。指定した通りの値が表示されれば、成功です
ステップ5: 試してみたいアラートの設定を行い、挙動を確認する
任意のイベントを発生させることができたので、そのイベントに合わせてアラートの発報設定を行うことで、実際のアラート発報の挙動を核にすることができるようになります。
例えば、発行した1つのAPIが、皆様のシステムから上がってきた注意すべきデータとした場合、そのデータのseverityの値が'Critical'であるデータ数の時間推移を追いかけることでシステムの状況変化を把握することができそうですよね。'Critical'以外に、'Normal'や'info'といった値が入ってくるようなケースを連想してみてください。
詳細は割愛させて頂きますが、その様な場合には、以下の様な手順で設定を進めて行きます。
- New Relicプラットフォームにログインし、左のメニューからAlertsを選択し、Alert Policiesに進む
- 新規Policyを作成するか、既存のPolicyを選択し、新たなconditionを追加作成する(このステップは複数の導線があるので、詳細については、後日別のQiita記事をポストさせて頂きます!!)
-
Write your own queryを選択し、以下の設定を行なっていく
- Query the data you want to monitor: SELECT filter(count(*), WHERE severity = 'Critical') FROM EventAPIByPostman
- Fine-tune your signalのセクション: Streaming methodをEvent timerに変更し、それ以外はデフォルトのままで問題ありません
- Set condition thresholdsのセクション: デフォルトのままでも問題ありませんが、When a query returns a valueをabove 1 at least once in 1 minutesに変更するとアラート検証が行いやすいかと思います
- Add detailsのセクション: Name your alert conditionで任意の名前を設定し、それ以降はデフォルトのままで進めて、設定を保存します
- 以下の画像の様な設定内容をまとめたページが表示されるので、右下のCloseボタンを押して設定画面を閉じます
今回のポストではここまでとさせて頂きますが、ここまでの設定で計測したデータに対するアラートの設定が行えました。更にWorkflowの設定などを行うことで、メールやSLACKなどへの通知を行うことができる様になります。
さいごに
ここまで読んでくれてありがとうございます。一連の流れを読んで、実際に試してもらえれば幸いです。色々試してみて、アラートの理解を深めるお役に立てればです。また、自由に利用できるNew Relicの環境がないから試せないなど悩みがある場合は、是非、後続の無料アカウントの取得を行ってみてください。
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!