README
Dynatrace API Module
Welcome to the Dynatrace Api node module. This is a simple helper module for interacting with the Dynatrace API including caching support.
Disclaimer
This plugin is community contributed and not officially supported by Dynatrace. In case of problems, feature requests, or questions submit a ticket on GitHub .
Requirements
- Dynatrace SaaS or Managed environment
- API key from Dynatrace environment
- Minimum node version 6.10
Basic Usage
Problem Feed and Details
const { Dynatrace } = require("@davis/dynatrace");
const redis = require("redis").createClient();
const dynatrace = new Dynatrace({
baseUrl: "https://base-url-of-dynatrace-server",
apiToken: "api-token-of-dynatrace-server",
redis: redis, // this is optional
cacheTTL: 600, // defaults to 60. Time to cache entities in seconds
cachePrefix: "davis-redis-cache" // prefix for redis keys to prevent collisions
});
dynatrace
.problemFeed({
relativeTime: "day"
})
.then(problems => {
// Full list of problems here
console.log(`There were ${problems.length} problems in the last day.`);
// There were 191 problems in the last day.
return problems[0];
})
.then(problem => {
// single problem here
console.log(
`The first problem is a ${problem.status} ${problem.impactLevel} problem`
);
// The first problem is a CLOSED APPLICATION problem
return problem.getDetails();
})
.then(details => {
// more detailed problem information here
console.log(`with ${details.commentCount} comments.`);
// with 0 comments.
return details.addComment({
content: "Checked using the dynatrace nodejs client",
username: "@cto",
context: "nodejs client"
});
});
Timeseries
dynatrace
.applications({ tag: "davis" })
.then(apps => _.find(apps, a => a.displayName === "Davis"))
.then(davis => {
return davis.userActionDurationXHR({
queryMode: "total",
relativeTime: "day"
});
})
.then(data => {
console.log(util.inspect(data, null, null));
});
// { dataPoints:
// { 'APPLICATION-7D7CBD136E0B9959': [ [ 1520351760000, 423683.00326322095 ] ] },
// timeseriesId: 'com.dynatrace.builtin:app.useractionduration.xhr',
// unit: 'MicroSecond (µs)',
// entities: { 'APPLICATION-7D7CBD136E0B9959': 'Davis' },
// resolutionInMillisUTC: 86400000,
// aggregationType: 'AVG' }
Deployments
Deploy An Application
async function deploy(entityId) {
const deployment = dynatrace.startDeployment({
deploymentName: "Test deployment",
deploymentProject: "dynatrace node module",
deploymentVersion: "0.0.1-7",
source: "dynatrace node module"
});
// helpers for setting API parameters
deployment.attachRules({ entityIds: [entityId] });
// Deployment things here
deployment.ciBackLink("https://link-to-ci");
return deployment.send();
}
Get Deployments
async function deployments(entityId) {
dynatrace
.applications()
.then(apps => apps[0])
.then(app => app.deployments())
.then(console.log);
}
Timeseries
dynatrace
.applications()
.then(apps => apps[0])
.then(app =>
app.userActionsPerMinute({
relativeTime: "2hours",
queryMode: "total",
aggregationType: "avg"
})
);