什么是 Pyroscope? Pyroscope是一个开源的持续分析系统,使用Go语言实现。服务端使用web页面查看,提供丰富的分析的功能,客户端提供Go、Java、Python、Ruby、PHP、.NET等多种语言的支持,并且支持PUSH、PULL两种采集方式。
Pyroscope 是一个开源的持续性能剖析平台。它能够帮你:
找出源代码中的性能问题和瓶颈 解决 CPU 利用率高的问题 理解应用程序的调用树(call tree) 追踪随一段时间内变化的情况 特性:
可以存储来自多个应用程序的多年剖析数据 你可以一次查看多年的数据或单独查看特定的事件 较低的 CPU 开销 数据压缩效率高,磁盘空间要求低 快捷的 UI 界面 部署架构图:
Pyroscope server安装 Pyroscope server端可以通过docker安装:
docker run -it -p 4040:4040 pyroscope/pyroscope:latest server
也可以在各中操作系统中直接安装。
比如Mac:
1 2 brew install pyroscope-io/brew/pyroscope brew services start pyroscope-server 各Liunx发行版也方便安装
比如ubuntu:
1 2 wget https://dl.pyroscope.io/release/pyroscope_0.10.2_amd64.deb sudo apt-get install ./pyroscope_0.10.2_amd64.deb 安装完成后,就可以通过web界面访问了: http://localhost:4040, 你可以通过配置文件更改监听端口以及其它一些配置项。
Pyroscope 客户端实践 Pyroscope 提供了多种客户端,比如Go、Java、Python、Ruby、PHP、....
本篇文章讲述了如何将 loki 和 tempo 结合进行分布式追踪。 日志和trace结合使用的方案有很多,由于 loki 官方自带了 trace 结合的配置,不用进行过多的二次开发,所以这里采用 loki 和 tempo 结合的方案。
loki 和 tempo 是什么就不过多介绍,安装流程也省略。 这里主要讲如何配置。
配置 这里我们采用普遍的方案, 使用 grafana 来展示日志和 trace。
配置 loki 在 grafana , 打开数据源配置界面,新建 loki 数据源,并且配置好地址, 如下图所示点击 Save & Test, 如果配置正确,则会出现 Data source connected and labels found. 标志。
配置 tempo 同配置 loki 一致,新建 grafana 数据源,选择 tempo ,配置好相应的url 数据,点击测试,出现 Data source connected and labels found. 标志,就表示配置成功。
在 tempo 配置页面的底部可以看到一个配置栏目 Trace to logs , 可以选择相应的日志数据源,这里我们选择 loki....
使用分布式链路追踪查看 sql 的执行情况 今天我们来讲一讲如何在 go 语言中使用 OpenTelemetry 链路追踪追踪 sql的执行情况(执行时间、语句等)。
初始化 我们这里需要有一个采用了数据库的项目,为了使用方便,我们这里采用了 ent 来进行数据库的操作。
初始化数据库实体 为了演示方便,我们这里简单定义一个 user 实体, user 有2个成员字段 id 和 name。
1 $ ent init User 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package schema import ( "entgo.io/ent" "entgo.io/ent/schema/field" ) // User holds the schema definition for the User entity....