アプリのすべてのメトリックをメトリック名でグループ化する方法はありますか?アプリのすべてのメトリックをリストするクエリの一部(つまり、{app="bar"}
):
ch_qos_logback_core_Appender_all_total{affiliation="foo",app="bar", instance="baz-3-dasp",job="kubernetes-service-endpoints",kubernetes_name="bar",kubernetes_namespace="foobarz",kubernetes_node="mypaas-dev-node3.fud.com",updatedBy="janedoe"} 44
ch_qos_logback_core_Appender_debug_total{affiliation="foo",app="bar", instance="baz-3-dasp",job="kubernetes-service-endpoints",kubernetes_name="bar",kubernetes_namespace="foobarz",kubernetes_node="mypaas-dev-node23.fud.com",updatedBy="deppba"} 32
また、メトリック名にワイルドカードを使用しようとしましたが、プロメテウスはそれについて不満を言っています。メトリックを見ると、そのうちのいくつかが動的な名前を持っていることがわかります。ほとんどの場合、ドロップウィザードのメトリックによって配信されます。最終的に欲しいのは、利用可能なすべてのメトリックのリストです。
@ brian-brazilの答えからヒントを得て、解決策を見つけました。次のクエリは、利用可能なすべてのメトリックをリストします。
sum by(__name__)({app="bar"})
ここで、bar
はアプリケーション名です。質問に投稿されたログエントリで確認できます。
{__name__=~".+"}
は、すべての古くない時系列を返しますが、これは高価なクエリであり、通常は避ける必要があります。
直接使用する
{__name__=~".+"}
success
を返しますが、他には何も返しません(大きすぎます)。
または
{__name__=~".*"}
一方、予想どおりerror
を代わりに提供します。
parse error at char 17: vector selector must contain at least one non-empty matcher
ここでの私のトリックは、brian-brazilとnaimdjonのソリューションを、
sum({__name__=~"c.*|e.*|n.*|p.*|r.*|k.*|z.*|r.*"}) by (__name__)
可能なprefixes
を知っているので、それらをクエリに追加して、少なくとも何かを返すようにします。そしてさらに、
無駄なフィールドが返される(プロメテウスを圧迫する)のを避けるために、__name__
をこのように必要とするのはby(__name__)
で、必要なメトリックのすべての名前が期待どおりに返されます。
実際には、使用可能なすべてのメトリック名を取得するAPI
があります。
/api/v1/label/__name__/values