写点什么

观测云对接 OpenTelemetry 最佳实践

作者:观测云
  • 2024-08-12
    上海
  • 本文字数:2249 字

    阅读完需:约 7 分钟

观测云对接 OpenTelemetry 最佳实践

观测云支持多种方式来接入 OpenTelemetry 上报的数据,比如通过 OpenTelemetry Collector ,也可以直接通过 exporter 方式上报。本次最佳实践主要通过 exporter 方式进行上报,架构如下:



  • 免费开通观测云

  • 安装 DataKit

  • DataKit 开启 opentelemetry 采集器

  • DataKit 开启 log 采集器

  • 准备应用,接入 opentelemetry-javaagent,上报至 DataKit 。

DataKit

1、安装 DataKit


参考链接:https://docs.guance.com/datakit/datakit-install/


2、opentelemetry 采集器


进入 DataKit 安装目录下的 conf.d/opentelemetry 目录,复制 opentelemetry.conf.sample 并命名为 opentelemetry.conf ,主要调整以下配置:


[inputs.opentelemetry.http]   enable = true   http_status_ok = 200   trace_api = "/otel/v1/trace"   metric_api = "/otel/v1/metric"
## OTEL agent GRPC config for trace and metrics. ## GRPC services for trace and metrics can be enabled respectively as setting either to be true. ## add is the listening on address for GRPC server. [inputs.opentelemetry.grpc] trace_enable = true metric_enable = true addr = "0.0.0.0:4317"
复制代码


从上面配置可以看出,opentelemetry 采集器支持两种协议 :


  • GRPC:4317 端口,也可以自行调整。

  • HTTP:9529 端口,是 DataKit 的端口,访问地址是 http://localhost:9529/otel/v1/trace


3、log 采集器


用于采集应用日志信息,进入 DataKit 安装目录下的 conf.d/log 目录,复制 logging.conf.sample 并命名为 logging.conf 。示例如下:


[[inputs.logging]]  # 日志文件列表,可以指定绝对路径,支持使用 glob 规则进行批量指定  # 推荐使用绝对路径  logfiles = [    "/home/code/observable-demo/logs/server/server.log",  ]  ......
复制代码


注意日志路径和文件名,也可以支持通配符的方式。


4、重启 Datakit


datakit service -R
复制代码

应用接入 OpenTelemetry

准备一个应用,这里主要演示 java 环境下接入 OpenTelemetry。


  • 下载 opentelemetry-javaagent


建议下载观测云版本的 opentelemetry-javaagent。 https://github.com/GuanceCloud/opentelemetry-java-instrumentation/releases


  • 调整日志输出格式


<?xml version="1.0" encoding="UTF-8"?><configuration debug="false">    <springProperty scope="context" name="LOG_HOME" source="logback.home"/><!--    <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] %X{dd.service} %X{dd.trace_id} %X{dd.span_id} - %msg%n" />-->    <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] %X{trace_id} %X{span_id} - %msg%n" /><!--    <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] [traceId=%X{trace_id} spanId=%X{span_id}] - %msg%n" />-->    <springProperty scope="context" name="logName" source="spring.application.name" defaultValue="Springboot"/>    <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,,,, -->    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">        <encoder>            <pattern>${log.pattern}</pattern>            <charset>UTF-8</charset>        </encoder>    </appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/${logName}/${logName}.log</file> <!-- 使用方法 --> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>logs/${logName}/${logName}-%d{yyyy-MM-dd}.log.%i</fileNamePattern> <maxFileSize>64MB</maxFileSize> <maxHistory>30</maxHistory> <totalSizeCap>1GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>${log.pattern}</pattern> <charset>UTF-8</charset> </encoder> </appender>
<!-- 只打印error级别的内容 --> <logger name="net.sf.json" level="ERROR" /> <logger name="org.springframework" level="ERROR" /><!-- <logger name="io.opentelemetry" level="DEBUG" />--> <root level="info"> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE"/> </root></configuration>
复制代码


主要是在 logback.xml 上调整 pattern 格式 %X{trace_id} %X{span_id} ,用于日志和链路的关联。


  • 启动应用


java \-javaagent:/home/liurui/code/opentelemetry-java-instrumentation/javaagent/build/libs/opentelemetry-javaagent-1.31.0.jar \-Dotel.traces.exporter=otlp \-Dotel.exporter.otlp.protocol=grpc \-Dotel.exporter.otlp.endpoint=http://localhost:4317 \-Dotel.resource.attributes=service.name=springboot \-jar springboot-server.jar
复制代码

观测云效果

  • 链路列表


可以看到所有链路相关的数据



查看链路详情,可以关联到对应的日志信息



  • 日志



  • Opentelemetry JVM 视图


Opentelemetry JVM 视图是基于 Opentelemetry 上报的指标信息进行绘制的视图模版,可以选择对应的模版进行 clone。




用户头像

观测云

关注

还未添加个人签名 2021-02-08 加入

云时代的系统可观测平台

评论

发布
暂无评论
观测云对接 OpenTelemetry 最佳实践_OpenTelemetry_观测云_InfoQ写作社区