華為云計算 云知識 華為云云日志服務(wù) HarmonyOS NEXT采集最佳實踐
華為云云日志服務(wù) HarmonyOS NEXT采集最佳實踐

【摘要】 為確保各類應(yīng)用程序能夠在鴻蒙操作系統(tǒng)上實現(xiàn)無縫對接并高效利用 LTS ,LTS SDK進(jìn)行了HarmonyOS 原生適配,可以提升鴻蒙生態(tài)下應(yīng)用的穩(wěn)定性和可靠性。

鴻蒙背景介紹

華為鴻蒙HarmonyOS系統(tǒng)是面向萬物互聯(lián)的全場景分布式操作系統(tǒng),支持手機(jī)、平板、智能穿戴、智慧屏等多種終端設(shè)備運(yùn)行,提供應(yīng)用開發(fā)、設(shè)備開發(fā)的一站式服務(wù)的平臺。2024 年 1 月 18 日正式推出 HarmonyOS NEXT 鴻蒙星河開發(fā)者預(yù)覽,也被稱為“純血”鴻蒙。為了確保這種復(fù)雜系統(tǒng)的穩(wěn)定性和高效運(yùn)行,日志采集成為了開發(fā)和維護(hù)過程中的關(guān)鍵環(huán)節(jié)。

華為云 云日志 服務(wù)介紹

云日志服務(wù)(Log Tank Service,簡稱LTS)用于收集來自主機(jī)和云服務(wù)的日志數(shù)據(jù),通過海量日志數(shù)據(jù)的分析與處理,可以將云服務(wù)和應(yīng)用程序的可用性和性能最大化,為您提供實時、高效、安全的日志處理能力,幫助您快速高效地進(jìn)行實時決策分析、設(shè)備運(yùn)維管理、用戶業(yè)務(wù)趨勢分析等。

 

華為云云云日志業(yè)務(wù)全景圖

為確保各類應(yīng)用程序能夠在鴻蒙操作系統(tǒng)上實現(xiàn)無縫對接并高效利用LTS,LTS SDK進(jìn)行了HarmonyOS 原生適配,可以提升鴻蒙生態(tài)下應(yīng)用的穩(wěn)定性和可靠性。

LTS Harmony SDK介紹

LTS Harmony SDK基于華為終端日志底座進(jìn)行擴(kuò)展,底層適配鴻蒙NDK,核心部分使用ArkTS語言編寫,對性能進(jìn)行了大量優(yōu)化(包括緩存上報、文件存儲、上報策略等),能夠適用于移動端、服務(wù)端等各種場景,LTS Harmony SDK 提供ArkTS 語言原生調(diào)用API,已通過OpenHarmony三方庫中心托管發(fā)布,當(dāng)前支持HarmonyOS NEXT API 12 及以上,僅支持Stage模式。

 

SDK使用最佳實踐

使用前提

使用云日志前,您需要 注冊華為賬號 ,并開通云日志服務(wù)。

確認(rèn)云日志服務(wù)的區(qū)域,請用戶根據(jù)所在的區(qū)域,選擇region。

獲取華為賬號AK/SK。

獲取華為云賬號的項目ID(project ID),步驟參考:請參見“我的憑證>API憑證”。

獲取需要上報到LTS的日志組ID和日志流ID。

 

集成接入SDK

鴻蒙倉庫集成

在終端中運(yùn)行安裝命令。

ohpm install lts_harmony_sdk


在app/oh-package.json5中添加依賴。

dependencies {
    ...
    "lts_harmony_sdk": "0.0.1"
    ...
}

在終端中運(yùn)行以下命令安裝SDK
ohpm install

 

手動集成

下載[日志SDK包]。

下載后解壓到指定目錄。注:直接解壓即可,不需要額外操作。

將解壓后的har靜態(tài)庫文件添加到您的項目工程中。

在app/oh-package.json5中添加依賴。

dependencies {
    ...
    "lts_harmony_sdk": "file:../plugin/LTS_SDK/default/lts_harmony_sdk.har" // HAR包存放地址
    ...
}


在終端中運(yùn)行以下命令使能SDK。

ohpm install


注意事項:SDK包使用語言為ArkTS,只能在ArkTS文件中引入。僅支持SDK11以上版本。

引入依賴模塊

import { LTSSDK, ConfigParam } from 'lts_harmony_sdk';

初始化

初始化代碼示例:

// ArkTS代碼示例
// LTS參數(shù)配置
const config:ConfigParam = {
        // 必填參數(shù)
        region: string,  // 上報region
        projectId: string,  // 華為云項目ID
        groupId: string,  // LTS日志組ID
        streamId: string,  // LTS日志流ID
        // 選填參數(shù)
        url: string,  // 上報地址
        cacheThreshold: number,  // 上報條數(shù)閾值
        timeInterval: number,  // 上報時間閾值
        isReportBackground: boolean // 是否開啟后臺上報
};
// 獲取ApplicationContext
let applicationContext = this.context.getApplicationContext();
 // LTS初始化方法
const ltssdk = new LTSSDK( applicationContext , config)

 

