深入了解Access_log日誌分析

一、Access_log是什麼

在Apache官方文檔中,access log也叫做訪問(access)日誌、HTTP服務器請求日誌,是apache服務器在處理請求時留下的一種記錄,用來記錄訪問了網站的客戶端IP地址、訪問時間、請求的URL、HTTP方法和服務器響應狀態等信息。

簡單來說,由於服務器端不能記錄所有的情況,所以需要記錄重要的日誌信息來監控客戶端行為以及運行狀態。

二、Access_log日誌打印格式

默認情況下,Apache Web服務器訪問日誌格式是由「LogFormat」、「CustomLog」指令組合定義的。

Apache默認日誌格式:Combined Log Format,定義為:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog logs/access_log combined

其中,「%h」 是客戶端IP地址,「%l」 是客戶端身份驗證後關聯的傳輸級別安全信息(常用於SSL/TLS傳輸過程),「%u」 是身份認證用戶,「%t」 是服務器記下時間的時間戳,「%r」 是請求行,包括請求方法、資源定位符和HTTP協議版本, 「%>s」 是服務器響應狀態代碼,「%b」 是HTTP響應中發送的位元組數,「%{Referer}i”是http訪問來源,” %{User-Agent}i”是http用戶代理標識信息。

三、Access_log分析工具

接下來,我們需要考慮的是如何分析access_log。讓我們一起來看看幾個強大的分析工具。

1. awstats

awstats是一個基於Perl的開源工具,可以分析訪問日誌文件,並將其轉換為易於理解的圖表和表格。它可以分析訪問在Web服務器上找到的HTML文件、多媒體文件和其他Web頁面的信息,以及瀏覽次數、每個頁面的訪問頻率等數據。

LogFormat="%host %other %logname %time1 %methodurl %code %bytesd \
%refererquot %uaquot"
LoadPlugin="decodeutfkeys"
LogSeparator=" "
HostAliases="localhost 127.0.0.1"

2. GoAccess

GoAccess是一個快速、實時的日誌文件分析器和交互式查看器,可以在終端中工作。它使用Web日誌文件作為輸入,然後在終端界面或HTML文件中顯示增量式的日誌數據,供管理員分析和監視服務器活動。

sudo apt-get update && sudo apt-get install goaccess
sudo goaccess -f /var/log/nginx/access.log -a -o /usr/share/nginx/html/report.html

3. ELK stack

ELK是Elasticsearch、Logstash和Kibana的縮寫。這是一種強大的基於開源的日誌分析平台,可以將來自各種數據來源的流式數據轉換為可訪問、可搜索、可視化的數據。

input {
  file {
    path => ["/my/nifty/auth/access.log"]
    tags => ['apache-access']
    }
}

