
com.wavefront.agent.data.EntityProperties Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of proxy Show documentation
Show all versions of proxy Show documentation
Service for batching and relaying metric traffic to Wavefront
package com.wavefront.agent.data;
import com.google.common.util.concurrent.RecyclableRateLimiter;
import javax.annotation.Nullable;
/**
* Unified interface for dynamic entity-specific dynamic properties, that may change at runtime
*
* @author [email protected]
*/
public interface EntityProperties {
// what we consider "unlimited"
int NO_RATE_LIMIT = 10_000_000;
int NO_RATE_LIMIT_BYTES = 1_000_000_000;
// default values for dynamic properties
boolean DEFAULT_SPLIT_PUSH_WHEN_RATE_LIMITED = false;
double DEFAULT_RETRY_BACKOFF_BASE_SECONDS = 2.0d;
int DEFAULT_FLUSH_INTERVAL = 1000;
int DEFAULT_MAX_BURST_SECONDS = 10;
int DEFAULT_BATCH_SIZE = 40000;
int DEFAULT_BATCH_SIZE_HISTOGRAMS = 10000;
int DEFAULT_BATCH_SIZE_SOURCE_TAGS = 50;
int DEFAULT_BATCH_SIZE_SPANS = 5000;
int DEFAULT_BATCH_SIZE_SPAN_LOGS = 1000;
int DEFAULT_BATCH_SIZE_EVENTS = 50;
int DEFAULT_MIN_SPLIT_BATCH_SIZE = 100;
int DEFAULT_FLUSH_THREADS_SOURCE_TAGS = 2;
int DEFAULT_FLUSH_THREADS_EVENTS = 2;
// the maximum batch size for logs is set between 1 and 5 mb, with a default of 4mb
int DEFAULT_MIN_SPLIT_BATCH_SIZE_LOGS_PAYLOAD = 1024 * 1024;
int DEFAULT_BATCH_SIZE_LOGS_PAYLOAD = 4 * 1024 * 1024;
int MAX_BATCH_SIZE_LOGS_PAYLOAD = 5 * 1024 * 1024;
/**
* Get initially configured batch size.
*
* @return batch size
*/
int getDataPerBatchOriginal();
/**
* Whether we should split batches into smaller ones after getting HTTP 406 response from server.
*
* @return true if we should split on pushback
*/
boolean isSplitPushWhenRateLimited();
/**
* Get initially configured rate limit (per second).
*
* @return rate limit
*/
double getRateLimit();
/**
* Get max number of burst seconds to allow when rate limiting to smooth out uneven traffic.
*
* @return number of seconds
*/
int getRateLimitMaxBurstSeconds();
/**
* Get specific {@link RecyclableRateLimiter} instance.
*
* @return rate limiter
*/
RecyclableRateLimiter getRateLimiter();
/**
* Get the number of worker threads.
*
* @return number of threads
*/
int getFlushThreads();
/**
* Get interval between batches (in milliseconds)
*
* @return interval between batches
*/
int getPushFlushInterval();
/**
* Get the maximum allowed number of items per single flush.
*
* @return batch size
*/
int getDataPerBatch();
/**
* Sets the maximum allowed number of items per single flush.
*
* @param dataPerBatch batch size. if null is provided, reverts to originally configured value.
*/
void setDataPerBatch(@Nullable Integer dataPerBatch);
/**
* Do not split the batch if its size is less than this value. Only applicable when {@link
* #isSplitPushWhenRateLimited()} is true.
*
* @return smallest allowed batch size
*/
int getMinBatchSplitSize();
/**
* Max number of items that can stay in memory buffers before spooling to disk. Defaults to 16 *
* {@link #getDataPerBatch()}, minimum size: {@link #getDataPerBatch()}. Setting this value lower
* than default reduces memory usage, but will force the proxy to spool to disk more frequently if
* you have points arriving at the proxy in short bursts, and/or your network latency is on the
* higher side.
*
* @return memory buffer limit
*/
int getMemoryBufferLimit();
/**
* Get current queueing behavior - defines conditions that trigger queueing.
*
* @return queueing behavior level
*/
TaskQueueLevel getTaskQueueLevel();
/**
* Checks whether data flow for this entity type is disabled.
*
* @return true if data flow is disabled
*/
boolean isFeatureDisabled();
/**
* Sets the flag value for "feature disabled" flag.
*
* @param featureDisabled if "true", data flow for this entity type is disabled.
*/
void setFeatureDisabled(boolean featureDisabled);
/**
* Get aggregated backlog size across all ports for this entity type.
*
* @return backlog size
*/
int getTotalBacklogSize();
/** Updates backlog size for specific port. */
void reportBacklogSize(String handle, int backlogSize);
/**
* Get aggregated received rate across all ports for this entity type.
*
* @return received rate
*/
long getTotalReceivedRate();
/** Updates received rate for specific port. */
void reportReceivedRate(String handle, long receivedRate);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy