Init – Python數據分析(1)

  • A+
所屬分類:python

1.1.?前言

由于公司業務的發展,在一些產品的功能上面不再滿足于哪些簡簡單單的功能性的主要功能了。也開始考慮一些為產品增添色彩的功能(數據統計)。

當然,產品中的一些基本的統計功能,使用關系型數據庫(MySQL)基本都能解決的。但是當訪問量上來了數據量稍微有了,使用MySQL來承擔報表的工作就顯得有點吃力了。

這時候就不得不從業務和架構上去考慮來做這些報表功能。

1.2.?業務的需求

對于做需求的來說,數據總是需要實時的,他們根本就不理解 '實時' 這兩個字會給系統帶來多大的負擔。

如:用戶對瀏覽過的商品、頁面的瀏覽量

1、(實時)在訪問量小的時候可以使用 MySQL 完全可以解決問題。

2、(實時)在訪問量稍微大了點對系統有點壓力 可以使用 MySQL/Redis + 從庫查詢 來克服對主庫帶來的壓力。

3、(放棄實時,變成準實時)在訪問量真的很大了使用上面的在做統計就有邊的費力了這時候就需要使用其他的方法了。現在有許多的方法可以很好的完成這樣的工作(Strom/Spark/Hadoop)。

1、Strom: 實時流式計算

2、Spark/Pandas: 內存計算

3、Hadoop(M/R): 離線計算

1.3.?正題

今天我們介紹使用 Hadoop(M/R) 框架 和 Pandas 來分析Nginx日志

相關的示例Nginx日志文件在網盤上:

鏈接: https://pan.baidu.com/s/1qYyAyvi?密碼: rnbj

源代碼:https://github.com/daiguadaidai/nginx_log_parse

1.4.?Nginx 日志格式

這邊我將日志分為 7個 部分:

cdn_ip(CDN請求IP):?140.205.127.56

access_time(請求時間):?13/Jun/2016:14:37:04 +0800

request_url(請求的URL): /wp-content/plugins/font-awesome-4-menus/fonts/fontawesome-webfont.woff2

response_status(NG 響應狀態碼):?304

reference_url(外鏈URL):?www.ttmark.com

browser(用戶使用的瀏覽器):?Chrome/42.0.2311.154 Safari/537.36 LBBROWSER

real_ip(用戶真實IP):?60.222.159.45

1.5.?這邊使用Python寫了一個類專門用來解析Nginx日志的

代碼如下:

該類中主要有兩個方法:

  1. parse: 將傳入的字符串解析為有用的 7個 部分
  2. to_dict: 將解析好的7個部分的數據轉化成鍵值對。

1.6.?IP對應地區文件講解

這邊提供了兩種文件

  1. area_ip.sql: ip地址的sql文件,可以直接導入關系型數據庫。
  2. area_ip.csv: 以 tab 分割的IP地址數據

在我們的示例中使用的是 area_ip.csv

area_ip.csv 的數據:

每一個數據中存放的都是一個區域的IP的范圍

以第一行為例

2634:?主鍵

0: 一個區域IP起始數字(一個IP地址可以轉化成一個INT數字)

16777215:?一個區域IP結束數字

0.0.0.0: 一個區域的IP起始地址

0.255.255.255: 一個區域的IP結束地址

IANA:?該IP范圍的所在區域

保留地址:?該IP的運營商是誰

1.7.?我們的目標

我們需要分析出以下幾個結論:

  1. 每天的PV
  2. 一天中哪個時段訪問量比較高
  3. 每個URL被請求了多少次(TOP 100)
  4. 外鏈地址點擊次數(TOP 100)
  5. 瀏覽工具的種類(TOP 100)
  6. CDN IP 數量 (TOP 100)
  7. 真實用戶IP訪問次數(TOP 100)
  8. CDN IP 和 地址(TOP 100)
  9. 真實IP 和 地址(TOP 100)

 

昵稱: HH

QQ: 275258836

ttlsa群交流溝通(QQ群②: 6690706 QQ群③: 168085569 QQ群④: 415230207(新) 微信公眾號: ttlsacom)

感覺本文內容不錯,讀后有收獲?

逛逛衣服店,鼓勵作者寫出更好文章。

weinxin
微信公眾號
掃一掃關注運維生存時間公眾號,獲取最新技術文章~

發表評論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前評論:1   其中:訪客  1   博主  0

    • 心雨 1

      41932a82b1f4354bd81e1ddb80f6f2a7很不錯