Dynamically set App Key for SPA
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-27-2018 08:39 PM
My company builds an Atomic SPA JavaScript application, compiled once, deployed for any Environment (DEV, QA, PROD). Because the same piece of code is used for DEV, QA and PROD we cannot have a Static AppKey. We have multiple AppDynamics accounts, one for each environment.
So, how do we configure the SPA JavaScript application at runtime? Simple we call a REST service at a "local" url of : /spa/config and it returns the appropiate configuration for that environment.
Note: We don't want to compile a JS app for every environment, we like having one build that can be deployed anywhere.
So that doesn't work with AppDynamics because you must put the AppKey in the header of your index file.
What I would like to happen:
1. add AppDynamic snippit to index.html header. do all the initial loading and setup but don't transfer any data back to AppDynamic central, just store it.
2. SPA finished loading and calls /spa/config REST service to pull config, including EUM_APP_KEY.
2. Once EUM_APP_KEY is set, start transmitting data, both stored and live.
Is this currently possible? If not, is it possible to update current scripts?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-30-2018 01:32 AM
Hi Taylor,
Currently we don't support modifying our JS agent files as it can lead to unexpected errrors on the page and can even effect the monitoring as well.
From your use case I can understand that for all your three environments, i.e. Dev, QA and Prod there is a need to get JS agents with different app keys, so instead of doing that at runtime, can you just use the same agent code with different app key as described in our manual injection piece and then see if that works?
https://docs.appdynamics.com/display/PRO44/Manual+Injection+of+the+JavaScript+Agent
You can even customize each JS agent for different environment as mentioned below:
https://docs.appdynamics.com/display/PRO44/Customize+the+JavaScript+Agent
Let us know is this helps.
Thanks,
Deepanshu
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-30-2018 05:17 AM
In general, it's recommended to put it in the index.html file's header so it's loaded first. If we dynamically set the app_key it will need to be initialized later in the lifecycle.
1. Index.html
2. JS Loaded
3. SPA calls REST config service to pull ENV parameters
4. Initialize AppDynamic JS Agent with app_key
As I understand we will lose some loading metrics if we don't initialize the Agent in the index.html header.
We can try it and see what happens.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-03-2018 09:59 PM
Hi Taylor,
Yes, your understanding is correct and you might miss few metrics if JS agent is not loaded/initialized early on the application page.
Let us know if you have any further queries around this.
Thanks,
Deepanshu