Configurar Definições Adicionais de Injeção do Agente do Navegador do APM

Depois que esse recurso APM Browser Agent estiver ativado, será possível personalizar as definições padrão e adicionar outras, dependendo dos seus requisitos.

Atualizar arquivo ProbeConfig.acml

No arquivo ProbeConfig.acml, há uma seção chamada INJECTION com definições adicionais disponíveis para ajustar como a injeção do agente do browser é executada, se desejado. Cada configuração tem um comentário explicando o que ela faz.

INJECTION:
  ### Exclusion Settings ###
  # URLs that end in these extensions will be skipped for browser agent injection.
  excluded_extensions:
...
Você pode usar estas definições para:
  • Determine quais páginas devem ou não ter o agente do navegador injetado nelas.

  • O local na página em que o agente do navegador deve ser injetado.

  • Saiba como responder a casos em que o servidor de aplicativos não fornece as informações necessárias para a injeção do agente do navegador. Por exemplo: conjunto de caracteres e tipo MIME da página.

Todas essas definições podem ser atualizadas sem precisar reiniciar o servidor de aplicativos.

O comportamento padrão é o seguinte:
  • O agente do navegador será injetado após a tag <head> da página HTML.

    Isso é controlado pelas configurações inject_location_tag e inject_before.

    Se a tag estiver ausente, ela será anexada ao final do arquivo. Isso é controlado pela configuração inject_mode.

  • Somente os tipos MIME "text/html" e "application/xhtml+xml" serão considerados para injeção.

    Isso é controlado pela definição valid_mime_types.

  • URLs que terminam em extensões de arquivo específicas, como json, txt, gif e outras, ignorarão a injeção do agente do navegador.

    Isso é controlado pela definição excluded_extensions.

  • Aplicativos com raízes de contexto específicas ignorarão a injeção de agente de navegador.

    Isso é controlado pela definição excluded_context_roots.

Atualizar BrowserAgentTemplate.txt

Este arquivo determina qual HTML é injetado na página.

O comportamento padrão do Agente APM 1.3 e da versão superior é o seguinte:
<script type="application/javascript">
window.apmrum = (window.apmrum || {});
window.apmrum.serviceName='@@SERVICE_NAME@@';
window.apmrum.webApplication='@@WEB_APPLICATION@@';
window.apmrum.ociDataUploadEndpoint='@@UPLOAD_ENDPOINT@@';
window.apmrum.OracleAPMPublicDataKey='@@PUBLIC_KEY@@';
</script>
<script type="application/javascript"async crossorigin="anonymous"src="@@UPLOAD_ENDPOINT@@/static/jslib/apmrum.min.js"></script>

Os valores cercados por @@ são substituídos antes da injeção, e são valores adquiridos do arquivo AgentConfig.properties.

Este modelo pode ser ajustado para ter em conta as configurações do agente do navegador mencionadas nas outras seções desta documentação, como window.apmrum.rewriteRules. Para obter informações, consulte Ocultar Informações de Identificação Pessoal.

Todas as alterações feitas neste arquivo serão selecionadas automaticamente e não exigirão uma reinicialização do servidor de aplicativos.

Atualizar tipos de Mime

Para que a injeção obtenha êxito, o tipo mime especificado no cabeçalho "Content-Type" na Resposta HTTP deve sempre conter "text/html". Não deve haver problemas/problemas quando este cabeçalho está definido corretamente.

No entanto, alguns aplicativos respondem com um tipo mime incorreto ou nenhum tipo mime. Quando nenhum mime-type é fornecido, a injeção do Agente do Navegador usa o parâmetro "default_mime_type" no arquivo ProbeConfig.acml para decidir o que fazer. O valor padrão desse parâmetro é definido como "text/plain"; portanto, a injeção não ocorrerá em todos os casos em que o cabeçalho está ausente.

Se quiser injeção nesses casos, altere o parâmetro "default_mime_type" para "text/html" para que essa injeção seja permitida.

No caso oposto, quando o cabeçalho "Content-Type" na Resposta HTTP contém "text/html", mas o conteúdo real não é HTML, usamos um sofisticado algoritmo de análise de conteúdo baseado em assinatura/heurística para decidir se injetar ou não. Se determinarmos que o conteúdo é de um tipo que não seja HTML, não injetaremos nada no fluxo.