概要
2023年3月のアップデートでNew Relicに送ったログに含まれているIPアドレスからGeo情報を抽出することが出来るようになりました。Geo情報がわかることで、どの国・地域からのアクセスが多いのかの傾向分析や、その傾向から不正アクセス元の把握などが出来るようになります。
便利な機能なので試してみます!!
このアップデートの詳細はこちら。
New Relic アップデート(2023年3月)
New Relic アップデート
仕組みについて
システムがIPv4アドレスを含むログをNew Relicに送信した場合、IPv4アドレスからGeo情報を特定し、ログにGeo情報を含めることができるようになります。
例として次のログがあるとします。
2015-05-13T23:39:43.945958Z 146.190.212.184
New Relicではログデータの解析パターンを設定することで、構造化されてないログデータから属性(key:valueのペア)を抽出してくれます。
※ログデータの解析パターンの詳細は公式ドキュメントをご確認ください。
今回は、IPv4アドレスがログに含まれていた場合、Geo情報を抽出するログデータの解析パターンを設定します。
%{IP:ip:geo({"lookup":["city","region","countryCode", "latitude","longitude"]})}
New Relicのログデータの解析はGrokパターンを使用しており、SYNTAXの箇所にIPを定義することでIPアドレスをキーに解析を行う動きになっています。
%{SYNTAX:SEMANTIC:geo({"lookup":["city","region","countryCode", "latitude","longitude"]})}
また、SEMANTICの箇所にipと設定することで、ClientIP.lookup名でkey名が設定されます。
New Relicの管理サイトで上記の解析パターンを設定することで、ログは次のように解釈されます。
ip: 146.190.212.184
ip.city: North Bergen
ip.countryCode: US
ip.countryName: United States
ip.latitude: 40.793
ip.longitude: -74.0247
ip.postalCode: 07047
ip.region: NJ
ip.regionName: New Jersey
containerTimestamp:2015-05-13T23:39:43.945958Z
ISO8601_TIMEZONE:Z
取得できるGeo情報について
IPv4アドレスからNew Relicが取得できるGeo情報は以下になります。
city: 都市名
countryCode: 国の略称
countryName: 国名
latitude: 緯度
longitude: 経度
postalCode: 郵便番号、郵便番号など
region: 州、州、または地域の略語
regionName: 州、県、または地域の名前
設定の流れ
NginxのアクセスログからGeo情報を抽出するのを試してみます。
ログデータの解析パターンを設定します。
New Relicの管理サイトにログインし、 「Logs」 -> 「Parsing」 -> 「Create parsing rule」をクリックします。
設定箇所 | 内容 | 設定例 |
---|---|---|
Name | 解析ルールの名前を入力 | GeoIP |
Filed to parse | 解析するフィールド名を指定 | message |
Filter logs based on NRQL | NRQL WHERE句でフィルタリングする設定値を入力 |
application = 'nginx'※Nginxのログだけ解析対象とするように設定 |
ログ解析ルールはNRQLで解析するログを検索しており、上記の設定を書くと以下のNRQLで解析対象のログを検索することになります。
FROM Log SELECT * WHERE `application` = 'nginx'
上記の設定にマッチしたログがNew Relicに取り込まれている場合、「Find matching log」に動的にリストアップされるので選択します。ログが取り込まれてない場合は「Paste log」にログを貼り付けることも可能です。ここで選択したログを使って、作成する解析ルールにマッチするか確認します。
%{IP:ClientIP:geo({"lookup":["city","region","regionName","countryCode","countryName","postalCode","latitude","longitude"]})}
解析ルールにマッチして、Geo情報を取得できていることが確認できます。
NRQLで確認
抽出したGeo情報をNRQLで取り出してみます。
FROM
Log
SELECT
count(*)
WHERE
application = 'nginx' FACET `ClientIP.countryName`
どの国からアクセスが多いのか確認することが出来ました。例えば、このチャートをダッシュボード化することで、リアルタイムにアクセス元の傾向把握ができるようになります。
まとめ
Nginxのアクセスログを例に、簡単にアクセス元IPv4アドレスからGeo情報を抽出できることを紹介させていただきました
簡単に設定できますので是非、ご活用ください!
このアップデートの詳細はこちら。New Relic アップデート(2023年3月)
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!