Pinpoint部署及在PHP项目中应用

Pinpoint环境搭建

  1. 依赖
  • 系统-Centos7
  • 存储-hbase
  • 环境-java8
  • 服务器-tomcat
  • 其他-Python3、PHP7、Nginx
  1. 搭建pinpoint环境
    1. 下载安装 hbase
    2. 启动hbase,注意查看启动日志,确保启动成功
    3. 下载pinpoint的release版本
      下载其中的pinpoint-agent-1.8.5.tar.gz、pinpoint-collector-1.8.5.war、pinpoint-web-1.8.5.war
    4. 下载pinpoint源码,创建hbase表
      git clone https://github.com/naver/pinpoint.git 
      cd pinpoint/hbase/scripts
      $HBASE_HOME/bin/hbase shell hbase-create.hbase
      
    5. 启动pinpoint-collector
      • 复制tomcat项目,到自己的项目目录(如/home/work/pinpoint/collector)
      • pinpoint/collector/webapps下的内容全部删除,并在该路径下创建ROOT目录。将2.3步下载的pinpoint-collector-1.8.5.war解压到ROOT目录下。
        修改pinpoint/collector/webapps/ROOT/WEB-INF/classes/下的hbase.properties中的hbase的地址和端口号,如果hbase默认启动,则不用修改(localhost:2181)
        修改pinpoint/collector/conf/server.xml中绑定的端口号(如果没有冲突,则不用修改)
        修改pinpoint/collector/webapps/ROOT/WEB-INF/classes下的pinpoint-collector.properties中三个地址和端口
        1. collector.receiver.base.port(默认9994)
        2. collector.receiver.stat.udp(默认9995)
        3. collector.receiver.span.udp(默认9996)
      • 启动pinpoint-collector
        pinpoint/collector/bin/startup.sh,查看输出日志log/catalina.out是否成功启动
    6. 启动pinpoint-web
      • 复制tomcat项目,到自己的项目目录(如/home/work/pinpoint/web)
      • pinpoint/web/webapps下的内容全部删除,并在该路径下创建ROOT目录。将2.3步下载的pinpoint-web-1.8.5.war解压到ROOT目录下。
        修改pinpoint/collector/webapps/ROOT/WEB-INF/classes/下的hbase.properties中的hbase的地址和端口号,如果hbase默认启动,则不用修改(localhost:2181)
        修改pinpoint/collector/conf/server.xml中绑定的端口号(如果没有冲突,则不用修改)
      • 启动pinpoint-web
        pinpoint/web/bin/startup.sh,查看输出日志log/catalina.out是否成功启动
    7. 对外开放部署的几个端口号(iptables添加)
      1. pinpoint-web页面访问端口(8080)
      2. pinpoint-collecror中的三个端口号(9994,9995,9996)
    8. 访问127.0.0.1:8080,即可看到pinpoint页面


      Pinpoint部署及在PHP项目中应用_第1张图片
      image.png

配置PHP连接pinpoint服务

  1. 安装pinpoint_php扩展

    git clone https://github.com/naver/pinpoint-c-agent.git
    cd pinpoint-c-agent
    phpize
    ./configure
    make && make install
    # 在php.ini中添加以下配置
    extension=pinpoint_php.so
    pinpoint_php.CollectorHost=unix:/tmp/collector-agent.sock
    pinpoint_php.SendSpanTimeOutMs=0 # 0 is recommanded
    pinpoint_php.TraceLimit=-1
    
  2. 启动php-agent

    1. 进去pinpoint-c-agent/collector-agent
    2. 修改conf/collector.conf
      • 几个地址和端口号(在配置collector中的那三个),
      • Address(对应php.ini中的那个pinpoint_php.CollectorHost,这里不需要加“unix:”前缀,php.ini必须添加“unix:”前缀)
      • 添加AgentID和ApplicationName配置,标志唯一的application
    3. 执行命令
      python3 -m venv env
      source env/bin/activate
      pip3 install -r requirements.txt
      export COLLECTOR_CONFIG=/下载的pinpoint-c-agent目录/collector-agent/conf/collector.conf
      python3 run.py(查看是否报错,查看之前127.0.0.1:8080中是否有了刚启动的application)
      
    4. 注意权限问题(所有操作可以尽量使用php的用户操作)
  3. 配置项目laravel中提交到pinpoint

    1. composer.json中添加如下内容
    {
      "config": {
          "secure-http": false
      },
      "require": {
          "eeliu/php_simple_aop": "v0.1"
      },
      "autoload": {
          "psr-4": {
              "Plugins\\": "app/Support/Plugins/"
          }
      },
      "repositories": [
          {"packagist": false},
          {
              "type": "composer",
              "url": "https://mirrors.aliyun.com/composer"
          },
          {
              "type": "vcs",
              "url": "http://10.77.3.130/CentralPlatformService/php_simple_aop.git"
          }
      ]
    }  
    
    1. composer update更新依赖
    2. 将之前下载的pinpoint-c-agent/PHP/pinpoint_php_example/Plugins文件夹复制到laravel项目的app/Support下边
    3. 修改app\Support\Plugins\NextSpanPlugin.php中的@hook,添加自己要监控的方法
    4. 访问自己的项目,看pinpoint-web页面是否有数据(如果没有,开启php.ini中的log_errors,配置error_log,然后查看错误日志)
  4. 容易出问题的点

    1. php.ini中的地址一定要加"unix:"前缀
    2. 启动python3 run.py会生成/tmp//tmp/collector-agent.sock(自己配置的名称),php会读取这个东西,如果python3 run.py是root用户启动的,那么很可能php-fpm没有权限使用这个sock,解决方法是su php切换到php用户,然后在python3 run.py
    3. 检查端口号是否开放,尤其是9994,9995,9996
    4. 检查代码中@hook后边加的方法名称是否正确,否则容易在web页面显示'no data'

你可能感兴趣的:(Pinpoint部署及在PHP项目中应用)