LoginSignup
5
3

New Relicに送ったログに含まれるIPアドレスから位置情報を抽出してみる

Last updated at Posted at 2023-08-21

概要

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」をクリックします。
image.png

ログ解析ルールを設定していきます。
image.png

設定箇所 内容 設定例
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」にログを貼り付けることも可能です。ここで選択したログを使って、作成する解析ルールにマッチするか確認します。
image.png

それでは、解析ルールを作ります。
image.png

%{IP:ClientIP:geo({"lookup":["city","region","regionName","countryCode","countryName","postalCode","latitude","longitude"]})}

解析ルールにマッチして、Geo情報を取得できていることが確認できます。
image.png

NRQLで確認

抽出したGeo情報をNRQLで取り出してみます。

FROM
    Log
    SELECT
        count(*)
    WHERE
        application = 'nginx' FACET `ClientIP.countryName`

どの国からアクセスが多いのか確認することが出来ました。例えば、このチャートをダッシュボード化することで、リアルタイムにアクセス元の傾向把握ができるようになります。
image.png

まとめ

Nginxのアクセスログを例に、簡単にアクセス元IPv4アドレスからGeo情報を抽出できることを紹介させていただきました
簡単に設定できますので是非、ご活用ください!

このアップデートの詳細はこちら。New Relic アップデート(2023年3月)

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

5
3
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
5
3