| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package api
- import (
- "math/rand"
- "strconv"
- "github.com/grafana/grafana/pkg/api/dtos"
- "github.com/grafana/grafana/pkg/metrics"
- "github.com/grafana/grafana/pkg/middleware"
- )
- func GetTestMetrics(c *middleware.Context) {
- from := c.QueryInt64("from")
- to := c.QueryInt64("to")
- maxDataPoints := c.QueryInt64("maxDataPoints")
- stepInSeconds := (to - from) / maxDataPoints
- result := dtos.MetricQueryResultDto{}
- result.Data = make([]dtos.MetricQueryResultDataDto, 1)
- for seriesIndex := range result.Data {
- points := make([][2]float64, maxDataPoints)
- walker := rand.Float64() * 100
- time := from
- for i := range points {
- points[i][0] = walker
- points[i][1] = float64(time)
- walker += rand.Float64() - 0.5
- time += stepInSeconds
- }
- result.Data[seriesIndex].Target = "test-series-" + strconv.Itoa(seriesIndex)
- result.Data[seriesIndex].DataPoints = points
- }
- c.JSON(200, &result)
- }
- func GetInternalMetrics(c middleware.Context) Response {
- snapshots := metrics.MetricStats.GetSnapshots()
- resp := make(map[string]interface{})
- for _, m := range snapshots {
- metricName := m.Name() + m.StringifyTags()
- switch metric := m.(type) {
- case metrics.Counter:
- resp[metricName] = map[string]interface{}{
- "count": metric.Count(),
- }
- case metrics.Timer:
- percentiles := metric.Percentiles([]float64{0.25, 0.75, 0.90, 0.99})
- resp[metricName] = map[string]interface{}{
- "count": metric.Count(),
- "min": metric.Min(),
- "max": metric.Max(),
- "mean": metric.Mean(),
- "std": metric.StdDev(),
- "p25": percentiles[0],
- "p75": percentiles[1],
- "p90": percentiles[2],
- "p99": percentiles[3],
- }
- }
- }
- return Json(200, resp)
- }
|