Cloudwatch dimension_values add dimension filter.

issue #10029

e.g.
- dimension_values($region, $namespace, cpu_usage_system, cpu)
- dimension_values($region, $namespace, disk_used_percent, device, {"InstanceId": "$instance_id"})
- dimension_values($region, $namespace, disk_used_percent, path, {"InstanceId": "$instance_id", "device": "$device"})
This commit is contained in:
Willy Hu (IS-TW)
2018-02-12 10:13:55 +00:00
parent 12a6de7461
commit 725e23ef7d

View File

@@ -212,6 +212,7 @@ export default class CloudWatchDatasource {
var region; var region;
var namespace; var namespace;
var metricName; var metricName;
var filterJson;
var regionQuery = query.match(/^regions\(\)/); var regionQuery = query.match(/^regions\(\)/);
if (regionQuery) { if (regionQuery) {
@@ -237,14 +238,20 @@ export default class CloudWatchDatasource {
return this.getDimensionKeys(namespace, region); return this.getDimensionKeys(namespace, region);
} }
var dimensionValuesQuery = query.match(/^dimension_values\(([^,]+?),\s?([^,]+?),\s?([^,]+?),\s?([^,]+?)\)/); var dimensionValuesQuery = query.match(
/^dimension_values\(([^,]+?),\s?([^,]+?),\s?([^,]+?),\s?([^,]+?)(,\s?(.+))?\)/
);
if (dimensionValuesQuery) { if (dimensionValuesQuery) {
region = dimensionValuesQuery[1]; region = dimensionValuesQuery[1];
namespace = dimensionValuesQuery[2]; namespace = dimensionValuesQuery[2];
metricName = dimensionValuesQuery[3]; metricName = dimensionValuesQuery[3];
var dimensionKey = dimensionValuesQuery[4]; var dimensionKey = dimensionValuesQuery[4];
filterJson = {};
if (dimensionValuesQuery[6]) {
filterJson = JSON.parse(this.templateSrv.replace(dimensionValuesQuery[6]));
}
return this.getDimensionValues(region, namespace, metricName, dimensionKey, {}); return this.getDimensionValues(region, namespace, metricName, dimensionKey, filterJson);
} }
var ebsVolumeIdsQuery = query.match(/^ebs_volume_ids\(([^,]+?),\s?([^,]+?)\)/); var ebsVolumeIdsQuery = query.match(/^ebs_volume_ids\(([^,]+?),\s?([^,]+?)\)/);
@@ -258,7 +265,7 @@ export default class CloudWatchDatasource {
if (ec2InstanceAttributeQuery) { if (ec2InstanceAttributeQuery) {
region = ec2InstanceAttributeQuery[1]; region = ec2InstanceAttributeQuery[1];
var targetAttributeName = ec2InstanceAttributeQuery[2]; var targetAttributeName = ec2InstanceAttributeQuery[2];
var filterJson = JSON.parse(this.templateSrv.replace(ec2InstanceAttributeQuery[3])); filterJson = JSON.parse(this.templateSrv.replace(ec2InstanceAttributeQuery[3]));
return this.getEc2InstanceAttribute(region, targetAttributeName, filterJson); return this.getEc2InstanceAttribute(region, targetAttributeName, filterJson);
} }