Este documento é o AI Monitoring para desenvolvedores ou mantenedores do framework PHP. Ele sugere maneiras de estender sua framework adicionando suporte para New Relic.
O agente PHP oferece suporte ao framework descobrindo onde no framework o código de transação da web pode ser nomeado apropriadamente e nomeando a transação da web com base nas informações encontradas na classe, chamada de função, etc. Esta solução é frágil e está sujeita a alterações de código pelos desenvolvedores. A New Relic incentiva os desenvolvedores framework a fazerem as poucas chamadas necessárias para melhorar a experiência do usuário pronta para uso com o framework que eles mantêm.
Ajude seu usuário
A New Relic pode identificar o nome da transação da web e onde inserir cabeçalhos e rodapés JavaScript para da New Relic. Porém, para melhorar a experiência do usuário final, aumentar o desempenho e facilitar a manutenção do código, os desenvolvedores framework devem fazer esse trabalho sozinhos.
Cabe aos desenvolvedores dos diversos frameworks decidir se desejam ajudar seu usuário adicionando suporte nativo ao New Relic. Em quase todos os casos, adicionar suporte para New Relic envolve inserir três chamadas de API em algum lugar do código framework .
Terminologia
Para entender a melhor forma de adicionar suporte ao New Relic, é útil entender alguns dos principais pontos de interação.
Term | Definition |
---|---|
Web transactions | Web transactions são solicitações de recursos (ou acessos de usuários) ao seu site. Com o framework, isso geralmente é tratado por um mecanismo de despacho MVC. |
Metrics | Metrics são denominadas entidades que reportam informações de tempo. A New Relic usa essas métricas para gerar gráficos e páginas, como a página APM Summary . Por exemplo, o instrumento New Relic chama o MySQL e gera uma métrica chamada Métrica contém apenas dados de tempo. |
Transaction traces | Durante cada período de colheita, a New Relic registra a transação da web mais lenta que fica abaixo de um limite definido pelo usuário. Este é um transaction trace. Tem mais detalhes do que uma simples métrica. Se ativado, incluirá um gráfico de chamada detalhado de exatamente quais funções foram chamadas e quanto tempo demoraram. Para instruções de consulta lenta, ofusca todos os dados da chamada. |
Nome transação
O modo como você nomeia sua transação da web afetará a qualidade da experiência do usuário.
Importante
Não use colchetes [suffix]
no final do nome da sua transação. O New Relic remove automaticamente os colchetes do nome. Em vez disso, use parênteses (suffix)
ou outros símbolos, se necessário.
Examples:
Se você tiver uma framework estilo blog, você nomearia as diversas transações com base na atividade do usuário: display
, edit
, login
, etc.
Se você usar uma arquitetura MVC, uma convenção de nomenclatura apropriada será controller/action
. Não inclua nenhum dado específico da solicitação no nome da transação. Por exemplo, usar o URL de solicitação real leva a problemas de agrupamento métrico.
Platform | Transaction naming example |
---|---|
Drupal 7 | O despacho é feito em |
CakePHP 1.3 | CakePHP tem uma classe |
No ponto em que você deseja rotear o código para um controlador e ação específicos (se estiver usando MVC) ou para uma ação (se não estiver usando MVC), insira um código semelhante a este:
Controller and action (ao usar MVC):
if (extension_loaded ('newrelic')) { newrelic_name_transaction ($controller . '/' . $action);}
Action only (não usando MVC):
if (extension_loaded ('newrelic')) { newrelic_name_transaction ($action);}
Insira o cabeçalho e rodapé JavaScript
Para o tempo de carregamento da página (às vezes chamado de monitoramento de usuário real ou RUM), insira o cabeçalho e o rodapé JavaScript. Isso permite monitor a experiência do usuário final da página gerada.
- Recomendação: Se o seu framework possui uma função central que gera todos os cabeçalhos e rodapés das páginas, instale o código JavaScript aqui.
- Para estruturas baseadas em modelos, insira-as em seus modelos de cabeçalho e rodapé.