docker搭建pyroscope

570 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情

pyroscope 简单说明

基于 Go 的开源实时性能分析平台。仅需在源码中添加几行代码,pyroscope 就能帮你找出代码的性能问题、CPU 使用过高的原因,还有丰富的图表和调用树展示。支持 Go、Python、Ruby 编程语言,中文说明

基于docker安装的脚本命令

PYROSCOPE_CONTAINER_Name="pyroscope"
PYROSCOPE_PORT="4040"
docker rm -f $PYROSCOPE_CONTAINER_Name
docker run \
  -d \
  --name $PYROSCOPE_CONTAINER_Name \
  -p $PYROSCOPE_PORT:4040 \
  pyroscope/pyroscope:latest server

基于golang语言的引入(更多可参考其官方文档)


func main() {
   initPyroscope()
   '''your code'''
}

/**
 * @Description: 初始化 pyroscope 监控
 */ 
func initPyroscope() {
   pyroscope.Start(pyroscope.Config{
      ApplicationName: "test-v1.0.0",
      // replace this with the address of pyroscope server
      ServerAddress: "http://pyroscope-server:4040",
      // you can disable logging by setting this to nil
      Logger: nil,
      // by default all profilers are enabled,
      // but you can select the ones you want to use:
      ProfileTypes: []pyroscope.ProfileType{
         pyroscope.ProfileCPU,
         pyroscope.ProfileAllocObjects,
         pyroscope.ProfileAllocSpace,
         pyroscope.ProfileInuseObjects,
         pyroscope.ProfileInuseSpace,
      },
   })
}

代码启动之后,访问目标地址 127.0.0.1:4040 ,此处以本地环境为例进行演示

image.png

可以看到项目运行过程中的火焰图,获取到的数据包括以下监控信息(常见的 cpu、内存等信息)

image.png

此外,diff view 还可以对比项目不同版本之间的差异,个人感觉此功能较为靠谱,可以比对线上版本与灰度版本的差异,从而尽早的发现问题并给予解决

image.png 注:此处因为是两个项目所以可比性较差,线上环境使用时要注意下性能使用,毕竟收集pprof信息也是需要耗费少量性能的。

PS:其官方文档比较详细,个人比较喜欢其文档风格。

image.png

【golang开发】,欢迎👊相互交流~