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

com.netflix.eureka.util.EurekaMonitors Maven / Gradle / Ivy

There is a newer version: 2.0.4
Show newest version
/*
 * Copyright 2012 Netflix, Inc.
 *
 *    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 com.netflix.eureka.util;

import static com.netflix.discovery.util.SpectatorUtil.monitoredValue;

import com.netflix.discovery.util.SpectatorUtil;
import java.util.concurrent.atomic.AtomicLong;

import com.netflix.appinfo.AmazonInfo;
import com.netflix.appinfo.AmazonInfo.MetaDataKey;
import com.netflix.appinfo.ApplicationInfoManager;
import com.netflix.appinfo.DataCenterInfo;
import com.netflix.appinfo.DataCenterInfo.Name;

/**
 * The enum that encapsulates all statistics monitored by Eureka.
 *
 * 

* Eureka Monitoring is done using Servo. The * users who wants to take advantage of the monitoring should read up on * Servo *

* * @author Karthik Ranganathan, Greg Kim * */ public enum EurekaMonitors { RENEW("renewCounter", "Number of total renews seen since startup"), CANCEL("cancelCounter", "Number of total cancels seen since startup"), GET_ALL_CACHE_MISS("getAllCacheMissCounter", "Number of total registry queries seen since startup"), GET_ALL_CACHE_MISS_DELTA("getAllCacheMissDeltaCounter", "Number of total registry queries for delta seen since startup"), GET_ALL_WITH_REMOTE_REGIONS_CACHE_MISS("getAllWithRemoteRegionCacheMissCounter", "Number of total registry with remote region queries seen since startup"), GET_ALL_WITH_REMOTE_REGIONS_CACHE_MISS_DELTA("getAllWithRemoteRegionCacheMissDeltaCounter", "Number of total registry queries for delta with remote region seen since startup"), GET_ALL_DELTA("getAllDeltaCounter", "Number of total deltas since startup"), GET_ALL_DELTA_WITH_REMOTE_REGIONS("getAllDeltaWithRemoteRegionCounter", "Number of total deltas with remote regions since startup"), GET_ALL("getAllCounter", "Number of total registry queries seen since startup"), GET_ALL_WITH_REMOTE_REGIONS("getAllWithRemoteRegionCounter", "Number of total registry queries with remote regions, seen since startup"), GET_APPLICATION("getApplicationCounter", "Number of total application queries seen since startup"), REGISTER("registerCounter", "Number of total registers seen since startup"), EXPIRED("expiredCounter", "Number of total expired leases since startup"), STATUS_UPDATE("statusUpdateCounter", "Number of total admin status updates since startup"), STATUS_OVERRIDE_DELETE("statusOverrideDeleteCounter", "Number of status override removals"), CANCEL_NOT_FOUND("cancelNotFoundCounter", "Number of total cancel requests on non-existing instance since startup"), RENEW_NOT_FOUND("renewNotFoundexpiredCounter", "Number of total renew on non-existing instance since startup"), REJECTED_REPLICATIONS("numOfRejectedReplications", "Number of replications rejected because of full queue"), FAILED_REPLICATIONS("numOfFailedReplications", "Number of failed replications - likely from timeouts"), RATE_LIMITED("numOfRateLimitedRequests", "Number of requests discarded by the rate limiter"), RATE_LIMITED_CANDIDATES("numOfRateLimitedRequestCandidates", "Number of requests that would be discarded if the rate limiter's throttling is activated"), RATE_LIMITED_FULL_FETCH("numOfRateLimitedFullFetchRequests", "Number of full registry fetch requests discarded by the rate limiter"), RATE_LIMITED_FULL_FETCH_CANDIDATES("numOfRateLimitedFullFetchRequestCandidates", "Number of full registry fetch requests that would be discarded if the rate limiter's throttling is activated"); private final String name; private final String myZoneCounterName; private final String description; private EurekaMonitors(String name, String description) { this.name = name; this.description = description; DataCenterInfo dcInfo = ApplicationInfoManager.getInstance().getInfo().getDataCenterInfo(); if (dcInfo.getName() == Name.Amazon) { myZoneCounterName = ((AmazonInfo) dcInfo).get(MetaDataKey.availabilityZone) + "." + name; } else { myZoneCounterName = "dcmaster." + name; } counter = SpectatorUtil.monitoredLong("count", name, EurekaMonitors.class); myZoneCounter = SpectatorUtil.monitoredLong("count-minus-replication", name, EurekaMonitors.class); } private final AtomicLong counter; private final AtomicLong myZoneCounter; /** * Increment the counter for the given statistic. */ public void increment() { increment(false); } /** * Increment the counter for the given statistic based on whether this is * because of replication from other eureka servers or it is a eureka client * initiated action. * * @param isReplication * true if this a replication, false otherwise. */ public void increment(boolean isReplication) { counter.incrementAndGet(); if (!isReplication) { myZoneCounter.incrementAndGet(); } } /** * Gets the statistic name of this monitor. * * @return the statistic name. */ public String getName() { return name; } /** * Gets the zone specific statistic name of this monitor. Applies only for * AWS cloud. * * @return the zone specific statistic name. */ public String getZoneSpecificName() { return myZoneCounterName; } /** * Gets the description of this statistic means. * * @return the description of this statistic means. */ public String getDescription() { return description; } /** * Gets the actual counter value for this statistic. * * @return the long value representing the number of times this statistic * has occurred. */ public long getCount() { return counter.get(); } /** * Gets the zone specific counter value for this statistic. This is * application only for AWS cloud environment. * * @return the long value representing the number of times this statistic * has occurred. */ public long getZoneSpecificCount() { return myZoneCounter.get(); } /** * Register all statistics with Servo. */ public static void registerAllStats() { } /** * Unregister all statistics from Servo. */ public static void shutdown() { } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy