首页 帮助中心 基调听云Server 配置
基调听云Server

 配置文件位置

配置文件位置会根据软件环境不同而不同, 几个典型的位置包括:
/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 文件内。

更新配置步骤

  1. 编辑配置文件。

    vi /path/to/networkbench.ini
    

    vi /path/to/php.ini
    
  2. kill探针的汇总进程。

    sudo killall networkbench
    
  3. 重启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 OptionsAllowOverride 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 OptionsAllowOverride 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模式数据开关


控制是否采集CLI性能数据的开关如下:

nbs.cli = false

取值: true 或false 。

说明:

  • false: 不采集CLI性能数据。默认值为false。
  • true: 采集CLI性能数据。如果设置为true,CLI的性能数据将会在后台任务区展示。

注意:

当CLI的PHP进程永不退出时,开启此开关可能会导致性能数据的累积,内存占用越来越大。

设置时间获取方式

根据性能需要,您可以设置不同的时间获取方式。

nbs.timer_type=0

取值: 0 或1 。

说明:

  • 0: 代表时间获取方式为clock_gettime,系统调用,可准确获取时间,本身会消耗一定的CPU。默认值为0。
  • 1: 代表时间获取方式为RDTSC,汇编指令,与CPU频率相关,在多路CPU环境下,可能导致前后获取的时间差值不准确。