1. 程式人生 > >【阿里雲網站日誌分析實踐】通過Log Service日誌服務匯入MaxCompute分析

【阿里雲網站日誌分析實踐】通過Log Service日誌服務匯入MaxCompute分析

  • 使用非常簡單。使用者只需要完成2步配置即可以把日誌服務Logstore的日誌資料遷移到MaxCompute中。
  • 避免重複收集工作。由於日誌服務的日誌收集過程已經完成不同機器上的日誌集中化,無需重複在不同機器上收集一遍日誌資料後再匯入到MaxCompute。
  • 充分複用日誌服務內的日誌分類管理工作。使用者可讓日誌服務中不同型別的日誌(存在不同Logstore中)、不同Project的日誌自動投遞到不同的MaxCompute表格,方便管理及分析MaxCompute內的日誌資料。

在大部分情況下日誌資料在寫入Logstore後的0.5~1個小時匯入到MaxCompute,使用者可以在控制檯“投遞任務管理”檢視匯入狀態。匯入成功後用戶即可在MaxCompute內檢視到相關日誌資料。

結合日誌服務的實時消費,投遞日誌資料到MaxCompute的資料通道以及日誌索引功能,可以讓使用者按照不同的場景和需求、以不同的方式複用資料,充分發揮日誌資料的價值。

配置流程

舉例日誌服務的一條日誌如下:

16012720501310.170.148.237
ip:10.200.98.220
status:200
thread:414579208
time:27/Jan/2016:20:50:13 +0800
url:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=U0UjpekFQOVJW45A&Date=Fri%2C%2028%20Jun%
202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=pD12XYLmGxKQ%2Bmkd6x7hAgQ7b1c%3D HTTP/1.1 user-agent:aliyun-sdk-java



日誌左側的ip、status、thread、time、url、user-agent等是日誌服務資料的欄位名稱,需要在下方配置中應用到。

1.第一步:配置AK&自動開通

首先在日誌服務的控制檯“Logstore列表”點選日誌投遞列“建立ODPS”,即打開了配置AK(注意複製過來不要有空格)來自動開通數加及大資料計算服務MaxCompute(原ODPS)(預設是按量後付費模式,具體參見

MaxCompute計量計費說明)的頁面。配置AK及自動開通如上圖,填寫賬號的阿里雲AK資訊,勾選自動開通項,點選確定,初始化開通需10~20秒左右,請耐心等待。如果已經開通數加及大資料計算服務MaxCompute(原ODPS),將直接跳過該步驟。

目前暫不支援子使用者來投遞大資料計算服務MaxCompute(原ODPS)。

2.第二步:建表&對映資料

資料模型對映

在日誌服務和大資料計算服務MaxCompute(原ODPS)之間同步資料,涉及兩個服務的資料模型對映問題。你可以參考日誌服務日誌資料結構ODPS表瞭解兩種資料結構。

將樣例日誌匯入MaxCompute,分別定義MaxCompute資料列、分割槽列與日誌服務欄位的對映關係:

MaxCompute列型別 MaxCompute列名(可自定義) MaxCompute列型別(可自定義) 日誌服務欄位名(投遞配置裡填寫) 日誌服務欄位型別 日誌服務欄位語義
資料列 log_source string __source__ 系統保留欄位 日誌來源的機器IP
log_time bigint __time__ 系統保留欄位 日誌的Unix時間戳(是從1970年1月1日開始所經過的秒數),由使用者日誌的time欄位計算得到
log_topic string __topic__ 系統保留欄位 日誌主題
time string time 日誌內容欄位 解析自日誌
ip string ip 日誌內容欄位 解析自日誌
thread string thread 日誌內容欄位 解析自日誌
log_extract_others string __extract_others__ 系統保留欄位 未在配置中進行對映的其它日誌內欄位會通過key-value序列化到json,該json是一層結構,不支援欄位內部json巢狀。
分割槽列 log_partition_time string __partition_time__ 系統保留欄位 由日誌的time欄位對齊計算而得,分割槽粒度可配置,在配置項部分詳述。
status string status 日誌內容欄位 解析自日誌,該欄位取值應該是可以列舉的,保證分割槽數目不會超出上限。
  • MaxCompute表至少包含一個數據列、一個分割槽列。
  • 系統保留欄位中建議使用__partition_time__,__source__,__topic__。
  • MaxCompute單表有分割槽數目6萬的限制,分割槽數超出後無法再寫入資料,所以日誌服務匯入MaxCompute表至多支援3個分割槽列。請謹慎選擇自定義欄位作為分割槽列,保證其值是可列舉的。
  • 系統保留欄位__extract_others__歷史上曾用名_extract_others_,填寫後者也是相容的。
  • MaxCompute分割槽列的值不支援”/“等特殊字元,這些是MaxCompute的保留欄位。
  • MaxCompute分割槽列取值不支援空,所以對映到分割槽列的欄位必須要在日誌裡存在,空分割槽列的日誌會在投遞中被丟棄。
