PinPoint简介
Pinpoint 是一个开源的分布式应用性能监控工具,它由 Naver韩国搜索引擎公司开发,主要用于跟踪和监控分布式应用程序和微服务架构中的性能问题。
PinPoint特点
Pinpoint的特点如下:
1.全链路追踪
Pinpoint 支持实时的全链路追踪,可以追踪请求在不同服务之间的传播路径,帮助用户了解整个操作流程和性能瓶颈。
2.应用地图
Pinpoint 可以生成应用地图,显示不同服务之间的关系,帮助用户了解微服务架构的拓扑结构。
3.性能指标
除了追踪数据,Pinpoint 还可以收集和显示性能指标,如响应时间、调用次数、错误率等。
4.告警与通知
Pinpoint 具备警报功能,可以设置性能问题的警报规则,并在达到阈值时触发通知。
5.数据可视化
Pinpoint 提供直观的数据可视化仪表板,用于展示追踪数据、性能指标和应用地图。
6.多语言支持
Pinpoint 支持多种编程语言,包括Java、Python、PHP等,可以用于跟踪不同语言的应用程序。
PinPoint原理
Pinpoint 的工作原理涉及:数据收集、数据存储、数据查询和数据可视化等方面。
Pinpoint 通过在应用程序中嵌入探针(Agent),收集分布式追踪数据,并将其发送到后端存储,然后用户可以通过界面查询和可视化这些数据。
Pinpoint 完整组件分为五部分: 探针、收集器、流计算、存储和用户接口。
如下图所示:
- Pinpoint-Collector:收集各种性能数据;
- Pinpoint-Agent:在每个应用程序节点中嵌入 Pinpoint 探针(Agent),这个探针会监控应用程序的方法调用、跨服务调用和其他操作,并生成跨度(Span)数据;
- Pinpoint-Web:将收集到的数据层现在web展示;
- Pinpoint-Flink: 将收集到的数据进行聚合等运算得出指标;
- HBase Storage:Pinpoint 使用 HBase 作为默认的后端存储,收集到数据存到HBase中。
PinPoint使用
1.添加 Pinpoint 依赖
<dependency> <groupId>com.navercorp.pinpoint</groupId> <artifactId>pinpoint-bootstrap</artifactId> <version>2.2.3</version> </dependency>
2.配置 Pinpoint
在 src/main/resources
目录下创建 pinpoint.config
文件,配置 Pinpoint 的参数。
profiler.applicationName=YourAppName profiler.agentId=YourAgentId
3.编写示例代码
@RestController public class DemoController { @GetMapping("/") public String home() { return "Hello, Pinpoint!"; } @GetMapping("/call") public String callAnotherService() { // 模拟调用另一个服务 return "Calling another service..."; } }
4.访问 Pinpoint 界面
运行您的 Spring Boot 应用程序,并访问 http://localhost:8080/
和 http://localhost:8080/call
,以触发跨度数据的生成。
打开浏览器,访问 http://localhost:8079(默认的 Pinpoint 界面端口),就可以在界面上查看应用地图、性能指标、跨度数据等信息。
PinPoint总结
Pinpoint的优势在于追踪数据粒度非常细、功能强大的用户接口、以及使用HBase作为存储带来的海量存储能力。
总之,Pinpoint 是一个开源的分布式应用性能监控工具,适用于分布式系统和微服务架构,帮助用户实时监控和优化系统性能,了解应用程序的运行状况和性能指标。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》