华为云云日志服务 HarmonyOS NEXT采集最佳实践
鸿蒙背景介绍
华为鸿蒙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.使用前提
- 使用云日志前,您需要注册华为账号,并开通云日志服务。
- 确认云日志服务的区域,请用户根据所在的区域,选择region。
- 获取华为账号AK/SK。
- 获取华为云账号的项目ID(project ID),步骤参考:请参见“我的凭证>API凭证”。
- 获取需要上报到LTS的日志组ID和日志流ID。
2.集成接入SDK
鸿蒙仓库集成
- 在终端中运行安装命令
ohpm install lts_harmony_sdk
- 在app/oh-package.json5中添加依赖
dependencies
{
...
"lts_harmony_sdk":
"0.0.1"
...
}
- 在终端中运行以下命令安装SDK
ohpm install
手动集成
- 下载[日志SDK包]
- 下载后解压到指定目录。注:直接解压即可,不需要额外操作
- 将解压后的har静态库文件添加到您的项目工程中
- 在app/oh-package.json5中添加依赖
dependencies
{
...
"lts_harmony_sdk":
"file:../plugin/LTS_SDK/default/lts_harmony_sdk.har" // HAR包存放地址
...
}
- 在终端中运行以下命令使能SDK
ohpm install
注意事项:SDK包使用语言为ArkTS,只能在ArkTS文件中引入。仅支持SDK11以上版本。
- 引入依赖模块
import { LTSSDK, ConfigParam } from 'lts_harmony_sdk';
3.初始化
初始化代码示例:
// ArkTS代码示例 // LTS参数配置 const config:ConfigParam = { // 必填参数 region: string, // 上报region projectId: string, // 华为云项目ID groupId: string, // LTS日志组ID streamId: string, // LTS日志流ID // 选填参数 url: string, // 上报地址 cacheThreshold: number, // 上报条数阈值 timeInterval: number, // 上报时间阈值 isReportBackground: boolean // 是否开启后台上报 }; // 获取ApplicationContext let applicationContext = this.context.getApplicationContext(); // LTS初始化方法 const ltssdk = new LTSSDK( applicationContext , config)
配置参数说明


日志上报
- Report(content, labels)
说明:采集日志,缓存到本地,当缓存条数达到阈值时,自动上报。 content参数:日志内容,支持Map和Map数组;键值对最多500个;content转JSON字符串最大支持长度为1024*30,超出则被截断丢弃。
labels参数:日志标签,非必填,value支持String、Number类型;key最大长度为64,支持字母、数字和下划线组合,首字符须是字母;如果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); // 缓存上报单条 不带标签 ltssdk.report(food, labels); // 缓存上报单条 带标签 ltssdk.report(contents); // 缓存上报多条 不带标签 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个。
代码示例:
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); // 立即上报单条 不带标签 ltssdk.reportImmediately(food, labels); // 立即上报单条 带标签 ltssdk.reportImmediately(contents); // 立即上报多条 不带标签 ltssdk.reportImmediately(contents, labels); // 立即上报多条 带标签
日志使用场景
应用场景1:应用运维
企业在日常业务运维、审计或等保时,需要收集各种类型的日志,常遇到如下痛点:
- 企业部门多且日志繁杂,日志量大。
- 云服务资源种类数量多,不熟悉监控指标和运维日志,运维难度大。
- 安全合规要求高,等保合规要求日志长期存储,人力不足,维护成本高。
基于云日志服务LTS可以实现:
- 提供全场景日志接入,全面覆盖业务、应用、中间件和基础设施,实现快速收集日志。
- 支持秒级日志查询和分钟级日志监控,通过配置告警规则和告警通知,实现分钟级问题定位和分析。
- 支持将日志转储至OBS实现长期保存,满足网络安全要求。
LTS提供解决方案参考如下图1,可以实现统一收集生产环境应用日志,开发人员检索分析日志,运维人员基于日志配置告警,实时感知现网业务,及时发现并解决故障问题。

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

安全合规解决方案
应用场景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语法分析日志,生成可视化图表,并结合大数据平台帮助企业进一步挖掘数据价值,助力企业数字化转型。