投遞配置

配置好AK後進入到投遞配置頁面,在該頁面需要配置投遞大資料計算服務MaxCompute(原ODPS)的相關內容:投遞配置

選項含義:

引數 語義
投遞名稱 自定義一個投遞的名稱,方便後續管理
MaxCompute Project MaxCompute專案名稱,該項預設為新建立的Project,如果已經是MaxCompute老客戶,可以下拉選擇已建立其他Project
MaxCompute Table MaxCompute表名稱,請輸入自定義的新建的MaxCompute表名稱或者選擇已有的MaxCompute表
MaxCompute 普通列 按序,左邊填寫與MaxCompute表資料列相對映的日誌服務欄位名稱,右邊填寫或選擇MaxCompute表的普通欄位名稱及欄位型別
MaxCompute 分割槽列 按序,左邊填寫與MaxCompute表分割槽列相對映的日誌服務欄位名稱,右邊填寫或選擇MaxCompute表的普通欄位名稱及欄位型別
分割槽時間格式
匯入MaxCompute間隔 MaxCompute資料投遞間隔,預設1800,單位:秒
  • 該步會預設為客戶建立好新的MaxCompute Project和Table,其中如果已經是MaxCompute老客戶,可以下拉選擇其他已建立Project。
  • 日誌服務投遞MaxCompute功能按照欄位與列的順序進行對映,修改MaxCompute表列名不影響資料匯入,如更改MaxCompute表schema,請重新配置欄位與列對映關係。
  • 日誌服務資料的一個欄位最多允許對映到一個MaxCompute表的列(資料列或分割槽列),不支援欄位冗餘。
  • __partition_time__ 格式

將日誌時間作為分割槽欄位,通過日期來篩選資料是MaxCompute常見的過濾資料方法。

日誌服務根據日誌time欄位和分割槽時間格式計算出日期作為分割槽列,且為滿足MaxCompute單表分割槽數目的限制,日期分割槽列的值會按照匯入MaxCompute間隔對齊。

舉例來說,日誌提取的time欄位是”27/Jan/2016:20:50:13 +0800”,日誌服務據此計算出保留欄位__time__為1453899013(Unix時間戳),不同配置下的時間分割槽列取值如下:

匯入MaxCompute間隔 分割槽時間格式 __partition_time__
1800 yyyy_MM_dd_HH_mm_00 2016_01_27_20_30_00
1800 yyyy-MM-dd HH:mm 2016-01-27 20:30
1800 yyyyMMdd 20160127
3600 yyyyMMddHHmm 201601272000
3600 yyyy_MM_dd_HH 2016_01_27_20
  1. 請勿使用精確到秒的日期格式:1. 很容易導致單表的分割槽數目超過限制(6萬);2. 單次投遞任務的資料分割槽數目必須在512以內。
  2. 以上分割槽時間格式是測試通過的樣例,你也可以參考Java SimpleDateFormat自己定義日期格式,但是該格式不得包含斜線字元”/“(這是MaxCompute的保留欄位)。
編輯投遞配置

在Logstore列表投遞項,單擊“修改”即可針對之前的配置資訊進行編輯。其中如果想新增列,可以在大資料計算服務MaxCompute(原ODPS)修改投遞的資料表列資訊,則點選“修改”後會載入最新的資料表資訊。

投遞任務管理

在啟動“投遞功能”後,日誌服務後臺會定期啟動離線投遞任務。使用者可以在控制檯上看到這些投遞任務的狀態和錯誤資訊。具體請參考日誌投遞任務管理

如果投遞任務出現錯誤,控制檯上會顯示相應的錯誤資訊:

錯誤資訊 建議方案
MaxCompute專案空間不存在 在MaxCompute控制檯中確認配置的MaxCompute專案是否存在,如果不存在則需要重新建立或配置。
MaxCompute表不存在 在MaxCompute控制檯中確認配置的MaxCompute表是否存在,如果不存在則需要重新建立或配置。
MaxCompute專案空間或表沒有向日志服務授權 在MaxCompute控制檯中確認授權給日誌服務賬號的許可權是否還存在,如果不存在則需要重新新增上相應許可權。
MaxCompute錯誤 顯示投遞任務收到的MaxCompute錯誤,請參考MaxCompute相關文件或聯絡MaxCompute團隊解決。日誌服務會自動重試最近兩天時間的失敗任務。
日誌服務匯入欄位配置無法匹配MaxCompute表的列 重新配置MaxCompute表格的列與日誌服務資料欄位的對映配置。

