配置文件位置会根据软件环境不同而不同, 几个典型的位置包括:
/etc/php.d/networkbench.ini
或 /etc/php5/fpm/conf.d/networkbench.ini
如果PHP是通过源码编译安装的,那么配置文件的位置依赖于编译时选项指定的位置。
如果编译php时指定了 --with-config-file-scan-dir
选项,那么networkbench.ini
会放在编译时指定的位置
运行
php -i | grep .ini
其中的 Scan this dir for additional .ini files 标明了配置文件的具体位置。
例如 :
Scan this dir for additional .ini files => /opt/php.d/
相应配置文件为 /opt/php.d/networkbench.ini
如果编译php时禁止了 --with-config-file-scan-dir
选项,那么配置文件会合并在php.ini文件中
运行
php -i | grep .ini
如果其中的 Scan this dir for additional .ini files 等于(none) ,表示编译PHP时禁止了 --with-config-file-scan-dir 选项, 其中的 Loaded Configuration File 标明了php.ini文件的具体位置 。
例如:
Scan this dir for additional .ini files =>(none)
Loaded Configuration File=> /opt/php55/lib/php.ini
说明配置在 /opt/php55/lib/php.ini
文件内。
编辑配置文件。
vi /path/to/networkbench.ini
或
vi /path/to/php.ini
kill探针的汇总进程。
sudo killall networkbench
重启Web Server。
sudo service httpd restart
或
sudo service php-fpm restart
自动命名
nbs.auto_app_naming = 0
数据类型: 整型
0 - 禁用自动命名,默认禁用
1 - 启动自动命名,命名规则:使用虚拟主机的域名+端口作为应用名称
2 - 启动自动命名,命名规则:使用nbs.app_name+端口作为应用名称
当您在同一台服务器上部署多个应用,并且使用了虚拟主机(Virtual Host)时,建议打开此选项。
当使用域名区分虚拟主机时(即Virtual Host中配置了ServerName),建议使用 nbs.auto_app_naming = 1
。
当仅使用端口号区分虚拟主机时,建议使用 nbs.auto_app_naming = 2
, 否则由于未配置域名,可能会产生一些非预期之内的应用名称。
应用名称
nbs.app_name = "PHP Application"
如果通过自动命名的方式获取的应用名称不满足您的要求,您需要将nbs.auto_app_naming设置为0,
然后通过修改APACHE或php-fpm或NGINX的配置文件来区分不同的应用。
Apache 方式:
修改 httpd.conf 或 .htaccess
说明:这需要有
AllowOverride Options
或AllowOverride All
权限
对每个 VirtualHost 增加 php_value nbs.app_name "my app"
, 例如:
<VirtualHost 192.168.1.2>
ServerName www.test.com
DocumentRoot "/path/to/vhost/"
...
<IfModule PHP_MODULE>
php_value nbs.app_name "my app name"
</IfModule>
</VirtualHost>
<VirtualHost 192.168.1.3>
ServerName www.test2.com
DocumentRoot "/path/to/vhost2/"
...
<IfModule PHP_MODULE>
php_value nbs.app_name "another app"
</IfModule>
</VirtualHost>
注意:
IfModule
语句中的PHP_MODULE
应该和引入php模块时的名称一致,
例如您加载PHP时使用LoadModule php5_module modules/libphp5.so
,
则对应语句应该修改为<IfModule php5_module>
Nginx方式:
修改nginx.conf, 对每个站点内增加配置参数即可, 例如:
server {
listen 80;
server_name www.web.com;
location ~ /.php$ {
fastcgi_param PHP_VALUE "nbs.app_name=www.web.com";
...
}
}
server {
listen 80;
server_name bbs.web.com;
location ~ /.php$ {
fastcgi_param PHP_VALUE "nbs.app_name=bbs.web.com";
...
}
}
或对按路径区分的站点,例如:
location /app1 {
fastcgi_param PHP_VALUE "nbs.app_name=my app name";
...
}
location /app2{
fastcgi_param PHP_VALUE "nbs.app_name=another app";
...
}
php-fpm方式:
修改php-fpm.conf
[app1]
listen=/tmp/pool-app1.sock
php_value[nbs.app_name] = "my app name"
[app2]
listen=/tmp/pool-app2.sock
php_value[nbs.app_name] = "another app"
CLI下代码方式:
ini_set("nbs.app_name", "your_app_name")
设置当前应用名称为 your_app_name
, 仅在CLI模式下生效
默认情况下,当您想临时禁用所有应用的性能数据采集时,应该通过基调听云报表内的开关来临时禁用和启用探针。
当需要禁用特定应用的性能数据时,可以通过下述配置来禁用其中某一虚拟主机的性能数据。
Apache 方式:
修改 httpd.conf 或 .htaccess
这需要有
AllowOverride Options
或AllowOverride All
权限。
对需要禁用的 VirtualHost 增加 php_flag nbs.agent_enabled off
, 例如:
<VirtualHost 192.168.1.3>
ServerName www.test2.com
DocumentRoot "/path/to/vhost2/"
...
<IfModule PHP_MODULE>
php_flag nbs.agent_enabled off
</IfModule>
</VirtualHost>
注意:
IfModule
语句中的PHP_MODULE
应该和引入php模块时的名称一致,
例如您加载PHP时使用LoadModule php5_module modules/libphp5.so
,
则对应语句应该修改为<IfModule php5_module>
php-fpm方式:
修改php-fpm.conf
[app]
listen=/tmp/pool-app2.sock
php_flag[nbs.agent_enabled] = off
Nginx方式:
修改nginx.conf
location /app1{
fastcgi_param PHP_VALUE "nbs.agent_enabled=false";
...
}
如果要配置排队时间,必须保证相关服务器的时钟同步。
排队时间定义:
从负载均衡服务器转发开始到web应用服务器的请求开始被处理所消耗的时间。
原理:
负载均衡设备或容器收到请求后,增加请求的http头: X-QUEUE-START,
内容为收到请求的毫秒数,负载均衡将请求转发给WEB应用服务器。
WEB应用服务器在处理请求时,获取当前时间的毫秒数,两个时间差值即为请求排队时间。
例如,大量请求在web应用服务器队列内排队后请求才被处理时,排队时间会变长
配置方法:
Apache 配置
RequestHeader set X-QUEUE-START "%t"
Nginx 配置(1.2.6版本以上)
使用 proxy_set_header
proxy_set_header X-QUEUE-START "s=$msec";
使用 fastcgi_param
fastcgi_param HTTP_X_QUEUE_START "s=$msec";
使用 Passenger
passenger_set_cgi_param HTTP_X_QUEUE_START "s=${msec}";
使用 uWSGI
uwsgi_param HTTP_X_QUEUE_START "s=${msec}";
HaProxy 配置
http-request set-header X-Queue-Start t=%Ts%ms
F5 配置
when HTTP_REQUEST_SEND {
set secs [clock seconds]
set ms [clock clicks -milliseconds]
set base [expr { $secs * 1000 }]
set fract [expr { $ms - $base }]
if { $fract >= 1000 } {
set diff [expr { $fract / 1000 }]
incr secs $diff
incr fract [expr { -1000 * $diff }]
}
set micros [format "%d%03d000" $secs $fract]
clientside {
HTTP::header insert X-QUEUE-START "t=${micros}"
}
}
PHP探针有两个模块:PHP扩展和汇总进程。每个模块都有单独的日志开关。
PHP扩展日志:
日志文件路径
nbs.agent_log_file_name = "/var/log/networkbench/php-agent.log"
说明: 指定php扩展的日志文件路径。
日志级别
nbs.agent_log_level = "info"
取值: "OFF", "CRITICAL", "ERROR", "WARNING", "INFO", "VERBOSE", "DEBUG" 。
说明: 本选项是控制日志数据写入日志文件的级别。
"DEBUG"是最低级,允许所有日志信息写入日志文件。 "OFF"是最高级,禁止所有日志信息写入日志文件。
汇总进程日志:
日志文件路径
nbs.daemon_log_file_name = "/var/log/networkbench/daemon.log"
说明: 指定汇总进程的日志文件路径。
日志级别
nbs.daemon_log_level = "info"
取值: "OFF", "CRITICAL", "ERROR", "WARNING", "INFO", "VERBOSE", "DEBUG" 。
说明: 本选项是控制日志数据写入日志文件的级别。
"DEBUG"是最低级,允许所有日志信息写入日志文件。"OFF"是最高级,禁止所有日志信息写入日志文件。
审计模式
nbs.audit_mode = false
取值: true / false
说明: 本选项设定是否在日志文件中写入所有向基调听云平台上传和下载的数据内容。
是否启用安全连接
nbs.ssl = true
取值: true 或 false 。 说明: 是否使用安全连接(https)发送数据。
代理服务器地址
nbs.proxy_host =
说明: 代理服务器的地址。若选项不为空,则本选项值为代理服务器的IP地址。
如果nbs.ssl = true,使用https代理
如果nbs.ssl = false,使用http代理
代理服务器端口
nbs.proxy_port =
说明: 本选项指定代理服务器的端口。
代理服务器user
nbs.proxy_user =
说明: 若代理服务器需要用户名密码,本选项指定代理服务器的用户名。
代理服务器password
nbs.proxy_password =
说明: 若代理服务器需要用户名密码,本选项指定代理服务器的登陆密码。
控制是否采集CLI性能数据的开关如下:
nbs.cli = false
取值: true 或false 。
说明:
注意:
当CLI的PHP进程永不退出时,开启此开关可能会导致性能数据的累积,内存占用越来越大。
根据性能需要,您可以设置不同的时间获取方式。
nbs.timer_type=0
取值: 0 或1 。
说明: