2017-07-18 1 views
1

私はPrometheus Java Clientを使用して、自分のアプリケーションのセッション情報をエクスポートします。セッションがアイドル状態になっている時間を表示します。有効ではなくなったGaugesを削除する方法

問題は、最大1000個のセッションがあり、一定期間後にセッションが削除されることです。残念ながら、彼らはプロメテウスから消えません。

Current and expired sessions

私のコードは次のようになります。

static final Gauge sessionInactivity = Gauge.build() 
    .name("sessions_inactivity_duration") 
    .labelNames("internal_key", "external_key", "browser") 
    .help("Number of milliseconds a certain session has been inactive") 
    .register(); 

sessionInactivity.labels(internalKey, externalKey, browser).set(inactivityTime); 

私は命拾い中にsessionInactivity.clear()を実行しようとしましたが、明らかに、これはゲージの内容を空にしません。

答えて

3

このようなリクエストごとの処理は、Prometheusなどのメトリックシステムには適していません。これはプロファイリングと見なされます。そのためにはもっとカスタムが必要です。

タイムスタンプをエクスポートする前に、そのタイムスタンプをエクスポートすることをお勧めします。これは、もはや更新されない時間を更新するものに弾力性があり、Prometheusの最後にあるtime()から減算を行うことができます。

+0

わかりましたが、ゲージを取り外すという概念はありませんか?私はラベルを使って表現するブラウザの統計を集める必要がある別のシナリオを持っています。私はそれらを単にゼロに設定する必要はありません。 – Marged

+0

方法はありますが、それは実際に一体化するためだけです。これは、Prometheusが適していないユースケースでもあります。イベントロギングには、ELKスタックのようなものが必要です。 –

+0

私はまだ他のシナリオがプロメテウスに適しているかどうかを判断しようとしています。私はタイムスタンプの部分をはっきりと理解しました。私はこれを変更します。セッションのための私のアプローチがプロメテウスに適していない理由をいくつか(もっと)具体的に説明できますか?一度に1000セッションを超えることはできませんが、膨大な数の「internal_key」が数千になるためですか?私は第2のシナリオのために別の質問を作成することができます。これが好きな人は、私にサインをしてください。 – Marged

関連する問題