public DurationThresholdTracker(MetricId id, SemanticMetricRegistry metricRegistry, Integer threshold) { final MetricId thresholdId = id.tagged("what", ENDPOINT_REQUEST_DURATION_THRESHOLD_RATE.tag()) .tagged("threshold", threshold.toString()); this.durationThresholdMeter = metricRegistry.meter(thresholdId); this.threshold = threshold; }
@Provides @Singleton public MetricId metricId() { return MetricId.build("apollo").tagged( "service-framework", "service-helper"); } }
@Override public ServiceMetrics createForService(String serviceName) { final MetricId id = metricId.tagged("service", serviceName); return new SemanticServiceMetrics(metricRegistry, id, precreateCodes, enabledMetrics, durationThresholdConfig); } }
private Optional<Meter> droppedRequests(MetricId id) { return enabledMetrics.test(DROPPED_REQUEST_RATE) ? Optional.of(metricRegistry.meter( id.tagged( "what", DROPPED_REQUEST_RATE.tag(), "unit", "request" ))) : Optional.empty(); }
private Optional<Histogram> responseSizeHistogram(MetricId id) { return enabledMetrics.test(RESPONSE_PAYLOAD_SIZE) ? Optional.of(metricRegistry.histogram( id.tagged( "what", RESPONSE_PAYLOAD_SIZE.tag(), "unit", "B" ))) : Optional.empty(); }
private Optional<Timer> requestDurationTimer(MetricId id) { return enabledMetrics.test(ENDPOINT_REQUEST_DURATION) ? Optional.of(metricRegistry .timer(id.tagged("what", ENDPOINT_REQUEST_DURATION.tag()))) : Optional.empty(); }
private Optional<Histogram> requestSizeHistogram(MetricId id) { return enabledMetrics.test(REQUEST_PAYLOAD_SIZE) ? Optional.of(metricRegistry.histogram( id.tagged( "what", REQUEST_PAYLOAD_SIZE.tag(), "unit", "B" ))) : Optional.empty(); }
private Optional<Histogram> fanoutHistogram(MetricId id) { return enabledMetrics.test(REQUEST_FANOUT_FACTOR) ? Optional.of(metricRegistry.histogram( id.tagged( "what", REQUEST_FANOUT_FACTOR.tag(), "unit", "request/request"))) : Optional.empty(); }
private Meter requestRateMeter(MetricId id, int code) { return metricRegistry .meter(id.tagged( "what", ENDPOINT_REQUEST_RATE.tag(), "unit", "request", "status-code", String.valueOf(code))); }
@Override public Map<MetricId, Metric> getMetrics() { final Map<MetricId, Metric> gauges = new HashMap<>(); final MetricId metricId = MetricId.build().tagged("what", "file-descriptor-ratio", "unit", "%"); gauges.put(metricId, (Gauge<Object>) () -> { try { return fileDescriptorRatioGauge.getValue(); } catch (final Exception ex) { LOG.debug("Failed to get metrics for FileDescriptorGaugeSet", ex); // This is what the upstream FileDescriptorRatioGauge returns when an exception occurs. return RatioGauge.Ratio.of(Double.NaN, Double.NaN); } }); return Collections.unmodifiableMap(gauges); } });
private void registerRatioGauge(MetricId metricId, String stat, Supplier<Ratio> ratioSupplier, SemanticMetricRegistry metricRegistry, What what) { metricRegistry.register( metricId.tagged("what", what.tag(), "stat", stat), new RatioGauge() { @Override protected Ratio getRatio() { return ratioSupplier.get(); } }); }
@Provides @Singleton public MetricId metricId(MetaDescriptor metaDescriptor) { return MetricId.build("apollo").tagged( "service-framework", "http-service", "service-framework-version", metaDescriptor.apolloVersion(), "application", metaDescriptor.descriptor().serviceName()); }
private CachedMeters metersForEndpoint(String endpoint) { MetricId id = metricId.tagged("endpoint", endpoint);
public InstrumentedExecutorService( ExecutorService delegate, SemanticMetricRegistry registry, MetricId baseMetricId) { MetricId baseMetricIdWithUnit = baseMetricId.tagged("unit", "task"); this.delegate = delegate; this.submitted = registry.meter(baseMetricIdWithUnit.tagged("what", "submitted")); this.running = registry.counter(baseMetricIdWithUnit.tagged("what", "running")); this.completed = registry.meter(baseMetricIdWithUnit.tagged("what", "completed")); this.idle = registry.timer(baseMetricId.tagged("what", "idle")); this.duration = registry.timer(baseMetricId.tagged("what", "duration")); }
@Provides @Singleton public MetricId metricId() { return MetricId.build("apollo").tagged( "service-framework", "service-helper"); } }
private Meter exitCodeMeter(int exitCode) { return exitCodeMeters .computeIfAbsent(exitCode, ignore -> registry.meter(EXIT_CODE_RATE.tagged( "exit-code", Integer.toString(exitCode)))); }
private Meter datastoreOperationMeter(String operation, String kind) { return datastoreOperationMeters.computeIfAbsent(Tuple.of(operation, kind), t -> registry.meter(DATASTORE_OPERATION_RATE.tagged("operation", operation, "kind", kind))); } }
@Override public void registerActiveStatesMetric(RunState.State state, String triggerName, Gauge<Long> activeStatesCount) { registry.register(ACTIVE_STATES_PER_RUNSTATE_PER_TRIGGER.tagged( "state", state.name(), "trigger", triggerName), activeStatesCount); }
@Override public Metrics load(final Id id) throws Exception { return Metrics.create(registry, metricId.tagged("model", id.value())); } });
@Provides @Singleton public MetricId metricId(MetaDescriptor metaDescriptor) { return MetricId.build("apollo").tagged( "service-framework", "http-service", "service-framework-version", metaDescriptor.apolloVersion(), "application", metaDescriptor.descriptor().serviceName()); }