Skip to content

使用 Java SDK 将自定义日志快速接入 Azure Monitor

解决企业级应用日志统一化痛点:通过配置 Azure Monitor Ingestion SDK for Java,实现将自定义业务日志通过数据收集规则(DCR)直接推送到 Azure Log Analytics 工作区。

为什么需要这个技能

在复杂的微服务架构中,将散落在各处的自定义日志统一采集到云端监控平台是运维的关键。传统的日志转发方式配置繁琐,而使用 Azure Monitor 的 Logs Ingestion API 可以通过定义数据收集规则(DCR)灵活地控制数据的转换与路由。

通过本技能,开发者可以快速在 Java 应用中集成异步或同步的日志上传客户端,支持大批量日志的并发上传,并能通过自定义模型精确控制日志在 Azure 端的表结构映射。

适用场景

  • 需要将 Java 应用的特定业务指标或审计日志实时发送到 Azure Monitor。
  • 已经在 Azure 上配置了数据收集终点(DCE)和数据收集规则(DCR),需要实现代码侧的对接。
  • 对日志上传性能有较高要求,需要使用并发上传或响应式编程(Reactor)模式。

核心工作流

1. 环境准备与依赖配置

首先,确保你拥有 DCE 终点、DCR ID 以及目标 Log Analytics 工作区。在 pom.xml 中引入依赖:

xml
<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-monitor-ingestion</artifactId>
    <version>1.2.11</version>
</dependency>

2. 初始化采集客户端

根据需求选择同步或异步客户端。建议在应用启动时创建一次并全局复用。

java
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();

LogsIngestionClient client = new LogsIngestionClientBuilder()
    .endpoint("<data-collection-endpoint>")
    .credential(credential)
    .buildClient();

3. 定义日志模型并上传

创建一个与 DCR 转换方案匹配的 POJO 类,然后调用 upload 方法。

java
List<Object> logs = new ArrayList<>();
logs.add(new MyLogEntry("2024-01-15T10:30:00Z", "INFO", "Application started"));

client.upload("<data-collection-rule-id>", "<stream-name>", logs);

4. 高级优化(可选)

  • 并发控制:通过 LogsUploadOptions.setMaxConcurrency(3) 提升大批量上传速度。
  • 错误处理:设置 setLogsUploadErrorConsumer 捕获部分上传失败的条目,防止数据静默丢失。
  • 异步流:使用 LogsIngestionAsyncClient 配合 Reactor 框架实现非阻塞上传。

下载和安装

下载 azure-monitor-ingestion-java 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