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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容