這篇文章將為大家詳細(xì)講解有關(guān)如何進(jìn)行基于實(shí)時ETL的日志存儲與分析實(shí)踐,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比上杭網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式上杭網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋上杭地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。
我們正處于大數(shù)據(jù)、多樣化數(shù)據(jù)(非結(jié)構(gòu)化)的時代,實(shí)時的機(jī)器數(shù)據(jù)快速產(chǎn)生,做一家數(shù)據(jù)公司的核心之一是如何充分利用好大量日志數(shù)據(jù)。
由此背景,對日志的采集、存儲、分析、管理也提出了更高的挑戰(zhàn),其中包括魚和熊掌的選擇問題:
魚:成本高昂可能導(dǎo)致數(shù)據(jù)被刪除,由此錯過了價值發(fā)現(xiàn)。在數(shù)據(jù)量快速增長的同時,客戶要保留更長時間的日志,還希望在相應(yīng)場景下降低存儲成本一半或更多。
熊掌:實(shí)時數(shù)據(jù)占機(jī)器數(shù)據(jù)的比例逐步增加,在實(shí)時價值越來越受重視的今天,客戶希望繼續(xù)得到交互式、一站式的體驗(yàn)。
魚和熊掌如何得兼?這里討論成本與體驗(yàn)的平衡。
SLS是針對機(jī)器數(shù)據(jù)的一站式服務(wù),為用戶提供快捷的數(shù)據(jù)采集、消費(fèi)、投遞以及查詢分析等功能,提升運(yùn)維、運(yùn)營效率。
我們在服務(wù)眾多客戶的時候,觀察到在很多場景下,伴隨日志量的不斷增長,數(shù)據(jù)呈現(xiàn)出訪問熱度的差異。例如:
機(jī)器指標(biāo)不斷地追加更新,但在監(jiān)控指標(biāo)儀表盤上,新數(shù)據(jù)的訪問頻率遠(yuǎn)超過一天前的數(shù)據(jù)。
排查異常時,研發(fā)人員通過 tail 和 grep 關(guān)注 ERROR/WARN 日志的變化,定位問題往往不需要幾天前的程序日志。
數(shù)據(jù)按業(yè)務(wù)屬性有重要程度之分,大量非生產(chǎn)環(huán)境日志數(shù)據(jù)在7天后被訪問概率很低,而最近的生產(chǎn)日志需要被靈活訪問到。
下面將為大家介紹在 SLS 上兼顧日志數(shù)據(jù)靈活性、經(jīng)濟(jì)性的存儲策略與實(shí)踐。
以 SLB 訪問日志處理為例,一個區(qū)域下的多個實(shí)例數(shù)據(jù)通常存放在一個全量 Logstore 下(10 秒級延遲)。在該 Logstore 上配置數(shù)據(jù)加工作業(yè)實(shí)現(xiàn)數(shù)據(jù)預(yù)處理、按業(yè)務(wù)標(biāo)簽做數(shù)據(jù)流轉(zhuǎn)。
錯誤、高延時的請求,需保證實(shí)時查詢、快速統(tǒng)計(jì)能力,可以規(guī)劃到一個帶 SLS 索引的 Logstore。
其它的所有生產(chǎn)域名請求日志,需要長期存儲以備審計(jì)、合規(guī),可以轉(zhuǎn)儲臨時 Logstore(充當(dāng)橋梁)并投遞到更經(jīng)濟(jì)的存儲。
運(yùn)維數(shù)據(jù)管道往往比較復(fù)雜,SLS 提供的 Serverless 的加工、投遞服務(wù),開箱即用。讓如上方案實(shí)現(xiàn)起來更容易,且具有成本優(yōu)勢。
對于 SLB 七層監(jiān)聽的訪問日志,URI 字段包含高價值的業(yè)務(wù) key-value 字段,UserAgent 字段可以輔助監(jiān)控各個端上的服務(wù)質(zhì)量、穩(wěn)定性。
加工前原日志部分字段:
request_uri: /api/get.convert.v2?fn=callback&url=https%3A%2F%2Fmini.yyrtv.com%2Fr%2F80ba436b763b747d.html%3Ffrom%3D320101%26site%3D1 http_user_agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36
加工 DSL 針對日志規(guī)整、抽取場景做處理:
通過 e_kv 抽取 URI 中的業(yè)務(wù) key-value 對。
通過 ua_parse_all 對 http_user_agent 字符串做自動抽取。
e_kv('request_uri', prefix = 'uri.')e_set('ua', ua_parse_all(v('http_user_agent')))e_json("ua", depth = 1, fmt = 'root')e_drop_fields('ua', '__tag__:__receive_time__')
URI 抽取得到 fn、url 兩個業(yè)務(wù) key-value 對,使用 e_json 函數(shù)對 ua_parse_all 的結(jié)果做進(jìn)一步抽取得到設(shè)備、OS、UA 結(jié)構(gòu)化信息。
加工后結(jié)果字段如下:
uri.fn: callbackuri.url: https%3A%2F%2Fmini.yyrtv.com%2Fr%2F80ba436b763b747d.html%3Ffrom%3D320101%26site%3D1ua.device: {"family": "Other"}ua.os: {"family": "Windows", "major": "7"}ua.user_agent: {"family": "Chrome", "major": "69", "minor": "0", "patch": "3947"}
加工提供算子快速實(shí)現(xiàn)多源的數(shù)據(jù)匯集、同源數(shù)據(jù)的多目標(biāo)分發(fā),支持?jǐn)€批發(fā)送(增加吞吐、利于壓縮存儲)、數(shù)據(jù)寫入異常自動重試。
如下加工 DSL 實(shí)現(xiàn)了:
如果 RS 處理延遲有值且大于5.0秒,或者狀態(tài)碼非200,這部分?jǐn)?shù)據(jù)寫入目標(biāo) debug。
符合正則表達(dá)式的線上域名產(chǎn)生的訪問日志,全部寫入到目標(biāo) product-host。
e_if(op_or(op_and(op_ne(v('upstream_response_time'), '-'), op_ge(ct_float(v('upstream_response_time')), 5.0)), op_ne(v('status'), '200')), e_coutput(name = 'debug')) e_if(e_search('host ~= ".*-prod\.com"'), e_output(name = 'product-host')) e_drop()
源 Logstore 不開啟索引并縮短存儲周期到 1 天,將上述兩段 DSL 保存到一個加工作業(yè)運(yùn)行,數(shù)據(jù)實(shí)時處理后流向兩個下游 Logstore:
debug:存儲周期設(shè)置為 30 天,開啟索引。
product-host:存儲周期設(shè)置為 1 天,開啟 OSS 投遞。
計(jì)算后端服務(wù)器處理延遲超過 60 秒的請求來源 IP 地理分布
SLS 數(shù)據(jù) 投遞到 OSS 數(shù)據(jù)湖上,常見有兩種場景:
1.極低成本存儲
投遞時配置開啟壓縮以降低對象文件大小(日志一般為5~15倍壓縮比),數(shù)據(jù)長期冷存儲甚至可以選擇歸檔存儲類型或低頻訪問存儲類型 OSS bucket。
2.數(shù)據(jù)湖存儲,兼顧中低頻分析
SLS 投遞 OSS 提供行存(json/csv)格式、列存(parquet)格式選擇,可以根據(jù)自定義 key 列表來構(gòu)建文件。
根據(jù)計(jì)算引擎(Spark、DLA 等)的特性,選擇適當(dāng)文件格式,可以在計(jì)算效率和成本之間取得一個平衡。
例如,使用 OSS select 指定對象文件做簡單的數(shù)據(jù)查詢,基于 OSS 的多種存儲、計(jì)算分離實(shí)踐都可以通過 Select 做加速。
多個存儲實(shí)體之間,通過連線可以實(shí)現(xiàn)數(shù)據(jù)的流動分層。
在日志數(shù)據(jù)融合、價值釋放、高效利用的道路上,SLS 數(shù)據(jù)加工、投遞持續(xù)做好管道服務(wù),滿足更多樣化的場景需求。
關(guān)于如何進(jìn)行基于實(shí)時ETL的日志存儲與分析實(shí)踐就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。