All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scouter.agent.counter.task.InteractionPerf Maven / Gradle / Ivy

There is a newer version: 2.20.0
Show newest version
/*
 *  Copyright 2015 the original author or authors. 
 *  @https://github.com/scouter-project/scouter
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 */

package scouter.agent.counter.task;

import scouter.agent.Configure;
import scouter.agent.counter.InteractionCounterBasket;
import scouter.agent.counter.anotation.InteractionCounter;
import scouter.agent.counter.meter.MeterInteraction;
import scouter.agent.counter.meter.MeterInteractionManager;
import scouter.lang.counters.CounterConstants;
import scouter.lang.pack.InteractionPerfCounterPack;
import scouter.util.LinkedMap;

import java.util.Enumeration;

public class InteractionPerf {

	private Configure conf = Configure.getInstance();

	@InteractionCounter(interval = 5000)
	public void collectApiIncomingInteractionCounter(InteractionCounterBasket basket) {
		if (!conf.counter_interaction_enabled) {
			return;
		}

		int periodSec = 30;
		String interactionType = CounterConstants.INTR_API_INCOMING;
		LinkedMap apiIncomingMeterMap = MeterInteractionManager.getInstance().getApiIncomingMeterMap();
		addInteractionsToBasket(basket, interactionType, apiIncomingMeterMap, periodSec);
	}

	@InteractionCounter(interval = 5000)
	public void collectNormalIncomingInteractionCounter(InteractionCounterBasket basket) {
		if (!conf.counter_interaction_enabled) {
			return;
		}

		int periodSec = 30;
		String interactionType = CounterConstants.INTR_NORMAL_INCOMING;
		LinkedMap normalIncomingMeterMap = MeterInteractionManager.getInstance().getNormalIncomingMeterMap();
		addInteractionsToBasket(basket, interactionType, normalIncomingMeterMap, periodSec);
	}

	@InteractionCounter(interval = 5000)
	public void collectApiOutgoingInteractionCounter(InteractionCounterBasket basket) {
		if (!conf.counter_interaction_enabled) {
			return;
		}

		int periodSec = 30;
		String interactionType = CounterConstants.INTR_API_OUTGOING;
		LinkedMap apiOutgoingMeterMap = MeterInteractionManager.getInstance().getApiOutgoingMeterMap();
		addInteractionsToBasket(basket, interactionType, apiOutgoingMeterMap, periodSec);
	}

	@InteractionCounter(interval = 5000)
	public void collectNormalOutgoingInteractionCounter(InteractionCounterBasket basket) {
		if (!conf.counter_interaction_enabled) {
			return;
		}

		int periodSec = 30;
		String interactionType = CounterConstants.INTR_NORMAL_OUTGOING;
		LinkedMap normalOutgoingMeterMap = MeterInteractionManager.getInstance().getNormalOutgoingMeterMap();
		addInteractionsToBasket(basket, interactionType, normalOutgoingMeterMap, periodSec);
	}

	@InteractionCounter(interval = 5000)
	public void collectDbCallInteractionCounter(InteractionCounterBasket basket) {
		if (!conf.counter_interaction_enabled) {
			return;
		}

		int periodSec = 30;
		String interactionType = CounterConstants.INTR_DB_CALL;
		LinkedMap dbCallMeterMap = MeterInteractionManager.getInstance().getDbCallMeterMap();
		addInteractionsToBasket(basket, interactionType, dbCallMeterMap, periodSec);
	}

	@InteractionCounter(interval = 5000)
	public void collectRedisCallInteractionCounter(InteractionCounterBasket basket) {
		if (!conf.counter_interaction_enabled) {
			return;
		}

		int periodSec = 30;
		String interactionType = CounterConstants.INTR_REDIS_CALL;
		LinkedMap redisCallMeterMap = MeterInteractionManager.getInstance().getRedisCallMeterMap();
		addInteractionsToBasket(basket, interactionType, redisCallMeterMap, periodSec);
	}

	private void addInteractionsToBasket(InteractionCounterBasket basket, String interactionType, LinkedMap apiIncomingMeterMap, int periodSec) {
		Enumeration> entries = apiIncomingMeterMap.entries();

		while (entries.hasMoreElements()) {
			LinkedMap.LinkedEntry entry = entries.nextElement();
			MeterInteractionManager.Key key = entry.getKey();
			MeterInteraction meterInteraction = entry.getValue();

			InteractionPerfCounterPack pack = new InteractionPerfCounterPack(conf.getObjName(), interactionType);
			pack.fromHash = key.fromHash;
			pack.toHash = key.toHash;
			pack.period = periodSec;
			pack.count = meterInteraction.getCount(periodSec);
			pack.errorCount = meterInteraction.getErrorCount(periodSec);
			pack.totalElapsed = meterInteraction.getSumTime(periodSec);

			basket.add(interactionType, pack);
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy