6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

New Relic の Synthetic Monitoring (Scripted API) を使って RSS の情報を収集

Last updated at Posted at 2024-09-26

 New Relic の Synthetic Monitoring の一つであるScripted APIを使用して RSS で公開されている情報を New Relic に収集する方法を紹介します。利用している SaaS の障害情報を New Relic にまとめておくことができるので増え続ける SaaS の業務アプリの状態をまとめて管理するといった活用方法が考えられます。

今回のポイント

この記事で紹介しているポイントは、次の2つです。

  1. Scripted API の使い方がわかる
    スクリプトの作成方法や参考になるサンプルの情報を紹介します。
  2. 実行したスクリプトの結果を 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 を選択します。
Endpoint availability.png

 次にモニターの名前と実行間隔を設定します。今回は NewRelic-StatusRSS という名前のモニターを30分間隔で実行するように設定しています。
name_etc.png

 最後に実行するロケーションを設定します。RSSの情報を取得するのが目的なので1拠点のみ選択して実行します。
location.png

実行するスクリプトを設定

 ここから実際に実行するスクリプトを設定していきます。実行する拠点を選択するとこのような画面が表示されてスクリプトの設定ができるようになります。
script_before.png

下記が今回使用するスクリプトです。

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つの処理を実行しています。

  1. New Relic のステータスページのRSSから情報をXMLで取得
  2. 取得した XML を JSON にパース
    xml2jsを使用してパースしていますが、この他にも使用できるサードパーティのモジュールが用意されています。こちらのドキュメントを確認してください。
  3. 変換した結果の先頭のデータを取得(このケースでは先頭が最新値)
  4. 最新値のタイトル等をKey-Valueの形式でモニターの実行結果の属性に設定
    $util.insightsを使用するとモニターの結果に付加するカスタム属性を制御することができます。詳細についてはこちらのドキュメントを確認してください。

 Validate を実行して成功することが確認できたら保存しましょう。これで設定は完了です。
Validate.png

実行結果を確認する

 取り込んだ実行結果を確認していきます。Scripted API の結果は SyntheticCheck のEventに格納されているため、そこからNRQLを使ってデータを取得します。今回のスクリプトは実行毎に最新の値を取得し続けるため、同じ値が複数保存させています。同じデータをまとめるためにタイトルと配信日時でグループ化して取得します。追加した属性は、custom.* の形式で属性名が設定されるため、設定した Key に合わせて変更してください。

NRQL
FROM SyntheticCheck 
SELECT latest(custom.Description) 
FACET custom.Date, custom.Incident 

クエリ結果.png

最後に

 New Relic の Scripted API でどういったことができるのかわからない場合にはサンプルが用意されているのでぜひ参考にしてみてください。

その他

New Relicでは、新しい機能やその活用方法について、QiitaやXで発信しています!
無料でアカウント作成も可能なのでぜひお試しください!

New Relic株式会社のX(旧Twitter)Qiita OrganizationOrganizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。

無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?