Geo Lookup (Map)
Sumo Logic は parse された IPv4 または IPv6 アドレスを地図上の地理的位置と照合できます。地図を作成するために、ルックアップ operator はアドレスの元となった緯度と経度に基づき、parse された IP アドレスを物理的な位置と照合します。緯度と経度の精度は、小数位 5 桁までとなります。
位置情報を持たない IP アドレス (例: 内部アドレス) に対しては Null 値が返されます。
必須フィールド:
- latitude
- longitude
- _count
出力をどこまで具体的にするかに応じて、省略可能なすべてのフィールドを使用したり、それらの一部のみを使用したりできます。
- continent
- country_code
- country_name
- region
- city
- state
- postal_code
- connection_type
- country_cf
- state_cf
- city_cf
これらのデータ フィールドの詳細は、「GeoPoint データ グロッサリ」トピックの「Neustar のドキュメント」を参照してください。
構文
ジオ ルックアップ operator は、lookup で geo://location
というパスを使用して地図を生成します。クエリの構文は次の通りです。
| parse "[ip_fieldname]" as [ip_address]
| lookup latitude, longitude [optional_geo_locator fields]
from geo://location on ip=[ip_address]
| count by latitude, longitude, [other geo_locator fields]
| sort _count
この構文では集計結果が生成されるため、地図をダッシュボードに追加できます。
例
ログ メッセージ例:
2017-12-13 10:29:17,037 -0800 INFO [hostId=prod-frontend-1] [module=SERVICE] [logger=service.endpoint.auth.v1.impl.AuthenticationServiceDelegate [thread=btpool0-8] [remote_ip=67.180.85.25] Successful login for user 'da@users.com', organization: '0000000000000005
サンプル ログ形式と一致するログを使用して次のようなクエリを実行すると:
| parse "remote_ip=*]" as remote_ip
| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = remote_ip
| count by latitude, longitude, country_code, country_name, region, city, postal_code
| sort _count
以下の結果が返されます。
ジオ ルックアップ結果の地図の表示
ログから IP フィールドを抽出するクエリを作成し、IP アドレスをルックアップ テーブルと一致させるための lookup operator と、それぞれの IP アドレスをマップ グラフに反映させるのに使用するジオロケーション フィールドを入力します。
- デフォルトでは、結果は表として表示されます。
- [Aggregates (集計)] タブで [Map (地図)] アイコンをクリックします。地図が表示されます。
- 以下の変更が行えます。
- ズーム スライダを使用して地図の一部を拡大縮小します。または、地図上をクリックしてドラッグすることで拡大したり、別の部分を表示したりできます。
- 地図上のマーカーをクリックして、特定のエリアの IP がどこから来ているかについての詳細を表示します。
- (省略可能) [Add to Dashboard (ダッシュボードに追加)] をクリックして、新しいダッシュボードを作成するか、または既存のダッシュボードに地図を追加します。地図をダッシュボードに追加した後でも、地図を拡大したり、データの詳細を表示したりできます。
null 値の処理
ジオ lookup operator クエリでの不一致を探すには、isNull operator を使用します。
たとえば、次のようなクエリを実行した場合:
| parse "remote_ip=*]" as remote_ip
| lookup country_code from geo://location on ip = remote_ip
| if (isNull(country_code), "unknown", country_code) as country_code
次のような結果が返されます。