华为云云日志服务 HarmonyOS NEXT采集最佳实践

瑞星  金牌会员 | 2025-1-16 03:49:00 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 971|帖子 971|积分 2913

摘要:为确保各类应用步伐能够在鸿蒙操纵系统上实现无缝对接并高效使用LTS,LTS SDK进行了HarmonyOS 原生适配,可以提升鸿蒙生态下应用的稳固性和可靠性。
  
鸿蒙背景介绍

华为鸿蒙HarmonyOS系统是面向万物互联的全场景分布式操纵系统,支持手机、平板、智能穿着、智慧屏等多种终端装备运行,提供应用开发、装备开发的一站式服务的平台。2024 年 1 月 18 日正式推出 HarmonyOS NEXT 鸿蒙星河开发者预览,也被称为“纯血”鸿蒙。为了确保这种复杂系统的稳固性和高效运行,日志采集成为了开发和维护过程中的关键环节。


华为云云日志服务介绍

云日志服务(Log Tank Service,简称LTS)用于网络来自主机和云服务的日志数据,通过海量日志数据的分析与处理,可以将云服务和应用步伐的可用性和性能最大化,为您提供及时、高效、安全的日志处理本领,资助您快速高效地进行及时决策分析、装备运维管理、用户业务趋势分析等。


华为云云云日志业务全景图


为确保各类应用步伐能够在鸿蒙操纵系统上实现无缝对接并高效使用LTS,LTS SDK进行了HarmonyOS 原生适配,可以提升鸿蒙生态下应用的稳固性和可靠性。


LTS Harmony SDK介绍

LTS Harmony SDK基于华为终端日志底座进行扩展,底层适配鸿蒙NDK,核心部分使用ArkTS语言编写,对性能进行了大量优化(包括缓存上报、文件存储、上报策略等),能够实用于移动端、服务端等各种场景,LTS Harmony SDK 提供ArkTS 语言原生调用API,已通过OpenHarmony三方库中央托管发布,当前支持HarmonyOS NEXT API 12 及以上,仅支持Stage模式。


SDK使用最佳实践



1. 使用条件

i. 使用云日志前,您需要注册华为账号,并开通云日志服务。
ii. 确认云日志服务的区域,请用户根据所在的区域,选择region。
iii. 获取华为账号AK/SK。
iv. 获取华为云账号的项目ID(project ID),步骤参考:请拜见“我的凭证>API凭证”。
v. 获取需要上报到LTS的日志组ID和日志流ID。


2. 集成接入SDK

2.1 鸿蒙堆栈集成
· 在终端中运行安装命令。
  1. ohpm install lts_harmony_sdk
  2. · 在app/oh-package.json5中添加依赖。
  3. dependencies {
  4. ...
  5. "lts_harmony_sdk": "0.0.1"
  6. ...
  7. }
  8. 在终端中运行以下命令安装SDK
  9. ohpm install
复制代码
2.2 手动集成

· 下载[日志SDK包]。
· 下载后解压到指定目次。注:直接解压即可,不需要额外操纵。
· 将解压后的har静态库文件添加到您的项目工程中。
· 在app/oh-package.json5中添加依靠。
  1. dependencies {
  2. ...
  3. "lts_harmony_sdk": "file:../plugin/LTS_SDK/default/lts_harmony_sdk.har" // HAR包存放地址
  4. ...
  5. }
  6. · 在终端中运行以下命令使能SDK。
  7. ohpm install
复制代码
注意事项:SDK包使用语言为ArkTS,只能在ArkTS文件中引入。仅支持SDK11以上版本。
引入依靠模块
import { LTSSDK, ConfigParam } from 'lts_harmony_sdk';


3. 初始化

