前言
我們在使用graylog進行日誌收集的過程中,不難發現有一個展示地理位置的“World Map”可供使用。如果你僅僅只是在下圖中的位置點擊一下,百分之九十九不會給你展示想要的地圖並且會彈出一串紅色報錯信息(剩下的百分之一其實也不會成功^_^)。那麼如何開啓這個“World Map”呢?本文以下內容將做詳細介紹。
配置Geolocation
下載MaxMind City databases
GeoIP2 City Database和 GeoLite2 City Database可以任選一種下載,本次下載GeoLite2 City
數據庫,如下圖:
配置數據庫
1. 解壓下載的壓縮包。
2. 根據你不同的安裝方式,將GeoLite2-City.mmdb
文件放在合適的位置。本人是採用RPM形式安裝的graylog,graylog web界面點擊“System->Configurations”,能夠看到默認文件的放置位置如下圖:
因此將GeoLite2-City.mmdb
放到/etc/graylog/server/
目錄下。
3. 更新Geo-Location Processor。graylog web界面點擊“System->Configurations”,點擊下圖中的“Update”按鈕:
勾選啓用複選框,檢查文件放置位置,點擊“Save”按鈕保存配置。
配置GeoIP Resolver Processors
點擊“Update”按鈕,更新配置:
移動GeoIP Resolver行,將GeoIP解析器設置爲要運行的最後一個消息處理器,並啓用GeoIP Resolver,然後點擊“Save”按鈕保存設置:
測試
至此,配置完成。Graylog將開始尋找 僅包含 IPv4或IPv6地址的字段,並將其地理位置提取到<field>_geolocation
字段中。簡單來講,就是如果你有一個字段field1
的內容僅是ip地址的話,graylog將會根據這個字段的ip將地理位置保存在field1_geolocation
中。
下面我們來測試一下:
1. 點擊“System->Inputs”,新建Raw/Plaintext TCP類型的input。
2. 發送測試消息。
[vagrant@graylogTest1 graylog]$ nc -w2 192.168.2.124 5555 <<< '8.8.8.8'
可看到如下圖所示的效果:
上圖message字段僅包含ip地址,然後graylog就會根據此ip延伸出message_city_name
、message_country_code
、 message_geolocation
三個字段。
倘若你的ip地址並沒有單獨存在在任何一個字段中,那麼你可以使用Extractor將ip給提取出來存爲一個字段,然後graylog就可以確定地理位置了。如下圖中的情況,message字段內容包含9.9.9.9地址,此時就可以創建一個Extractor進行提取。
創建Extractor提取ip
ip地址的格式比較固定,我們可以使用Grok pattern去匹配,Grok pattern已經有現成的匹配ip規則,就省去寫正則了。
完成之後,當我們收到上述消息的時候,出現的效果就是這樣的:
展示地圖
當出現<field>_geolocation
字段後,點擊“World Map”字段即可看到在地圖中的位置。
Graylog官方文檔針對Geolocation有詳細的介紹,本文僅是將跟隨官方文檔進行配置的過程做一個記錄,僅供參考。