mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Elasticsearch: Fix metric names for alert queries (#37871)
* Use props names as metrics names * Make aliases work
This commit is contained in:
parent
118c811c61
commit
1aeafa34d1
@ -42,7 +42,7 @@ var newResponseParser = func(responses []*es.SearchResponse, targets []*Query, d
|
||||
}
|
||||
}
|
||||
|
||||
// nolint:staticcheck // plugins.DataResponse deprecated
|
||||
// nolint:staticcheck
|
||||
func (rp *responseParser) getTimeSeries() (*backend.QueryDataResponse, error) {
|
||||
result := backend.QueryDataResponse{
|
||||
Responses: backend.Responses{},
|
||||
@ -93,7 +93,7 @@ func (rp *responseParser) getTimeSeries() (*backend.QueryDataResponse, error) {
|
||||
return &result, nil
|
||||
}
|
||||
|
||||
// nolint:staticcheck // plugins.* deprecated
|
||||
// nolint:staticcheck
|
||||
func (rp *responseParser) processBuckets(aggs map[string]interface{}, target *Query,
|
||||
queryResult *backend.DataResponse, props map[string]string, depth int) error {
|
||||
var err error
|
||||
@ -172,7 +172,7 @@ func (rp *responseParser) processBuckets(aggs map[string]interface{}, target *Qu
|
||||
return nil
|
||||
}
|
||||
|
||||
// nolint:staticcheck,gocyclo // plugins.* deprecated
|
||||
// nolint:staticcheck,gocyclo
|
||||
func (rp *responseParser) processMetrics(esAgg *simplejson.Json, target *Query, query *backend.DataResponse,
|
||||
props map[string]string) error {
|
||||
frames := data.Frames{}
|
||||
@ -203,7 +203,7 @@ func (rp *responseParser) processMetrics(esAgg *simplejson.Json, target *Query,
|
||||
tags["metric"] = countType
|
||||
frames = append(frames, data.NewFrame(metric.Field,
|
||||
data.NewField("time", nil, timeVector),
|
||||
data.NewField("value", tags, values).SetConfig(&data.FieldConfig{DisplayNameFromDS: rp.getMetricName(tags["metric"]) + " " + metric.Field})))
|
||||
data.NewField("value", tags, values)))
|
||||
case percentilesType:
|
||||
buckets := esAggBuckets
|
||||
if len(buckets) == 0 {
|
||||
@ -237,7 +237,7 @@ func (rp *responseParser) processMetrics(esAgg *simplejson.Json, target *Query,
|
||||
}
|
||||
frames = append(frames, data.NewFrame(metric.Field,
|
||||
data.NewField("time", nil, timeVector),
|
||||
data.NewField("value", tags, values).SetConfig(&data.FieldConfig{DisplayNameFromDS: rp.getMetricName(tags["metric"]) + " " + metric.Field})))
|
||||
data.NewField("value", tags, values)))
|
||||
}
|
||||
case topMetricsType:
|
||||
buckets := esAggBuckets
|
||||
@ -279,7 +279,7 @@ func (rp *responseParser) processMetrics(esAgg *simplejson.Json, target *Query,
|
||||
|
||||
frames = append(frames, data.NewFrame(metricField.(string),
|
||||
data.NewField("time", nil, timeVector),
|
||||
data.NewField("value", tags, values).SetConfig(&data.FieldConfig{DisplayNameFromDS: rp.getMetricName(tags["metric"]) + " " + metricField.(string)}),
|
||||
data.NewField("value", tags, values),
|
||||
))
|
||||
}
|
||||
|
||||
@ -326,7 +326,7 @@ func (rp *responseParser) processMetrics(esAgg *simplejson.Json, target *Query,
|
||||
labels := tags
|
||||
frames = append(frames, data.NewFrame(metric.Field,
|
||||
data.NewField("time", nil, timeVector),
|
||||
data.NewField("value", labels, values).SetConfig(&data.FieldConfig{DisplayNameFromDS: rp.getMetricName(tags["metric"]) + " " + metric.Field})))
|
||||
data.NewField("value", labels, values)))
|
||||
}
|
||||
default:
|
||||
for k, v := range props {
|
||||
@ -354,7 +354,7 @@ func (rp *responseParser) processMetrics(esAgg *simplejson.Json, target *Query,
|
||||
}
|
||||
frames = append(frames, data.NewFrame(metric.Field,
|
||||
data.NewField("time", nil, timeVector),
|
||||
data.NewField("value", tags, values).SetConfig(&data.FieldConfig{DisplayNameFromDS: rp.getMetricName(tags["metric"]) + " " + metric.Field})))
|
||||
data.NewField("value", tags, values)))
|
||||
}
|
||||
}
|
||||
if query.Frames != nil {
|
||||
@ -365,7 +365,7 @@ func (rp *responseParser) processMetrics(esAgg *simplejson.Json, target *Query,
|
||||
return nil
|
||||
}
|
||||
|
||||
// nolint:staticcheck // plugins.* deprecated
|
||||
// nolint:staticcheck
|
||||
func (rp *responseParser) processAggregationDocs(esAgg *simplejson.Json, aggDef *BucketAgg, target *Query,
|
||||
queryResult *backend.DataResponse, props map[string]string) error {
|
||||
propKeys := make([]string, 0)
|
||||
@ -517,8 +517,7 @@ func extractDataField(name string, v interface{}) *data.Field {
|
||||
}
|
||||
}
|
||||
|
||||
// TODO remove deprecations
|
||||
// nolint:staticcheck // plugins.DataQueryResult deprecated
|
||||
// nolint:staticcheck
|
||||
func (rp *responseParser) trimDatapoints(queryResult backend.DataResponse, target *Query) {
|
||||
var histogram *BucketAgg
|
||||
for _, bucketAgg := range target.BucketAggs {
|
||||
@ -552,7 +551,7 @@ func (rp *responseParser) trimDatapoints(queryResult backend.DataResponse, targe
|
||||
}
|
||||
}
|
||||
|
||||
// nolint:staticcheck // plugins.DataQueryResult deprecated
|
||||
// nolint:staticcheck
|
||||
func (rp *responseParser) nameFields(queryResult backend.DataResponse, target *Query) {
|
||||
set := make(map[string]struct{})
|
||||
frames := queryResult.Frames
|
||||
@ -568,12 +567,15 @@ func (rp *responseParser) nameFields(queryResult backend.DataResponse, target *Q
|
||||
metricTypeCount := len(set)
|
||||
for i := range frames {
|
||||
frames[i].Name = rp.getFieldName(*frames[i].Fields[1], target, metricTypeCount)
|
||||
for _, field := range frames[i].Fields {
|
||||
field.SetConfig(&data.FieldConfig{DisplayNameFromDS: rp.getFieldName(*frames[i].Fields[1], target, metricTypeCount)})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var aliasPatternRegex = regexp.MustCompile(`\{\{([\s\S]+?)\}\}`)
|
||||
|
||||
// nolint:staticcheck // plugins.* deprecated
|
||||
// nolint:staticcheck
|
||||
func (rp *responseParser) getFieldName(dataField data.Field, target *Query, metricTypeCount int) string {
|
||||
metricType := dataField.Labels["metric"]
|
||||
metricName := rp.getMetricName(metricType)
|
||||
@ -706,7 +708,7 @@ func findAgg(target *Query, aggID string) (*BucketAgg, error) {
|
||||
return nil, errors.New("can't found aggDef, aggID:" + aggID)
|
||||
}
|
||||
|
||||
// nolint:staticcheck // plugins.DataQueryResult deprecated
|
||||
// nolint:staticcheck
|
||||
func getErrorFromElasticResponse(response *es.SearchResponse) string {
|
||||
var errorString string
|
||||
json := simplejson.NewFromAny(response.Error)
|
||||
|
@ -28,7 +28,7 @@ var newTimeSeriesQuery = func(client es.Client, dataQuery []backend.DataQuery,
|
||||
}
|
||||
}
|
||||
|
||||
// nolint:staticcheck // plugins.DataQueryResult deprecated
|
||||
// nolint:staticcheck
|
||||
func (e *timeSeriesQuery) execute() (*backend.QueryDataResponse, error) {
|
||||
tsQueryParser := newTimeSeriesQueryParser()
|
||||
queries, err := tsQueryParser.parse(e.dataQueries)
|
||||
@ -63,7 +63,7 @@ func (e *timeSeriesQuery) execute() (*backend.QueryDataResponse, error) {
|
||||
return rp.getTimeSeries()
|
||||
}
|
||||
|
||||
// nolint:staticcheck // plugins.DataQueryResult deprecated
|
||||
// nolint:staticcheck
|
||||
func (e *timeSeriesQuery) processQuery(q *Query, ms *es.MultiSearchRequestBuilder, from, to string,
|
||||
result backend.QueryDataResponse) error {
|
||||
minInterval, err := e.client.GetMinInterval(q.Interval)
|
||||
|
Loading…
Reference in New Issue
Block a user