A maioria das variáveis de configuração do agente PHP pode ser definida por diretório. Essa opção é frequentemente usada quando há um único servidor web atendendo vários aplicativos e você deseja ajustar as configurações (por exemplo, o nome do aplicativo) aplicativo por aplicativo.
O processo de configuração de valores por diretório depende do ambiente. Este documento descreve os três ambientes mais comuns:
Ao usar o módulo PHP, o Apache fornece dois mecanismos para definir variáveis PHP fora do arquivo INI:
Use a sintaxe dos exemplos de arquivos INI quando seu servidor web servir vários domínios. Para visualizar cada um desses domínios separadamente no New Relic:
Para o seu domínio principal, defina newrelic.appname = "My Main Domain" no seu arquivo INI global.
Substitua o valor de cada um dos hosts virtuais adicionando entradas php_value como parte da configuração do host virtual.
Importante
Certifique-se de usar o nome de módulo adequado para a instalação do PHP. Substitua PHP_MODULE nos exemplos abaixo pelo nome do módulo PHP5 instalado. Este nome depende da distribuição Linux e/ou PHP usada. Por exemplo, nomes comuns incluem php5_module, mod_php5, php_module, etc. A capitalização pode variar.
Para servidores Apache, você pode encontrar os nomes dos módulos de uma das seguintes maneiras. Cada um irá gerar uma lista de módulos instalados.
Na linha de comando, execute:
bash
$
apachectl -t-D DUMP_MODULES
OR
Em uma página da web, use:
<?php
print_r(apache_get_modules());
?>
Aqui está um exemplo de separação de domínios, onde PHP_MODULE é o nome do seu módulo PHP5.
<VirtualHost 192.168.42.43>
ServerName www.myvhost1.com
DocumentRoot"/path/to/vhost1/"
...
<IfModule PHP_MODULE>
php_value newrelic.appname "Virtual Host 1"
</IfModule>
</VirtualHost>
<VirtualHost 192.168.123.45>
ServerName www.myvhost2.com
DocumentRoot"/path/to/vhost2/"
...
<IfModule PHP_MODULE>
php_value newrelic.appname "Virtual Host 2"
</IfModule>
</VirtualHost>
No exemplo acima, newrelic.appname é definido com um valor diferente para cada host virtual.
Para valores de string e números, use php_value name VALUE, onde:
name é o nome da configuração INI a ser modificada conforme listado nas configurações INI do PHP.
VALUE é o valor que você deseja definir para esse host virtual específico.
Certifique-se de colocar os valores da string entre aspas ".
Se você quiser alterar uma configuração booleana, use a sintaxe php_flag name VALUE, onde name é o nome da variável conforme listado nas configurações INI do PHP e VALUE é on ou off.
Para desabilitar completamente o agente New Relic para um host virtual, use um sinalizador booleano:
<VirtualHost 192.168.56.78>
ServerName www.myvhost3.com
DocumentRoot"/path/to/vhost3/"
...
<IfModule PHP_MODULE>
php_flag newrelic.enabled off
</IfModule>
</VirtualHost>
Use a sintaxe dos exemplos de arquivos INI dentro de um arquivo .htaccess . Por exemplo:
php_value newrelic.appname "My Blog App"
Isso permite que você controle as configurações por diretório a partir dos diretórios.
Neste exemplo, seu servidor web tem a raiz do documento em /data/webroot. Você também tem dois subdiretórios para aplicativos especializados:
Seu
/data/webroot/blog
contém um aplicativo de blog.
Seu /data/webroot/shop contém um aplicativo de carrinho de compras.
Para que todas as três partes do seu site sejam relatadas como aplicativos distintos na interface do New Relic:
Defina o nome do seu aplicativo principal no arquivo INI.
Substitua esse nome usando um arquivo .htaccess em cada um dos diretórios especializados.
Qualquer parte do seu servidor web (por exemplo, /data/webroot/something) que não tenha um arquivo .htaccess específico usará o nome global do aplicativo definido no arquivo INI.
Importante
O arquivo .htaccess deve estar no diretório de nível superior desse aplicativo. Os objetos nesse diretório, ou em seus subdiretórios, usarão o valor especificado no arquivo .htaccess .
O FastCGI Process Manager (PHP-FPM) é dedicado ao PHP. Ele gera vários processos de trabalho que aguardam solicitações. Ele aumenta o desempenho ao não reinicializar o mecanismo PHP em cada invocação, permitindo que cada processo lide com uma série de solicitações antes de ser reciclado.
Ao usar PHP-FPM, existem dois mecanismos para definir variáveis PHP fora do arquivo INI e uma técnica especial para NGINX:
Importante
Alterar variáveis por diretório pode ser mais difícil se você usar PHP-FPM. Você deve usar vários pools PHP-FPM, um para cada host virtual ou aplicativo exclusivo.
Um pool é um conjunto dedicado de trabalhadores filhos que atenderá apenas solicitações para esse pool. Como requer trabalhadores filhos dedicados, o PHP-FPM não escalará bem se você tiver um grande número de hosts virtuais ou aplicativos para os quais deseja definir opções individuais.
Para configurar o PHP-FPM por diretório:
Defina o nome do aplicativo principal no arquivo INI.
Configure dois pools para os dois aplicativos adicionais.
Substitua a configuração do nome do aplicativo nesses pools.
Cada pool deve ter um mecanismo de conexão exclusivo (para que você possa identificar qual pool usar no arquivo de configuração do servidor web). Aqui está um exemplo de php-fpm.conf:
[app1]
listen=/tmp/pool-app1.sock
php_value[newrelic.appname]="My App 1"
[app2]
listen=/tmp/pool-app2.sock
php_value[newrelic.appname]="My App 2"
[app3]
listen=/tmp/pool-app3.sock
php_flag[newrelic.enabled]=off
O formato geral das configurações de variáveis por pool é php_value[name] = VALUE para variáveis numéricas ou de sequência de caracteres ou php_flag[name] = VALUE para valores booleanos. Sempre coloque os valores da string entre aspas ". Os valores booleanos devem ser on ou off.
Depois que o arquivo de configuração for configurado, o servidor web deverá ser instruído a usar os diferentes pools para diferentes partes do site. Para obter mais informações, consulte a documentação do seu servidor web.
Você pode usar a sintaxe do exemplo de arquivo INI para CGI/FastCGI em um arquivo .user.ini . Isso é semelhante a um arquivo .htaccess para Apache, mas é exclusivo do PHP-FPM. O diretório em que o PHP é executado é verificado em busca de um arquivo .user.ini . Mais informações sobre esse recurso estão disponíveis na documentação dos arquivos user.ini do PHP.
Altere o nome do aplicativo seguindo as etapas a seguir no diretório raiz da página da web.
Crie o arquivo .user.ini
Adicione a configuração que deseja alterar newrelic.appname = "New Appname"
Salve o arquivo.
Por padrão, o .user.ini file é lido a cada cinco minutos, portanto não é necessário reiniciar
Isso é útil nos seguintes cenários:
A configuração do servidor não funciona. Na configuração NGINX/PHP-FPM, pode haver falta de comunicação entre FastCGI e PHP e as informações de fastcgi_param PHP_VALUE newrelic.appname="Appname"
nunca chega ao PHP.
O .htaccess não funciona, como onde o PHP é implementado com suPHP
Importante
Esta seção se aplica apenas ao PHP 5.3.3 ou superior.
Aqui está um pequeno fragmento de um arquivo de configuração NGINX mostrando o procedimento geral para passar valores para seu gerenciador FastCGI com base em um local NGINX.
Embora recomendemos alterar o nome do aplicativo com configurações INI globais ou por diretório, em alguns casos isso pode não ser possível. Por exemplo, as limitações do provedor podem impedir que você modifique os arquivos de configuração.
Antes de começar, recomendamos que você leia as diretrizes de chamada de API de newrelic_set_appname() para garantir a captura mais completa do rastreamento de transação atribuído ao nome do seu aplicativo.
Se você não tiver acesso ao código do seu aplicativo ou se precisar isolar seus aplicativos em seus próprios hosts virtuais por outros motivos, use as seguintes configurações por diretório para substituir quaisquer configurações do arquivo de configuração.
Nomes de aplicativos cumulativos
Se você quiser ter uma visão geral do desempenho do servidor em todos os hosts virtuais ou em todos os aplicativos, é conveniente poder reportar para mais de um aplicativo por vez. Por exemplo, reporte-se a um aplicativo específico de host virtual, bem como a um aplicativo roll-up.
Para fazer isso, defina mais de um nome de aplicativo para o parâmetro newrelic.appname separando cada nome de aplicativo com ponto e vírgula. O nome do aplicativo principal é o primeiro e os nomes dos aplicativos secundários são os próximos. Você pode definir até dois nomes de aplicativos extras.