mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
stackdriver: make it possible to use point values of type string
This commit is contained in:
parent
5bc6d857a7
commit
ca50e315fa
@ -3,6 +3,7 @@ package stackdriver
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -41,12 +42,15 @@ func (e *StackdriverExecutor) parseToAnnotations(queryRes *tsdb.QueryResult, dat
|
|||||||
// reverse the order to be ascending
|
// reverse the order to be ascending
|
||||||
for i := len(series.Points) - 1; i >= 0; i-- {
|
for i := len(series.Points) - 1; i >= 0; i-- {
|
||||||
point := series.Points[i]
|
point := series.Points[i]
|
||||||
|
value := strconv.FormatFloat(point.Value.DoubleValue, 'f', 6, 64)
|
||||||
|
if series.ValueType == "STRING" {
|
||||||
|
value = point.Value.StringValue
|
||||||
|
}
|
||||||
annotation := make(map[string]string)
|
annotation := make(map[string]string)
|
||||||
annotation["time"] = point.Interval.EndTime.UTC().Format(time.RFC3339)
|
annotation["time"] = point.Interval.EndTime.UTC().Format(time.RFC3339)
|
||||||
annotation["title"] = formatAnnotationText(title, point.Value.DoubleValue, series.Metric.Type, series.Metric.Labels, series.Resource.Labels)
|
annotation["title"] = formatAnnotationText(title, value, series.Metric.Type, series.Metric.Labels, series.Resource.Labels)
|
||||||
annotation["tags"] = tags
|
annotation["tags"] = tags
|
||||||
annotation["text"] = formatAnnotationText(text, point.Value.DoubleValue, series.Metric.Type, series.Metric.Labels, series.Resource.Labels)
|
annotation["text"] = formatAnnotationText(text, value, series.Metric.Type, series.Metric.Labels, series.Resource.Labels)
|
||||||
annotations = append(annotations, annotation)
|
annotations = append(annotations, annotation)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -78,7 +82,7 @@ func transformAnnotationToTable(data []map[string]string, result *tsdb.QueryResu
|
|||||||
slog.Info("anno", "len", len(data))
|
slog.Info("anno", "len", len(data))
|
||||||
}
|
}
|
||||||
|
|
||||||
func formatAnnotationText(annotationText string, pointValue float64, metricType string, metricLabels map[string]string, resourceLabels map[string]string) string {
|
func formatAnnotationText(annotationText string, pointValue string, metricType string, metricLabels map[string]string, resourceLabels map[string]string) string {
|
||||||
result := legendKeyFormat.ReplaceAllFunc([]byte(annotationText), func(in []byte) []byte {
|
result := legendKeyFormat.ReplaceAllFunc([]byte(annotationText), func(in []byte) []byte {
|
||||||
metaPartName := strings.Replace(string(in), "{{", "", 1)
|
metaPartName := strings.Replace(string(in), "{{", "", 1)
|
||||||
metaPartName = strings.Replace(metaPartName, "}}", "", 1)
|
metaPartName = strings.Replace(metaPartName, "}}", "", 1)
|
||||||
|
@ -34,6 +34,7 @@ type StackdriverResponse struct {
|
|||||||
} `json:"interval"`
|
} `json:"interval"`
|
||||||
Value struct {
|
Value struct {
|
||||||
DoubleValue float64 `json:"doubleValue"`
|
DoubleValue float64 `json:"doubleValue"`
|
||||||
|
StringValue string `json:"stringValue"`
|
||||||
} `json:"value"`
|
} `json:"value"`
|
||||||
} `json:"points"`
|
} `json:"points"`
|
||||||
} `json:"timeSeries"`
|
} `json:"timeSeries"`
|
||||||
|
Loading…
Reference in New Issue
Block a user