wordpress apache 编程 Firefox mysql php linux nginx 程序员 微软 Android 云计算 java Ubuntu Python 开源 centos Windows google shell

網站訪問日誌統計分析

用戶使用ECS搭建網站,網站的訪問日誌(Nginx,Apache訪問日誌)收集到阿裏雲日誌服務中供查詢。為了從訪問日誌中挖掘出更多價值,日誌服務提供了一個docker鏡像,用於實時統計和展示網站訪問的一系列指標,例如PV,UV,延時,地理,狀態碼,爬蟲,網絡流量等指標。

dashboard

dashboard1

指標

PV

分別以5分鐘、1小時、1天為統計周期,統計每個周期內的日誌總數。

UV

分別以1小時、1天為統計周期,統計每個周期內的ip總數。

頁面

以天為統計周期,統計訪問最多的頁面路徑,以及訪問最多的參數。例如請求/fonts/fontawesome-webfont.woff?v=4.2.0,提取出頁面/fonts/fontawesome-webfont.woff 和參數v = 4.2.0

方法

方法指的是HTTP方法,包括GET,POST,DELETE,PUT等。以小時和天為統計周期,統計每個周期內每個方法的日誌條數。

地理

統計每個IP所屬的省份,展示所選時間段內每個省份的分布圖。

狀態碼

狀態碼指的是HTTP狀態碼,包括200,401,403,500等常見狀態碼。以小時和天為統計周期,統計每個周期內的狀態碼次數。

瀏覽器

瀏覽器分為多個子指標,分別統計每一個子指標出現的次數。包括

終端類型

移動終端
非移動終端
瀏覽器類型

    • chrome
    • safari
    • IE
    • firefox
  • 操作系统

  • 浏览器内核

    • webkit
    • gecko

爬蟲

統計常見的爬蟲訪問量,常見爬蟲包括百度、Google、360、今日頭條。

來源頁

根據referer統計的來源域名,統計來源最高的20個域名。

延時

統計每5分鐘內的網絡請求的延時的平均值和最大值。
統計每天分布最多的延時的分布情況。出現次數較少的延時區間不會加入統計,比如一天內只有一次延時為8s,大部分的延時都在0.3s 到 0.5s之間,那麽只會統計0.3->0.4, 0.4->0.5的延時分布。
流量

以小時為單位,根據request_length字段和response_length字段,統計訪問的入網流量和出網流量的大小。

使用視頻

如何使用網站訪問日誌分析請參照視頻。
Demo地址。
必要條件

Nginx/Apache訪問日誌必須接入到阿裏雲日誌服務
開通日誌服務
開通容器服務(或自己安裝docker鏡像)
有阿裏雲AccessKey可以訪問日誌服務(可以是子帳號)
帳號權限

如果您使用子帳號授權,請參考下邊的權限配置,將${your_project}替換成你的Project名稱,${your_logstore}替換成您的訪問日誌所在的Logstore。

{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "log:Get*",
        "log:List*"
      ],
      "Resource": "acs:log:*:*:project/${your_project}/logstore/${your_logstore}",
      "Effect": "Allow"
    },
    {
      "Action": [
        "log:CreateConsumerGroup",
        "log:ListConsumerGroup",
        "log:ConsumerGroupUpdateCheckPoint",
        "log:ConsumerGroupHeartBeat",
        "log:GetConsumerGroupCheckPoint"
      ],
      "Resource": "acs:log:*:*:project/${your_project}/logstore/${your_logstore}/consumergroup/*",
      "Effect": "Allow"
    }
  ]
}

非必要條件

自建mysql或者RDS(默認使用docker鏡像內的mysql)
實施步驟

實施步驟以Ubuntu系統為例,其他系統請以本文檔做參考

通過容器服務:

訪問日誌接入到阿裏雲日誌服務,具體接入方法請參考阿裏雲日誌服務文檔。
開通容器服務。
在容器服務中創建集群,操作系統選擇ubuntu。
在容器服務中創建應用。

應用名稱輸入dashboard(或自定義)。
部署集群選擇剛剛創建的集群。
點擊“使用鏡像創建”。
點擊選擇鏡像,選擇阿裏雲鏡像,搜索dashboard。選中出現的aliyunlog/dashboard鏡像。
在【web路由規則】中,容器端口輸入80,域名輸入dashboard,點擊“添加”。
點擊確定。
在【服務】中,找到剛剛創建的服務(dashboard,或自定義服務名稱),點擊服務名稱,在出現的基本信息中找到訪問端點,例如訪問端點。
通過ECS安裝鏡像:

 docker pull registry.aliyuncs.com/aliyunlog/access_log_stat_dashboard

docker run --dns 223.5.5.5  -p  80:80  -d registry.aliyuncs.com/aliyunlog/access_log_stat_dashboardaccess_log_stat_dashboard
  1. 在瀏覽器中打開上述URL,開始使用。
    首次打開dashboard,需要使用日誌服務的帳號信息登錄,包括包括region,project ,AccessId, AccessKey。
    登錄完成後,首次使用dashboard要求配置:

    日誌信息。包括region,project ,AccessId, AccessKey,LogStore。比登錄信息多了一個LogStore。
    日誌內容字段映射,docker鏡像為使用一些默認的名稱來描述訪問日誌的一些字段,如果您在接入日誌服務時使用不同的字段名稱,請在這裏做字段映射,保證您的字段的含義能夠被分析程序識別。例如latency字段,假如您接入日誌服務時配置該字段的名稱為request_time,那麽需要在這裏填寫request_time。一段日誌樣例:

192.168.1.101 - - [17/Mar/2016:10:28:30 +0800] "GET /fonts/fontawesome-webfont.woff?v=4.2.0 HTTP/1.1" 0.021 1207 304 0 "https://sls.console.aliyun.com/css/lib.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36"
后台处理key 字段样例
ip 192.168.1.101
method GET
path /fonts/fontawesome-webfont.woff?v=4.2.0
latency 0.021
request_length 1207
status 304
response_length 0
referer https://sls.console.aliyun.com/css/lib.css
user_agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36

高級選項

鏡像計算結果的數據保存在鏡像的mysql中,如果您釋放您的容器,那麽歷史計算結果會丟失,為了保證所有的歷史結果,請您使用自己的mysql:

創建一個mysql用戶,允許這個用戶從docker中訪問這個mysql

grant all privileges on *.* to loguser@'%' identified by '123456789';
flush privileges;
上述用戶名和密碼根據自己的需求自定義
修改/etc/mysql/my.conf ,註釋掉bind-address 0.0.0.0這一行
重啟mysql

sudo service mysql restart
點擊dashboard頁面上方的『計算結果臨時保存在docker容器中,若需永久保存,請更改數據庫』,進入配置mysql。填寫mysql的地址和賬戶信息,點擊【遷移】。

延伸阅读

    评论