1. 程式人生 > >Graylog分析Nginx日誌並通過GeoIP2獲取訪問者IP的地理位置信息

Graylog分析Nginx日誌並通過GeoIP2獲取訪問者IP的地理位置信息

克隆 ecc load 日誌管理 mage 分享 生產 http NPU

簡介:
  • Graylog相對於ELK是較為輕量級的日誌管理平臺
  • Graylog官網:https://www.graylog.org/
    • Graylog-server:Graylog接收來自後端各種應用程序的日誌並提供Web訪問接口
    • Graylog Collector Sidecar:負責收集應用程序日誌並發送至Graylog-server
      • Elasticsearch:用於索引和保存接收到的日誌
      • MongoDB: 負責保存 Graylog 自身的配置信息
      • 通過Graylog來分析Ngnix日誌,獲取訪問者IP,然後使用GeoIP2數據庫分析IP的地理位置
    • 訪問者IP的地理位置信息是以GeoIP免費版GeoLiteCity數據做為篩選條件,分析訪問來源城市,對於我們購買CDN時,具有一定的參考意義

系統環境:

  • 本文不做環境搭建方面的介紹,直接使用docker搭建Graylog環境。
    • CentOS 7.5
    • Graylog-server(服務端,接收日誌) IP:192.168.1.2
    • Graylog Collector Sidecar(後端,收集日誌) IP:192.168.1.3
    • docker-ce 18.03、docker-compose 1.21.2

一、Graylog搭建


#環境方面直接使用docker搭建,若已有graylog請跳過

git clone https://github.com/JyBigBoss/graylog-nginx.git
cd graylog-nginx
vi docker-compose.yml

#請自行修改docker-compose.yml裏面的IP為當前主機IP。
#克隆下來的文件其實就是官方提供的docker安裝文檔中的。
#這裏是因為我需要GeoLiteCity的數據庫,所以編寫了Dockerfile把數據庫放進去了
#官方Docker安裝文檔:http://docs.graylog.org/en/stable/pages/installation/docker.html

docker-compose up -d

#啟動容器

技術分享圖片
技術分享圖片

二、配置Graylog接收Nginx日誌


#打開graylog的web界面,配置input來源以及Collector配置
#瀏覽器訪問:http://192.168.1.2:9000
#默認賬號和密碼都為:admin
#首先要配置input來源,也就是收集日誌來源

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片


#日誌來源配置完成之後開始配置收集日誌的collector
#後端的collectors啟動的時候會通過graylog的api來匹配自身的tags
#匹配tags之後會生成對應的filebeat的配置文件並開始收集日誌

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片


三、配置後端collector收集日誌


yum install -y https://github.com/Graylog2/collector-sidecar/releases/download/0.1.6/collector-sidecar-0.1.6-1.x86_64.rpm

#下載collector安裝包安裝

vi /etc/graylog/collector-sidecar/collector_sidecar.yml

#修改配置文件,需要註意tags和api的路徑

graylog-collector-sidecar install

#前臺啟動collector

head -10 access.log  >>  /var/log/nginx/access.log
#由於我這裏沒有實際的訪問日誌,所以就只能用生產環境的日誌,cat進去,模擬用戶訪問生成訪問日誌

技術分享圖片
技術分享圖片

四、利用GeoLiteCity生成IP地理位置信息


#自行下載GeoLiteCity的數據文件,註意是GeoLite2 City,MaxMind DB 二進制格式的數據庫
#第一步的時候我已經通過Dockerfile把數據文件放進去了
#下載地址:https://dev.maxmind.com/zh-hans/geoip/geoip2/geolite2/

#首先要配置graylog,讓它能夠分析出訪問者的IP
#然後再通過graylog的插件來生成地圖
#這裏使用的正則是Grok的:%{COMMONAPACHELOG}
#配置完成後,graylog就會通過GeoLiteCity數據庫分析出地理位置信息了
#註意:內網的IP是沒有在GeoLiteCity數據庫中的

#我建議是去生產環境拷貝一份access日誌下來測試
#直接把生產環境的日誌cat追加到collector收集的日誌文件就好了

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

Graylog分析Nginx日誌並通過GeoIP2獲取訪問者IP的地理位置信息