扬州建设安装网站,对网络平台的优化有哪些建议,拼多多网站建设框架图,重庆包装设计公司前言
本次实践主要是介绍 Java 服务通过无侵入的方式接入观测云进行全面的可观测。
环境信息
系统环境#xff1a;Ubuntu#xff08;主机环境#xff09;开发语言#xff1a;JDK 11.0.18Web 框架#xff1a;SpringBoot日志框架#xff1a;LogbackAPM 探针#xff1a;…前言
本次实践主要是介绍 Java 服务通过无侵入的方式接入观测云进行全面的可观测。
环境信息
系统环境Ubuntu主机环境开发语言JDK 11.0.18Web 框架SpringBoot日志框架LogbackAPM 探针DDTrace
实现目标
应用链路接入应用日志接入JVM 指标接入Profiling 接入
对 JDK 有版本要求具体参考文档 Java - 观测云文档
接入方案
准备工作
安装 DataKit
# 需要把token 改成观测云空间的实际token值可在「观测云控制台」-「集成」-「Datakit」 上面获取
DK_DATAWAYhttps://openway.guance.com?tokentkn_xxxxxx bash -c $(curl -L https://static.guance.com/datakit/install.sh) 重启 DataKit
以下接入配置后都需重启 DataKit 使配置生效命令如下
datakit service -R通过 datakit monitor 命令可以观察到采集器是否启动成功。 红色为采集器下面各种接入都会开启采集器每个采集器都需要重启 DataKit 。
日志接入
Logback 日志格式调整
主要是调整 pattern 新增三个参数 %X{dd.service} %X{dd.trace_id} %X{dd.span_id} 部分配置如下
property namelog.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 namelog.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 scopecontext namelogName sourcespring.application.name defaultValueSpringboot/!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,,,, --appender nameSTDOUT classch.qos.logback.core.ConsoleAppenderencoderpattern${log.pattern}/patterncharsetUTF-8/charset/encoder/appenderappender nameFILE classch.qos.logback.core.rolling.RollingFileAppenderfilelogs/${logName}/${logName}.log/file !-- 使用方法 --appendtrue/appendrollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicyfileNamePatternlogs/${logName}/${logName}-%d{yyyy-MM-dd}.log.%i/fileNamePatternmaxFileSize64MB/maxFileSizemaxHistory30/maxHistorytotalSizeCap1GB/totalSizeCap/rollingPolicyencoderpattern${log.pattern}/patterncharsetUTF-8/charset/encoder/appenderLog 采集器主要用于采集日志信息可以通过 Socket 或者 File 方式进行日志采集。进入到 DataKit 安装目录下执行 conf.d/log/ 复制 logging.conf.sample 并重命名为 logging.conf 。
配置应用日志目录 logfiles [/home/liurui/code/observable-demo/logs/server/server.log]# 服务名称非必填service server## Grok pipeline script name.pipeline server.p配置 pipeline
日志 pipeline 用于解析日志格式 解析脚本
grok(_, %{TIMESTAMP_ISO8601:time} %{NOTSPACE:thread_name} %{LOGLEVEL:status}%{SPACE}%{NOTSPACE:class_name} - \\[%{NOTSPACE:method_name},%{NUMBER:line}\\] %{DATA:service_name} %{DATA:trace_id} %{DATA:span_id} - %{GREEDYDATA:msg})default_time(time,Asia/Shanghai)可以按照实际日志格式进行调整以上 pipeline 只适应 %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 的日志格式。
链路接入
开启 DDTrace 采集器
DDTrace 采集器用于采集链路信息进入到 DataKit 安装目录下执行 conf.d/ddtrace/ 复制 ddtrace.conf.sample 并重命名为 ddtrace.conf 即可 。
应用启动参数
java \
-javaagent:/home/liurui/agent/dd-java-agent-1.21.1-guance.jar \
-Ddd.service.nameserver \
-Ddd.envdev \
-Ddd.version1.2.3
-jar springboot-server.jarJVM 指标接入
开启 StatsD 采集器
StatsD 采集器用于采集指标信息进入到 DataKit 安装目录下执行 conf.d/statsd/ 复制 statsd.conf.sample 并重命名为 statsd.conf 即可默认端口为 8125 。
按照链路的启动方式启动应用即可。
Profiling 接入
开启 Profile 采集器
Profiling 采集器主要用于采集应用性能数据如 java 的 jfr。进入到 DataKit 安装目录下执行 conf.d/profile/ 复制 profile.conf.sample 并重命名为 profile.conf 。
应用启动参数
主要是调整参数添加以下参数。
-Ddd.profiling.enabledtrue \
-Ddd.profiling.ddprof.enabledtrue \
-Ddd.profiling.ddprof.cpu.enabledtrue \
-Ddd.profiling.ddprof.wall.enabledtrue \
-Ddd.profiling.ddprof.alloc.enabledtrue \
-Ddd.profiling.ddprof.liveheap.enabledtrue \完整启动命令
在启动命令加上 DDTrace 相关参数。
java \
-javaagent:/home/liurui/agent/dd-java-agent-1.21.1-guance.jar \
-Ddd.service.nameserver \
-Ddd.envdev \
-Ddd.version1.2.3 \
-Ddd.profiling.enabledtrue \
-Ddd.profiling.ddprof.enabledtrue \
-Ddd.profiling.ddprof.cpu.enabledtrue \
-Ddd.profiling.ddprof.wall.enabledtrue \
-Ddd.profiling.ddprof.alloc.enabledtrue \
-Ddd.profiling.ddprof.liveheap.enabledtrue \
-jar springboot-server.jar实践效果
日志视图
应用日志基本上都采集上来了而且日志里面还包含了 trace_id 这些信息。 日志详情 链路视图 链路详情
通过链路可以关联到日志信息反之亦然实现了日志与链路的联动效果。 Profiling
通过 Profiling 能更详细的追溯堆栈问题从而更好的优化代码、提升性能。 JVM 监控视图
可以分析 java 在内存、cpu 等分配使用情况。