初始化代码示例:
  1. // ArkTS代码示例
  2. // LTS参数配置
  3. const config:ConfigParam = {
  4. // 必填参数
  5. region: string, // 上报region
  6. projectId: string, // 华为云项目ID
  7. groupId: string, // LTS日志组ID
  8. streamId: string, // LTS日志流ID
  9. // 选填参数
  10. url: string, // 上报地址
  11. cacheThreshold: number, // 上报条数阈值
  12. timeInterval: number, // 上报时间阈值
  13. isReportBackground: boolean // 是否开启后台上报
  14. };
  15. // 获取ApplicationContext
  16. let applicationContext = this.context.getApplicationContext();
  17. // LTS初始化方法
  18. const ltssdk = new LTSSDK( applicationContext , config)
复制代码
配置参数说明
参数名称
类型
是否必填
默认值
形貌
projectId
string
必填
-
华为云帐号的项目ID。
accessKey
string
必填
-
华为云帐号的访问密钥,简称AK。
secretKey
string
必填
-
华为云帐号的秘密访问密钥,简称SK。
region
string
必填
-
LTS的服务区域。
groupId
string
必填
-
LTS的日志组ID。
streamId
string
必填
-
LTS的日志流ID。
url
string
选填
nil
要上报的LTS的公网地点域名,如未设置,将根据Regio自动生成链接,格式如下:https://lts-access.{region}.myhuaweicloud.com
cacheThreshold
number
选填
200条
当本地数据库日志存储条数达到该值会触发上报,取值范围为30-1000条。
timeInterval
number
选填
60秒
定时器每隔该值会触发上报,取值范围为1-1800秒。
reportWhenEnterBackgroundEnabled
boolean
选填
YES
是否开启APP切背景上报功能。


3.1 日志上报



Report(content, labels)
说明:采集日志,缓存到本地,当缓存条数达到阈值时,自动上报。 content参数:日志内容,支持Map和Map数组;键值对最多500个;content转JSON字符串最大支持长度为1024*30,超出则被截断丢弃。
labels参数:日志标签,非必填,value支持String、Number类型;key最大长度为64,支持字母、数字和下划线组合,首字符须是字母;如果value是String类型,最大长度为256。键值对最多50个。
代码示例:
  1. const ltssdk = new LTSSDK(applicationContext, config)
  2. let fruit = {
  3. "fruit_1": "apple",
  4. "fruit_2": "pear",
  5. "fruit_3": "banana"
  6. };
  7. let food = { "food_1": "rice" };
  8. let labels = { "date": "2023-10-01"};
  9. let contents = [food, fruit];
  10. ltssdk.report(food); // 缓存上报单条 不带标签
  11. ltssdk.report(food, labels); // 缓存上报单条 带标签
  12. ltssdk.report(contents); // 缓存上报多条 不带标签
  13. ltssdk.report(contents, labels); // 缓存上报多条 带标签
复制代码


ReportImmediately(content, labels)

说明:采集日志,立刻上报。 content参数:日志内容,支持Map和Map数组;键值对最多500个;Content转JSON字符串最大支持长度为1024*30,超出则被截断丢弃。
labels参数:日志标签,非必填,value支持String、Number、Map;key最大长度为64,支持字母、数字和下划线组合,首字符须是字母;如果value是String类型,最大长度为256。键值对最多50个。
代码示例:
  1. const ltssdk = new LTSSDK(applicationContext , config)
  2. let fruit = {
  3. "fruit_1": "apple",
  4. "fruit_2": "pear",
  5. "fruit_3": "banana"
  6. };
  7. let food = { "food_1": "rice" };
  8. let labels = { "date":"2023-10-01"};
  9. let contents = [food, fruit];
  10. ltssdk.reportImmediately(food); // 立即上报单条 不带标签
  11. ltssdk.reportImmediately(food, labels); // 立即上报单条 带标签
  12. ltssdk.reportImmediately(contents); // 立即上报多条 不带标签
  13. ltssdk.reportImmediately(contents, labels); // 立即上报多条 带标签
复制代码


日志使用场景



I. 应用场景1:应用运维

