問題タブ [spring-micrometer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
servlet-filters - Spring RestController 応答と PrometheusMeterRegistry エラー メッセージが混在
Env: Springboot-2.0.7.RELEASE (埋め込み tomcat-8.5.35)、JDK-1.8.0_181、micrometer-registry-prometheus-1.0.8
説明: @Timed
on controller メソッドとWebMvcMetricsFilter
customを使用しますWebMvcTagsProvider
。
デモプロジェクト: https://github.com/kenix/resp-mix
タグのセットを持つメーターを既に作成している場合PrometheusMeterRegistry
、同じ名前で異なるタグのセットを持つ別のメーターは作成されません。IllegalArgumentException
前述の理由でスローします。これは、正常に処理されたリクエストの正常な処理の後に発生します (レスポンスには変換された JSON が含まれるようになりました)。例外はSpringではキャッチされませんWebMvcMetricsFilter
(つまり、catch
-clauseで例外をキャッチします。ところで、役に立ちControllerAdvice
ません)が、TomcatのによってキャッチされStandardHostValve
、独自のエラーメッセージ(この例外がどこから来たのかを知ることができません)を応答にレンダリングしますそれも。これにより、レンダリングされた結果として不正な JSON が生成されます。
質問 1:WebMvcMetricsFilter
によってスローされたこの例外をキャッチして処理し、PrometheusMeterRegistry
それ以上スローしないようにする必要がありますか?
質問 2: 実際の処理に入る前にフィルター チェーンで例外が想定どおりに処理されることを確認しました。実際の処理が成功した後の例外はどうですか? 参照はありますか?
このケースをトリガーするには:
curl -i localhost:8080/hi/foo/there
curl -i localhost:8080/hi/blah/there
java - MicroMeter Timer がゼロを返すのはなぜですか?
次のコードを検討してください。
出力は両方の出力でゼロですが、もちろん正の数であることが期待されます。
を使用してglobalRegistry
いますが、違いはないと思います。
java - CloudWatchConfig インターフェイスがステップ期間の文字列を期待するのはなぜですか
Gradleに組み込まれたMicrometer Cloudwatch 1.1.3を使用していますcompile 'io.micrometer:micrometer-registry-cloudwatch:1.1.3'
Java ではCloudWatchConfig
、次のようにしてを作成できます。
Kotlinで同等のものは、次のようにする必要があると思います:
Koltin コンパイラはこれに失敗し、ブロックの最後の行を指摘します: fun batchSize() = CloudWatchConfig.MAX_BATCH_SIZE
String? 型の値が必要だと言っています。
多くのデバッグの後、ステップ関数の toString を返すことでこれを修正できました。Duration によって生成されたかのように解析されるため、文字列を渡すことはできません。私の Kotlin コードが機能するようになり、次のようになります。
CloudWatchConfig、StepRegisteryConfig、および MeterRegistryConfig インターフェースを調べた後、なぜそうなのかわかりません。Koltin がこれを行うのはなぜですか? また、なぜ Duration の toString を期待しているのですか?
java - /スプリング ブート アクチュエータの Beans にアクセスできません
アクチュエータに依存する単純なスプリング ブート アプリケーションを試しましたが、http://localhost:8080/actuator/beansにアクセスできませんでした
次の出力でhttp://localhost:8080/actuatorにアクセスできます。
また、主に次の URL にはアクセスできません。ここからリストされています。