@@ -224,16 +224,17 @@ func (s *Instance) Gather(slist *types.SampleList) {
224
224
var wg sync.WaitGroup
225
225
var mutex sync.Mutex
226
226
var healthMetrics = make (map [string ]* HealthMetric )
227
- tags := map [string ]string {}
228
227
for i , pool := range s .pools {
229
228
wg .Add (1 )
230
229
query_up := Query {ScriptName : "SQLServerUp" , Script : sqlServerUp , ResultByRow : false }
231
230
go func (pool * sql.DB , query Query , serverIndex int ) {
232
231
defer wg .Done ()
232
+ tags := map [string ]string {}
233
233
connectionString := s .Servers [serverIndex ]
234
234
serverName , databaseName := getConnectionIdentifiers (connectionString )
235
235
tags ["serverName" ] = serverName
236
236
tags ["databaseName" ] = databaseName
237
+ tags [healthMetricInstanceTag ] = serverName
237
238
rows , err := pool .Query (query .Script )
238
239
if err != nil {
239
240
slist .PushSample (inputName , "up" , 0 , tags )
@@ -271,11 +272,11 @@ func (s *Instance) Gather(slist *types.SampleList) {
271
272
}
272
273
273
274
func (s * Instance ) gatherServer (pool * sql.DB , query Query , slist * types.SampleList , connectionString string ) error {
275
+ serverName , databaseName := getConnectionIdentifiers (connectionString )
276
+
274
277
// execute query
275
278
rows , err := pool .Query (query .Script )
276
279
if err != nil {
277
- serverName , databaseName := getConnectionIdentifiers (connectionString )
278
-
279
280
// Error msg based on the format in SSMS. SQLErrorClass() is another term for severity/level: http://msdn.microsoft.com/en-us/library/dd304156.aspx
280
281
if sqlerr , ok := err .(mssql.Error ); ok {
281
282
return fmt .Errorf ("query %s failed for server: %s and database: %s with Msg %d, Level %d, State %d:, Line %d, Error: %w" , query .ScriptName ,
@@ -287,22 +288,28 @@ func (s *Instance) gatherServer(pool *sql.DB, query Query, slist *types.SampleLi
287
288
288
289
defer rows .Close ()
289
290
291
+ tags := map [string ]string {
292
+ "serverName" : serverName ,
293
+ "databaseName" : databaseName ,
294
+ healthMetricInstanceTag : serverName ,
295
+ }
296
+
290
297
// grab the column information from the result
291
298
query .OrderedColumns , err = rows .Columns ()
292
299
if err != nil {
293
300
return err
294
301
}
295
302
296
303
for rows .Next () {
297
- err = s .accRow (query , slist , rows )
304
+ err = s .accRow (query , slist , rows , tags )
298
305
if err != nil {
299
306
return err
300
307
}
301
308
}
302
309
return rows .Err ()
303
310
}
304
311
305
- func (s * Instance ) accRow (query Query , slist * types.SampleList , row scanner ) error {
312
+ func (s * Instance ) accRow (query Query , slist * types.SampleList , row scanner , labels map [ string ] string ) error {
306
313
var columnVars []interface {}
307
314
var fields = make (map [string ]interface {})
308
315
@@ -324,6 +331,10 @@ func (s *Instance) accRow(query Query, slist *types.SampleList, row scanner) err
324
331
// measurement: identified by the header
325
332
// tags: all other fields of type string
326
333
tags := map [string ]string {}
334
+ for k , v := range labels {
335
+ tags [k ] = v
336
+ }
337
+
327
338
var measurement string
328
339
for header , val := range columnMap {
329
340
if str , ok := (* val ).(string ); ok {
@@ -343,7 +354,7 @@ func (s *Instance) accRow(query Query, slist *types.SampleList, row scanner) err
343
354
if strings .HasPrefix (measurement , inputName ) {
344
355
slist .PushSample ("" , measurement + "_value" , * columnMap ["value" ], tags )
345
356
} else {
346
- slist .PushSample ("" , measurement + "_value" , * columnMap ["value" ], tags )
357
+ slist .PushSample (inputName , measurement + "_value" , * columnMap ["value" ], tags )
347
358
}
348
359
349
360
} else {
@@ -383,7 +394,12 @@ func (s *Instance) gatherHealth(healthMetrics map[string]*HealthMetric, serv str
383
394
func (s * Instance ) accHealth (healthMetrics map [string ]* HealthMetric , slist * types.SampleList ) {
384
395
for connectionString , connectionStats := range healthMetrics {
385
396
sqlInstance , databaseName := getConnectionIdentifiers (connectionString )
386
- tags := map [string ]string {healthMetricInstanceTag : sqlInstance , healthMetricDatabaseTag : databaseName }
397
+ tags := map [string ]string {
398
+ healthMetricInstanceTag : sqlInstance ,
399
+ healthMetricDatabaseTag : databaseName ,
400
+ "serverName" : sqlInstance ,
401
+ "databaseName" : databaseName ,
402
+ }
387
403
fields := map [string ]interface {}{
388
404
healthMetricAttemptedQueries : connectionStats .AttemptedQueries ,
389
405
healthMetricSuccessfulQueries : connectionStats .SuccessfulQueries ,
0 commit comments