2014-07-22 5 views
1

나는 정의 다음이 : 나는 /metrics에 가면메트릭 Clojure의 링 미들웨어 기록하지 메트릭 내 처리기에서

(def reg (new-registry)) 

(def app (-> app-routes 
     (expose-metrics-as-json) 
     (instrument reg))) 

가 난 단지 빈 JSON 객체를 참조하십시오. 내가 뭘 놓치고 있니? 또한, 내가 콘솔에보고 할 수있는 방법에 관해서는 설명서가 명확하지 않지만, 설명서에있는 report-to-console이 더 이상 사용되지 않는 대신 기자가 있지만 기자를 사용하는 방법에 대한 문서를 찾을 수 없습니다.

편집 : 메트릭 추가 기록이보고되고있는 것을 내가 본

:

(meters/rates ((all-metrics reg) "ring.responses.rate.2xx")) 

을 그리고 결과는 예상대로, 같은 : 그래서

{1 0.06325196458537237, 5 0.01824839591203641, 15 0.006466051961211013, :total 6} 

expose-metrics-as-json이 엔드 포인트를 작성하고 있지만 메트릭이 추가되지는 않습니다.

답변

3

하! 나는 이것이 실제로 코드의 버그라는 것을 발견했다. https://github.com/sjl/metrics-clojure/blob/master/metrics-clojure-ring/src/metrics/ring/expose.clj

([handler uri registry] 
    (expose-metrics-as-json handler uri default-registry {:pretty-print? false})) 

이것은 registry 매개 변수를 무시합니다. 사용하고자하는 일이 있습니다.

(expose-metrics-as-json "/metrics" reg {:pretty-print? false}) 

풀 요청을 수정하고 만듭니다.

2

expose-metrics-as-json에 레지스트리를 전달하지 않습니다. 그것은 기본 레지스트리로 돌아갑니다. 당신의 스레딩 표현에서

, 그것은 읽는 있도록 두 번째 줄을 변경 시도 :

(def app (-> app-routes 
      (expose-metrics-as-json "/metrics" reg) 
      (instrument reg))) 
+0

질문을 게시 한 직후에 이것을 시도했지만 작동하지 않았습니다. 메트릭 URL이 노출되어 있기 때문에 미들웨어를 가져와야합니다. 메트릭이 없습니다. – shmish111