當投遞任務發生錯誤時,請檢視錯誤資訊,問題解決後可以通過管理控制檯中“日誌投遞任務管理”或SDK來重試失敗任務。

MaxCompute中消費日誌

MaxCompute使用者表中示例資料如下:


| log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status |

+------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+

| 10.170.148.237 | 1453899013 | | 27/Jan/2016:20:50:13 +0800 | 10.200.98.220 | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=U0UjpekFQOVJW45A&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=pD12XYLmGxKQ%2Bmkd6x7hAgQ7b1c%3D HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2016_01_27_20_50 | 200 |

+------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+


__partition_time__ 使用方法

使用MaxCompute的字串比較篩選資料,可以避免全表掃描。比如查詢2016年1月26日一天內日誌資料:

__extract_others__ 使用方法

log_extract_others為一個json字串,如果想獲取該欄位的user-agent內容,可以進行如下查詢:



  1. get_json_object是MaxCompute提供的標準UDF。請聯絡MaxCompute團隊開通使用該標準UDF的許可權。
  2. 示例供參考,請以MaxCompute產品建議為最終標準。

其它

授予ODPS資料投遞許可權

如果在數加平臺執行表刪除重建動作,會導致預設授權失效。請手動重新為日誌服務投遞資料授權。

在ODPS專案空間下新增使用者:

[email protected] 是日誌服務系統賬號(請不要用自己的賬號),授權目的是為了能將資料寫入到ODPS

ODPS專案空間Read/List許可權授予:



ODPS專案空間的表Describe/Alter/Update許可權授予:

確認ODPS授權是否成功:

SHOW GRANTS FOR aliyun$shennong_open@aliyun.com;

A       projects/{ODPS_PROJECT_NAME}: List | Read

A     projects/{ODPS_PROJECT_NAME}/tables/{ODPS_TABLE_NAME}: Describe | Alter | Update

a0d89b2b5b6284b1bc3c6057c38313b752eee0e2 原文連結:
http://click.aliyun.com/m/13929/

相關推薦

阿里網站日誌分析實踐通過Log Service日誌服務匯入MaxCompute分析

使用非常簡單。使用者只需要完成2步配置即可以把日誌服務Logstore的日誌資料遷移到MaxCompute中。 避免重複收集工作。由於日誌服務的日誌收集過程已經完成不同機器上的日誌集中化,無需重複在不同機器上收集一遍日誌資料後再匯入到MaxCompute。 充分複用日誌服務內的日誌分類管理工作。使用者可讓

Nginx(一)安裝 阿里 CentOS 7 yum安裝

目錄 新增Nginx到YUM源 新增CentOS 7 Nginx yum資源庫,開啟終端,使用以下命令: # sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx

阿里ACE成長記第5期分散式鏈路追蹤系統架構設計的經驗分享

【引言】本期由阿里雲ACE(阿里雲開發者社群)&成都檸檬雲網絡技術有限公司資深架構師 曾昌強 為大家分享個人成長經歷與個人專業技術之分散式鏈路追蹤系統架構設計。視訊:https://yq.aliyun.com/live/581 Part 1:成長經歷講述一個不知道什麼叫程式設計的門外漢,如何穿越幾千

阿里總監課第四期時髦的原生應用怎麼寫?

概述應用已經跨入了雲原生的時代。要寫一個時髦的雲原生應用,首先當然要了解什麼是雲原生。CNCF,也就是雲原生計算基金會,作為目前人氣最旺的雲端計算行業協會,在今年6月份給出了雲原生的定義,阿里雲牽頭做了一個官方的翻譯: “雲原生技術有利於各組織在公有云、私有云和混合雲等新型動態環境中,構建和執行可彈性擴充套

web框架zheng學習筆記(三)阿里自定義映象的使用

要想成功執行zheng專案,必須要安裝JDK,Tomcat,Redis,Zookeeper等工具,如果下次再買新的伺服器,又重新安裝這些軟體,阿里雲提供了自定義映象功能,可以快速複製伺服器,免除了再次配置環境的痛苦。 背景: 華東2區有原來的A伺服器,在華北3區新購了B伺服器,想要把A的系統

阿里node.js部署專案到阿里ECS(CentOS 7),並實現nginx域名繫結

