# huaweicloud-aom-pushevents-java **Repository Path**: HuaweiCloudDeveloper/huaweicloud-aom-pushevents-java ## Basic Information - **Project Name**: huaweicloud-aom-pushevents-java - **Description**: 解决问题:帮助用户更好的使用api上报事件告警 示例功能描述:上报事件告警 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master-dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-07-12 - **Last Updated**: 2025-06-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 功能介绍 华为云提供了应用运维管理服务端SDK,您可以直接集成服务端SDK来调用应用运维管理服务的相关API,从而实现对应用运维管理服务的快速操作。 当用户想要将外部服务产生的事件、告警在AOM进行展示时,用户可通过此接口上报外部服务产生的事件、告警。 该示例展示了用户如何将外部A服务下B主机的CPU使用率的Major级别的告警信息,通过接口上报到AOM。 用户可通过参考链接了解如何区分告警和事件和上报事件告警信息API详细描述。 [如何区分告警和事件](https://support.huaweicloud.com/faq-aom2/aom_06_0008.html) [上报事件告警信息API](https://support.huaweicloud.com/api-aom/PushEvents.html) ## 前置条件 ### 获取AK/SK 开发者在使用前需先获取账号的ak、sk、endpoint、projectId。 您需要拥有华为云账号以及该账号对应的 Access Key(AK)和 Secret Access Key(SK)。请在华为云控制台“我的凭证-访问密钥”页面上创建和查看您的 AK/SK。更多信息请查看访问密钥。 endpoint华为云各服务应用区域和各服务的终端节点,详情请查看地区和终端节点。可在AomRegion类里查看现有的,或者使用new Region("id","endpoint")。 projectId云服务所在项目ID,根据你想操作的项目所属区域选择对应的项目ID。 ### 运行环境 Java JDK 1.8 及其以上版本。 ### SDK获取和安装 您可以通过Maven配置所依赖的应用运维管理SDK ```xml com.huaweicloud.sdk huaweicloud-sdk-aom 3.1.47 ``` ## 示例代码 ```java package com.huawei.aom.demo; import com.huaweicloud.sdk.aom.v2.AomClient; import com.huaweicloud.sdk.aom.v2.model.EventList; import com.huaweicloud.sdk.aom.v2.model.EventModel; import com.huaweicloud.sdk.aom.v2.model.PushEventsRequest; import com.huaweicloud.sdk.aom.v2.model.PushEventsResponse; import com.huaweicloud.sdk.aom.v2.region.AomRegion; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class PushEventsSolution { private static final Logger LOGGER = LoggerFactory.getLogger(PushEventsSolution.class); public static void main(String[] args) { // 事件或者告警产生的时间,CST毫秒级时间戳 long startsAt = System.currentTimeMillis(); // 事件或者告警清除的时间,CST毫秒级时间戳,为0时表示未删除 long endsAt = 0L; // 告警自动清除时间。毫秒数,例如一分钟则填写为60000。默认清除时间为3天,对应数字为 4320 * 1000(即:3天 * 24小时 * 60分钟 * 1000毫秒) long timeout = 60000L; // 事件或者告警附加字段 可为空 Map annotations = new HashMap<>(); // 事件或者告警预留字段 为空 Map attachRule = new HashMap<>(); // 事件或告警详情 List events = new ArrayList<>(); // 事件或者告警id,系统会自动生成,上报无须填写该字段 events.add(new EventModel().withId("id") .withStartsAt(startsAt) .withEndsAt(endsAt) .withTimeout(timeout) .withMetadata(getMetaData("cpu使用率超过阈值", "Major", "alarm", "A服务", "主机", "B")) .withAnnotations(annotations) .withAttachRule(attachRule)); EventList body = new EventList(); body.withEvents(events); PushEventsRequest request = new PushEventsRequest(); // 接口请求动作。action=clear代表清除告警,不传或者传其他值默认为上报动作 request.withAction(PushEventsRequest.ActionEnum.fromValue("")); request.withBody(body); // 认证用的ak和sk直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 String ak = System.getenv("HUAWEICLOUD_SDK_AK"); String sk = System.getenv("HUAWEICLOUD_SDK_SK"); String projectId = ""; ICredential auth = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId); AomClient client = AomClient.newBuilder().withCredential(auth).withRegion(AomRegion.CN_NORTH_4).build(); try { PushEventsResponse response = client.pushEvents(request); LOGGER.info(response.toString()); } catch (ConnectionException | ServiceResponseException | RequestTimeoutException e) { LOGGER.error(e.toString()); } } /** * 拼接告警或事件信息 * @param eventName 事件或者告警名称 * @param eventSeverity 事件级别枚举值。四种类型 "Critical", "Major", "Minor", "Info" * @param eventType 事件类别枚举值。event为普通告警,alarm为告警事件 * @param resourceProvider 事件对应云服务名称 * @param resourceType 事件对应资源类型 * @param resourceId 事件对应资源信息 * @return 告警或事件详情 */ public static Map getMetaData(String eventName, String eventSeverity, String eventType, String resourceProvider, String resourceType, String resourceId) { Map metadata = new HashMap<>(); metadata.put("event_name", eventName); metadata.put("event_severity", eventSeverity); metadata.put("event_type", eventType); metadata.put("resource_provider", resourceProvider); metadata.put("resource_type", resourceType); metadata.put("resource_id", resourceId); return metadata; } } ``` ## 返回示例 用户可在应用运维管理AOM告警列表或事件列表中查看到上报的告警或事件。 或通过调用[查询事件告警API](https://support.huaweicloud.com/api-aom/ListEvents.html)查看上报的告警或事件 ## 参考链接 [如何区分告警和事件](https://support.huaweicloud.com/faq-aom2/aom_06_0008.html) [上报事件告警信息API](https://support.huaweicloud.com/api-aom/PushEvents.html) [查询事件告警API](https://support.huaweicloud.com/api-aom/ListEvents.html) 更多信息请参考 [应用运维管理AOM](https://support.huaweicloud.com/aom/index.html) ## 修订记录 | 发布日期 | 文档版本 | 修订说明 | |------------| ------------ | ------------ | | 2023-08-14 | 1.0 | 文档首次发布 |