写点什么

观测云对接 Pinpoint 最佳实践

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

    阅读完需:约 6 分钟

观测云对接 Pinpoint 最佳实践

简介

Pinpoint 是一个开源的分布式应用性能监控工具,由韩国搜索引擎公司 Naver 开发。它主要用于跟踪和监控分布式应用程序和微服务架构中的性能问题。Pinpoint 的核心功能包括对分布式链路的追踪和监控,通过收集和分析数据来帮助开发者定位问题所在。Pinpoint 支持实时的链路追踪,可以追踪请求在不同服务之间的传播路径,帮助用户了解整个操作流程和性能瓶颈。


观测云支持各种 APM 工具,包括 Pinpoint,只需要安装 DataKit,开通 Pinpoint 采集器,即可接收来自 Pinpoint 上报的链路数据,然后再通过观测云强大的分析展示能力,在观测云上对应用的链路、应用的日志、应用运行的环境进行综合分析。

实验环境

集成方案

部署 DataKit

登录观测云控制台,点击「集成」 -「DataKit」 - 「Linux」,点击「复制」图标。



把复制的安装命令粘贴到 Linux 主机上执行,执行 datakit monitor 查看 DataKit 运行情况。


datakit monitor
复制代码


开通采集器

DataKit 内置几十种采集器,开通采集器很方便,只需要复制官方提供的 sample 文件,改成 .conf 结尾,然后重启 DataKit。

Pinpoint 采集器

cd /usr/local/datakit/conf.d/pinpoint/cp pinpoint.conf.sample pinpoint.conf
复制代码

日志采集器

cd /usr/local/datakit/conf.d/logcp logging.conf.sample pinpoint-log.conf
复制代码


java-demo-pinpoint-1.0-SNAPSHOT.jar 会产生日志文件 /usr/local/df-demo/logs/log.log 这里要做链路和日志的联动分析,所以需要采集日志。编辑 pinpoint-log.conf ,logfiles 里面填写文件路径,source 表示数量来源,用于在观测云上区分日志。


重启 DataKit

datakit service -R
复制代码


重启完成后再执行 datakit monitor ,Inputs 位置多了两个采集器 loggingpinpoint


应用接入 Pinpoint

解压 pinpoint-agent-2.5.1.tar.gz/usr/local/df-demo 目录,java-demo-pinpoint-1.0-SNAPSHOT.jar 也放到该目录。


cd  /usr/local/df-demotar -zxvf pinpoint-agent-2.5.1.tar.gz
复制代码

配置端口

DataKit 的 Pinpoint 采集器默认接收 Pinpoint 上报链路的端口是 9991,所以需要修改 pinpoint-root.config 配置文件,把上报端口改成 9991


cd  /usr/local/df-demovim  pinpoint-agent-2.5.1/pinpoint-root.config
复制代码


profiler.transport.module = GRPCprofiler.transport.grpc.agent.collector.port = 9991 profiler.transport.grpc.metadata.collector.port = 9991profiler.transport.grpc.stat.collector.port = 9991 profiler.transport.grpc.span.collector.port = 9991 
复制代码

日志输出 TraceId

logback 日志中输出 trace_id,需要开启一个开关。编辑 pinpoint.config 文件,设置 profiler.logback.logging.transactioninfotrue


cd  /usr/local/df-demovim pinpoint-agent-2.5.1/profiles/release/pinpoint.config
复制代码



Java Demo 中日志输出是 logback,只需要在日志输出的 layout 中添加 %X{PtxId} %X{PspanId} 即可输出链路调用中 Pinpoint 产生的 trace_id 和 span_id。


    <appender name = "Console" class= "ch.qos.logback.core.ConsoleAppender" >        <layout class = "ch.qos.logback.classic.PatternLayout">            <Pattern >%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - [%X{PtxId} %X{PspanId}] - %msg%n</Pattern >        </layout >    </appender>
复制代码


启动 Java 应用。


cd  /usr/local/df-demojava -javaagent:pinpoint-agent-2.5.1/pinpoint-bootstrap.jar -Dpinpoint.config=pinpoint-agent-2.5.1/pinpoint-root.config -Dpinpoint.agentId=java-pinpoint-demo -Dpinpoint.applicationName=java-pinpoint-demo  -jar java-demo-pinpoint-1.0-SNAPSHOT.jar
复制代码

日志链路打通

登录观测云控制台,点击「日志」 -「Pipelines」 - 「新建 Pipeline」,日志来源输入 pinpoint-log ,输入 Pipeline 名称,填写如下解析规则,最后保存。


grok(_, "%{TIMESTAMP_ISO8601:time}%{SPACE}%{NOTSPACE:thread_name}%{SPACE}%{LOGLEVEL:status}%{SPACE}%{NOTSPACE:class_name}%{SPACE}-%{SPACE}\\[%{NOTSPACE:method_name},%{NUMBER:line}\\]%{SPACE}-%{SPACE}\\[%{DATA:trace_id} %{DATA:span_id}\\]%{SPACE}-%{SPACE}%{GREEDYDATA:msg}") default_time(time,"Asia/Shanghai")
复制代码


效果展示

触发请求

多次访问接口,产生链路和日志。


curl localhost:8090/user
复制代码

观测云查看

登录观测云控制台,点击「应用性能监测」 -「链路」,这里列出的是请求触发的所有 span,每个 span 的持续时间。



点击一个 span 进入该 span 所在的链路,可以查看上下游的服务电影关系、瀑布图、火焰图。






由于前面打通了链路和日志,日志标签也可以查看当前链路中产生的所有日志信息。



用户头像

观测云

关注

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

云时代的系统可观测平台

评论

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