filter {
  if "apache-access" in [tags] {
    grok {
      match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
    date {
      match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss ZZ" ]
      locale => en
    }
  }
}

output {
  file {
    path => "/tmp/logstash-apache-access.log"
  }
  elasticsearch {
    index => "apache-access-%{+YYYY.MM.dd}"
  }
}

四、AccessLogin

AccessLogin是一個免費的開源工具,可用於分析Nginx和Apache Web服務器訪問日誌文件。它提供了一個易於使用的Web界面,可以查看統計信息、了解關鍵性能指標、監視客戶端使用情況和快速檢測常見的網絡瓶頸。

下面是accesslogin的安裝和使用方法:

sudo apt-get update
sudo apt-get install git
sudo apt-get install python
sudo apt-get install python-pip
pip install psutil
git clone https://github.com/dmpayton/accesslog.git
cd accesslog && python accesslog.py --help

五、AccessLog Report Success

除了使用上述工具對access log進行分析,我們還可以根據其中的數據生成一些統計報告,以更好地了解客戶端的使用情況。

讓我們生成一個成功的請求報告。首先,我們需要在access log中提取成功的請求和時間戳。下面是腳本的示例:

awk '$9 ~ /200/ { print $7,$9 }' access.log > access.success.log

現在我們可以使用GNUplot 創建一個報告,顯示請求的成功率和時間戳。下面是腳本的示例:

echo '
set autoscale
set terminal png size 600,400
set output "access.png"
set xdata time
set timefmt "%d:%b:%Y:%T"
set xrange ["30/Apr/2018:00:00:00" : "15/May/2018:00:00:00"]
set format x "%d/%m %H:%M"
set xlabel "Date/Time"
set ylabel "HTTP Responses"
set title "Successful HTTP Requests"
plot "access.success.log" using 1:(1) smooth freq with boxes \
       title "Success"
' | gnuplot

六、蘋果手機AccessLog怎麼查看

如果你是蘋果手機用戶,想要查看AccessLog,則需要執行以下步驟:

第1步:開啟設備管理器

在iPhone/iPad或iPod Touch上的「設置」>「開發人員」中將「Device Management」設置為「On」狀態,如下所示:

Settings > Developer > Device Management

第2步:查看日誌

啟動應用程序和操作,將生成相應的日誌。在開發機上使用Xcode,打開「Window」>「Devices and Simulators」,將設備連接到Mac上,在左側下拉菜單中選擇要檢查的設備。在「Device Information」>「View Device Logs」中顯示各種日誌。

七、Access日誌記錄選取

最後,我們需要考慮的是在記錄Access日誌時該選取哪些內容。記錄Access日誌信息可能會影響服務器性能並佔用存儲空間,因此我們應該選擇一些重要的數據來記錄,例如IP地址、時間戳、請求URL和響應狀態等。

下面是一個記錄自定義的Access日誌示例:

LogFormat "%v:%p %h %l %u %{%Y-%m-%d %H:%M:%S}t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" "%{X-Forwarded-For}i"" vhost_combined

CustomLog "/var/log/apache2/vhost.log" vhost_combined

結語

Access_log日誌分析工具的使用可以讓我們更好地了解客戶端的使用情況,從而提高我們的網站性能以及安全性。 希望本文對大家有所幫助。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/154926.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-17 02:37
下一篇 2024-11-17 02:37

相關推薦

  • Cron執行日誌用法介紹

    本文將從多個方面對cron執行日誌進行詳細闡述,包括cron執行日誌的定義、cron執行日誌的產生原因、cron執行日誌的格式以及如何解讀cron執行日誌。 一、定義 Cron是一…

    編程 2025-04-29
  • Hibernate日誌打印sql參數

    本文將從多個方面介紹如何在Hibernate中打印SQL參數。Hibernate作為一種ORM框架,可以通過打印SQL參數方便開發者調試和優化Hibernate應用。 一、通過配置…

    編程 2025-04-29
  • 使用Snare服務收集日誌:完整教程

    本教程將介紹如何使用Snare服務收集Windows服務器上的日誌,並將其發送到遠程服務器進行集中管理。 一、安裝和配置Snare 1、下載Snare安裝程序並安裝。 https:…

    編程 2025-04-29
  • Log4j日誌打印到Systemout.log

    Log4j是Apache的一個強大的日誌組件,可以幫助開發者更好地管理日誌。在Java應用程序中,很多開發者都會選擇使用Log4j來實現日誌輸出。本文將介紹如何使用Log4j將日誌…

    編程 2025-04-28
  • 如何將Linux系統日誌發送到日誌服務器

    本文將介紹如何將Linux系統日誌發送到日誌服務器,以方便管理和監控系統狀態。 一、安裝rsyslog軟件包 rsyslog是Linux系統上默認的系統日誌軟件,用於收集系統事件和…

    編程 2025-04-27
  • SpringBoot如何設置不輸出Info日誌

    本篇文章將帶您了解如何在SpringBoot項目中關閉Info級別日誌輸出。 一、為什麼要關閉Info日誌 在開發中,我們經常會使用Log4j、Logback等框架來輸出日誌信息,…

    編程 2025-04-27
  • 深入解析Vue3 defineExpose

    Vue 3在開發過程中引入了新的API `defineExpose`。在以前的版本中,我們經常使用 `$attrs` 和` $listeners` 實現父組件與子組件之間的通信,但…

    編程 2025-04-25
  • 深入理解byte轉int

    一、位元組與比特 在討論byte轉int之前,我們需要了解位元組和比特的概念。位元組是計算機存儲單位的一種,通常表示8個比特(bit),即1位元組=8比特。比特是計算機中最小的數據單位,是…

    編程 2025-04-25
  • 深入理解Flutter StreamBuilder

    一、什麼是Flutter StreamBuilder? Flutter StreamBuilder是Flutter框架中的一個內置小部件,它可以監測數據流(Stream)中數據的變…

    編程 2025-04-25
  • 深入探討OpenCV版本

    OpenCV是一個用於計算機視覺應用程序的開源庫。它是由英特爾公司創建的,現已由Willow Garage管理。OpenCV旨在提供一個易於使用的計算機視覺和機器學習基礎架構,以實…

    編程 2025-04-25

發表回復

登錄後才能評論