天天看點

【阿裡雲網站日志分析實踐】通過Log Service日志服務導入MaxCompute分析日志服務收集的日志除了可以被實時查詢外,還可以把日志資料投遞到大資料計算服務MaxCompute(原ODPS),進一步進行個性化BI分析及資料挖掘。通過日志服務投遞日志資料到MaxCompute具有如下優勢:

使用非常簡單。使用者隻需要完成2步配置即可以把日志服務logstore的日志資料遷移到maxcompute中。

避免重複收集工作。由于日志服務的日志收集過程已經完成不同機器上的日志集中化,無需重複在不同機器上收集一遍日志資料後再導入到maxcompute。

充分複用日志服務内的日志分類管理工作。使用者可讓日志服務中不同類型的日志(存在不同logstore中)、不同project的日志自動投遞到不同的maxcompute表格,友善管理及分析maxcompute内的日志資料。

在大部分情況下日志資料在寫入logstore後的0.5~1個小時導入到maxcompute,使用者可以在控制台“投遞任務管理”檢視導入狀态。導入成功後使用者即可在maxcompute内檢視到相關日志資料。

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

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

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

【阿裡雲網站日志分析實踐】通過Log Service日志服務導入MaxCompute分析日志服務收集的日志除了可以被實時查詢外,還可以把日志資料投遞到大資料計算服務MaxCompute(原ODPS),進一步進行個性化BI分析及資料挖掘。通過日志服務投遞日志資料到MaxCompute具有如下優勢:

如上圖,填寫賬号的阿裡雲ak資訊,勾選自動開通項,點選确定,初始化開通需10~20秒左右,請耐心等待。如果已經開通數加及大資料計算服務maxcompute(原odps),将直接跳過該步驟。

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

将樣例日志導入maxcompute,分别定義maxcompute資料列、分區列與日志服務字段的映射關系:

maxcompute列類型

maxcompute列名(可自定義)

maxcompute列類型(可自定義)

日志服務字段名(投遞配置裡填寫)

日志服務字段類型

日志服務字段語義

資料列

log_source

string

__source__

系統保留字段

日志來源的機器ip

log_time

bigint

__time__

日志的unix時間戳(是從1970年1月1日開始所經過的秒數),由使用者日志的time字段計算得到

log_topic

__topic__

日志主題

time

日志内容字段

解析自日志

ip

thread

log_extract_others

__extract_others__

未在配置中進行映射的其它日志内字段會通過key-value序列化到json,該json是一層結構,不支援字段内部json嵌套。

分區列

log_partition_time

__partition_time__

由日志的time字段對齊計算而得,分區粒度可配置,在配置項部分詳述。

status

解析自日志,該字段取值應該是可以枚舉的,保證分區數目不會超出上限。

maxcompute表至少包含一個資料列、一個分區列。 系統保留字段中建議使用__partition_time__,__source__,__topic__。 maxcompute單表有分區數目6萬的限制,分區數超出後無法再寫入資料,是以日志服務導入maxcompute表至多支援3個分區列。請謹慎選擇自定義字段作為分區列,保證其值是可枚舉的。 系統保留字段__extract_others__曆史上曾用名_extract_others_,填寫後者也是相容的。 maxcompute分區列的值不支援”/“等特殊字元,這些是maxcompute的保留字段。 maxcompute分區列取值不支援空,是以映射到分區列的字段必須要在日志裡存在,空分區列的日志會在投遞中被丢棄。

配置好ak後進入到投遞配置頁面,在該頁面需要配置投遞大資料計算服務maxcompute(原odps)的相關内容:

【阿裡雲網站日志分析實踐】通過Log Service日志服務導入MaxCompute分析日志服務收集的日志除了可以被實時查詢外,還可以把日志資料投遞到大資料計算服務MaxCompute(原ODPS),進一步進行個性化BI分析及資料挖掘。通過日志服務投遞日志資料到MaxCompute具有如下優勢:

選項含義:

參數

語義

投遞名稱

自定義一個投遞的名稱,友善後續管理

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時間戳),不同配置下的時間分區列取值如下:

1800

yyyy_mm_dd_hh_mm_00

2016_01_27_20_30_00

yyyy-mm-dd hh:mm

2016-01-27 20:30

yyyymmdd

20160127

3600

yyyymmddhhmm

201601272000

yyyy_mm_dd_hh

2016_01_27_20

請勿使用精确到秒的日期格式:1. 很容易導緻單表的分區數目超過限制(6萬);2. 單次投遞任務的資料分區數目必須在512以内。

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

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

錯誤資訊

建議方案

maxcompute項目空間不存在

在maxcompute控制台中确認配置的maxcompute項目是否存在,如果不存在則需要重新建立或配置。

maxcompute表不存在

在maxcompute控制台中确認配置的maxcompute表是否存在,如果不存在則需要重新建立或配置。

maxcompute項目空間或表沒有向日志服務授權

在maxcompute控制台中确認授權給日志服務賬号的權限是否還存在,如果不存在則需要重新添加上相應權限。

maxcompute錯誤

顯示投遞任務收到的maxcompute錯誤,請參考maxcompute相關文檔或聯系maxcompute團隊解決。日志服務會自動重試最近兩天時間的失敗任務。

日志服務導入字段配置無法比對maxcompute表的列

重新配置maxcompute表格的列與日志服務資料字段的映射配置。

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

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

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

log_extract_others為一個json字元串,如果想擷取該字段的user-agent内容,可以進行如下查詢:

示例供參考,請以maxcompute産品建議為最終标準。

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

在odps項目空間下添加使用者:

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

odps項目空間read/list權限授予:

odps項目空間的表describe/alter/update權限授予:

确認odps授權是否成功:

【阿裡雲網站日志分析實踐】通過Log Service日志服務導入MaxCompute分析日志服務收集的日志除了可以被實時查詢外,還可以把日志資料投遞到大資料計算服務MaxCompute(原ODPS),進一步進行個性化BI分析及資料挖掘。通過日志服務投遞日志資料到MaxCompute具有如下優勢:

繼續閱讀