主頁 > 知識(shí)庫 > 使用goaccess分析nginx日志的詳細(xì)方法

使用goaccess分析nginx日志的詳細(xì)方法

熱門標(biāo)簽:網(wǎng)站建設(shè) 阿里云 智能手機(jī) 硅谷的囚徒呼叫中心 百度競(jìng)價(jià)點(diǎn)擊價(jià)格的計(jì)算公式 檢查注冊(cè)表項(xiàng) 使用U盤裝系統(tǒng) 美圖手機(jī)

最近想用goaccess來分析下nginx日志,但是苦于nginx日志配置格式不是按照正常格式來的,完全是我們按照自己的需求來寫的,所以導(dǎo)致goaccess分析不了,需要自己重新定義下格式;但是網(wǎng)上雖然介紹goaccess的很多,但是大多都是就重避輕,將格式的自定義忽略掉,因此我就來把自定義這塊說下。

GoAccess是一款開源、實(shí)時(shí),運(yùn)行在命令行終端下的web日志分析工具。該工具提供快速、多樣的HTTP狀態(tài)統(tǒng)計(jì),可以令管理員不再糾結(jié)于統(tǒng)計(jì)各類數(shù)據(jù),和繁雜的指令以及一大堆管道/正則表達(dá)式說byebye。

分析nginx日志

GoAccess的多種展示方式
goaccess有多種數(shù)據(jù)可視化的方式,分別為:

命令行輸出格式化數(shù)據(jù)
利用access.log生成靜態(tài)的可視化數(shù)據(jù)
生成實(shí)時(shí)可視化數(shù)據(jù)
注意,如果是編譯安裝且選擇了 –enable-geoip=mmdb的話需要編輯配置文件,并在使用命令的時(shí)候帶上參數(shù) –config-file=/usr/local/etc/goaccess/goaccess.conf,如果是用包管理器安裝的話則不需要

命令行輸出GoAccess
goaccess /var/log/nginx/access.log -c,會(huì)先詢問你數(shù)據(jù)的格式,我這里的日志使用的是第一種。

解析accesslog生成靜態(tài)html
GoAccess還可以解析access.log生成靜態(tài)html,以更加直觀的方式來展示數(shù)據(jù)。

goaccess /var/log/nginx/access.log -o report.html --log-format=COMBINED,之后再使用瀏覽器訪問report.html即可查看報(bào)告,各種數(shù)據(jù)一應(yīng)俱全。

實(shí)時(shí)解析訪問日志
GoAccess除了可以生成靜態(tài)的html文件,還可以生成實(shí)時(shí)網(wǎng)站訪問數(shù)據(jù)!

goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED --real-time-html --config-file=/usr/local/etc/goaccess/goaccess.conf

添加中文支持
Goaccess 1.3之后的版本提供了多語言支持,先在命令行中執(zhí)行 apt install language-pack-zh-hans 安裝中文包,再使用export LANG=zh_CN.UTF-8修改環(huán)境變量,再次使用 goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED --real-time-html --config-file=/usr/local/etc/goaccess/goaccess.conf啟動(dòng)GoAccess可以發(fā)現(xiàn)已經(jīng)是中文界面了。

關(guān)于實(shí)時(shí)模式,可以查看官網(wǎng)的demo https://rt.goaccess.io/?20200209201008

異常退出
如果實(shí)時(shí)模式?jīng)]有正常退出,可能無法再次正常啟動(dòng),GoAccess默認(rèn)使用7890 websocket端口,所以使用lsof -i:7890查看占用該端口的進(jìn)程號(hào)并kill即可。

ssl支持
如果需要在加密連接上輸出實(shí)時(shí)數(shù)據(jù),則需要使用 --ssl-cert= 和 --ssl-key=,我在設(shè)置之后訪問report.html發(fā)現(xiàn)數(shù)據(jù)依舊是靜態(tài)的,突然想起我用了cloudflare cdn,而7890端口并不在cloudflare的支持端口列表里面,所以我使用參數(shù) --ws-url=wss://服務(wù)器域名(我們的瀏覽器會(huì)嘗試與該域名的8443端口見了ws連接):8443 --port=8443 把端口改成了8443。令人沒想到的是,此時(shí)的report.html使用代理鏈接的時(shí)候是可以連接的,并可以查看實(shí)時(shí)信息,而直接連接的時(shí)候依舊是靜態(tài)數(shù)據(jù),tcping一看。

去cloudflare的官網(wǎng)可以發(fā)現(xiàn)如下內(nèi)容

只有端口 80 和 443 可兼容以下服務(wù):

對(duì)于啟用了中國(guó)網(wǎng)絡(luò)的域名的中國(guó)境內(nèi)數(shù)據(jù)中心 HTTP/HTTPS 流量,
也就是說,國(guó)內(nèi)是沒辦法通過cloudflare連接非80/443端口的…

反向代理
但是也不是沒有辦法連接,最后我想到了反向代理的方案。

將啟動(dòng)參數(shù)改為--ws-url=wss://你的域名.com/goaccess --port=7890

修改nginx站點(diǎn)配置文件 /etc/nginx/site-available/default,添加下面內(nèi)容

location /goaccess {
    proxy_redirect off;
    proxy_pass https://127.0.0.1:7890;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;
}

注意,如果你的站點(diǎn)配置文件里面開啟了url重寫,為了避免 /goaccess 受到影響,我們需要把該路徑排除重寫。

把重寫規(guī)則都放到location / 里面去

location / { 
    if (-f $request_filename/index.html){
    rewrite (.*) $1/index.html break;
    }
    if (-f $request_filename/index.php){
    rewrite (.*) $1/index.php;
    }
    if (!-f $request_filename){
    rewrite (.*) /index.php;
    }
} 

下面什么都不需要做

location /goaccess/ {
}

之后重啟nginx,再訪問report.html,發(fā)現(xiàn)左邊齒輪處終于顯示connect了。

如果你只是自己看或者不在意ip暴露,其實(shí)直接使用ip直接連接不走cdn就沒那么麻煩了。

到此這篇關(guān)于使用 goaccess 分析nginx 日志的文章就介紹到這了,更多相關(guān) goaccess 分析nginx 日志內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

標(biāo)簽:山南 黃山 賀州 湘潭 懷化 煙臺(tái) 湖北 通遼

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《使用goaccess分析nginx日志的詳細(xì)方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266