|
114 | 114 | (into {} (map #(render-metric % unit-context) (->> registry
|
115 | 115 | (all-metrics)
|
116 | 116 | (filter-metrics filter))))))
|
117 |
| - |
118 |
| -(defn serve-metrics |
119 |
| - ([request] |
120 |
| - (serve-metrics request default-registry)) |
| 117 | +(defn- serve-metrics* |
121 | 118 | ([request registry]
|
122 |
| - (serve-metrics request registry false)) |
| 119 | + (render-metrics request registry false)) |
123 | 120 | ([request registry {:keys [pretty-print? filter rate-unit duration-unit]}]
|
124 | 121 | (let [metrics-map (render-metrics registry filter (unit/build-options rate-unit duration-unit))
|
125 | 122 | json (generate-string metrics-map {:pretty pretty-print?})]
|
126 | 123 | (-> (response json)
|
127 | 124 | (header "Content-Type" "application/json")))))
|
128 | 125 |
|
| 126 | +(defn serve-metrics |
| 127 | + ([request] |
| 128 | + (serve-metrics* request default-registry)) |
| 129 | + ([request respond raise] |
| 130 | + (try |
| 131 | + (respond (serve-metrics* request default-registry)) |
| 132 | + (catch Exception e (raise e))))) |
| 133 | + |
| 134 | + |
129 | 135 | (defn expose-metrics-as-json
|
130 | 136 | ([handler]
|
131 | 137 | (expose-metrics-as-json handler "/metrics"))
|
|
142 | 148 | (serve-metrics request registry (merge {:filter filter
|
143 | 149 | :rate-unit TimeUnit/SECONDS
|
144 | 150 | :duration-unit TimeUnit/NANOSECONDS} opts))
|
145 |
| - (handler request)))))) |
| 151 | + (handler request)))) |
| 152 | + (fn [request respond raise] |
| 153 | + (let [^String request-uri (:uri request) |
| 154 | + ^String filter (get-in request [:params :filter])] |
| 155 | + (if (or (.startsWith request-uri (sanitize-uri uri)) |
| 156 | + (= request-uri uri)) |
| 157 | + (serve-metrics request registry (merge {:filter filter |
| 158 | + :rate-unit TimeUnit/SECONDS |
| 159 | + :duration-unit TimeUnit/NANOSECONDS} opts)) |
| 160 | + (handler request respond raise)))))) |
0 commit comments