一、購買阿里雲伺服器 >方法一 1.1、如果你是學生的話,就可以買阿里雲的學生優惠套餐,才9.5元一個月,挺划算的 1.2、搭建伺服器的系統的話,我選用的是 Centos 7.3系統映象 CentOS(Community Ent

CentOS6.5安裝vncserver實現圖形介面操作阿里ECS安裝桌面成功!

一. 安裝gnome圖形化桌面 #yum groupinstall -y "X Window System" #yum groupinstall -y "Desktop" #yum groupinstall -y "Chinese Support" 二. 安裝vncs

阿里ECSCentos6.5安裝圖形介面

一. 安裝gnome圖形化桌面 (之前有部落格寫的-y在中間 我一直報錯,改了位置對了) #yum groupinstall “X Window System”-y #yum groupinsta

阿里學習筆記解決putty或Xshell遠端無法連線阿里ECS的問題

購買阿里雲後,希望使用putty遠端連線使用,但發現putty報錯網路連線錯誤。 原因:一是CentOS的防火牆阻止連線,參照網上教程關閉防火牆;二是阿里雲的安全規則禁止了遠端SSH連線。 解決辦法:點選左側列表“網路與安全”下的“安全組”,點選“配置規則”,點選右上角“新

阿里WindowsServer2012 配置 Apache+php 環境,通過防火牆開啟8080埠

配置說明:          雲服務商:阿里雲          伺服器os:WindowsServer2012(64bit)          目標:配置Apache2.4+php5.5環境 備註:          由於我租用了阿里雲RDS資料庫所以這裡就不介紹安裝My

阿里MongoDB恢復

來源:資料安全與取證(ID:Cflab_net)原創:Wendy案情簡介本次案件是電信詐騙,嫌疑

使用騰訊阿里配置域名SSL證書

-- 之前使用騰訊雲配置過,一個證書,失敗了。--今天又折騰了很久,好像有點明白;額。--  其實 非常的簡單。先說 騰訊雲的:  在騰訊雲做一個域名申請SSL證書,申請下來之後,下載證書檔案到本地。我使用了一個騰訊雲的伺服器,搭建的是PHP的開發環境:Apache+Ngin

linux下忘記mysql root使用者密碼修改辦法阿里專用

先貼上linux下mysql的幾個重要目錄  安裝路徑不同 可能目錄也不同 不要太死板 Linux MySQL的幾個重要目錄 1、資料庫目錄 /var/lib/mysql/ 2、配置檔案 /usr/share /mysql(mysql.server命令及配置檔案) 3、相關

阿里新品釋出·週刊第9期:實時大資料開發難、運維難、應用難?來,一站解決!

最新發布 DataWorks Stream Studio重磅釋出 2019年5月15日15時,阿里雲DataWorks S

阿里IoT+YF33001.時代大背景下的阿里IoT物聯網的現狀和未來

“未來十到二十年,大家基本已經形成了一個共識,那便是新格局的奠定將由 AI 和物聯網技術來支撐。放眼國內,在這些網際網路巨頭之中,未來真正成為競爭對手廝殺的,阿里和華為是首當其衝,在這兩個領域雙方分別暗自發力,更有各有各的優勢。”--《阿里雲物聯網之路》 物聯網看似簡單的三個字,實現

阿里新品釋出·週刊第12期

點選訂閱新品釋出會! 新產品、新版本、新技術、新功能、價格調整,評論在下方,下期更新!關注更多內容,瞭解更多 最新發布

阿里IoT+YF33002.阿里IoT雲端通訊Alink協議介紹

如果單單隻有MQTT協議,也許很難支撐起阿里這個IoT大廈。Alink協議的出現,不僅僅是資料從感測端搬到雲端,它就如基因圖譜,它勾畫了一個大廈的骨架,有了它,才有了IoT Studio,才有了大資料分析,才有了後續的一切可能。 MQTT從我的角度來說,相當於以前程式設計思想中的面向過程,而Alink 的出

阿里IoT+YF33003. Alink物模型之屬性上傳和下發

【名詞解釋】屬性:裝置的功能模型之一,一般用於描述裝置執行時的狀態,如環境監測裝置所讀取的當前環境溫度等。屬性支援 GET 和 SET 請求方式。應用系統可發起對屬性的讀取和設定請求。 在上一篇文章《阿里雲IoT雲端通訊Alink協議介紹》中,我們已經簡單介紹了Alink屬性相關的知識內容。本篇文章將以實際

阿里IoT+YF33005. Alink物模型之服務下發

名詞解釋:         服務:裝置的功能模型之一,裝置可被外部呼叫的能力或方法,可設定輸入引數和輸出引數。相比於屬性,服務可通過一條指令實現更復雜的業務邏輯,如執行某項特定的任務。    -摘自阿里雲物聯網產品文件。  

阿里IoT+YF33006.物聯網裝置報警配置

       縱然5G時代已經在時代的浪潮中展現出了它的身影,但是就目前的物聯網環境中,網路問題仍舊是一個比較突出的硬傷。眾所周知,在當前的物聯網規劃中,與其說是實現萬物互聯,倒不如說是行業指標資料監控。對於一些特殊行業的指標資料,要求在較短時間內對其相應變化規則作出反