Splunk AppDynamics Extension Buildpack
From v4.6.x onwards, Splunk AppDynamics provides extension buildpack, appdbuildpack that can be used in tandem with standard buildpacks using Cloud Foundry’s multiple buildpack workflow. The buildpack serves as a single point for Splunk AppDynamics APM support.
Sample Applications
You can find sample applications demonstrating the multi-buildpack approach in this GitHub repository.
Before You Begin
Cloud Foundry Command Line Interface (cf CLI) v6.38 or later is required to use multiple buildpacks. See Installing the cf CLI.
WorkFlow
APPD_AGENT Values
Language | Standard BuildPack | APPD_AGENT value |
---|---|---|
NET Framework (Windows) | hwc_buildpack |
dotnet |
.NET Core (Linux) | dotnet_core_buildpack |
dotnet-linux |
.NET Core (Windows) | binary_buildpack |
dotnet-windows |
Python | python_buidpack |
python |
GoLang | go_buildpack |
golang |
NodeJS | nodejs-buildpack |
nodejs |
Advanced Features
The Splunk AppDynamics extension buildpack supports configurable environment variables. This allows you to customize how you fetch agent binaries and override agent configuration.
Overriding Agent Binary Downloads
By default appdbuildpack
fetches the corresponding Splunk
AppDynamics agent from standard language-specific repositories (NuGet for .NET, PyPI
for Python and NPM for Node.js). For .NET Framework, .NET Core Windows and Node.js
applications, it's possible to override the repository where
appdbuildpack
fetches the agents. If you set the environment
variable APPD_AGENT_HTTP_URL
to a custom http url where the agent
files are hosted, appdbuildpack
then downloads the agent from that
url and installs the agent.
APPD_BASIC_AUTH_USERNAME
and
APPD_BASIC_AUTH_PASS
environment variables.For example, for a .NET Framework application, set
APPD_AGENT_HTTP_URL
and basic authentication credential
variables (if required) in the env
section of the
manifest.yaml
, and redeploy the application.
env:
APPD_AGENT: dotnet
APPD_AGENT_HTTP_URL: http://<path to custom NuGet package binaries>
APPD_BASIC_AUTH_USERNAME: <username> # basic auth username (optional)
APPD_BASIC_AUTH_PASS: <password> # basic auth password (optional)
Overriding Agent Configuration
By default appdbuildpack
creates the basic configuration required by
the Splunk AppDynamics Agent to instrument the application. This includes the
application Splunk AppDynamics name, tier, node and Controller information.
APPD_CONF_HTTP_URL
feature has been integrated in
the Java buildpack and uses java
as the APPD_AGENT
value. See Java Applications workflow documentation.For .NET Framework, .NET Core Windows, .NET Core for Linux and Python applications,
appdbuildpack
facilitates additional configuration to the
agents or overriding the existing default configuration. To achieve this, set the
APPD_CONF_HTTP_URL
environment variable to a custom HTTP URL
where advanced agent configuration files are hosted. The extension buildpack
downloads the relevant files related to the Splunk AppDynamics agent and extends the
agent configuration.
env:
APPD_AGENT: dotnet
APPD_CONF_HTTP_URL: http://custom-http-server.com
APPD_BASIC_AUTH_USERNAME: <username> # basic auth username (optional)
APPD_BASIC_AUTH_PASS: <password> # basic auth password (optional)
appdbuildpack
checks configuration files under a subfolder relative
to APPD_CONF_HTTP_URL
according to the APPD_AGENT
value. So for a .Net Core Linux application, for example, it would look for relevant
configuration files such as AppDynamicsConfig.json
under
APPD_CONF_HTTP_URL/dotnet-linux
, and for a Python application
it would look under APPD_CONF_HTTP_URL/python
. In the preceding
example, it would look under
http://custom-http-server.com/dotnet
.
This supports the ability to assign a single value for APPD_CONF_HTTP_URL staging environment variable group and avoids the need to set it for each application.
$ cf set-staging-environment-variable-group '{"APPD_CONF_HTTP_URL":"http://custom-http.server.com"}'
-
When using
APPD_CONF_HTTP_URL
, appdbuildpack will only fetch the files with relevant names that are applicable to the agent. In the example above, because it is a dotnet agent, only the filesAppDynamicsAgentLog.config
andAppDynamicsConfig.json
are downloaded fromAPPD_CONF_HTTP_URL/dotnet
. All other files are ignored. -
When using
APPD_AGENT_HTTP_URL
, the full path including the agent package must be specified, for example—http://custom-http.server.com/dotnet-linux/agent/AppDynamics-DotNetCore-linux-x64-4.5.7.0.zip
. -
Refer to the Install App Server Agents for the names and formats of the advanced configuration files applicable to each of the Splunk AppDynamics agents.
Sample manifest.yml
---
applications:
- name: cf-net-linux
random-route: true
memory: 1G
buildpacks:
- appdbuildpack
- dotnet_core_buildpack
env:
APPD_AGENT: dotnetcore
APPD_AGENT_HTTP_URL: http://custom-http-server.com/dotnet-linux/agent/AppDynamics-DotNetCore-linux-x64-4.5.7.0.zip
APPD_CONF_HTTP_URL: http://custom-http-server.com
DOTNET_CLI_TELEMETRY_OPTOUT: 1
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
services:
- appd
Advantages to Using this Approach
-
Clear separation of responsibilities between
appdbuildpack
and the standard system buildpacks. Theappdbuildpack
is now solely responsible for anything related to Splunk AppDynamics instrumentation. -
Any new features related to Splunk AppDynamics will be shipped through
appdbuildpack
. This significantly reduces the new feature turnaround time compared to shipping Splunk AppDynamics bits through standard buildpacks. -
A single unified workflow to instrument a variety of applications, regardless of the language or framework of the application. Any new feature added to
appdbuildpack
, if applicable, is available across all langauge agents sinceappdbuildpack
is the sole source of AppDynamics instrumentation logic.