From 0e74e3a8b834829b9b9b67fd412f497a9b80b8c1 Mon Sep 17 00:00:00 2001 From: lyj_love_code Date: Wed, 6 Jul 2022 12:44:34 +0800 Subject: [PATCH] add hiview doc and fix hisysevent docs Signed-off-by: lyj_love_code --- .../Hiview_module_data_interaction.png | Bin 0 -> 16099 bytes .../subsys-dfx-hisysevent-logging.md | 215 +++++++++++------- .../subsys-dfx-hisysevent-overview.md | 22 ++ .../subsystems/subsys-dfx-hisysevent.md | 2 + .../subsystems/subsys-dfx-hiview.md | 197 ++++++++++++++++ .../subsystems/subsys-dfx-overview.md | 2 + zh-cn/device-dev/subsystems/subsys-dfx.md | 3 +- 7 files changed, 363 insertions(+), 78 deletions(-) create mode 100644 zh-cn/device-dev/subsystems/figures/Hiview_module_data_interaction.png create mode 100644 zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-overview.md create mode 100644 zh-cn/device-dev/subsystems/subsys-dfx-hiview.md diff --git a/zh-cn/device-dev/subsystems/figures/Hiview_module_data_interaction.png b/zh-cn/device-dev/subsystems/figures/Hiview_module_data_interaction.png new file mode 100644 index 0000000000000000000000000000000000000000..87f67eef3f467d7ac59f2a877ae0e3ac8bb84c07 GIT binary patch literal 16099 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 const std::string &eventName,
 EventType type, Types... keyValues) | 接口功能:记录系统事件。
