<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          利用GoAccess分析web服務(wù)日志

          共 11399字,需瀏覽 23分鐘

           ·

          2021-04-17 20:45

          目錄

          • 1、GoAccess 是什么

          • 2、為什么要用 GoAccess

          • 3、GoAccess 功能

          • 4、GoAccess 特點(diǎn)

          • 5、安裝 GoAccess

            • 5.1 源碼安裝

            • 5.2 yum 安裝

          • 6、配置

          • 7、使用

            • 7.1 控制臺(tái)模式

            • 7.2 HTML 模式

            • 7.3 守護(hù)進(jìn)程模式

            • 7.4 定時(shí)更新

            • 7.5 處理不斷增長的日志

            • 7.6 其他使用

          • 8、小結(jié)


          1、GoAccess 是什么

          GoAccess 是一款開源的且具有交互視圖界面的實(shí)時(shí) Web 日志分析工具,通過你的 Web 瀏覽器或者 unix 系統(tǒng)下的終端程序(terminal)即可訪問。能為系統(tǒng)管理員提供快速且有價(jià)值的 HTTP 統(tǒng)計(jì),并以在線可視化服務(wù)器的方式呈現(xiàn)。

          2、為什么要用 GoAccess

          GoAccess 被設(shè)計(jì)成快速的并基于終端的日志分析工具。其核心理念是不需要通過 Web 瀏覽器就能快速分析并實(shí)時(shí)查看 Web 服務(wù)器的統(tǒng)計(jì)數(shù)據(jù)(這對(duì)于需要使用 SSH 來對(duì)訪問日志進(jìn)行快速分析或者就是喜歡在終端環(huán)境下工作的人來說是超贊的)。終端輸出僅僅是默認(rèn)的輸出方式,GoAccess 還支持生成完整的實(shí)時(shí) HTML 報(bào)告(這對(duì)分析、監(jiān)控以及數(shù)據(jù)可視化都是極好的),以及 JSON 和 CSV 格式的報(bào)告。

          3、GoAccess 功能

          GoAccess 解析指定的 Web 日志文件并將統(tǒng)計(jì)結(jié)果輸出到 X 終端。功能如下:

          • 通用統(tǒng)計(jì): 此面板展示了幾個(gè)主要指標(biāo),比如:有效和無效請(qǐng)求的數(shù)量,分析這些數(shù)據(jù)所花費(fèi)的時(shí)間,獨(dú)立訪客的情況,請(qǐng)求的文件,靜態(tài)文件(CSS, ICO, JPG 等)的完整 URL,404 錯(cuò)誤,被解析的日志文件的大小以及消耗的帶寬。
          • 獨(dú)立訪客: 此面板按照日期展示了訪問次數(shù),獨(dú)立訪客數(shù),以及累計(jì)消耗的帶寬等指標(biāo)。具有相同 IP,相同訪問時(shí)間,相同的 UserAgent 的 HTTP 請(qǐng)求將會(huì)被識(shí)別為獨(dú)立訪客。默認(rèn)情況下包含了網(wǎng)絡(luò)爬蟲。也可以選擇使用 --date-spec=hr 參數(shù)將按照日期分析修改為按照小時(shí),例如:05/Jun/2016:16 。這對(duì)于希望在小時(shí)級(jí)別去跟蹤每日流量非常有幫助。
          • 請(qǐng)求的文件: 此面板展示服務(wù)器上被請(qǐng)求次數(shù)最多的文件。包含訪問次數(shù),獨(dú)立訪客數(shù),百分比,累計(jì)消耗帶寬,使用的協(xié)議,請(qǐng)求方式。
          • 請(qǐng)求的靜態(tài)文件: 列出請(qǐng)求頻率最高的靜態(tài)文件類型,例如:JPG, CSS, SWF, JS, GIF, 和 PNG, 以及和上一個(gè)面板一樣的其他指標(biāo)。另外靜態(tài)文件可以被添加到配置文件中。
          • 404 或者文件未找到: 展示內(nèi)容與之前的面板類似,但是其數(shù)據(jù)包含了所有未找到的頁面,以及俗稱的 404 狀態(tài)碼。
          • 主機(jī): 此面板展示主機(jī)自身的詳細(xì)信息。能夠很好的發(fā)現(xiàn)不懷好意的爬蟲以及識(shí)別出是誰吃掉了你的帶寬。擴(kuò)展面板將展示更多信息,比如主機(jī)的反向 DNS 解析結(jié)果,主機(jī)所在國家和城市。如果開啟了 參數(shù),選擇想查看的 IP 地址并按回車,將會(huì)顯示 UserAgent 列表。
          • 操作系統(tǒng): 此面板將顯示主機(jī)使用的操作系統(tǒng)的信息。GoAccess 將盡可能嘗試為每一款操作系統(tǒng)提供詳細(xì)的信息。
          • 瀏覽器: 此面板將顯示來訪主機(jī)使用的瀏覽器信息。GoAccess 將盡可能嘗試為每一款瀏覽器提供詳細(xì)的信息。
          • 訪問次數(shù): 此面板按小時(shí)報(bào)告。因此將顯示 24 個(gè)數(shù)據(jù)點(diǎn),每一個(gè)均對(duì)應(yīng)每一天的某一個(gè)小時(shí)。使用 --hour-spec=min 參數(shù)可以設(shè)定為按每十分鐘報(bào)告,并將以 16:4 的格式顯示時(shí)間。這對(duì)發(fā)現(xiàn)服務(wù)器的峰值訪問時(shí)段很有幫助。
          • 虛擬主機(jī): 此面板將顯示從訪問日志中解析出來的不同的虛擬主機(jī)的情況。此面板僅在日志格式中啟用了 %v 參數(shù)時(shí)顯示。
          • 來路 URL: 如果問題主機(jī)通過其他的資源訪問了你的站點(diǎn),以及通過從其他主機(jī)上的鏈接或者跳轉(zhuǎn)到你的站點(diǎn),則這些來路 URL 將會(huì)被顯示在此面板。可以在配置文件中通過 --ignore-panel 開啟此功能。(默認(rèn)關(guān)閉)
          • 來路站點(diǎn): 此面板將僅顯示主機(jī)的部分,而不是完整的 URL。
          • 關(guān)鍵字: 報(bào)告支持用在谷歌搜索,谷歌緩存,谷歌翻譯上使用關(guān)鍵字。目前僅支持通過 HTTP 使用谷歌搜索。可以在配置文件中通過 --ignore-panel 開啟此功能。(默認(rèn)關(guān)閉)
          • 地理位置: 根據(jù) IP 地址判斷地理位置。統(tǒng)計(jì)數(shù)據(jù)按照大洲和國家分組。需要地理位置模塊的支持。
          • HTTP 狀態(tài)碼: 以數(shù)字表示的 HTTP 請(qǐng)求的狀態(tài)編碼。
          • 遠(yuǎn)程用戶(HTTP 驗(yàn)證): 通過 HTTP 驗(yàn)證來確定訪問文檔的權(quán)限。如果文檔沒有被密碼保護(hù)起來,這部分將會(huì)顯示為 “-”。此面板默認(rèn)為開啟,除非在日志格式變量中設(shè)置了參數(shù)%e。

          4、GoAccess 特點(diǎn)

          • 完全實(shí)時(shí): 所有面板以及指標(biāo)均按照指定時(shí)間間隔更新,在終端(Terminal)下是 200ms,HTML 則是每秒。
          • 支持幾乎所有 Web 日志格式: GoAccess 允許任意自定義日志格式。可預(yù)定義的格式包括:Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront, 等等
          • 跟蹤應(yīng)用響應(yīng)時(shí)間: 跟蹤處理請(qǐng)求的時(shí)間消耗。對(duì)于解決站點(diǎn)頁面訪問速度下降非常有用。
          • 增長日志處理: 需要持續(xù)保持?jǐn)?shù)據(jù)?GoAccess 有能力處理在磁盤上以 B+Tree 數(shù)據(jù)庫存儲(chǔ)并且不斷增長的日志。
          • 僅依賴一個(gè)模塊: GoAccess 是用 C 語言編寫的。僅僅需要 ncurses 這一個(gè)模塊即可運(yùn)行。同時(shí) GoAccess 甚至還擁有自己的兼容 RFC6455 協(xié)議的 Web Socket 服務(wù)器。
          • 易于使用: 可以直接運(yùn)行 GoAccess 去處理您的訪問日志文件,僅需選取日志格式然后讓 GoAccess 解析日志內(nèi)容并將統(tǒng)計(jì)結(jié)果展示出來。
          • 訪客畫像: 可以按照小時(shí)或者指定日期確定最慢請(qǐng)求的訪問次數(shù),訪客數(shù)量,帶寬以及其他相關(guān)度量值。
          • 支持虛擬主機(jī): 擁有多個(gè)虛擬主機(jī)?在控制面板中能夠顯示出哪一個(gè)虛擬主機(jī)消耗 Web 服務(wù)器上最多的資源。
          • 配色風(fēng)格可定制化: GoAccess 的配色風(fēng)格十分易于定制化。無論是通過終端,還是僅僅通過簡(jiǎn)單修改 HTML 頁面的層疊樣式表。

          5、安裝 GoAccess

          安裝有兩種方式:源碼編譯安裝和yum安裝 本機(jī)環(huán)境

          # cat /etc/redhat-release
          CentOS Linux release 7.6.1810 (Core)

          5.1 源碼安裝

          下載包并編譯

          # wget -c https://tar.goaccess.io/goaccess-1.4.6.tar.gz
          # tar xf goaccess-1.4.6.tar.gz
          # cd goaccess-1.4.6/
          # ./configure --prefix=/usr/local/goaccess --enable-utf8 --enable-geoip=mmdb --with-openssl

          其中編譯參數(shù)中--enable-geoip

          –enable-geoip=<legacy|mmdb>
          地理位置支持。依賴 MaxMind GeoIP 模塊。legacy 將使用原始 GeoIP 數(shù)據(jù)庫。mmdb 將使用增強(qiáng)版 GeoIP2 數(shù)據(jù)庫

          根據(jù)錯(cuò)誤提示依次解決依賴關(guān)系 報(bào)錯(cuò)一:

          使用--enable-geoip=legacy

          configure: error:
              *** Missing development files for the GeoIP library
          # 安裝依賴
          # yum install -y GeoIP-devel

          使用--enable-geoip=mmdb

          configure: error:
              *** Missing development files for libmaxminddb library.
          # 經(jīng)過測(cè)試,需要從源碼安裝依賴
          # wget -c https://github.com/maxmind/libmaxminddb/releases/download/1.5.2/libmaxminddb-1.5.2.tar.gz
          # tar xf libmaxminddb-1.5.2.tar.gz
          # cd libmaxminddb-1.5.2
          # ./configure && make && make install
          # ldconfig

          報(bào)錯(cuò)二:

          configure: error: *** Missing development libraries for ncursesw
          # yum install -y ncurses-devel

          再次編譯安裝

          # ./configure --prefix=/usr/local/goaccess --enable-utf8 --enable-geoip=mmdb --with-openssl
          ...
          Your build configuration:

            Prefix         : /usr/local/goaccess
            Package        : goaccess
            Version        : 1.4.6
            Compiler flags :  -pthread
            Linker flags   : -lnsl -lncursesw -lmaxminddb -lcrypto -lssl -lpthread
            UTF-8 support  : yes
            Dynamic buffer : no
            Geolocation    : GeoIP2
            Storage method : In-Memory with On-Disk Persistent Storage
            TLS/SSL        : yes
            Bugs           : [email protected]
          # make && make install
          # ls /usr/local/goaccess/
          bin  etc  share

          5.2 yum 安裝

          通過yum安裝可以自動(dòng)的解決依賴問題

          # yum install goaccess -y

          6、配置

          • 配置環(huán)境變量
          # echo "export PATH=/usr/local/goaccess/bin:$PATH" >>/etc/profile
          # source /etc/profile
          # goaccess -V
          GoAccess - 1.4.6.
          For more details visit: https://goaccess.io/
          Copyright (C) 2009-2020 by Gerardo Orellana

          Build configure arguments:
            --enable-utf8
            --enable-geoip=mmdb
            --with-openssl
          • 自定義日志/日期格式

          GoAccess可以解析虛擬的任意Web日志格式。預(yù)定義的選項(xiàng)包括:通用日志格式,聯(lián)合日志格式,包含虛擬主機(jī),W3C格式以及亞馬遜CloudFront(分布式下載)。GoAccess允許任意的自定義格式字符串。

          有兩種方法配置日志格式。最簡(jiǎn)單的方式是運(yùn)行 GoAccess時(shí)使用-c顯示一個(gè)配置窗口。但是這種方式不是永久有效的,因此你需要在配置文件中設(shè)定格式。

          配置文件位于:%sysconfdir%/goaccess.conf 或者~/.goaccessrc注意:%sysconfdir%可能是/etc/, /usr/etc/或者/usr/local/etc/

          time-format參數(shù)time-format后跟隨一個(gè)空格符,指定日志的時(shí)間格式,包含普通字符與特殊格式說明符的任意組合。他們都由百分號(hào)(%)開始。參考 man strftime%T或者%H:%M:%S. 注意: 如果給定的時(shí)間戳以微秒計(jì)算,則必須在 time-format中使用參數(shù)%f

          date-format 參數(shù) date-format 后跟隨一個(gè)空格符,指定日志的日期格式,包含普通字符與特殊格式說明符的任意組合。他們都由百分號(hào) (%)開始。參考 man strftime。注意: 如果給定的時(shí)間戳以微秒計(jì)算,則必須在 time-format中使用參數(shù)%f

          log-format參數(shù)log-format后跟隨一個(gè)空格符或者制表分隔符(\t),用于指定日志字符串格式。

          • 特殊格式說明符

          • %x 匹配 time-format 和 date-format 變量的日期和時(shí)間字段。用于使用時(shí)間戳來代替日期和時(shí)間兩個(gè)獨(dú)立變量的場(chǎng)景。

          • %t 匹配 time-format 變量的時(shí)間字段。

          • %d 匹配 date-format 變量的日期字段。

          • %v 根據(jù) canonical 名稱設(shè)定的服務(wù)器名稱(服務(wù)區(qū)或者虛擬主機(jī))。

          • %e 請(qǐng)求文檔時(shí)由 HTTP 驗(yàn)證決定的用戶 ID。

          • %h 主機(jī)(客戶端 IP 地址,IPv4 或者 IPv6)。

          • %r 客戶端請(qǐng)求的行數(shù)。這些請(qǐng)求使用分隔符(單引號(hào),雙引號(hào))引用的部分可以被解析。否則,需要使用由特殊格式說明符(例如:%m, %U, %q 和 %H)組合格式去解析獨(dú)立的字段。

          • 注意: 既可以使用 %r 獲取完整的請(qǐng)求,也可以使用 %m, %U, %q and %H 去組合你的請(qǐng)求,但是不能同時(shí)使用。

          • %m 請(qǐng)求的方法。

          • %U 請(qǐng)求的 URL。

          • 注意: 如果查詢字符串在 %U 中,則無需使用 %q。但是,如果 URL 路徑中沒有包含任何查詢字符串,則你可以使用 %q 查詢字符串將附加在請(qǐng)求后面。

          • %q 查詢字符串。

          • %H 請(qǐng)求協(xié)議。

          • %s 服務(wù)器回傳客戶端的狀態(tài)碼。

          • %b 回傳客戶端的對(duì)象的大小。

          • %R HTTP 請(qǐng)求的 "Referer" 值。

          • %u HTTP 請(qǐng)求的 "UserAgent" 值。

          • %D 處理請(qǐng)求的時(shí)間消耗,使用微秒計(jì)算。

          • %T 處理請(qǐng)求的時(shí)間消耗,使用帶秒和毫秒計(jì)算。

          • %L 處理請(qǐng)求的時(shí)間消耗,使用十進(jìn)制數(shù)表示的毫秒計(jì)算。

          • %^ 忽略此字段。

          • %~ 繼續(xù)解析日志字符串直到找到一個(gè)非空字符(!isspace)。

          • ~h 在 X-Forwarded-For (XFF) 字段中的主機(jī)(客戶端 IP 地址,IPv4 或者 IPv6)。

          • 修改配置文件

          # vim /usr/local/goaccess/etc/goaccess/goaccess.conf
          time-format %H:%M:%S
          date-format %d/%b/%Y
          log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"

          本文示例用來分析nginx的日志,為了分析的精準(zhǔn)度,配置一下nginxlog_format為通用格式

              log_format  main '$remote_addr - $remote_user [$time_local] "$request" '
                               '$status $body_bytes_sent "$http_cookie" "$http_referer" '
                               '"$http_user_agent" "$http_x_forwarded_for"';

          7、使用

          常用參數(shù)說明

          • -a --agent-list 啟用由主機(jī)用戶代理的列表。為了更快的解析,不啟用該項(xiàng)
          • -d --with-output-resolver 在 HTML/JSON 輸出中開啟 IP 解析,會(huì)使用 GeoIP 來進(jìn)行 IP 解析
          • -f --log-file 需要分析的日志文件路徑
          • -p --config-file 配置文件路徑
          • -o --output 輸出格式,支持 html、json、csv
          • -m --with-mouse 控制面板支持鼠標(biāo)點(diǎn)擊
          • -q --no-query-string 忽略請(qǐng)求的參數(shù)部分
          • --real-time-html 實(shí)時(shí)生成 HTML 報(bào)告
          • --daemonize 守護(hù)進(jìn)程模式,--real-time-html 時(shí)使用

          7.1 控制臺(tái)模式

          # pwd
          /var/log/nginx
          # goaccess -a -d -f nginx_access.log-20191216 -p /usr/local/goaccess/etc/goaccess/goaccess.conf

          控制臺(tái)操作方法按鍵

          • F1 主幫助頁面
          • F5 重繪主窗口
          • q 退出
          • 1-15 跳轉(zhuǎn)到對(duì)應(yīng)編號(hào)的模塊位置
          • o 打開當(dāng)前模塊的詳細(xì)視圖
          • j 當(dāng)前模塊向下滾動(dòng)
          • k 當(dāng)前模塊向上滾動(dòng)
          • s 對(duì)模塊排序
          • / 在所有模塊中搜索匹配
          • n 查找下一個(gè)出現(xiàn)的位置
          • g 移動(dòng)到第一個(gè)模塊頂部
          • G 移動(dòng)到最后一個(gè)模塊底部

          效果如下

          7.2 HTML 模式

          # pwd
          /var/log/nginx
          # goaccess -a -d -f nginx_access.log-20191216 -p /usr/local/goaccess/etc/goaccess/goaccess.conf -o /usr/local/nginx/html/www.ssgeek.com/go-access.html
          Parsing... [9,692] [692/s]s]

          此處生成的html直接定向到了站點(diǎn)目錄下,因此分析并生成html文件后即可進(jìn)行訪問,不多說,此處上大圖!

          7.3 守護(hù)進(jìn)程模式

          使用daemonize模式運(yùn)行,生成實(shí)時(shí)HTML報(bào)告的過程與創(chuàng)建靜態(tài)報(bào)告的過程非常相似,只需要在啟動(dòng)命令后添加--real-time-html--daemonize參數(shù)即可

          # goaccess -a -d -f nginx_access.log-20191216 -p /usr/local/goaccess/etc/goaccess/goaccess.conf -o /usr/local/nginx/html/www.ssgeek.com/go-access.html --real-time-html --daemonize
          Daemonized GoAccess: 13308

          默認(rèn)監(jiān)聽的是 7890 端口,可以使用--port指定端口號(hào)啟動(dòng)后會(huì)提示WebSocket服務(wù)器已準(zhǔn)備接收來自客戶的連接

          # netstat -lntup|grep 7890
          tcp        0      0 0.0.0.0:7890            0.0.0.0:*               LISTEN      13333/goaccess

          如果網(wǎng)站開啟了HTTPS功能,就需要GoAccess啟用openssl,在配置文件goaccess.conf中配置ssl-certssl-key來支持openssl

          # vim /usr/local/goaccess/etc/goaccess/goaccess.conf
          ssl-cert /usr/local/nginx/ca_cert/www.ssgeek.com_chain.crt
          ssl-key /usr/local/nginx/ca_cert/www.ssgeek.com_key.key

          7.4 定時(shí)更新

          也可以通過定時(shí)任務(wù)的方式實(shí)現(xiàn)定時(shí)更新HTML報(bào)表,每 30 分鐘刷新一次

          # crontab -e
          */30 * * * * goaccess -a -d -f nginx_access.log-20191216 -p /usr/local/goaccess/etc/goaccess/goaccess.conf -o /usr/local/nginx/html/www.ssgeek.com/go-access.html

          7.5 處理不斷增長的日志

          處理不斷增長的日志指的是當(dāng)日志按照某些規(guī)則進(jìn)行切割,例如nginx日志每天切割一份的情況。這個(gè)時(shí)候GoAccess通過磁盤B+樹數(shù)據(jù)庫能夠處理不斷增長的日志。工作原理如下:

          • 首先數(shù)據(jù)集必須使用 --keep-db-files, 參數(shù)保存,然后相同的數(shù)據(jù)集可以使用參數(shù) --load-from-disk 載入。
          • 收到新的數(shù)據(jù)(來自管道或者文件)后,將會(huì)被附加到原始數(shù)據(jù)集上。
          • 在任何時(shí)候都保存數(shù)據(jù), 則必須使用 --keep-db-files 參數(shù)。
          • 如果在使用參數(shù) --load-from-disk 時(shí)沒有同時(shí)使用 --keep-db-files 參數(shù),則數(shù)據(jù)庫文件在程序關(guān)閉時(shí)將會(huì)被刪除。

          示例:

          // 上個(gè)月的訪問日志
          goaccess access.log.1 --keep-db-files

          然后,載入

          // 添加這個(gè)月的新日志,并保存為新數(shù)據(jù)
          goaccess access.log --load-from-disk --keep-db-files

          讀取已經(jīng)保存的數(shù)據(jù)(不解析新數(shù)據(jù))

          goaccess --load-from-disk --keep-db-files

          7.6 其他使用

          • 生成 JSON 報(bào)告
          # goaccess -a -d -f nginx_access.log-20191216 -p /usr/local/goaccess/etc/goaccess/goaccess.conf -o json > report.json
          • 生成 CSV 文件
          # goaccess -a -d -f nginx_access.log-20191216 -p /usr/local/goaccess/etc/goaccess/goaccess.conf -o csv > report.csv
          • 實(shí)施過濾和解析
          # tail -f nginx_access.log | goaccess -p /usr/local/goaccess/etc/goaccess/goaccess.conf -
          • 分析多個(gè)文件
          # goaccess -p /usr/local/goaccess/etc/goaccess/goaccess.conf access.log.1 access.log.2

          8、小結(jié)

          以上就是goaccess的常用用法,更多內(nèi)容可以參考goaccess 官方文檔[1]

          參考資料

          [1]

          goaccess官方文檔: https://goaccess.cc/

          瀏覽 77
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  www.色偷偷 | 黄色小视频免费观看 | 日本免费AAA | 国内精品久久久久久 | 国产卡一卡二视频 |