mirror of
https://github.com/grafana/grafana.git
synced 2025-08-06 04:19:26 +08:00
Chore: Collect elasticsearch version usage stats (#31787)
* Chore: Collect elasticsearch version usage stats * Fix lint error * use GetDataSources from sqlstore * Apply review suggestions * Return error if datasource type is not specified * Update pkg/services/sqlstore/datasource.go * fix undefined var
This commit is contained in:
@ -115,6 +115,25 @@ func (uss *UsageStatsService) GetUsageReport(ctx context.Context) (UsageReport,
|
||||
}
|
||||
metrics["stats.ds.other.count"] = dsOtherCount
|
||||
|
||||
esDataSourcesQuery := models.GetDataSourcesByTypeQuery{Type: models.DS_ES}
|
||||
if err := uss.Bus.Dispatch(&esDataSourcesQuery); err != nil {
|
||||
metricsLogger.Error("Failed to get elasticsearch json data", "error", err)
|
||||
return report, err
|
||||
}
|
||||
|
||||
for _, data := range esDataSourcesQuery.Result {
|
||||
esVersion, err := data.JsonData.Get("esVersion").Int()
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
statName := fmt.Sprintf("stats.ds.elasticsearch.v%d.count", esVersion)
|
||||
|
||||
count, _ := metrics[statName].(int64)
|
||||
|
||||
metrics[statName] = count + 1
|
||||
}
|
||||
|
||||
metrics["stats.packaging."+uss.Cfg.Packaging+".count"] = 1
|
||||
metrics["stats.distributor."+uss.Cfg.ReportingDistributor+".count"] = 1
|
||||
|
||||
|
@ -91,6 +91,29 @@ func TestMetrics(t *testing.T) {
|
||||
return nil
|
||||
})
|
||||
|
||||
var getESDatasSourcesQuery *models.GetDataSourcesByTypeQuery
|
||||
uss.Bus.AddHandler(func(query *models.GetDataSourcesByTypeQuery) error {
|
||||
query.Result = []*models.DataSource{
|
||||
{
|
||||
JsonData: simplejson.NewFromAny(map[string]interface{}{
|
||||
"esVersion": 2,
|
||||
}),
|
||||
},
|
||||
{
|
||||
JsonData: simplejson.NewFromAny(map[string]interface{}{
|
||||
"esVersion": 2,
|
||||
}),
|
||||
},
|
||||
{
|
||||
JsonData: simplejson.NewFromAny(map[string]interface{}{
|
||||
"esVersion": 70,
|
||||
}),
|
||||
},
|
||||
}
|
||||
getESDatasSourcesQuery = query
|
||||
return nil
|
||||
})
|
||||
|
||||
var getDataSourceAccessStatsQuery *models.GetDataSourceAccessStatsQuery
|
||||
uss.Bus.AddHandler(func(query *models.GetDataSourceAccessStatsQuery) error {
|
||||
query.Result = []*models.DataSourceAccessStats{
|
||||
@ -190,6 +213,7 @@ func TestMetrics(t *testing.T) {
|
||||
assert.Nil(t, getSystemStatsQuery)
|
||||
assert.Nil(t, getDataSourceStatsQuery)
|
||||
assert.Nil(t, getDataSourceAccessStatsQuery)
|
||||
assert.Nil(t, getESDatasSourcesQuery)
|
||||
})
|
||||
|
||||
t.Run("Given reporting enabled, stats should be gathered and sent to HTTP endpoint", func(t *testing.T) {
|
||||
@ -248,6 +272,7 @@ func TestMetrics(t *testing.T) {
|
||||
|
||||
assert.NotNil(t, getSystemStatsQuery)
|
||||
assert.NotNil(t, getDataSourceStatsQuery)
|
||||
assert.NotNil(t, getESDatasSourcesQuery)
|
||||
assert.NotNil(t, getDataSourceAccessStatsQuery)
|
||||
assert.NotNil(t, getAlertNotifierUsageStatsQuery)
|
||||
assert.NotNil(t, resp.req)
|
||||
@ -289,6 +314,10 @@ func TestMetrics(t *testing.T) {
|
||||
|
||||
assert.Equal(t, 9, metrics.Get("stats.ds."+models.DS_ES+".count").MustInt())
|
||||
assert.Equal(t, 10, metrics.Get("stats.ds."+models.DS_PROMETHEUS+".count").MustInt())
|
||||
|
||||
assert.Equal(t, 2, metrics.Get("stats.ds."+models.DS_ES+".v2.count").MustInt())
|
||||
assert.Equal(t, 1, metrics.Get("stats.ds."+models.DS_ES+".v70.count").MustInt())
|
||||
|
||||
assert.Equal(t, 11+12, metrics.Get("stats.ds.other.count").MustInt())
|
||||
|
||||
assert.Equal(t, 1, metrics.Get("stats.ds_access."+models.DS_ES+".direct.count").MustInt())
|
||||
@ -421,6 +450,11 @@ func TestMetrics(t *testing.T) {
|
||||
return nil
|
||||
})
|
||||
|
||||
uss.Bus.AddHandler(func(query *models.GetDataSourcesByTypeQuery) error {
|
||||
query.Result = []*models.DataSource{}
|
||||
return nil
|
||||
})
|
||||
|
||||
uss.Bus.AddHandler(func(query *models.GetDataSourceAccessStatsQuery) error {
|
||||
query.Result = []*models.DataSourceAccessStats{}
|
||||
return nil
|
||||
|
Reference in New Issue
Block a user