HarmonyOS 鸿蒙Next应用可观测性体系——从 hilog 到全链路监控

HarmonyOS 鸿蒙Next应用可观测性体系——从 hilog 到全链路监控 鸿蒙提供了 hilog、hiAppEvent(应用事件)、FaultLogger(故障日志)、DevEco Profiler(性能分析)四件工具,但它们各自独立,缺少串联。

现实项目中常见的状态是:hilog 只用来 debug 打印,hiAppEvent 没接入,崩溃了靠用户截图反馈,性能问题靠猜。

一个成熟的可观测体系需要回答三个问题:出了什么事(事件采集)、影响了多少人(聚合统计)、根因是什么(归因分析)

7 回复

学习

更多关于HarmonyOS 鸿蒙Next应用可观测性体系——从 hilog 到全链路监控的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


鸿蒙Next应用可观测性体系以hilog为核心日志组件,支持ArkTS/JS高效输出结构化日志。全链路监控基于分布式跟踪(@ohos.distributedTrace)实现端到端调用链追踪,配合@ohos.hiAppEvent采集应用事件,以及HiView聚合性能指标,最终形成从日志采集、链路追踪到指标监控的闭环。

在鸿蒙Next应用中构建可观测体系,核心在于将hiloghiAppEventFaultLoggerDevEco Profiler四者数据打通。目前分开使用确实无法形成闭环。

关键做法:统一TraceId串联全链路

  1. 事件采集:使用hiAppEvent定义业务事件(页面加载、接口调用、异常),替代零散的hilog打印。每次请求或用户操作生成唯一TraceId,通过hiAppEvent.setEventParam携带。

  2. 聚合统计:自定义hiAppEvent事件参数(如错误码、页面路径、设备型号),上报到华为AGC后台,通过看板实现维度聚合,直接回答“影响了多少人”。

  3. 归因分析FaultLogger捕获崩溃时,往日志中注入当前TraceId和关键上下文(从hiAppEvent缓存中读取)。DevEco Profiler抓取性能数据时,同样关联TraceId,实现从用户操作、业务异常到系统侧CPU/内存瓶颈的SQL式回查。

// 示例:统一TraceId注入
import { hiAppEvent, faultLogger } from '@kit.PerformanceAnalysisKit';

const traceId = `trace_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;

// 业务事件采集
hiAppEvent.write({
  domain: "business",
  name: "PageLoadFail",
  params: { traceId, pageUrl, errorCode, duration }
});

// 崩溃时携带TraceId
faultLogger.on("fault", (event) => {
  event.addExtra("traceId", traceId);
});

这套方案不需要额外搭建平台,完全基于鸿蒙Next原生能力,即可实现从崩溃、性能到业务异常的链路穿透。

回到顶部