Configure Additional APM Browser Agent Injection Settings
Update ProbeConfig.acml file
In ProbeConfig.acml file, there is a section called
INJECTION with additional settings available to adjust how the browser
agent injection is performed if desired. Each setting has a comment explaining what
it does.
INJECTION:
### Exclusion Settings ###
# URLs that end in these extensions will be skipped for browser agent injection.
excluded_extensions:
...
-
Determine which pages should or should not have the browser agent injected into them.
-
The location in the page where the browser agent should be injected in.
-
Know how to respond to cases where the application server does not provide necessary information for the browser agent injection. For example: charset and MIME type of the page.
All of these settings can be updated without having to restart the application server.
- The browser agent will be injected after the <head> tag of
the HTML page.
This is controlled by the
inject_location_tagandinject_beforesettings.If the tag is missing, it will append to the end of the file. This is controlled by
inject_modesetting. - Only "text/html" and "application/xhtml+xml" MIME types will be
considered for injection.
This is controlled by the
valid_mime_typessetting. - URLs that end in particular file extensions such as
json, txt, gifand others, will skip browser agent injection.This is controlled by the
excluded_extensionssetting. - Applications with particular context roots will skip browser
agent injection.
This is controlled by the
excluded_context_rootssetting.
Update BrowserAgentTemplate.txt
This file determines what HTML is injected into the page.
<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>
The values surrounded by @@ are replaced before injection occurs,
and they are values acquired from AgentConfig.properties file.
This template can be adjusted to account for browser agent-side
configurations mentioned in the other sections of this documentation, such as the
window.apmrum.rewriteRules. For information, see Hide Personally Identifiable Information.
Any changes made to this file will be picked up automatically, and will not require a restart of the application server.
Update Mime types
In order for injection to succeed the mime-type specified in the "Content-Type" header in the HTTP Response should always contain "text/html". There should be no problems/issues when this header is set properly.
However, some applications respond with an incorrect mime-type or no mime-type at
all. When no mime-type is provided the Browser Agent injection uses the
"default_mime_type" parameter in the ProbeConfig.acml
file to decide what to do. The default value for this parameter is set to
"text/plain" therefore injection will not happen in all such cases where
the header is missing.
If you want injection in these cases then you should change the "default_mime_type" parameter to "text/html" to have that injection allowed.
In the opposite case, when the "Content-Type" header in the HTTP Response does contain "text/html", but the actual content is not HTML, we use a sophisticated signature/heuristic based content analysis algorithm to decide whether to inject or not. If we determine the content to be of a type that is not HTML, then we will not inject anything into the stream.