專案

一般

配置概況

Dashboard中實作世界地圖

Post created on:2023-10-25
本文操作基於 Graylog V5.1.6

收集包含IP位址的日誌很常見,比如在你的防火牆、Web服務器等,Graylog可以讓我們從日誌中的IP位址提取地理位置資訊,從4.3版本開始,Graylog支援 MaxMind和IPInfo兩種資料庫,用以對IP位址進行地理位置資訊的解析。

HINT:自 2019 年 12 月 30 日起,需要建立帳戶才能取得授權下載 MaxMind 資料庫。更多資訊請參閱 Significant Changes to Accessing and Using GeoLite2 Databases

Lookup Table配置

前往 這裡 下載Maxmind GeoIP地理位置資訊資料庫,然後將資料庫放在Graylog所在的伺服器上,需注意檔案權限以允許Graylog能讀取該檔案,本例中,檔案的位置放置於 /usr/share/graylog/data/data/GeoLite2-City.mmdb

接下來,為Lookup Table建立一個Data Adapter,用來告訴查找表要用哪一個資料庫來解析

替Lookup Table配置緩存

最後一步,將剛設定好的Data Adapter和緩存連結至新建立的Lookup Table

建立管道

基於 利用Content Packs快速建立對Nginx服務日誌的資料分析 的前提之下,我們新增一個pipeline rule(Create Rule),利用上面建立的Lookup Table將IP轉換為相關的地理位置資訊並放入新的日誌欄位裡

rule "GeoIP lookup: remote_addr"

when
  has_field("remote_addr")
then
let geo = lookup("geoip", to_string($message.remote_addr));
set_field("remote_addr_geo_location", geo["coordinates"]);
set_field("remote_addr_geo_country", geo["country"].iso_code);
set_field("remote_addr_geo_city", geo["city"].names.en);
end

於「NGINX JSON Processing」的pipeline中新增一個Stage,用來連結我們剛剛建立好的pipeline rule(GeoIP lookup: remote_addr)

實作世界地圖Widget

前往Search頁面檢查日誌,確認新增的GeoIP欄位已生效

前往Dashboards頁面新增小工具,需要被Group的欄位有「remote_addr_geo_country」(國家)和「remote_addr_geo_location」(座標),透過Mertrics的Function「Count」算出該國家的瀏覽次數,Visualization選擇「World Map」

Reference

  1. HOW TO SET UP GRAYLOG GEOIP CONFIGURATION
  2. Github - GeoLite.mmdb

回到頁首