企业在一样寻常业务运维、审计或等保时,需要网络各种类型的日志,常遇到如下痛点:
· 企业部分多且日志繁杂,日志量大。
· 云服务资源种类数目多,不熟悉监控指标和运维日志,运维难度大。
· 安全合规要求高,等保合规要求日志长期存储,人力不足,维护成本高。
基于云日志服务LTS可以实现:
· 提供全场景日志接入,全面覆盖业务、应用、中央件和底子设施,实现快速网络日志。
· 支持秒级日志查询和分钟级日志监控,通过配置告警规则和告警关照,实现分钟级问题定位和分析。
· 支持将日志转储至OBS实现长期生存,满足网络安全要求。
LTS提供解决方案参考如下图1,可以实现统一网络生产情况应用日志,开发人员检索分析日志,运维人员基于日志配置告警,及时感知现网业务,及时发现并解决故障问题。


图1应用运维解决方案




II. 应用场景2:安全合规

大型企业的每个业务部分都有独立的云账户实现资源隔离,每个业务部分的运维人员需要依靠日志监控告警实现故障定位分析,同时集团安全部分需要统一监控日志,因此多账号的统一日志管理成为企业痛点:
· 分业务独立运维:客户每个业务模块都有一个独立的账号做资源隔离,依靠日志服务配置监控告警,快速分析发现故障并定位根因。
· 安全部分统一监控日志:客户使用多账号管理体系,每个业务部分有一个独立的账号,安全部分需要汇聚全部日志到一个账号,并存储180天以上来满足法规要求。
基于云日志服务LTS可以实现:
· 多账号独立管理:每个账号独立采集各自业务的应用日志、云服务日志,资源相互隔离、权限划分清楚;借助日志告警配置,90%问题定位控制在10分钟。
· 日志数据跨账号会合汇聚:使用LTS的多账号日志汇聚功能,将各个子账号的日志复制一份到统一监控账号,长期存储180天,便于安全部分会合审计,满足网络安全法规要求。
LTS提供解决方案参考如下图2,可以实现统一网络云服务、应用步伐日志,支持生存180天以上,满足《网络安全法》、《GDPR》等法律法规要求。


图2安全合规解决方案



III. 应用场景3:运营分析

企业在一样寻常经营中,可以上报各种业务日志(比方移动端日志、服务端日志),经过规整、过滤、脱敏、富化等加工处理后,可以融合大数据平台、BI工具进行业务分析,比方获取页面的PV、UV、用户停顿时间、交易金额等,用于相识业务运营状态、分析用户行为特征,基于及时的数据分析反馈调解业务决策,提升用户体验,提升经营服从,实现企业的数字化转型。
在业务分析过程中常常遇到如下痛点:
· 移动端数据难采集:难以快速采集多种移动端装备,比方Web浏览器、iOS、安卓、鸿蒙、百度小步伐、微信小步伐、钉钉小步伐、快应用等多类端侧日志无法快速采集。
· 数据传输不可靠:移动端日志数据量多且频繁,传输速度慢,也极易出现丢失,对业务分析造成一定影响。
· 数据处理不方便:原始数据不方便处理,不方便快速与大数据平台实现对接。
云日志服务LTS支持采集多种移动端日志,融合大数据完成业务运营分析,基于LTS可以实现:
· 端侧日志全面采集接入:集成LTS提供的多种移动端SDK,实现了缓存发送、非常重试、批量发送等稳固功能,用户快速集成即可全面采集移动端日志到LTS。
· 秒级上报,高可靠:端侧采集日志后,经传输链路秒级完成上报,数据无丢失,支持业务做完整性分析。
· DLI和DWS快速对接LTS:DLI-Flink简易集成Connector,定点从LTS及时消费日志;LTS日志可快速配置转储到OBS,供DLI快速从OBS读取日志;LTS支持直接将结构化日志转储到DWS。
LTS提供解决方案参考如下图3,可以对日志结构化解析,基于SQL语法分析日志,生成可视化图表,并结合大数据平台资助企业进一步发掘数据价值,助力企业数字化转型。


图3运营分析解决方案


点击关注,第一时间相识华为云新鲜技术~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

瑞星

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表