408
阿裏雲
投遞日誌到ODPS__logshipper_用戶指南_日誌服務-阿裏雲
日誌服務收集的日誌除了可以被實時查詢外,還可以把日誌數據投遞到大數據計算服務MaxCompute(原ODPS),進一步進行個性化BI分析及數據挖掘。通過日誌服務投遞日誌數據到MaxCompute具有如下優勢:
- 使用非常簡單。用戶隻需要完成2步配置即可以把日誌服務Logstore的日誌數據遷移到MaxCompute中。
- 避免重複收集工作。由於日誌服務的日誌收集過程已經完成不同機器上的日誌集中化,無需重複在不同機器上收集一遍日誌數據後再導入到MaxCompute。
- 充分複用日誌服務內的日誌分類管理工作。用戶可讓日誌服務中不同類型的日誌(存在不同Logstore中)、不同Project的日誌自動投遞到不同的MaxCompute表格,方便管理及分析MaxCompute內的日誌數據。
在大部分情況下日誌數據在寫入Logstore後的0.5~1個小時導入到MaxCompute,用戶可以在控製台“投遞任務管理”查看導入狀態。導入成功後用戶即可在MaxCompute內查看到相關日誌數據。
結合日誌服務的實時消費,投遞日誌數據到MaxCompute的數據通道以及日誌索引功能,可以讓用戶按照不同的場景和需求、以不同的方式複用數據,充分發揮日誌數據的價值。
配置流程
舉例日誌服務的一條日誌如下:
16年01月27日20時50分13秒
10.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信息,勾選自動開通項,點擊確定,初始化開通需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表的普通字段名稱及字段類型 |
分區時間格式 | __partition_time__輸出的日期格式,參考Java SimpleDateFormat |
導入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. 很容易導致單表的分區數目超過限製(6萬);2. 單次投遞任務的數據分區數目必須在512以內。
- 以上分區時間格式是測試通過的樣例,你也可以參考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 |
+------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+
同時,我們強烈推薦客戶直接使用已經與MaxCompute綁定的大數據開發Data IDE來進行可視化的BI分析及數據挖掘,這將提高數據加工的效率。
__partition_time__ 使用方法
使用MaxCompute的字符串比較篩選數據,可以避免全表掃描。比如查詢2016年1月26日一天內日誌數據:
select * from {ODPS_TABLE_NAME} where log_partition_time >= "2015_01_26" and log_partition_time < "2016_01_27";
__extract_others__ 使用方法
log_extract_others為一個json字符串,如果想獲取該字段的user-agent內容,可以進行如下查詢:
select get_json_object(sls_extract_others, "$.user-agent") from {ODPS_TABLE_NAME} limit 10;
- get_json_object是MaxCompute提供的標準UDF。請聯係MaxCompute團隊開通使用該標準UDF的權限。
- 示例供參考,請以MaxCompute產品建議為最終標準。
其它
授予ODPS數據投遞權限
如果在數加平台執行表刪除重建動作,會導致默認授權失效。請手動重新為日誌服務投遞數據授權。
在ODPS項目空間下添加用戶:
ADD USER aliyun$shennong_open@aliyun.com;
shennong_open@aliyun.com 是日誌服務係統賬號(請不要用自己的賬號),授權目的是為了能將數據寫入到ODPS
ODPS項目空間Read/List權限授予:
GRANT Read, List ON PROJECT {ODPS_PROJECT_NAME} TO USER aliyun$shennong_open@aliyun.com;
ODPS項目空間的表Describe/Alter/Update權限授予:
GRANT Describe, Alter, Update ON TABLE {ODPS_TABLE_NAME} TO USER aliyun$shennong_open@aliyun.com;
確認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
可以參考ODPS用戶授權管理指南了解更多細節。
最後更新:2016-11-24 11:23:47
上一篇:
投遞日誌到OSS__logshipper_用戶指南_日誌服務-阿裏雲
下一篇:
索引設置__logsearch_用戶指南_日誌服務-阿裏雲
針對datetime及timestamp數據處理___技術運維問題_開放搜索-阿裏雲
內建函數-上__SQL_大數據計算服務-阿裏雲
獲取作業信息__SDK接口說明_Java版SDK_批量計算-阿裏雲
查詢物理專線列表__高速通道相關接口_API 參考_雲服務器 ECS-阿裏雲
MySQL到DRDS的數據遷移__數據遷移_用戶指南_數據傳輸-阿裏雲
接口簡介__OpenAPI使用手冊_雲監控-阿裏雲
開通批量計算__快速入門_批量計算-阿裏雲
位運算符__運算符_SQL語法參考_雲數據庫 OceanBase-阿裏雲
目標模式__場景製定_使用手冊_性能測試-阿裏雲
性能測試流程指南__性能測試流程體係_性能測試體係_性能測試-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