私の春のマイクロサービスがデータを処理するとしましょう。成功した処理イベントが発生するたびに、メトリックについて、マイクロメーター カウンターを更新します。これは Graphite Registry に登録されます。
registry = new GraphiteMeterRegistry(new GraphiteConfiguration(), Clock.SYSTEM, HierarchicalNameMapper.DEFAULT);
Counter counter = Counter.builder("process").tag("status","success").register(registry);
これまでのところ、いい音です。しかし、サービスの複数のインスタンスを作成してデプロイする必要がある場合はどうすればよいでしょうか?
すべてのインスタンスから成功したすべてのイベントの集計数を取得するにはどうすればよいですか?
私のケースをさらに説明するために、各インクリメントで counter.count() 値をログに記録します。これが私が見たものです - >
<Instance 1> <time> <package-name> Count :122
<Instance 2> <time> <package-name> Count :53
したがって、グラファナでグラファイトクエリを実行すると-
process.status.success.count
これらのインスタンスのいずれかからランダム カウントを取得する傾向があります。
私が必要とするのは、次のようなクエリです-
process.service-instance.status.success.count
最終的に summary() 関数を実行できるようにします。
更新 サービス インスタンス ID を取得することで、すべてのインスタンスからデータを取得できるようになりました。しかし、それは新しい問題を提示します - サービスを何度も再起動し、サービス ID が毎回変更されるため、アクティブなサービスのみからデータを取得するにはどうすればよいですか?
process.*.status.success.count はすべてのサービスの集計数を表すため - デッドまたはアライブ