New Relic の Synthetic Monitoring の一つであるScripted APIを使用して RSS で公開されている情報を New Relic に収集する方法を紹介します。利用している SaaS の障害情報を New Relic にまとめておくことができるので増え続ける SaaS の業務アプリの状態をまとめて管理するといった活用方法が考えられます。
今回のポイント
この記事で紹介しているポイントは、次の2つです。
-
Scripted API の使い方がわかる
スクリプトの作成方法や参考になるサンプルの情報を紹介します。 -
実行したスクリプトの結果を New Relic に保存する方法がわかる
スクリプトの実行結果を New Relic のデータベースに保存して、NRQL でそのデータを確認する方法を紹介します。
最新のアップデートの詳細はこちら
New Relic アップデート一覧
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!
概要
今回は、New Relic のステータスページ( https://status.newrelic.com )の RSS フィードから情報を取得して、タイトルや公開日時等の情報を Synthetic Monitoring の実行結果に付与して保存していきます。
設定手順
Synthetic Monitoring の実行情報を設定
New Relic のメニューから Synthetic monitoring を開いて Create a monitor を選択するとタイプを選択する画面が表示されます。Scripted API の機能を使用するので Endpoint availability を選択します。
次にモニターの名前と実行間隔を設定します。今回は NewRelic-StatusRSS という名前のモニターを30分間隔で実行するように設定しています。
最後に実行するロケーションを設定します。RSSの情報を取得するのが目的なので1拠点のみ選択して実行します。
実行するスクリプトを設定
ここから実際に実行するスクリプトを設定していきます。実行する拠点を選択するとこのような画面が表示されてスクリプトの設定ができるようになります。
下記が今回使用するスクリプトです。
var parseString = require('xml2js').parseString;
// New Relic のステータスページのRSSを取得
$http.get('https://status.newrelic.com/history.rss', function(err, response, body) {
parseString(body, function(err, result){
// 取得した結果をパースして、最新の情報を取得
var latestIncident = result.rss.channel[0].item[0];
// 取得した情報を属性に設定
$util.insights.set('IncidentTitle', latestIncident.title[0]);
$util.insights.set('Description', latestIncident.description[0]);
$util.insights.set('Date', latestIncident.pubDate[0]);
});
});
このスクリプトでは下記4つの処理を実行しています。
- New Relic のステータスページのRSSから情報をXMLで取得
-
取得した XML を JSON にパース
xml2jsを使用してパースしていますが、この他にも使用できるサードパーティのモジュールが用意されています。こちらのドキュメントを確認してください。 - 変換した結果の先頭のデータを取得(このケースでは先頭が最新値)
-
最新値のタイトル等をKey-Valueの形式でモニターの実行結果の属性に設定
$util.insightsを使用するとモニターの結果に付加するカスタム属性を制御することができます。詳細についてはこちらのドキュメントを確認してください。
Validate を実行して成功することが確認できたら保存しましょう。これで設定は完了です。
実行結果を確認する
取り込んだ実行結果を確認していきます。Scripted API の結果は SyntheticCheck のEventに格納されているため、そこからNRQLを使ってデータを取得します。今回のスクリプトは実行毎に最新の値を取得し続けるため、同じ値が複数保存させています。同じデータをまとめるためにタイトルと配信日時でグループ化して取得します。追加した属性は、custom.* の形式で属性名が設定されるため、設定した Key に合わせて変更してください。
FROM SyntheticCheck
SELECT latest(custom.Description)
FACET custom.Date, custom.Incident
最後に
New Relic の Scripted API でどういったことができるのかわからない場合にはサンプルが用意されているのでぜひ参考にしてみてください。
その他
New Relicでは、新しい機能やその活用方法について、QiitaやXで発信しています!
無料でアカウント作成も可能なのでぜひお試しください!
New Relic株式会社のX(旧Twitter) や Qiita OrganizationOrganizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!