配置參數(shù)說明

參數(shù)名稱

類型

是否必填

默認(rèn)值

描述

projectId

string

必填

-

華為云帳號的項目ID。

accessKey

string

必填

-

華為云帳號的訪問密鑰,簡稱AK。

secretKey

string

必填

-

華為云帳號的秘密訪問密鑰,簡稱SK。

region

string

必填

-

LTS的服務(wù)區(qū)域。

groupId

string

必填

-

LTS的日志組ID。

streamId

string

必填

-

LTS的日志流ID。

url

string

選填

nil

要上報的LTS的公網(wǎng)地址域名,如未設(shè)置,將根據(jù)Regio自動生成鏈接,格式如下:https://lts-access.{region}.myhuaweicloud.com

cacheThreshold

number

選填

200條

當(dāng)本地 數(shù)據(jù)庫 日志存儲條數(shù)達(dá)到該值會觸發(fā)上報,取值范圍為30-1000條。

timeInterval

number

選填

60秒

定時器每隔該值會觸發(fā)上報,取值范圍為1-1800秒。

reportWhenEnterBackgroundEnabled

boolean

選填

YES

是否開啟APP切后臺上報功能。

 

日志上報

Report(content, labels)

說明:采集日志,緩存到本地,當(dāng)緩存條數(shù)達(dá)到閾值時,自動上報。 content參數(shù):日志內(nèi)容,支持Map和Map數(shù)組;鍵值對最多500個;content轉(zhuǎn)JSON字符串最大支持長度為1024*30,超出則被截斷丟棄。

labels參數(shù):日志標(biāo)簽,非必填,value支持String、Number類型;key最大長度為64,支持字母、數(shù)字和下劃線組合,首字符須是字母;如果value是String類型,最大長度為256。鍵值對最多50個。

代碼示例:

const ltssdk = new LTSSDK(applicationContext, config)
let fruit = {
    "fruit_1": "apple",
    "fruit_2": "pear",
    "fruit_3": "banana"
};
let food = { "food_1": "rice" };
let labels = { "date": "2023-10-01"};
let contents = [food, fruit];
ltssdk.report(food);  // 緩存上報單條 不帶標(biāo)簽
ltssdk.report(food, labels);  // 緩存上報單條 帶標(biāo)簽
ltssdk.report(contents); // 緩存上報多條 不帶標(biāo)簽
ltssdk.report(contents, labels); // 緩存上報多條 帶標(biāo)簽

 

ReportImmediately(content, labels)

說明:采集日志,立即上報。 content參數(shù):日志內(nèi)容,支持Map和Map數(shù)組;鍵值對最多500個;Content轉(zhuǎn)JSON字符串最大支持長度為1024*30,超出則被截斷丟棄。

labels參數(shù):日志標(biāo)簽,非必填,value支持String、Number、Map;key最大長度為64,支持字母、數(shù)字和下劃線組合,首字符須是字母;如果value是String類型,最大長度為256。鍵值對最多50個。

代碼示例:

const ltssdk = new LTSSDK(applicationContext , config)
let fruit = {
    "fruit_1": "apple",
    "fruit_2": "pear",
    "fruit_3": "banana"
};
let food = { "food_1": "rice" };
let labels = { "date":"2023-10-01"};
let contents = [food, fruit];
ltssdk.reportImmediately(food);  // 立即上報單條 不帶標(biāo)簽
ltssdk.reportImmediately(food, labels);  // 立即上報單條 帶標(biāo)簽
ltssdk.reportImmediately(contents);  // 立即上報多條 不帶標(biāo)簽
ltssdk.reportImmediately(contents, labels);  // 立即上報多條 帶標(biāo)簽

日志使用場景

應(yīng)用場景1:應(yīng)用運(yùn)維

企業(yè)在日常業(yè)務(wù)運(yùn)維、審計或等保時,需要收集各種類型的日志,常遇到如下痛點(diǎn):

企業(yè)部門多且日志繁雜,日志量大。

云服務(wù)資源種類數(shù)量多,不熟悉監(jiān)控指標(biāo)和運(yùn)維日志,運(yùn)維難度大。

安全合規(guī)要求高,等保合規(guī)要求日志長期存儲,人力不足,維護(hù)成本高。

基于 云日志服務(wù)LTS 可以實現(xiàn):

提供全場景日志接入,全面覆蓋業(yè)務(wù)、應(yīng)用、中間件和基礎(chǔ)設(shè)施,實現(xiàn)快速收集日志。

支持秒級日志查詢和分鐘級日志監(jiān)控,通過配置告警規(guī)則和告警通知,實現(xiàn)分鐘級問題定位和分析。

支持將日志轉(zhuǎn)儲至OBS實現(xiàn)長期保存,滿足網(wǎng)絡(luò)安全要求。

LTS提供解決方案參考如下圖1,可以實現(xiàn)統(tǒng)一收集生產(chǎn)環(huán)境應(yīng)用日志,開發(fā)人員檢索分析日志,運(yùn)維人員基于日志配置告警,實時感知現(xiàn)網(wǎng)業(yè)務(wù),及時發(fā)現(xiàn)并解決故障問題。

