# Predator **Repository Path**: laurence/Predator ## Basic Information - **Project Name**: Predator - **Description**: 基于xhgui改进的PHP性能监控系统 - **Primary Language**: PHP - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2018-02-08 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Predator ===== Predator 是一款基于基于xhgui改进的图形管理系统,使用方法和xhgui完全一致。主要调整和优化的以下功能: 1、修复原来系统中的BUG。 2、更改bytes为kb或者mb,µs改为ms或者s,日期格式改为年-月-日 时:分:秒。 3、列表项新增IP地址、显示完整访问地址。 4、增加多域名筛选功能,增加登录验证功能(用户名密码请在配置文件中自行配置) 运行环境 =================== Predator运行有以下需求: * PHP 版本大于或者等于5.5. * 系统支持[XHProf](http://pecl.php.net/package/xhprof), [Uprofiler](https://github.com/FriendsOfPHP/uprofiler) or [Tideways](https://github.com/tideways/php-profiler-extension) 这几个性能监控组件. * [MongoDB PHP 扩展](http://pecl.php.net/package/mongo) 版本必须大于或者等于1.3.0. * [MongoDB](http://www.mongodb.org/)版本必须大于或者等于 2.2.0. 安装说明 ============ 请将文档中__PATH__替换为你项目的实际部署路径。 1. 从Github上克隆Predator项目代码. 2. 服务器根目录指定到 Predator 文件夹下的 webroot目录. 3. 设置 cache 目录权限为 0777。Linux运行如下命令:chmod 0777 cache -R 4. 安装并启动MongoDB(需要自己把config目录下的config.default.php重命名为config.php,配置选项请根据实际情况进行调整。). 5. 使用db.collection.ensureIndex()命令为MongoDB添加索引.代码示例如下:系统默认使用 predator数据库。代码示例如下: ``` $ mongo > use predator > db.results.ensureIndex( { 'meta.SERVER.HTTP_HOST' : -1 } ) > 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 } ) > db.results.ensureIndex( { 'meta.simple_url' : 1 } ) ``` 6. 进入目录后使用php install.php 来安装 composer 来管理系统所需要的扩展。代码示例如下: ```bash cd __PATH__/ php install.php ``` 7. 对Web服务器进行配置。 服务器配置 ============= 配置服务器重写规则 ---------------------------------- 建议使用Rewrite重写规则来进行配置,Apache服务器可以进行如下配置: 1. 允许Apache使用rewrite模块对 URL 进行重写,Apache 2.4 配置示例如下: ```apache Options Indexes FollowSymLinks AllowOverride FileInfo Require all granted ``` 2. 加载mod_rewrite模块: ```apache LoadModule rewrite_module libexec/apache2/mod_rewrite.so ``` 3. 利用项目自带的 `.htaccess`文件对项目进行重写. Nginx配置示例如下: ```nginx server { listen 80; server_name example.com; # root directive should be global root __PATH__/webroot/; index index.php; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { try_files $uri =404; include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } ``` 配置 Predator 采样率 ------------------------------- 修改config/config.php文件中的profiler.enable方法可以自定义采样率(并且可以自定义采集条件)。 ```php // In config/config.php return array( // Other config 'profiler.enable' => function() { $url = $_SERVER['REQUEST_URI']; if (strpos($url, '/blog') === 0) { return false; } return rand(1, 100) === 42; } ); ``` 直接返回true 100%采样。 ```php // In config/config.php return array( // Other config 'profiler.enable' => function() { return true; } ); ``` 自定义 'Simple' 选项 -------------------------------- 你可以修改config/config.php文件中的profiler.simple_url对simple_url进行自定义。 ```php // In config/config.php return array( // Other config 'profile.simple_url' => function($url) { // Your code goes here. } ); ``` The URL argument is the `REQUEST_URI` or `argv` value. 使用方法 ============================== 在你的应用加载 external/header.php 文件或者在PHP.INI文件中配置[auto_prepend_file](https://secure.php.net/manual/en/ini.core.php#ini.auto-prepend-file)。 自动加载external/header.php 文件。 Apache服务器配置示例如下: ```apache php_admin_value auto_prepend_file "__PATH__/external/header.php" DocumentRoot "__PATH__/webroot/" ServerName site.localhost ``` Nginx 服务器配置示例如下: ```nginx server { listen 80; server_name site.localhost; root __PATH__/webroot/; fastcgi_param PHP_VALUE "auto_prepend_file=__PATH__/external/header.php"; } ``` 命令行模式的使用方法 ==================== 最简单的使用方法就是在项目中加载`external/header.php`文件: ```php use predator > db.results.ensureIndex( { "meta.request_ts" : 1 }, { expireAfterSeconds : 432000 } ) ``` 使用 Tideways 扩展(推荐) ======================== 该扩展支持PHP7+版本,具体详情请查看 [tideways extension](https://github.com/tideways/php-profiler-extension). 安装好扩展后,你可以参考以下代码修改PHP配置文件 ```ini [tideways] extension="/path/to/tideways/tideways.so" tideways.connection=unix:///usr/local/var/run/tidewaysd.sock tideways.load_library=0 tideways.auto_prepend_library=0 tideways.auto_start=0 tideways.sample_rate=100 ``` 发布和更新 ==================== 你可以到这里查看有关 [Predator](https://github.com/Longjianghu/Predator) 的发布和更新信息 其它说明 ======= 欢迎任何企业或者个人使用 Predator,如果你在使用过程中遇到任何问题请到 [这里](https://github.com/Longjianghu/Predator/issues) 提交,非常感谢!