运营分析解决方案
华为云云日志服务 HarmonyOS NEXT采集最佳实践的更多相关文章
- 基于ABP落地领域驱动设计-04.领域服务和应用服务的最佳实践和原则
目录 系列文章 领域服务 应用服务 学习帮助 系列文章 基于ABP落地领域驱动设计-00.目录和前言 基于ABP落地领域驱动设计-01.全景图 基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践 ...
- Kubernetes Ingress 日志分析与监控的最佳实践
摘要: Ingress主要提供HTTP层(7层)路由功能,是目前K8s中HTTP/HTTPS服务的主流暴露方式.为简化广大用户对于Ingress日志分析与监控的门槛,阿里云容器服务和日志服务将Ingr ...
- Java日志体系(八)最佳实践
java常用日志框架关系 Log4j 2与Log4j 1发生了很大的变化,Log4j 2不兼容Log4j 1. Logback必须配合Slf4j使用.由于Logback和Slf4j是同一个作者,其兼容 ...
- Java 服务 Docker 容器化最佳实践
转载自:https://mp.weixin.qq.com/s/d2PFISYUy6X6ZAOGu0-Kig 1. 概述 当我们在容器中运行 Java 应用程序时,可能希望对其进行调整参数以充分利用资源 ...
- JSR-303 Bean Validation 介绍及 Spring MVC 服务端参数验证最佳实践
任何时候,当要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情. 应用程序必须通过某种手段来确保输入参数在上下文来说是正确的. 分层的应用很多时候同样的数据验证逻辑会出现在不同的层,这样 ...
- 使用日志服务进行Kubernetes日志采集
阿里云容器服务Kubernetes集群集成了日志服务(SLS),您可在创建集群时启用日志服务,快速采集Kubernetes 集群的容器日志,包括容器的标准输出以及容器内的文本文件. 新建 Kubern ...
- 基于AWS的云服务架构最佳实践
ZZ from: http://blog.csdn.net/wireless_com/article/details/43305701 近年来,对于打造高度可扩展的应用程序,软件架构师们挖掘了若干相关 ...
- 日志服务与SIEM(如Splunk)集成方案实战
背景信息 目标 本文主要介绍如何让阿里云日志服务与您的SIEM方案(如Splunk)对接, 以便确保阿里云上的所有法规.审计.与其他相关日志能够导入到您的安全运维中心(SOC)中. 名词解释 LOG( ...
- Standby Redo Logs的前世今生与最佳实践
编辑手记:使用过Data Guard的人应该对于Standby Redo Logs都不陌生,在配置了 Standby Redo Logs的standby中,能够进行日志的实时应用,同时Standby ...
- 基于ABP落地领域驱动设计-05.实体创建和更新最佳实践
目录 系列文章 数据传输对象 输入DTO最佳实践 不要在输入DTO中定义不使用的属性 不要重用输入DTO 输入DTO中验证逻辑 输出DTO最佳实践 对象映射 学习帮助 系列文章 基于ABP落地领域驱动 ...
随机推荐
- C++面试题整理 2
8. C++11新特性又哪些 自动类型推导auto,智能指指针(share_ptr,unique_ptr等),for循环简化,线程相关的(std::thread/std::mutex),空指针null ...
- Python—键盘输入input()语句
用法: 简化写法:
- Spring技术书的代码资源下载
我是清华社编辑,这些资源获得作者授权,免费提供给读者个人学习使用.禁止任何形式的商用. 二维码用微信扫,按提示填写你的邮箱,转到电脑上打开邮箱下载.清华国企网盘,比较快速.安全.放心下载. 百度网盘链 ...
- 基于Python后端构建多种不同的系统终端界面研究
在我们一般开发系统的时候,往往会根据实际需要做出各种不同的系统终端界面,如基于BS的,CS.APP.小程序等等,一般都是基于一个统一接入的Web API后端,本篇系统探寻对基于Python后端构建多种 ...
- Diffusion系列 - DDPM 公式推导 + 代码 -(二)
Denoising Diffusion Probabilistic Model(DDPM)原理 1. 生成模型对比 记 真实图片为 \(x_0\),噪声图片为 \(x_t\),噪声变量 \(z\sim ...
- 嘟嘟牛在线登陆加密分析-RPC调用
加密参数 JADX反编译后搜索代码 user/login 基本可以确定就是从这里发起网络请求 跟进 addRequestMap 方法分析 这一看逻辑就清晰了 先添加一个时间戳,在对sign进行加密后在 ...
- filter 加 indexOf 方法去重数组
let arr = [1, 2, 3, 4, 3, 2, 3, 4, 6, 7, 6] let unique = (arr) => { console.log(arr) return arr.f ...
- 怎么理解vue的单向数据流
单向数据流是父组件传给子组件的数据,子组件没有权利修改,只能委托父组件修改,然后子组件更新
- python将html批量转换为md
一.安装依赖 pip install html2text 代码实现 import os import shutil import html2text def convert_html2md(src_h ...
- DNS域名服务及常用国内DNS服务器地址
DNS域名服务 DNS服务器分类 缓存域名服务器 也称为高速缓存服务器 通过向其他域名服务器查询获得域名 -> IP 地址记录 将域名查询结果缓存到本地,提高重复查询时的速度 主域名服务器 特定 ...