@@ -80,14 +80,13 @@ func (s *sqlServerScraperHelper) Start(context.Context, component.Host) error {
80
80
func (s * sqlServerScraperHelper ) Scrape (ctx context.Context ) (pmetric.Metrics , error ) {
81
81
var err error
82
82
83
- rb := s .mb .NewResourceBuilder ()
84
83
switch s .sqlQuery {
85
84
case getSQLServerDatabaseIOQuery (s .instanceName ):
86
- err = s .recordDatabaseIOMetrics (ctx , rb )
85
+ err = s .recordDatabaseIOMetrics (ctx )
87
86
case getSQLServerPerformanceCounterQuery (s .instanceName ):
88
- err = s .recordDatabasePerfCounterMetrics (ctx , rb )
87
+ err = s .recordDatabasePerfCounterMetrics (ctx )
89
88
case getSQLServerPropertiesQuery (s .instanceName ):
90
- err = s .recordDatabaseStatusMetrics (ctx , rb )
89
+ err = s .recordDatabaseStatusMetrics (ctx )
91
90
default :
92
91
return pmetric.Metrics {}, fmt .Errorf ("Attempted to get metrics from unsupported query: %s" , s .sqlQuery )
93
92
}
@@ -96,7 +95,7 @@ func (s *sqlServerScraperHelper) Scrape(ctx context.Context) (pmetric.Metrics, e
96
95
return pmetric.Metrics {}, err
97
96
}
98
97
99
- return s .mb .Emit (metadata . WithResource ( rb . Emit ()) ), nil
98
+ return s .mb .Emit (), nil
100
99
}
101
100
102
101
func (s * sqlServerScraperHelper ) Shutdown (_ context.Context ) error {
@@ -106,8 +105,7 @@ func (s *sqlServerScraperHelper) Shutdown(_ context.Context) error {
106
105
return nil
107
106
}
108
107
109
- func (s * sqlServerScraperHelper ) recordDatabaseIOMetrics (ctx context.Context , rb * metadata.ResourceBuilder ) error {
110
- // TODO: Move constants out to the package level when other queries are added.
108
+ func (s * sqlServerScraperHelper ) recordDatabaseIOMetrics (ctx context.Context ) error {
111
109
const computerNameKey = "computer_name"
112
110
const databaseNameKey = "database_name"
113
111
const physicalFilenameKey = "physical_filename"
@@ -133,11 +131,10 @@ func (s *sqlServerScraperHelper) recordDatabaseIOMetrics(ctx context.Context, rb
133
131
now := pcommon .NewTimestampFromTime (time .Now ())
134
132
var val float64
135
133
for i , row := range rows {
136
- if i == 0 {
137
- rb .SetSqlserverComputerName (row [computerNameKey ])
138
- rb .SetSqlserverDatabaseName (row [databaseNameKey ])
139
- rb .SetSqlserverInstanceName (row [instanceNameKey ])
140
- }
134
+ rb := s .mb .NewResourceBuilder ()
135
+ rb .SetSqlserverComputerName (row [computerNameKey ])
136
+ rb .SetSqlserverDatabaseName (row [databaseNameKey ])
137
+ rb .SetSqlserverInstanceName (row [instanceNameKey ])
141
138
142
139
val , err = strconv .ParseFloat (row [readLatencyMsKey ], 64 )
143
140
if err != nil {
@@ -159,6 +156,8 @@ func (s *sqlServerScraperHelper) recordDatabaseIOMetrics(ctx context.Context, rb
159
156
errs = append (errs , s .mb .RecordSqlserverDatabaseOperationsDataPoint (now , row [writeCountKey ], row [physicalFilenameKey ], row [logicalFilenameKey ], row [fileTypeKey ], metadata .AttributeDirectionWrite ))
160
157
errs = append (errs , s .mb .RecordSqlserverDatabaseIoDataPoint (now , row [readBytesKey ], row [physicalFilenameKey ], row [logicalFilenameKey ], row [fileTypeKey ], metadata .AttributeDirectionRead ))
161
158
errs = append (errs , s .mb .RecordSqlserverDatabaseIoDataPoint (now , row [writeBytesKey ], row [physicalFilenameKey ], row [logicalFilenameKey ], row [fileTypeKey ], metadata .AttributeDirectionWrite ))
159
+
160
+ s .mb .EmitForResource (metadata .WithResource (rb .Emit ()))
162
161
}
163
162
164
163
if len (rows ) == 0 {
@@ -168,7 +167,7 @@ func (s *sqlServerScraperHelper) recordDatabaseIOMetrics(ctx context.Context, rb
168
167
return errors .Join (errs ... )
169
168
}
170
169
171
- func (s * sqlServerScraperHelper ) recordDatabasePerfCounterMetrics (ctx context.Context , rb * metadata. ResourceBuilder ) error {
170
+ func (s * sqlServerScraperHelper ) recordDatabasePerfCounterMetrics (ctx context.Context ) error {
172
171
const counterKey = "counter"
173
172
const valueKey = "value"
174
173
// Constants are the columns for metrics from query
@@ -195,9 +194,8 @@ func (s *sqlServerScraperHelper) recordDatabasePerfCounterMetrics(ctx context.Co
195
194
var errs []error
196
195
now := pcommon .NewTimestampFromTime (time .Now ())
197
196
for i , row := range rows {
198
- if i == 0 {
199
- rb .SetSqlserverInstanceName (row [instanceNameKey ])
200
- }
197
+ rb := s .mb .NewResourceBuilder ()
198
+ rb .SetSqlserverInstanceName (row [instanceNameKey ])
201
199
202
200
switch row [counterKey ] {
203
201
case batchRequestRate :
@@ -255,12 +253,14 @@ func (s *sqlServerScraperHelper) recordDatabasePerfCounterMetrics(ctx context.Co
255
253
s .mb .RecordSqlserverUserConnectionCountDataPoint (now , val )
256
254
}
257
255
}
256
+
257
+ s .mb .EmitForResource (metadata .WithResource (rb .Emit ()))
258
258
}
259
259
260
260
return errors .Join (errs ... )
261
261
}
262
262
263
- func (s * sqlServerScraperHelper ) recordDatabaseStatusMetrics (ctx context.Context , rb * metadata. ResourceBuilder ) error {
263
+ func (s * sqlServerScraperHelper ) recordDatabaseStatusMetrics (ctx context.Context ) error {
264
264
// Constants are the column names of the database status
265
265
const dbOnline = "db_online"
266
266
const dbRestoring = "db_restoring"
@@ -281,10 +281,9 @@ func (s *sqlServerScraperHelper) recordDatabaseStatusMetrics(ctx context.Context
281
281
282
282
var errs []error
283
283
now := pcommon .NewTimestampFromTime (time .Now ())
284
- for i , row := range rows {
285
- if i == 0 {
286
- rb .SetSqlserverInstanceName (row [instanceNameKey ])
287
- }
284
+ for _ , row := range rows {
285
+ rb := s .mb .NewResourceBuilder ()
286
+ rb .SetSqlserverInstanceName (row [instanceNameKey ])
288
287
289
288
errs = append (errs , s .mb .RecordSqlserverDatabaseCountDataPoint (now , row [dbOnline ], metadata .AttributeDatabaseStatusOnline ))
290
289
errs = append (errs , s .mb .RecordSqlserverDatabaseCountDataPoint (now , row [dbRestoring ], metadata .AttributeDatabaseStatusRestoring ))
@@ -293,6 +292,7 @@ func (s *sqlServerScraperHelper) recordDatabaseStatusMetrics(ctx context.Context
293
292
errs = append (errs , s .mb .RecordSqlserverDatabaseCountDataPoint (now , row [dbSuspect ], metadata .AttributeDatabaseStatusSuspect ))
294
293
errs = append (errs , s .mb .RecordSqlserverDatabaseCountDataPoint (now , row [dbOffline ], metadata .AttributeDatabaseStatusOffline ))
295
294
295
+ s .mb .EmitForResource (metadata .WithResource (rb .Emit ()))
296
296
}
297
297
298
298
return errors .Join (errs ... )
0 commit comments