forked from sirkjohannsen/grafana-datasource-datadog
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdatasource.js.map
1 lines (1 loc) · 18.9 KB
/
datasource.js.map
1
{"version":3,"sources":["../src/datasource.js"],"names":["mapTagsToKVPairs","tags","kv_tags","_","filter","tag","indexOf","kv_pairs","map","split","kv_object","forEach","key","pair","val","push","convertDataDogMdToHtml","str","MD_START","MD_END","md_start_index","length","md_end_index","md","substring","removeImagesFromDataDogMarkdown","converter","showdown","Converter","makeHtml","isDataDogMarkdown","dataDogImagePattern","replace","dataDogTagFormat","value","isArray","join","queryBuilder","DataDogDatasource","instanceSettings","backendSrv","templateSrv","type","url","name","api_key","jsonData","application_key","app_key","supportMetrics","_cached_metrics","invokeDataDogApiRequest","then","status","title","message","catch","error","getTagsFromCache","hosts","text","query","tagFindQuery","Promise","resolve","fetching","d","Date","setDate","getDate","from","Math","floor","getTime","getMetrics","metrics","metric","Object","keys","tagsHosts","kv","grafanaTags","options","grafanaValues","range","valueOf","to","targets","t","hide","data","adhocFilters","getAdhocFilters","queries","target","rawQuery","buildQuery","queryString","scopedVars","params","dataResponse","result","series","i","alias","expression","pointlist","point","timeFrom","timeTo","annotation","priority","sources","getEventStream","eventAnnotations","eventStreams","allEvents","eventStream","children","filteredEvents","event","alert_type","renderedText","time","date_happened","flatten","searchEntities","entity","q","results","getTags","_cached_tags","getTagsHosts","start","end","events","datasourceRequest","method","response","statusText","err"],"mappings":"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","file":"datasource.js","sourcesContent":["import _ from 'lodash';\nimport showdown from './showdown.min.js';\nimport * as queryBuilder from './query_builder';\n\nexport class DataDogDatasource {\n\n constructor (instanceSettings, backendSrv, templateSrv) {\n this.type = instanceSettings.type;\n this.url = instanceSettings.url;\n this.name = instanceSettings.name;\n this.api_key = instanceSettings.jsonData.api_key;\n this.application_key = instanceSettings.jsonData.app_key;\n this.supportMetrics = true;\n this.backendSrv = backendSrv;\n this.templateSrv = templateSrv;\n this._cached_metrics = false;\n }\n\n // Function to check Datasource health\n testDatasource() {\n return this.invokeDataDogApiRequest('/downtime')\n .then(() => {\n return {\n status: \"success\",\n title: \"Success\",\n message: \"Data source is working\"\n };\n })\n .catch(error => {\n var message = \"Connection error\";\n if (error && error.message) {\n message = error.message;\n }\n\n return {\n status: \"error\",\n title: \"Error\",\n message: message\n };\n });\n }\n\n tagFindQuery() {\n return this.getTagsFromCache()\n .then(tags => {\n return _.map(tags, (hosts, tag) => {\n return {\n text: tag,\n value: tag,\n };\n });\n });\n }\n\n metricFindQuery(query) {\n if (query === 'tag') {\n return this.tagFindQuery();\n }\n\n if (this._cached_metrics) {\n return Promise.resolve(this._cached_metrics);\n }\n\n if (this.fetching) {\n return this.fetching;\n }\n\n var d = new Date();\n d.setDate(d.getDate() - 1);\n var from = Math.floor(d.getTime() / 1000);\n\n this.fetching = this.getMetrics(from).then(metrics => {\n this._cached_metrics = _.map(metrics, metric => {\n return {\n text: metric,\n value: metric,\n };\n });\n\n return this._cached_metrics;\n });\n\n return this.fetching;\n }\n\n getTagKeys() {\n return this.getTagsFromCache()\n .then(tagsHosts => {\n let tags = Object.keys(tagsHosts);\n let kv = mapTagsToKVPairs(tags);\n let grafanaTags = Object.keys(kv);\n\n return grafanaTags.map(tag => {\n return {\n text: tag,\n value: tag,\n };\n });\n });\n }\n\n getTagValues(options) {\n return this.getTagsFromCache()\n .then(tagsHosts => {\n let tags = Object.keys(tagsHosts);\n let kv = mapTagsToKVPairs(tags);\n let grafanaValues = kv[options.key];\n return grafanaValues.map(val => {\n return {\n text: val,\n value: val,\n };\n });\n });\n }\n\n query(options) {\n var from = Math.floor(options.range.from.valueOf() / 1000);\n var to = Math.floor(options.range.to.valueOf() / 1000);\n\n var targets = options.targets.filter(function (t) { return !t.hide; });\n\n if (targets.length <= 0) {\n return Promise.resolve({data: []});\n }\n\n // add global adhoc filters\n let adhocFilters = this.templateSrv.getAdhocFilters(this.name);\n\n var queries = _.map(targets, target => {\n let query;\n if (target.rawQuery) {\n query = target.query;\n } else {\n query = queryBuilder.buildQuery(target, adhocFilters);\n }\n return query;\n });\n\n var queryString = queries.join(',');\n queryString = this.templateSrv.replace(queryString, options.scopedVars, dataDogTagFormat);\n\n var params = {\n from: from,\n to: to,\n query: queryString,\n };\n\n return this.invokeDataDogApiRequest('/query', params)\n .then(result => {\n var dataResponse = _.map(result.series, (series, i) => {\n var target = targets[i];\n return {\n 'target': target.alias || series.expression,\n 'datapoints': _.map(series.pointlist, point => {\n return [point[1], point[0]];\n })\n };\n });\n\n return {data: dataResponse};\n });\n }\n\n annotationQuery(options) {\n let timeFrom = Math.floor(options.range.from.valueOf() / 1000);\n let timeTo = Math.floor(options.range.to.valueOf() / 1000);\n let {priority, sources, tags} = options.annotation;\n\n return this.getEventStream(timeFrom, timeTo, priority, sources, tags)\n .then(eventStreams => {\n let eventAnnotations = eventStreams.map(eventStream => {\n let allEvents = eventStream.children;\n let filteredEvents = _.filter(allEvents, event => {\n return event.alert_type !== 'success';\n });\n\n return _.map(filteredEvents, event => {\n let renderedText = eventStream.text;\n if (isDataDogMarkdown(eventStream.text)) {\n renderedText = convertDataDogMdToHtml(eventStream.text);\n }\n\n return {\n annotation: options.annotation,\n time: event.date_happened * 1000,\n title: eventStream.title,\n text: renderedText,\n tags: eventStream.tags\n };\n });\n });\n\n return _.flatten(eventAnnotations);\n });\n }\n\n getHosts() {\n return this.searchEntities('hosts');\n }\n\n // entity should be 'hosts' or 'metrics'\n // http://docs.datadoghq.com/api/?lang=console#search\n searchEntities(entity) {\n let params = {q: ''};\n if (entity) {\n params.q = `${entity}:`;\n }\n\n return this.invokeDataDogApiRequest('/search', params)\n .then(result => {\n if (result && result.results) {\n return result.results[entity];\n }\n });\n }\n\n getMetrics(timeFrom) {\n let params = {};\n\n if (timeFrom) {\n params.from = timeFrom;\n }\n\n return this.invokeDataDogApiRequest('/metrics', params)\n .then(result => {\n if (result.metrics) {\n return result.metrics;\n } else {\n return [];\n }\n });\n }\n\n getTagsHosts() {\n return this.invokeDataDogApiRequest('/tags/hosts')\n .then(result => {\n if (result && result.tags) {\n return result.tags;\n }\n });\n }\n\n getTagsFromCache() {\n let getTags;\n if (this._cached_tags && this._cached_tags.length) {\n getTags = Promise.resolve(this._cached_tags);\n } else {\n getTags = this.getTagsHosts().then(tags => {\n this._cached_tags = tags;\n return tags;\n });\n }\n\n return getTags;\n }\n\n getEventStream(timeFrom, timeTo, priority, sources, tags) {\n let params = {\n start: timeFrom,\n end: timeTo\n };\n if (priority) {\n params.priority = priority;\n }\n if (sources) {\n params.sources = sources;\n }\n if (tags) {\n params.tags = tags;\n }\n\n return this.invokeDataDogApiRequest('/events', params)\n .then(result => {\n if (result.events) {\n return result.events;\n } else {\n return [];\n }\n });\n }\n\n invokeDataDogApiRequest(url, params = {}) {\n // Set auth params\n params.api_key = this.api_key;\n params.application_key = this.application_key;\n\n return this.backendSrv.datasourceRequest({\n method: 'GET',\n url: this.url + url,\n params: params\n })\n .then(response => {\n if (response.data) {\n return response.data;\n } else {\n throw {message: 'DataDog API request error'};\n }\n })\n .catch(error => {\n var message = 'DataDog API request error';\n if (error.statusText) {\n message = error.status + ' ' + error.statusText;\n throw {message: message};\n } else if (error.err.statusText) {\n throw {message: error.err.statusText};\n } else {\n throw {message: message};\n }\n });\n }\n}\n\n/*\n * Convert tags to key-value pairs\n * [region:east, region:nw] => {region: [east, nw]}\n */\nfunction mapTagsToKVPairs(tags) {\n let kv_tags = _.filter(tags, tag => {\n return (tag.indexOf(':') !== -1);\n });\n\n let kv_pairs = kv_tags.map(tag => {\n return tag.split(':', 2); // Limit to 2\n });\n\n let kv_object = {};\n kv_pairs.forEach(pair => {\n let key = pair[0];\n let val = pair[1];\n\n if (kv_object[key]) {\n kv_object[key].push(val);\n } else {\n kv_object[key] = [val];\n }\n });\n\n return kv_object;\n}\n\n/*\n * Convert DataDog event text from markdown to pure HTML\n * http://docs.datadoghq.com/guides/markdown/\n */\nfunction convertDataDogMdToHtml(str) {\n const MD_START = '%%%\\n';\n const MD_END = '\\n%%%';\n\n let md_start_index = str.indexOf(MD_START) + MD_START.length;\n let md_end_index = str.indexOf(MD_END);\n let md = str.substring(md_start_index, md_end_index);\n md = removeImagesFromDataDogMarkdown(md);\n\n let converter = new showdown.Converter();\n return converter.makeHtml(md);\n}\n\nfunction isDataDogMarkdown(str) {\n const MD_START = '%%%\\n';\n return str.indexOf(MD_START) >= 0;\n}\n\nfunction removeImagesFromDataDogMarkdown(str) {\n let dataDogImagePattern = /\\[{0,1}\\!\\[.*\\]\\(https{0,1}\\:\\/\\/p\\.datadoghq\\.com\\/snapshot.+\\)/g;\n return str.replace(dataDogImagePattern, '');\n}\n\nfunction dataDogTagFormat(value) {\n if (_.isArray(value)) {\n return value.join(',');\n }\n return value;\n}\n"]}