美文网首页
Tideways+Xhgui搭建非侵入式php监控平台

Tideways+Xhgui搭建非侵入式php监控平台

作者: 阿垃垃圾君 | 来源:发表于2018-10-11 14:14 被阅读0次

    Tideways+Xhgui搭建非侵入式php监控平台

    参考文档:

    https://yq.aliyun.com/articles/98639?t=t1

    https://segmentfault.com/a/1190000007580819https://yq.aliyun.com/articles/98639?t=t1

    windows平台可以参考:

    http://www.drupalonwindows.com/en/blog/profiling-drupal-xhprof-uprofiler-tideways-php7-linux-and-windows#settingup

    搭建流程:

    1. 安装mongodb,以及php-mongodb拓展

    参考:http://www.haorooms.com/post/linux_mongo_backupgo

    https://www.cnblogs.com/ghjbk/p/6795351.html

    mongodb版本需要为3.4,否则会有bug

    安装mongodb

    下载安装包:mongodb-linux-x86_64-rhel62-v3.4-latest.tgz

    下载地址:http://downloads.mongodb.org/linux/mongodb-linux-x86_64-rhel62-v3.4-latest.tgz?_ga=2.220816414.700445038.1522052013-1246825872.1521798307

    安装:

    
    tar zxf mongodb-linux-x86_64-rhel62-v3.4-latest.tgz
    
    mv mongodb-linux-x86_64-rhel62-3.4.14-17-ge7da78c3b6 /usr/local/mongodb
    
    mkdir /usr/local/mongodb/data
    
    mkdir /usr/local/mongodb/logs
    
    

    启动mongod:

    
    cd /usr/local/mongodb/bin
    
    ./mongod --fork --dbpath=/usr/local/mongodb/data --logpa th=/usr/local/mongodb/logs/mongodb2.log --logappend
    
    
    安装mongodb的php拓展

    参考:https://www.cnblogs.com/ghjbk/p/6795351.html

    下载源码包:mongodb-1.1.9.tgz

    下载地址:http://pecl.php.net/get/mongodb-1.1.9.tgz

    下载页面:http://pecl.php.net/package/mongodb

    解压:

    
    tar -zxf mongodb-1.1.9.tgz
    
    

    进入mongodb拓展目录,编译安装拓展

    
    cd mongodb-1.1.9/
    
    phpize
    
    ./configure --with-php-config=/usr/local/php/bin/php-config
    
    make && make install
    
    

    修改php.ini文件

    
    vi /usr/local/php/lib/php.ini
    
    

    添加mongodb.so扩展配置,保存退出

    
    extension=mongodb.so
    
    

    2. 安装tideways扩展

    参考:https://tideways.io/profiler/article/35-installation-on-php#redhatfedoracentos

    下载安装包:

    
    wget -Otideways-php.tar.gz "https://s3-eu-west-1.amazonaws.com/tideways/extension/4.1.5/tideways-php-4.1.5-x86_64.tar.gz"
    
    

    安装扩展:

    
    tar xzvf tideways-php.tar.gz
    
    cd tideways-php
    
    bash install.sh
    
    

    修改php.ini

    
    vi /usr/local/php/lib/php.ini
    
    

    添加tideways扩展

    
    extension=tideways.so
    
    

    3. 安装tideways-daemon

    下载安装包:

    
    wget -Otideways-daemon.tar.gz "https://s3-eu-west-1.amazonaws.com/tideways/daemon/1.5.19/tideways-daemon_linux_amd64-1.5.19.tar.gz"
    
    

    安装:

    
    tar xzvf tideways-daemon.tar.gz
    
    cd tideways-daemon
    
    bash install.sh
    
    

    4. 安装xhgui

    在有网络的情况下从git拉取xhgui源代码,并且进行安装

    
    git clone https://github.com/laynefyc/xhgui-branch.git
    
    cd xhgui-branch
    
    php install.php
    
    

    安装会使用composer,如果没有网络的情况下,需要将带有vender文件夹的所有代码文件拷贝到对应的web目录。

    有可能需要修改文件夹权限使其能够被访问

    修改 $webroot/xhgui-branch/config/config.default.php 文件的配置

    配置扩展类型修改为tideways

    
        /*
    
        * support extension: uprofiler, tideways_xhprof, tideways, xhprof
    
        * default: xhprof
    
        */
    
        'extension' => 'tideways',
    
    

    配置需要抓取的server,port等参数来过滤不同的站点

    
        // Profile 1 in 100 requests.
    
        // You can return true to profile every request.
    
        'profiler.enable' => function() {
    
            if($_SERVER['SERVER_NAME'] == 'localhost') {
    
                return false;
    
            }
    
            return true;//rand(1, 100) === 42;
    
        },
    
    

    上方代码中返回false表示不抓取信息,否则抓取请求信息

    5. 测试MongoDB连接情况并优化索引

    进入mongodb命令环境:

    
    cd /usr/local/mongodb/bin
    
    ./mongo
    
    

    连接成功后优化索引:

    
    > use xhprof
    
    > db.results.ensureIndex( { 'meta.SERVER.REQUEST_TIME' : -1 } )
    
    > db.results.ensureIndex( { 'profile.main().wt' : -1 } )
    
    > db.results.ensureIndex( { 'profile.main().mu' : -1 } )
    
    > db.results.ensureIndex( { 'profile.main().cpu' : -1 } )
    
    > db.results.ensureIndex( { 'meta.url' : 1 } )
    
    

    6. 配置nginx

    nginx配置主要是配置xhgui的虚拟服务器,配置可以参考:

    
    server {
    
            listen  9066;
    
            server_name 192.168.202.106;
    
            fastcgi_buffer_size 8k;
    
            fastcgi_buffers 8 32k;
    
            proxy_buffer_size 8k;
    
            proxy_buffers 8 32k;
    
            root /var/www/html/xhgui-branch/webroot;
    
            location / {
    
              index index.php;
    
              if (!-e $request_filename) {
    
                  rewrite . /index.php last;
    
              }
    
            }
    
            location ~ ^(.+\.php)(.*)$ {
    
              fastcgi_pass 127.0.0.1:9000;
    
              fastcgi_index index.php;
    
              fastcgi_split_path_info ^(.+\.php)(.*)$;
    
              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    
              fastcgi_param PATH_INFO $fastcgi_path_info;
    
              fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
    
              include fastcgi_params;
    
            }
    
    }
    
    

    端口,服务名,web路径等可以根据实际修改

    7. 配置tideways参数

    可以通过两种方式配置tideways参数,这里采用配置php.ini文件的方式

    打开php.ini文件

    
    vi /usr/local/php/lib/php.ini
    
    

    在末尾添加

    
    ;不需要自动加载,在程序中控制就行
    
    tideways.auto_prepend_library=0
    
    ;频率设置为100,在程序调用时能改
    
    tideways.sample_rate=100
    
    ;设置调用时预加载的文件
    
    auto_prepend_file="/var/www/html/xhgui-branch/external/header.php"
    
    

    上述设置预加载文件为全局设置,站点的过滤需要通过第4步中的配置文件来进行配置。如果需要针对站点进行设置,可以再nginx的配置文件中找到需要进行性能分析的站点,对配置进行如下修改:

    
    server {
    
      listen 80;
    
      server_name site.xxx;
    
      root /var/www/html/xxx;
    
      #新增一条配置
    
      fastcgi_param PHP_VALUE "/var/www/html/xhgui-branch/external/header.php";
    
      ...
    
      ...
    
      ...
    
    }
    
    

    这个方法对共用同一个php-fpm时可能会产生问题,具体可以参考

    https://segmentfault.com/a/1190000013322461?utm_source=tag-newest以及https://github.com/laynefyc/xhgui-branch/issues/10

    8. 重启php-fpm和nginx

    
    service php-fpm reload
    
    /usr/bin/nginx -s reload
    
    

    相关文章

      网友评论

          本文标题:Tideways+Xhgui搭建非侵入式php监控平台

          本文链接:https://www.haomeiwen.com/subject/zmjbaftx.html