输入参数:
- domain:事件的相关领域,需要使用预置领域请参考Domain,可自定义领域。自定义领域长度在16个字符以内,有效的字符是0-9、A-Z,以字母开头。
- eventName:事件名,长度在32个字符以内,有效的字符是0-9、A-Z、下划线,以字母开头,不能以下划线结尾。
- type:事件类型,参考EventType。
- keyValues:事件参数键值对,支持基本的数据类型、std::string,以及std::vector<基本类型>、std:vector<std::string>。参数名长度在48个字符以内,有效的字符是0-9、A-Z、下划线,以字母开头,不能以下划线结尾。参数名的个数在32个以内。
返回值:
- 0:系统事件记录成功。
- 负值:系统事件记录失败。 | - - **表5** HiSysEvent::Domain接口介绍 - -| 成员名称 | 描述 | -| -------- | -------- | -| static const std::string AAFWK | 元能力子系统 | -| static const std::string APPEXECFWK | 用户程序框架子系统 | -| static const std::string ACCOUNT | 账号子系统 | -| static const std::string ARKUI | ARKUI子系统 | -| static const std::string AI | AI业务子系统 | -| static const std::string BARRIER_FREE | 无障碍软件服务子系统 | -| static const std::string BIOMETRICS | 生物特征识别服务子系统 | -| static const std::string CCRUNTIME | C/C++运行环境子系统 | -| static const std::string COMMUNICATION | 公共通信子系统 | -| static const std::string DEVELOPTOOLS | 研发工具链子系统 | -| static const std::string DISTRIBUTED_DATAMGR | 分布式数据管理子系统 | -| static const std::string DISTRIBUTED_SCHEDULE | 分布式任务调度子系统 | -| static const std::string GLOBAL | 全球化子系统 | -| static const std::string GRAPHIC | 图形子系统 | -| static const std::string HIVIEWDFX | DFX子系统 | -| static const std::string IAWARE | 本地资源调度管控子系统 | -| static const std::string INTELLI_ACCESSORIES | 智能配件业务子系统 | -| static const std::string INTELLI_TV | 智能电视业务子系统 | -| static const std::string IVI_HARDWARE | 车机专有硬件服务子系统 | -| static const std::string LOCATION | 位置服务子系统 | -| static const std::string MSDP | 综合传感处理平台子系统 | -| static const std::string MULTI_MEDIA | 媒体子系统 | -| static const std::string MULTI_MODAL_INPUT | 多模输入子系统 | -| static const std::string NOTIFICATION | 事件通知子系统 | -| static const std::string POWERMGR | 电源服务子系统 | -| static const std::string ROUTER | 路由器业务子系统 | -| static const std::string SECURITY | 安全子系统 | -| static const std::string SENSORS | 泛Sensor服务子系统 | -| static const std::string SOURCE_CODE_TRANSFORMER | 应用移植子系统 | -| static const std::string STARTUP | 启动恢复子系统 | -| static const std::string TELEPHONY | 电话服务子系统 | -| static const std::string UPDATE | 升级服务子系统 | -| static const std::string USB | USB服务子系统 | -| static const std::string WEARABLE_HARDWARE | 穿戴专有硬件服务子系统 | -| static const std::string WEARABLE_HARDWARE | 穿戴业务子系统 | -| static const std::string OTHERS | 其它 | - - **表6** HiSysEvent::EventType接口介绍 - -| 接口名 | 描述 | -| -------- | -------- | -| FAULT | 故障类型事件 | -| STATISTIC | 统计类型事件 | -| SECURITY | 安全类型事件 | -| BEHAVIOR | 系统行为事件 | +#### c++接口说明 +c++事件埋点开发能力如下:HiSysEvent类,具体的API详见接口文档 。 -### 开发实例 +**表1** c++事件埋点API接口功能介绍 + +| 接口名 | 描述 | +| ------------------------------------------------------------ | ---------------------- | +| template<typename... Types> 
static int Write(const std::string &domain, const std::string &eventName, EventType type, Types... keyValues) | 将打点事件数据进行落盘 | + + **表2** c++事件类型API接口介绍 + +| 接口名 | 描述 | +| --------- | ------------ | +| FAULT | 故障类型事件 | +| STATISTIC | 统计类型事件 | +| SECURITY | 安全类型事件 | +| BEHAVIOR | 行为类型事件 | + +#### kernel接口说明 + +kernel事件埋点开发能力如下: + +**表3** kernel事件埋点API接口功能介绍 -C++接口实例 +| 接口名 | 描述 | +| ------------------------------------------------------------ | ------------------------------------ | +| struct hiview_hisysevent *hisysevent_create(const char *domain, const char *name, enum hisysevent_type type); | 创建一个事件对象 | +| void hisysevent_destroy(struct hiview_hisysevent *event); | 销毁一个事件对象 | +| int hisysevent_put_integer(struct hiview_hisysevent *event, const char *key, long long value); | 将整数类型的事件参数添加到事件对象 | +| int hisysevent_put_string(struct hiview_hisysevent *event, const char *key, const char *value); | 将字符串类型的事件参数添加到事件对象 | +| int hisysevent_write(struct hiview_hisysevent *event); | 将事件对象数据进行落盘 | -1. 源代码开发 - 在类定义头文件或者类实现源文件中,包含HiSysEvent头文件: +**表4** kernel事件类型API接口介绍 - +| 接口名 | 描述 | +| --------- | ------------ | +| FAULT | 故障类型事件 | +| STATISTIC | 统计类型事件 | +| SECURITY | 安全类型事件 | +| BEHAVIOR | 行为类型事件 | + +### 开发步骤 + +#### c++埋点开发步骤 + +1. 在需要埋点的地方直接调用埋点接口,并传入相应事件参数即可: + + ```c++ + HiSysEvent::Write(HiSysEvent::Domain::AAFWK, "START_APP", HiSysEvent::EventType::BEHAVIOR, "APP_NAME", "com.ohos.demo"); ``` - #include "hisysevent.h" + +#### kernel埋点开发步骤 + +1. 根据事件领域、事件名称、事件类型参数,创建一个基础的事件对象: + + ```c + struct hiview_hisysevent *event = hisysevent_create("KERNEL", "BOOT", BEHAVIOR); ``` - 假设在业务关注应用启动时间start_app,在业务类实现相关源文件中使用(调用接口打点): +2. 将自定义的事件参数,传入到事件对象里: + + ```c + // 添加整数类型参数 + hisysevent_put_integer(event, "BOOT_TIME", 100); - + // 添加字符串类型参数 + hisysevent_put_string(event, "MSG", "This is a test message"); ``` - HiSysEvent::Write(HiSysEvent::Domain::AAFWK, "start_app", HiSysEvent::EventType::FAULT, "app_name", "com.demo"); + +3. 在事件对象构建完成后,将事件进行上报: + + ```c + hisysevent_write(event); ``` -2. 编译设置,在BUILD.gn里增加子系统SDK依赖: - +4. 事件上报完成后,需要手动将对象销毁: + + ```c + hisysevent_destroy(&event); ``` + +### 开发实例 + +#### c++埋点开发实例 + +假设业务模块需要在应用启动时进行埋点来记录应用启动事件,且需要记录应用的包名信息,完整使用示例如下所示: + +1. 首先,需要在业务模块的在BUILD.gn里增加HiSysEvent部件依赖: + + ```c++ external_deps = [ "hisysevent_native:libhisysevent" ] ``` + +2. 在业务模块的应用启动函数StartAbility()中,调用埋点接口并传入对应事件参数: + + + ```c++ + #include "hisysevent.h" + + int StartAbility() + { + ... // 其他业务逻辑 + int ret = HiSysEvent::Write(HiSysEvent::Domain::AAFWK, "START_APP", HiSysEvent::EventType::BEHAVIOR, "APP_NAME", "com.ohos.demo"); + ... // 其他业务逻辑 + } + ``` + +#### kernel埋点开发实例 + +假设内核业务模块需要在设备启动时进行埋点来记录设备启动事件,完整使用示例如下所示: + +1. 在设备启动函数device_boot()中,构建一个启动事件对象,然后将事件进行上报,最后销毁事件对象。 + +```c +#include + +#include +#include + +int device_boot() +{ + ... // 其他业务逻辑 + struct hiview_hisysevent *event = NULL; + int ret = 0; + + event = hisysevent_create("KERNEL", "BOOT", BEHAVIOR); + if (!event) { + pr_err("failed to create event"); + return -EINVAL; + } + ret = hisysevent_put_string(event, "MSG", "This is a test message"); + if (ret != 0) { + pr_err("failed to put sting to event, ret=%d", ret); + goto hisysevent_end; + } + ret = hisysevent_write(event); + +hisysevent_end: + hisysevent_destroy(&event); + ... // 其他业务逻辑 +} +``` + +# 参考 + +HiSysEvent模块会将埋点数据写入到节点文件中,而埋点数据的解析处理会在Hiview模块中统一进行,详细处理过程可参考[Hiview开发指导](subsys-dfx-hiview.md)。 diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-overview.md b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-overview.md new file mode 100644 index 0000000000..2203d06a22 --- /dev/null +++ b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-overview.md @@ -0,0 +1,22 @@ +# HiSysEvent概述 + + +## 概述 + +HiSysEvent是面向OpenHarmony系统开发者提供的系统打点功能,通过在关键路径埋点来记录系统在运行过程中的重要信息,辅助开发者定位问题,此外还支持开发者将打点数据上传到云进行大数据质量度量。 + +HiSysEvent提供给开发者的打点相关能力主要包括事件配置、事件埋点、事件订阅、事件查询以及事件调试工具,各模块能力介绍如下: + +- 事件配置:提供了事件的yaml配置能力,支持在yaml文件中对HiSysEvent事件进行定义。 + +- 事件埋点:提供了事件埋点的相关接口能力,支持对打点的HiSysEvent事件进行落盘。 + +- 事件订阅:提供了事件订阅的相关接口能力,支持根据事件领域和事件名称来对HiSysEvent事件进行订阅。 + +- 事件查询:提供了事件查询的相关接口能力,支持根据事件领域和事件名称来对HiSysEvent事件进行查询。 + +- 事件调试工具:提供了hisysevent工具,支持通过该工具来实时订阅HiSysEvent事件及查询历史HiSysEvent事件。 + +## 参考 + +如果您想了解更多关于HiSysEvent特性的源码及使用信息,请参考[HiSysEvent代码仓](https://gitee.com/openharmony/hiviewdfx_hisysevent)。 \ No newline at end of file diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent.md b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent.md index 189134220d..8b1ac55fa9 100644 --- a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent.md +++ b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent.md @@ -2,6 +2,8 @@ +- **[HiSysEvent概述](subsys-dfx-hisysevent-overview.md)** + - **[HiSysEvent打点配置](subsys-dfx-hisysevent-logging-config.md)** - **[HiSysEvent打点](subsys-dfx-hisysevent-logging.md)** diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-hiview.md b/zh-cn/device-dev/subsystems/subsys-dfx-hiview.md new file mode 100644 index 0000000000..30e6f3fe4c --- /dev/null +++ b/zh-cn/device-dev/subsystems/subsys-dfx-hiview.md @@ -0,0 +1,197 @@ +# Hiview开发指导 + + +## 概述 + + +### 功能简介 + +Hiview是一个跨平台的终端设备维测服务集,由插件管理平台和基于平台上运行的服务插件来构成整套系统。Hiview维测服务是由HiSysEvent事件驱动的,其核心为分布在系统各处的HiSysEvent桩点,格式化的事件会通过HiSysEvent打点API上报至Hiview进行处理,其处理流程如下图所示: + +**图1** Hiview模块数据交互图 + +![Hiview_module_data_interaction](figures/Hiview_module_data_interaction.png) + +1. 业务进程通过调用HiSysEvent模块提供的打点接口,上报打点事件信息并将其写入节点文件。 +2. Hiview进程中的SysEventSource事件源会从节点中异步读取出事件信息,并将事件分发到SysEventPipeline流水线上进行处理,其中: + - SysEventService插件负责对事件进行校验及落盘; + - Faultlogger插件负责处理故障相关事件; + - EventLogger插件负责采集事件相关的日志信息。 +3. 在流水线上完成事件处理后,还会把事件发送到平台订阅事件队列里,然后将事件派发到订阅插件进行处理,其中: + - FreezeDetectorPlugin插件负责处理冻屏相关事件; + - HiCollieCollector插件负责卡死相关事件。 + +### 基本概念 + +在进行Hiview的开发前,开发者应了解以下基本概念: + +- 插件 + + 运行在Hiview进程中,随Hiview二进制一同交付的完成独立功能的维测、故障管理模块,具有编译时可独立拆解、运行时寄宿于平台、动态配置等特性。 + +- 流水线 + + 事件处理插件的有序集合,进入流水线的事件会按序经过流水线上的每个插件处理。 + +- 事件源 + + 一种能够生产事件的特殊插件,相较普通插件,需要能够绑定流水线、生产事件并将事件分发给流水线。 + +- 流水线组 + + 配置在相同事件源的多个流水线被称作一个流水线组。 + +### 运作机制 + +Hiview支持基于插件管理平台的插件开发,提供了插件开发的相关能力,开发者可以通过在Hiview平台上新增自己的插件,来对HiSysEvent事件进行特定业务处理。在进行插件开发前,开发者应该了解插件的相关运作原理。 + +#### 插件注册 + +插件的注册方式有三种: + +| 名称 | 说明 | +| ------------------ | ------------------------------------------------------------ | +| 静态注册 | 通过使用宏定义REGISTER(xxx);注册,该种注册方式的插件不能被卸载 | +| 代理注册 | 通过使用宏定义REGISTER_PROXY(xxx);注册,开机不加载运行时动态加载卸载 | +| 代理注册且开机加载 | 通过使用宏定义REGISTER_PROXY_WITH_LOADED(xxx);注册,开机加载之后再动态卸载加载 | + +#### 插件驱动 + +插件的事件驱动有两种方式——流水线驱动和订阅驱动,区别如下: + +- 流水线驱动的插件需要配置在流水线上,当事件从事件源分发到流水线后,会按序流转到流水线上配置的每个插件进行处理。 +- 订阅驱动的插件无需配置在流水线上,但是需要在插件启动时注册一个监听者到Hiview平台,并且插件本身需要实现事件监听处理函数。 + +#### 插件包加载 + +根据业务的需求,插件可以不用全部编译在Hiview二进制中。 + +Hiview支持将多个插件编译成为一个独立的插件包,以独立so的形式预置到系统中,并且一个so需要对应于一个plugin_config文件,例如libxxx.z.so,对应于xxx_plugin_config配置文件。Hiview进程在启动时,会扫描系统中的插件包so以及对应的配置文件,并对插件包中实现的插件进行加载。 + +对插件包做如下补充说明: + +1. 插件包作为一个独立的个体在插件管理平台中运行,内部插件、流水线或者事件源都与在Hiview二进制中的插件没有功能上的差异。 + +2. 插件包中的插件可以插入到Hiview二进制中的流水线中。 + + +3. 无论在何处的订阅者,根据其订阅的规则都可以收到全平台发送出来的相应事件。 + + +## 插件开发指导 + + +### 场景介绍 + +当开发者需要对事件源分发过来的HiSysEvent事件进行特定业务处理的时候,需要在Hiview平台上新增一个插件,并借助该插件进行相应业务处理,下文将具体介绍如何进行Hiview插件开发。 + +### 接口说明 + +插件开发的相关接口如下,具体的API详见接口文档。 + +**表1** Plugin类API接口功能介绍 + +| 接口名 | 描述 | +| ------------------------------------------------------------ | ------------------------------------------------------------ | +| virtual void OnLoad() | 插件加载函数,当插件被平台加载后调用,可以用于初始化一些数据 | +| virtual void OnUnload() | 插件卸载函数,当插件被平台卸载前调用,可以用于回收一些数据 | +| virtual bool ReadyToLoad() | 用于在Hiview启动加载插件时判断当前插件能否被加载 | +| virtual bool OnEvent(std::shared_ptr\& event) | 事件处理函数,用于接收处理流水线或者平台分发过来的事件并进行业务处理 | +| virtual bool CanProcessEvent(std::shared_ptr\ event) | 用于判断事件是否能向后流转整条流水线(当插件位于流水线上的第一个时生效) | +| HiviewContext* GetHiviewContext() | 获取Hiview插件管理平台的上下文对象 | + +**表2** Event类API接口功能介绍 + +| 接口名 | 描述 | +| ---------------------- | ---------------------------- | +| domain_ | 事件领域 | +| eventName_ | 事件名称 | +| happenTime_ | 事件发生时间 | +| jsonExtraInfo_ | Json格式的事件数据 | +| bool IsPipelineEvent() | 判断事件是否为流水线事件 | +| bool HasFinish() | 判断事件是否还能继续往后流转 | + +### 开发步骤 + +1. 首先,需要定义一个继承自Plugin基类的业务插件类: + + ```c++ + #include "event.h" + #include "plugin.h" + + class PluginExample : public Plugin { + public: + bool OnEvent(std::shared_ptr& event) override; + void OnLoad() override; + void OnUnload() override; + }; + ``` + +2. 然后,在插件类实现代码中,需要先对插件进行注册,再根据业务需要覆写实现相应的函数。 + + ```c++ + #include "plugin_factory.h" + + // 静态注册插件 + REGISTER(PluginExample); + + void PluginExample::OnLoad() + { + ... // 在插件加载时,可以进行插件的资源初始化工作 + printf("PluginExample OnLoad \n"); + } + + void PluginExample::OnUnload() + { + ... // 在插件卸载时,可以进行插件的资源释放工作 + printf("PluginExample OnUnload \n"); + } + + bool PluginExample::OnEvent(std::shared_ptr& event) + { + ... // 在事件处理函数中,可以进行对事件进行特定业务处理 + printf("PluginExample OnEvent \n"); + + // 例如,插件只关注某个领域的事件,并需要将这个领域的事件信息进行日志打印处理 + if (event->domain_ == "TEST_DOMAIN") { + printf("The event data received is %s \n", event->jsonExtraInfo_); + return true; + } + + return false; + } + ``` + +3. 最后,需要将插件配置在plugin_build.json文件中,随Hiview二进制一同编译: + + ```json + { + "plugins": { + "PluginExample": { + "path": "plugins/PluginExample", + "name": "PluginExample" + } + }, + "rules": [ + { + "info": { + "loadorder": { + "PluginExample": { + "loadtime": 0 + } + }, + "pipelines": { + "SysEventPipeline": [ + PluginExample + ] + } + } + } + ] + } + ``` + + +## 参考 + +如果您想了解更多关于Hiview特性的源码及使用信息,请参考[Hiview代码仓](https://gitee.com/openharmony/hiviewdfx_hiview)。 \ No newline at end of file diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-overview.md b/zh-cn/device-dev/subsystems/subsys-dfx-overview.md index ad4e245532..6f258b47c5 100755 --- a/zh-cn/device-dev/subsystems/subsys-dfx-overview.md +++ b/zh-cn/device-dev/subsystems/subsys-dfx-overview.md @@ -21,6 +21,8 @@ - Faultlogger崩溃故障检测,标准系统类设备(参考内存≥128MB)适用。 +- Hiview插件平台,标准系统类设备(参考内存≥128MB)适用。 + ## 基本概念 diff --git a/zh-cn/device-dev/subsystems/subsys-dfx.md b/zh-cn/device-dev/subsystems/subsys-dfx.md index b8ea56af1c..e0c14d76be 100644 --- a/zh-cn/device-dev/subsystems/subsys-dfx.md +++ b/zh-cn/device-dev/subsystems/subsys-dfx.md @@ -9,4 +9,5 @@ - **[HiCollie开发指导](subsys-dfx-hicollie.md)** - **[HiSysEvent开发指导](subsys-dfx-hisysevent.md)** - **[HiDumper开发指导](subsys-dfx-hidumper.md)** -- **[HiChecker开发指导](subsys-dfx-hichecker.md)** \ No newline at end of file +- **[HiChecker开发指导](subsys-dfx-hichecker.md)** +- **[Hiview开发指导](subsys-dfx-hiview.md)** -- GitLab