私は次の指標を持っています:
folsomite.<Host>.cache.hit1
_folsomite.<Host>.cache.hit2
_folsomite.<Host>.cache.miss1
_folsomite.<Host>.cache.miss2
_folsomite.<Host>.cache.miss3
_(私が使用しているキャッシングライブラリには、ファーストチャンスとセカンドチャンスの2種類のヒットと、3種類のミスがあります)
そして、_(hit1 + hit2) / (miss1 + miss2 + miss3)
_を計算したいと思います。 _(hit1 + hit2)
_を計算することから始めようと思っていましたが、sumSeries
をsumSeries(folsomite.*.cache.hit*)
として使用すると、_<Host>
_の値も合計されます。
他のワイルドカードを合計せずに、いくつかのワイルドカードを使用して複数のメトリックを合計するにはどうすればよいですか?または、ワイルドカードを保持しながら、具体的に2つ(またはそれ以上のメトリック)を追加するにはどうすればよいですか?
そして、それを行った後、1つの(合計された)結果を別の結果で割ることはできますか?
編集:私は実際にグラフをレンダリングするためにgrafanaを使用しています。それは違いを生みますか?
私はこれを解決していませんが、情報が役立つ可能性があることに注意してください。グラファイトには以下のデータがあると仮定しましょう
folsomite.A.cache.hit1
folsomite.B.cache.hit1
folsomite.A.cache.hit2
folsomite.C.cache.hit1
folsomite.B.cache.hit2
folsomite.A.cache.miss1
folsomite.B.cache.miss1
folsomite.A.cache.miss2
folsomite.A.cache.miss3
folsomite.C.cache.miss2
folsomite.B.cache.miss2
1つのワイルドカードでグループ化するには、 groupByNode を使用する必要があります。
groupByNode(folsomite.*.cache.hit*, 1, 'sumSeries')
合計ヒット数を含むメトリックA
、B
、C
を出力します。 groupByNodeが失敗すると、同じ名前のメトリックが返されるため、何らかの方法で区別する必要があります。 aliasSubを使用します。だから今私たちは持っています:
aliasSub(groupByNode(folsomite.*.cache.hit*, 1, 'sumSeries'), '(.*)', '\1.hit')
aliasSub(groupByNode(folsomite.*.cache.miss*, 1, 'sumSeries'), '(.*)', '\1.miss')
取得するメトリックはA.hit
、B.hit
、C.hit
、A.miss
、B.miss
、C.miss
。
次に、 reduceSeries を試すことができます(これは私には機能しません、何かが足りません:))。作業するシリーズの期待リストを減らすので、 group または mapSeries で組み合わせる必要があります。
group(
aliasSub(groupByNode(folsomite.*.cache.hit*, 1, 'sumSeries'), '(.*)', '\1.hit'),
aliasSub(groupByNode(folsomite.*.cache.miss*, 1, 'sumSeries'), '(.*)', '\1.miss')
)
ミスとヒットのシリーズをすべて出力します。今減らす
reduceSeries(
group(
aliasSub(groupByNode(folsomite.*.cache.hit*, 1, 'sumSeries'), '(.*)', '\1.hit'),
aliasSub(groupByNode(folsomite.*.cache.miss*, 1, 'sumSeries'), '(.*)', '\1.miss')
), 'divideSeries', 1, 'hit', miss')
それで全部です。後で別のアプローチを試すかもしれませんが...少なくともいくつかのヒントが得られることを願っています。
Grafanaには変数を使用してテンプレートを設定する機能があるため、それを使用することは可能ですが、この機能を掘り下げる必要があります。