Graylog分析Nginx日誌並通過GeoIP2獲取訪問者IP的地理位置信息
阿新 • • 發佈:2018-07-02
克隆 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的地理位置信息