Datasources: health check logging improvements (#96403)

* basic healthcheck logging

* show detailed error for admins

* fix linting errors

* fix config summary keys

* passing context to logger

* tracking health check errors

* remove tracking
This commit is contained in:
Sriram
2024-11-20 11:42:05 +00:00
committed by GitHub
parent b21adb8144
commit 492e7d4a3d
5 changed files with 129 additions and 25 deletions

View File

@ -14,7 +14,6 @@ import (
"sync"
"time"
"github.com/go-sql-driver/mysql"
"github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana-plugin-sdk-go/backend/gtime"
"github.com/grafana/grafana-plugin-sdk-go/backend/log"
@ -153,19 +152,6 @@ func (e *DataSourceHandler) Dispose() {
e.log.Debug("DB disposed")
}
func (e *DataSourceHandler) CheckHealth(ctx context.Context, req *backend.CheckHealthRequest) (*backend.CheckHealthResult, error) {
err := e.db.Ping()
if err != nil {
var driverErr *mysql.MySQLError
if errors.As(err, &driverErr) {
return &backend.CheckHealthResult{Status: backend.HealthStatusError, Message: e.TransformQueryError(e.log, driverErr).Error()}, nil
}
return &backend.CheckHealthResult{Status: backend.HealthStatusError, Message: e.TransformQueryError(e.log, err).Error()}, nil
}
return &backend.CheckHealthResult{Status: backend.HealthStatusOk, Message: "Database Connection OK"}, nil
}
func (e *DataSourceHandler) QueryData(ctx context.Context, req *backend.QueryDataRequest) (*backend.QueryDataResponse, error) {
result := backend.NewQueryDataResponse()
ch := make(chan DBDataResponse, len(req.Queries))