[New Relic] NRQLアラートを使ってみる


概要

NRQLアラートで監視し、通知する方法をまとめる。

NRQLとは

以下参照。

NRQLアラートとは

New Relicアラートの種類の一つで、NRQLで対象のメトリクスを定義できる。

メリット

  • 汎用的なNRQLを使うため、インフラ監視だけでなく、外形監視、APM、使用量などあらゆるアラートをNRQLアラート一つで作成できる。
  • FACET句を使えば、任意のメタ情報を含めてアラートを飛ばすことができる。
  • New Relic側としてもNRQLアラートの使用を推奨している

デメリット

  • NRQLが使えないといけない
    • New Relicを利用する上でNRQLを使うことはほぼ必須なので、使っていくと自然と身につくはず

使い方: AWSのEC2インスタンスのCPU使用率の監視をする場合

0. 準備

まずは対象のメトリクスについて、「Data explorer」または「Query builder」で参照してみて、データの挙動やメタ情報、実際のNRQL文を確認する。

または、Infrastructure等の画面に表示されたグラフから、そのグラフを作るNRQL文が「View query」で参照できるため、それも参考にする。

1. 通知チャンネルとポリシーを作成する (説明割愛)

「Alert」ページから「Notification channels」(通知先) と「Policy」(アラートのグループ) を作成する (以下ドキュメント参考)。

https://docs.newrelic.co.jp/docs/alerts-applied-intelligence/new-relic-alerts/alert-notifications/notification-channels-control-where-send-alerts
https://docs.newrelic.co.jp/docs/alerts-applied-intelligence/new-relic-alerts/alert-policies/create-edit-or-find-alert-policy

2. NRQLアラート作成

1) 作成したポリシーを選択し、右上の「Add a Condition」を選択
2) 「Categorize」で「NRQL」を選択
3) 「NRQL>」にNRQL文を入力し、メトリクスを定義する

SELECT average(`aws.ec2.instance.cpuUtilization`) FROM Metric WHERE aws.accountId = '443553437457' FACET tags.Name, aws.accountId, aws.ec2.instanceId
  • WHERE句で、グルーピング
  • FACET句で、メトリクスの分離 (DatadogでいうところのMulti Alert)。 ここに記入したカラムがメタ情報としてアラートに載る。

4) 「Thresholds」を設定

5) 「Condition settings」を設定

  • FACET句で指定したカラムは、Descriptionで変数として指定できる 参考

6) 「Create condition」で作成

NRQLサンプル

AWS EC2 CPU使用率

SELECT average(`aws.ec2.instance.cpuUtilization`) FROM Metric 

AWS RDS CPU使用率

SELECT average(`aws.rds.instance.cpuUtilization`) FROM Metric

AWS Lambdaエラー件数

SELECT average(`aws.lambda.function.errors`) FROM Metric

Synthetics結果

SELECT count(*) FROM SyntheticCheck WHERE result = 'SUCCESS'