@@ -21,20 +21,6 @@ import Vapor
21
21
22
22
enum AppMetrics {
23
23
24
- static let initialized = Mutex ( false )
25
-
26
- static func bootstrap( ) {
27
- // prevent tests from boostrapping multiple times
28
- guard !initialized. withLock ( { $0 } ) else { return }
29
- initialized. withLock {
30
- let client = PrometheusClient ( )
31
- MetricsSystem . bootstrap ( PrometheusMetricsFactory ( client: client) )
32
- $0 = true
33
- }
34
- }
35
-
36
- // metrics
37
-
38
24
static var analyzeCandidatesCount : PromGauge < Int > ? {
39
25
gauge ( " spi_analyze_candidates_count " )
40
26
}
@@ -155,13 +141,13 @@ enum AppMetrics {
155
141
extension AppMetrics {
156
142
157
143
static func counter< V: Numeric > ( _ name: String ) -> PromCounter < V > ? {
158
- try ? MetricsSystem . prometheus ( )
159
- . createCounter ( forType: V . self, named: name)
144
+ @ Dependency ( \ . metricsSystem . prometheus) var prometheus
145
+ return try ? prometheus ( ) . createCounter ( forType: V . self, named: name)
160
146
}
161
147
162
148
static func gauge< V: DoubleRepresentable > ( _ name: String ) -> PromGauge < V > ? {
163
- try ? MetricsSystem . prometheus ( )
164
- . createGauge ( forType: V . self, named: name)
149
+ @ Dependency ( \ . metricsSystem . prometheus) var prometheus
150
+ return try ? prometheus ( ) . createGauge ( forType: V . self, named: name)
165
151
}
166
152
167
153
}
@@ -176,14 +162,15 @@ extension AppMetrics {
176
162
static func push( client: Client , jobName: String ) async throws {
177
163
@Dependency ( \. environment) var environment
178
164
@Dependency ( \. logger) var logger
165
+ @Dependency ( \. metricsSystem. prometheus) var prometheus
179
166
180
167
guard let pushGatewayUrl = environment. metricsPushGatewayUrl ( ) else {
181
168
throw AppError . envVariableNotSet ( " METRICS_PUSHGATEWAY_URL " )
182
169
}
183
170
let url = URI ( string: " \( pushGatewayUrl) /metrics/job/ \( jobName) " )
184
171
185
172
do {
186
- let metrics : String = try await MetricsSystem . prometheus ( ) . collect ( )
173
+ let metrics : String = try await prometheus ( ) . collect ( )
187
174
_ = try await client. post ( url) { req in
188
175
// append "\n" to avoid
189
176
// text format parsing error in line 4: unexpected end of input stream
0 commit comments