当前位置: 首页 > news >正文

观测云对接 Pinpoint 最佳实践

简介

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

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

实验环境

  • 观测云 SaaS
  • Linux 主机(可以连接 https://openway.guance.com )
  • 安装 JDK1.8
  • 安装 DataKit
  • 下载 Java Demo
  • 下载 pinpoint-agent-2.5.1.tar.gz

集成方案

部署 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/log
cp 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 位置多了两个采集器 logging 和 pinpoint 。

应用接入 Pinpoint

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

cd  /usr/local/df-demo
tar -zxvf pinpoint-agent-2.5.1.tar.gz
配置端口

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

cd  /usr/local/df-demo
vim  pinpoint-agent-2.5.1/pinpoint-root.config
profiler.transport.module = GRPC
profiler.transport.grpc.agent.collector.port = 9991 
profiler.transport.grpc.metadata.collector.port = 9991
profiler.transport.grpc.stat.collector.port = 9991 
profiler.transport.grpc.span.collector.port = 9991 
日志输出 TraceId

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

cd  /usr/local/df-demo
vim 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-demo
java -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 所在的链路,可以查看上下游的服务电影关系、瀑布图、火焰图。

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 设备运维故障排查与修复技巧
  • 宝塔面板配置node/npm/yarn/pm2....相关全局变量 npm/node/XXX: command not found
  • Kafka的基本概念
  • 适用于 Windows 10 的最佳数据恢复免费软件是什么?
  • [JAVA] 什么是Java线程同步机制?
  • BIO,NIO,AIO编程实战
  • 游戏开发设计模式之责任链模式
  • MyBatis 源码解析:配置文件结构与自定义实现详解
  • 等保测评入门
  • VScode误删文件恢复或恢复之前版本记录
  • 银河麒麟V10如何安装本地deb软件包?(以安装wps为例)
  • 数仓工具使用Docker部署DolphinScheduler 3.2.0 (分布式任务调度系统)-单机模式
  • -Wl,-rpath= 编译器链接器指定动态库路径 与 LD_LIBRARY_PATH
  • 期末九天从入门到精通操作数据库(mysql)
  • 猫头虎 分享:Python库 SymPy 的简介、安装、用法详解入门教程 ‍
  • 时间复杂度分析经典问题——最大子序列和
  • canvas 绘制双线技巧
  • CEF与代理
  • CSS 专业技巧
  • JDK 6和JDK 7中的substring()方法
  • Koa2 之文件上传下载
  • leetcode46 Permutation 排列组合
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • tensorflow学习笔记3——MNIST应用篇
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • Xmanager 远程桌面 CentOS 7
  • 和 || 运算
  • 排序算法之--选择排序
  • 区块链共识机制优缺点对比都是什么
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • #1014 : Trie树
  • #DBA杂记1
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (五)MySQL的备份及恢复
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)负载均衡,回话保持,cookie
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • ***原理与防范
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .Net程序帮助文档制作
  • .net中我喜欢的两种验证码
  • /etc/sudoers (root权限管理)
  • [2023年]-hadoop面试真题(一)
  • [android学习笔记]学习jni编程
  • [bzoj4010][HNOI2015]菜肴制作_贪心_拓扑排序
  • [C/C++]数据结构----顺序表的实现(增删查改)
  • [cocos2d-x]关于CC_CALLBACK
  • [DL]深度学习_Feature Pyramid Network
  • [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager失败
  • [gdc19]《战神4》中的全局光照技术
  • [Golang]K-V存储引擎的学习 从零实现 (RoseDB mini版本)