1應(yīng)用運(yùn)維解決方案

應(yīng)用場景2:安全合規(guī)

大型企業(yè)的每個業(yè)務(wù)部門都有獨(dú)立的云賬戶實現(xiàn)資源隔離,每個業(yè)務(wù)部門的運(yùn)維人員需要依賴日志監(jiān)控告警實現(xiàn)故障定位分析,同時集團(tuán)安全部門需要統(tǒng)一監(jiān)控日志,因此多賬號的統(tǒng)一日志管理成為企業(yè)痛點(diǎn):

分業(yè)務(wù)獨(dú)立運(yùn)維:客戶每個業(yè)務(wù)模塊都有一個獨(dú)立的賬號做資源隔離,依賴日志服務(wù)配置監(jiān)控告警,快速分析發(fā)現(xiàn)故障并定位根因。

安全部門統(tǒng)一監(jiān)控日志:客戶使用多賬號管理體系,每個業(yè)務(wù)部門有一個獨(dú)立的賬號,安全部門需要匯聚所有日志到一個賬號,并存儲180天以上來滿足法規(guī)要求。

基于云日志服務(wù)LTS可以實現(xiàn):

多賬號獨(dú)立管理:每個賬號獨(dú)立采集各自業(yè)務(wù)的應(yīng)用日志、云服務(wù)日志,資源互相隔離、權(quán)限劃分清晰;借助日志告警配置,90%問題定位控制在10分鐘。

日志數(shù)據(jù)跨賬號集中匯聚:使用LTS的多賬號日志匯聚功能,將各個子賬號的日志復(fù)制一份到統(tǒng)一監(jiān)控賬號,長期存儲180天,便于安全部門集中審計,滿足網(wǎng)絡(luò)安全法規(guī)要求。

LTS提供解決方案參考如下圖2,可以實現(xiàn)統(tǒng)一收集云服務(wù)、應(yīng)用程序日志,支持保存180天以上,滿足《網(wǎng)絡(luò)安全法》、《GDPR》等法律法規(guī)要求。

2安全合規(guī)解決方案

應(yīng)用場景3:運(yùn)營分析

企業(yè)在日常經(jīng)營中,可以上報各種業(yè)務(wù)日志(例如移動端日志、服務(wù)端日志),經(jīng)過規(guī)整、過濾、脫敏、富化等加工處理后,可以融合 大數(shù)據(jù) 平臺、BI工具進(jìn)行業(yè)務(wù)分析,例如獲取頁面的PV、UV、用戶停留時間、交易金額等,用于了解業(yè)務(wù)運(yùn)營狀況、分析用戶行為特征,基于實時的數(shù)據(jù)分析反饋調(diào)整業(yè)務(wù)決策,提升用戶體驗,提升經(jīng)營效率,實現(xiàn)企業(yè)的數(shù)字化轉(zhuǎn)型。

在業(yè)務(wù)分析過程中經(jīng)常遇到如下痛點(diǎn):

移動端數(shù)據(jù)難采集:難以快速采集多種移動端設(shè)備,例如Web瀏覽器、iOS、安卓、鴻蒙、百度小程序、微信小程序、釘釘小程序、快應(yīng)用等多類端側(cè)日志無法快速采集。

數(shù)據(jù)傳輸不可靠:移動端日志數(shù)據(jù)量多且頻繁,傳輸速度慢,也極易出現(xiàn)丟失,對業(yè)務(wù)分析造成一定影響。

數(shù)據(jù)處理不方便:原始數(shù)據(jù)不方便處理,不方便快速與大數(shù)據(jù)平臺實現(xiàn)對接。

云日志服務(wù)LTS支持采集多種移動端日志,融合大數(shù)據(jù)完成業(yè)務(wù)運(yùn)營分析,基于LTS可以實現(xiàn):

端側(cè)日志全面采集接入:集成LTS提供的多種移動端SDK,實現(xiàn)了緩存發(fā)送、異常重試、批量發(fā)送等穩(wěn)定功能,用戶快速集成即可全面采集移動端日志到LTS。

秒級上報,高可靠:端側(cè)采集日志后,經(jīng)傳輸鏈路秒級完成上報,數(shù)據(jù)無丟失,支撐業(yè)務(wù)做完整性分析。

DLIDWS快速對接LTSDLI-Flink簡易集成Connector,定點(diǎn)從LTS實時消費(fèi)日志;LTS日志可快速配置轉(zhuǎn)儲到OBS,供DLI快速從OBS讀取日志;LTS支持直接將結(jié)構(gòu)化日志轉(zhuǎn)儲到DWS。

LTS提供解決方案參考如下圖3,可以對日志結(jié)構(gòu)化解析,基于SQL語法分析日志,生成可視化圖表,并結(jié)合大數(shù)據(jù)平臺幫助企業(yè)進(jìn)一步挖掘數(shù)據(jù)價值,助力企業(yè)數(shù)字化轉(zhuǎn)型。

3運(yùn)營分析解決方案

體驗地址:http://m.cqfng.cn/product/lts.html