Prerequisites
- An AppDynamics Controller, SaaS or on-premises, that monitors the applications you care about.
- Admin access to the Controller, so you can create an API client.
- If the Controller is on-premises: it must accept HTTPS from CloudThinker Cloud. These docs don’t publish CloudThinker’s egress IP list: ask your CloudThinker contact, or contact us. See Reaching private services for other options.
Setup
1
Note your Controller URL and account name
Sign in to the Controller and copy the base address, for example
https://myaccount.saas.appdynamics.com. Leave off any path such as /controller.On SaaS, the account name is usually the subdomain (myaccount in the example). You can also find it under Settings → License.2
Create an API client
Go to Settings → Administration → API Clients and click Create.
- Client Name:
cloudthinker - Description:
Read-only access for CloudThinker agents - Roles: a view-only role that can see the applications agents should read
3
Add the connection in CloudThinker
Open More → Workspace settings → Connections, stay on the Builtin Connections tab, and select AppDynamics. Fill in all four fields:
- APPD_CONTROLLER_URL: the Controller base URL
- APPD_ACCOUNT_NAME: the account name
- APPD_CLIENT_NAME: the client name only, such as
cloudthinker - APPD_CLIENT_SECRET: the secret you copied
Connection details
All four fields are required. To reach a second Controller, add it as a separate connection with its own API client.
Required permissions
Give the API client a view-only role scoped to the applications agents should read. Agents need to see:
Agents never change AppDynamics configuration, so leave every configure and admin permission off this role. If an application is missing from results, the role can’t see it.
Agent capabilities
Agents start with a short window, such as the last 60 minutes, and widen only if there’s no signal. They use the real application, tier, and transaction names from discovery instead of guessing IDs.
Verify the connection
Example prompts
Troubleshooting
Connect fails with 401
Connect fails with 401
The client name, secret, or account name is wrong, or the name includes
@<account>. Check that APPD_CLIENT_NAME is the bare name and APPD_ACCOUNT_NAME matches the Controller. If the secret was lost or regenerated, generate a new one in API Clients, then edit the connection.Connect times out or the Controller is unreachable
Connect times out or the Controller is unreachable
Check APPD_CONTROLLER_URL: it should be the HTTPS base address with no path. For an on-premises Controller, confirm it accepts HTTPS traffic from CloudThinker’s egress IPs.
No applications or metrics come back
No applications or metrics come back
The API client’s role can’t see those applications, or the Controller has no data for the window. Grant view access to the application, then retry with a known application name and the last hour.
An application or transaction isn't found (404)
An application or transaction isn't found (404)
The name is misspelled or the application was renamed. Ask the agent to list applications or business transactions first, then use the exact name.
Requests return 429 or 503
Requests return 429 or 503
The Controller is rate limiting or overloaded. Wait a minute, narrow the time window, and ask again.
Security
- Least privilege — grant only the permissions the agents need for your use case; start read-only and widen later.
- Read-only by default — use read-only credentials unless you want agents to make changes through this connection.
- Rotate credentials — rotate keys and tokens on your normal schedule; CloudThinker picks up the new value when you update the connection.
- Revoke on offboarding — remove the credential at the provider when you delete a connection or a teammate leaves.
- Read-only by design: agents only read applications, metrics, violations, events, and snapshots. They have no command that changes the Controller.
- Dedicated API client: create a client used only by CloudThinker so you can revoke it without breaking other tools.
- HTTPS only: always use an
https://Controller URL so the client secret is protected in transit.
Related
Root cause analysis
See how Resolve uses APM data to find what broke.
Connections overview
Add the cloud, logs, and code that complete the picture.