はじめに
こちらの記事でIPアドレスから位置情報を抽出する方法について紹介させていただきました。今回は抽出した位置情報をマップに描写してNew Relicのダッシュボードに加えてみたいと思います!
最新のアップデートの詳細はこちら。
New Relic アップデート
設定するのに必要なもの
Status Widget Pack
New RelicのダッシュボードはReact.jsで構築されたオープンソースのカスタムチャート Widgetの豊富なライブラリを提供しており、今回はNew RelicがGitHubで公開しているStatus Widget Packを使用します。
NR1 CLI
Status Widget PackをNew Relicのアカウントにデプロイする必要があり、デプロイするためにNR1 CLIというNew Relicが提供しているCLIツールを作業端末にインストールします。NR1 CLIのリファレンスはこちらで確認できます。
Gitとnpm
Status Widget PackをデプロイするためにGitとnpm を端末にインストールしておきます。
MapboxのAPIキー
Status Widget Packで提供しているマップ WidgetはIPアドレスから抽出した位置情報の経度と緯度からマップに位置情報を描写するにあたり、Mapboxという位置情報サービスのAPIを利用しています。APIへの月間リクエスト数が0~100,000以内は無料で利用可能です。
設定の流れ
それでは実際に設定をしていきます!
NR1 CLIをインストール
まず、作業端末にNR1 CLIをインストールします。
- New Relicにログインします。
- Build on New Relic にアクセスします。
- CLIを実行するために必要なNew RelicのAPIキーを選択もしくは新規作成します。
- 環境に適したインストーラーをDLします。
インストールは非常に簡単で、Macはpkg、Windowsはexeのインストーラーでインストール。LinuxはcurlコマンドでインストールスクリプトをDLして実行することでインストールされます。今回はMacにインストールします。 - インストール後、nr1 CLIにデプロイ先となるNew Relicのアカウント情報、APIキーを設定します。上の手順を進めることでアカウント名、APIキーは自動で補完してくれるため、コピーして実行するだけで設定できます。regionはNew Relicのアカウントが稼働しているregionを指定します(基本、US)を指定してください。
nr1 profiles:add --name {account-slug} --api-key {api-key} --region {us|eu}
NR1 CLIの設定はこれで完了です。
Status Widget Packをインストール
続いて、Status Widget PackをNew Relicのアカウントにデプロイします。
リポジトリを作業端末にcloneします。
git clone https://github.com/newrelic/nr1-status-widgets.git
rootディレクトリに移動してnpm installで必要なnodeモジュールをインストールします。
cd nr1-status-widgets
npm install
New Relicのアカウントにデプロイします。
nr1 nerdpack:publish
MapBoxのAPIキーを取得
- MapBoxにサインアップして無料アカウントを作成します。
- サインアップ後、アカウント管理TOPページに表示されているDefault public tokenの値をコピーします。
MapBoxでの作業は以上になります。
ダッシュボードにマップ Widgetを追加
New Relicのサイトで作業していきます。
NRQLについて
NRQLの記述例を記載します。
SELECT
// 必須: 「name:Attribute名」でエイリアスを設定する
latest(ClientIP.city) as 'name:City',
// 必須: IPアドレスから取得した緯度の値を設定
latest(ClientIP.latitude) as latitude,
// 必須: IPアドレスから取得した経度の値を設定
latest(ClientIP.longitude) as longitude,
// 任意
latest(ClientIP) as ClientIP,
// 任意
count(ClientIP) as count
FROM
Log
WHERE
// 任意: 今回はnginxのアクセスログから位置情報を抽出
application = 'nginx' FACET ClientIP,
// 必須
string(latitude, precision : 5) as 'lat',
// 必須
string(longitude, precision : 5) as 'lng'
since 24 hours ago
上記NRQLを実行することでMap Widgetsに位置情報のアイコンが表示されるようになります。アイコンをクリックすると詳細情報が確認できます。スクリーンショットの赤枠で囲った箇所にNRQLで 「name:Attribute名」とエイリアス設定した値が表示されるようになっています。
Map Widgetsの表示をカスタマイズ
NRQLの値からアイコンの色を変更することができます。例ではcount数が2以上の場合、赤色にアイコンを変更する設定を入れています。
ImageURLを設定することで独自のアイコンを付与することも出来ます。
まとめ
IPアドレスから抽出した位置情報をマップ上に描写してダッシュボードに加える手順の流れを紹介させていただきました。マップ上に描写するだけではなく、特定のしきい値を超えたロケーションの色を変更したり、画像で強調することが出来るため、例えば同一IPアドレスから異常なアクセス数があった際に強調しておくことで、「怪しいアクセス元から攻撃を受けてるかもしれない」など、視覚的に気付くことができるようになります。
最新のアップデートの詳細はこちら。
New Relic アップデート
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!