使用GoAccess構建簡單實時日誌分析系統

原文:噼裏啪啦醬的運維博客
ljcccc.com

一、GoAccess基本概述

GoAccess 是一款用於Apache或者Nginx的命令行日誌分析器和交互式查看器。使用這款工具,你不僅可以瀏覽到之前提及的相關數據,還可以通過分析網站服務器日誌來進一步挖掘數據。這一切都是在一個終端窗口實時輸出並且可以輸出在web端可視化的顯示信息。

二、GoAccess主要功能

  • 統計概況,流量消耗等
  • 訪客排名
  • 動態Web請求
  • 靜態web請求,如圖片、樣式表、腳本等。
  • 來路域名
  • 404 錯誤
  • 操作系統
  • 瀏覽器和搜索引擎
  • 主機、DNS和ip地址
  • HTTP 響應代碼
  • 引薦網站
  • 鍵盤佈局
  • 自定義顯示
  • 支持超大日誌(分析速度很快)

GoAccess用法介紹

GoAccess的基本語法如下:

goaccess [ -b ][ -s ][ -e IP_ADDRESS][ - a ] <-f log_file >

參數說明:
    -f – 日誌文件名
    -b – 開啓流量統計,如果希望加快分析速度不建議使用該參數
    -s – 開啓HTTP響應代碼統計
    -a – 開啓用戶代理統計
    -e – 開啓指定IP地址統計,默認禁用
    -p -指定goacces用戶配置文件路徑

GoAccess的安裝(centos)

1/安裝依賴包:

[root@ljcccc ~]# yum install ncurses-devel
[root@ljcccc ~]# wget https://github.com/maxmind/geoip-api-c/releases/download/v1.6.11/GeoIP-1.6.11.tar.gz
[root@ljcccc ~]# tar GeoIP-1.6.11.tar.gz
[root@ljcccc ~]# cd GeoIP-1.6.11
[root@ljcccc ~]# ./configure && make && make install

2/安裝GoAccess

[root@ljcccc ~]# wget https://tar.goaccess.io/goaccess-1.3.tar.gz
[root@ljcccc ~]# tar -xzvf goaccess-1.3.tar.gz
[root@ljcccc ~]# cd goaccess-1.3/
[root@ljcccc goaccess-1.3]# ./configure --enable-utf8 --enable-geoip=legacy

安裝成功.png

[root@ljcccc goaccess-1.3]# make && make install

編譯成功.png

報錯解決辦法:

configure: error: *** Missing development files for the GeoIP library
-----安裝GeoIP依賴(步驟1)
configure: error: *** Missing development libraries for ncursesw
安裝ncursesw:yum install libncursesw5-dev ncurses-libs ncurses-devel

GoAccess的使用

1、修改配置文件

#修改goaccess配置文件
[root@ljcccc ~]# vim /usr/local/etc/goaccess/goaccess.conf 

#修改如下三行(去掉註釋信息)
time-format %H:%M:%S
date-format %d/%b/%Y
#NCSA Combined Log Format
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"

2、指定分析的日誌

[root@ljcccc ~]# goaccess  -f /var/log/nginx/access.log

指定日誌彈出界面.png
回車即可看到當前日誌分析結果
goaccess界面.png

控制檯下的操作方法:
控制檯下的操作方法:
F1 	 	 		主幫助頁面
F5 	 	 		重繪主窗口
q  	 	 		退出
c  	 	 		設置或改變配色方案
1-9			        跳轉到對應的模塊編號
SHIFT + 0-9            激活超過10的模塊
o 	 	 	 	打開當前模塊的詳細試圖
j 	 	 	 	當前模塊向下滾動
k 	 	 	 	當前模塊向上滾動
s 	 	 	 	對模塊排序
/ 	 	 	 	向前在任意{詳細視圖}窗口搜索輸入模式(pattern)
n 	 	 	 	在任意{詳細視圖}窗口中找到下一次出現的位置
t 	 	 	 	跳到第一個條目或屏幕頂端
b 	 	 	 	跳到最後一個條目或者屏幕底部

3、在web端中顯示
使用命令指定配置,將生成的信息保存爲html

#1.測試是否能通過終端直接展示
[root@ljcccc ~]# goaccess -f  /var/log/nginx/access.log -p /usr/local/etc/goaccess/goaccess.conf

#2.將分析結果保存爲HTML
[root@ljcccc ~]# /usr/local/bin/goaccess /var/log/nginx/access.log -o /usr/share/nginx/log/index.html -p /usr/local/etc/goaccess/goaccess.conf

#3.將其加入定時任務
#由於對日誌實時性要求不是非常高,於是寫個小腳本,配置crontab,讓其每隔一段時間轉換一次,也可以實現僞實時性觀察log,如下:
#!/bin/bash
LANG="zh_CN.UTF-8"
/usr/local/bin/goaccess /var/log/nginx/access.log -o /usr/share/nginx/log/index.html -p /usr/local/etc/goaccess/goaccess.conf

#4.然後再將腳本加入到crontab即可
[root@ljcccc ~]# crontab -l
#定時goaccess生成的信息保存爲html
30 * * * * /bin/bash /root/scripts/goaccess.sh

在小腳本中定義:LANG=“zh_CN.UTF-8”,可以讓web界面顯示中文。喜歡看英文的小夥伴也可以不加這。

4.配置一個NGINX虛擬主機,將root指向/usr/share/nginx/log,這樣就可以通過域名去訪問HTML界面
虛擬主機配置.png
輸入域名查看頁面
html頁面.png

GoAccess是一個非常有價值的工具,它能給系統管理員實時提供可視的HTTP 統計分析。雖然GoAccess的默認輸出是標準輸出,但是你也可以將他們保存到JSON,HTML或者CSV文件。這種轉換可以讓 GoAccess在監控和顯示網站服務器的統計數據時更有用。

轉載自:噼裏啪啦醬的運維博客ljcccc.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章