com.netflix.servo.monitor.DynamicCounter Java Examples
The following examples show how to use
com.netflix.servo.monitor.DynamicCounter.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: MetricObserverManualTest.java From tutorials with MIT License | 6 votes |
@Test public void givenMetrics_whenRegisterDynamically_thenMonitored() throws Exception { for (int i = 0; i < 2; i++) { DynamicCounter.increment("monitor-name", "tag-key", "tag-value"); SECONDS.sleep(1); } List<List<Metric>> metrics = observer.getObservations(); assertThat(metrics, hasSize(greaterThanOrEqualTo(2))); Iterator<List<Metric>> metricIterator = metrics.iterator(); //skip first empty observation metricIterator.next(); while (metricIterator.hasNext()) { assertThat(metricIterator.next(), hasItem(hasProperty("value", greaterThanOrEqualTo(1.0)))); } }
Example #2
Source File: LocalFileSink.java From suro with Apache License 2.0 | 6 votes |
/** * Write all messages in msgList to file writer, sync the file, * commit the queue and clear messages * * @param msgList * @throws java.io.IOException */ @Override protected void write(List<Message> msgList) throws IOException { for (Message msg : msgList) { writer.writeTo(msg); String routingKey = normalizeRoutingKey(msg); DynamicCounter.increment( MonitorConfig.builder("writtenMessages") .withTag(TagKey.DATA_SOURCE, routingKey) .build()); ++writtenMessages; DynamicCounter.increment( MonitorConfig.builder("writtenBytes") .withTag(TagKey.DATA_SOURCE, routingKey) .build(), msg.getPayload().length); writtenBytes += msg.getPayload().length; messageWrittenInRotation = true; } writer.sync(); throughput.increment(msgList.size()); }
Example #3
Source File: SyncSuroClient.java From suro with Apache License 2.0 | 6 votes |
public static int incrementMessageCount(String counterName, String app, Iterable<Message> messages, List<AsyncSuroClient.Listener> listeners) { int count = 0; for (Message message : messages) { DynamicCounter.increment( MonitorConfig.builder(counterName) .withTag(TagKey.APP, app) .withTag(TagKey.DATA_SOURCE, message.getRoutingKey()) .build()); ++count; } for (AsyncSuroClient.Listener listener : listeners) { listener.sentCallback(count); } return count; }
Example #4
Source File: CloudTrail.java From suro with Apache License 2.0 | 6 votes |
@Override public List<MessageContainer> parse(String data) { List<MessageContainer> messages = new ArrayList<MessageContainer>(); try { Map<String, Object> blob = jsonMapper.readValue(data, S3Consumer.typeReference); List<Map<String, Object>> records = (List<Map<String, Object>>) blob.get("Records"); for (Map<String, Object> record : records) { messages.add(new DefaultMessageContainer( new Message(routingKey, jsonMapper.writeValueAsBytes(record)), jsonMapper)); } } catch (Exception e) { log.error("Exception on parsing: " + e.getMessage(), e); DynamicCounter.increment( MonitorConfig.builder("recordParseError").withTag("parserType", TYPE).build()); } return messages; }
Example #5
Source File: KafkaSink.java From suro with Apache License 2.0 | 6 votes |
@Override public void writeTo(final MessageContainer message) { queuedRecords.incrementAndGet(); DynamicCounter.increment( MonitorConfig .builder("queuedRecord") .withTag(TagKey.ROUTING_KEY, message.getRoutingKey()) .build()); runRecordCounterListener(); if (metadataFetchedTopicSet.contains(message.getRoutingKey())) { sendMessage(message); } else { if(!metadataWaitingQueue.offer(message)) { dropMessage(message.getRoutingKey(), "metadataWaitingQueueFull"); } } }
Example #6
Source File: MessageSetProcessor.java From suro with Apache License 2.0 | 6 votes |
@SuppressWarnings("unchecked") private void processMessageSet(TMessageSet tMessageSet) { MessageSetReader reader = new MessageSetReader(tMessageSet); for (final Message message : reader) { try { router.process(input, new DefaultMessageContainer(message, jsonMapper)); } catch (Exception e) { DynamicCounter.increment(messageProcessErrorMetrics, TagKey.APP, tMessageSet.getApp(), TagKey.DATA_SOURCE, message.getRoutingKey()); log.error(String.format("Failed to process message %s: %s", message, e.getMessage()), e); } } }
Example #7
Source File: NFHttpMethodRetryHandler.java From ribbon with Apache License 2.0 | 5 votes |
@Override @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "ICAST_INTEGER_MULTIPLY_CAST_TO_LONG") public boolean retryRequest( final IOException exception, int executionCount, HttpContext context ) { if (super.retryRequest(exception, executionCount, context)) { HttpRequest request = (HttpRequest) context.getAttribute(ExecutionContext.HTTP_REQUEST); String methodName = request.getRequestLine().getMethod(); String path = "UNKNOWN_PATH"; if(request instanceof HttpUriRequest) { HttpUriRequest uriReq = (HttpUriRequest) request; path = uriReq.getURI().toString(); } try { Thread.sleep(executionCount * this.sleepTimeFactorMs); } catch (InterruptedException e) { logger.warn("Interrupted while sleep before retrying http method " + methodName + " " + path, e); } DynamicCounter.increment(RETRY_COUNTER + methodName + ":" + path); return true; } return false; }
Example #8
Source File: LocalFileSink.java From suro with Apache License 2.0 | 5 votes |
private String normalizeRoutingKey(Message msg) { String routingKey = msg.getRoutingKey(); if(routingKey == null || routingKey.trim().length() == 0) { emptyRoutingKeyCount += 1; DynamicCounter.increment("emptyRoutingKeyCount"); if(log.isDebugEnabled()) { log.debug("Message {} with empty routing key", Arrays.asList(msg.getPayload())); } return EMPTY_ROUTING_KEY_REPLACEMENT; } return routingKey; }
Example #9
Source File: AsyncSuroClient.java From suro with Apache License 2.0 | 5 votes |
@Override public void send(Message message) { if (!messageQueue.offer(message)) { lostMessages.incrementAndGet(); DynamicCounter.increment( MonitorConfig.builder(TagKey.LOST_COUNT) .withTag(TagKey.APP, config.getApp()) .withTag(TagKey.DATA_SOURCE, message.getRoutingKey()) .build()); for (Listener listener : listeners) { listener.lostCallback(1); } } }
Example #10
Source File: AsyncSuroClient.java From suro with Apache License 2.0 | 5 votes |
public void restore(Message message) { restoredMessages.incrementAndGet(); DynamicCounter.increment( MonitorConfig.builder(TagKey.RESTORED_COUNT) .withTag(TagKey.APP, config.getApp()) .withTag(TagKey.DATA_SOURCE, message.getRoutingKey()) .build()); for (Listener listener : listeners) { listener.restoredCallback(); } send(message); }
Example #11
Source File: KafkaSink.java From suro with Apache License 2.0 | 5 votes |
private void dropMessage(final String routingKey, final String reason) { DynamicCounter.increment( MonitorConfig .builder("droppedRecord") .withTag(TagKey.ROUTING_KEY, routingKey) .withTag(TagKey.DROPPED_REASON, reason) .build()); droppedRecords.incrementAndGet(); runRecordCounterListener(); }
Example #12
Source File: QueuedSink.java From suro with Apache License 2.0 | 5 votes |
protected void enqueue(Message message) { if (!queue4Sink.offer(message)) { droppedMessagesCount.incrementAndGet(); DynamicCounter.increment( MonitorConfig.builder(TagKey.DROPPED_COUNT) .withTag("reason", "queueFull") .withTag("sink", sinkId) .build()); } }
Example #13
Source File: FilterProcessor.java From s2g-zuul with MIT License | 4 votes |
@Override public void notify(ZuulFilter filter, ExecutionStatus status) { DynamicCounter.increment(METRIC_PREFIX + filter.getClass().getSimpleName(), "status", status.name(), "filtertype", filter.filterType()); }
Example #14
Source File: LocalFileSink.java From suro with Apache License 2.0 | 4 votes |
/** * List all files under the directory. If the file is marked as done, the * notice for that file would be sent. Otherwise, it checks the file * is not closed properly, the file is marked as done and the notice * would be sent. That file would cause EOFException when reading. * * @param dir * @return the number of files found in the directory */ public int cleanUp(String dir, boolean fetchAll) { if (!dir.endsWith("/")) { dir += "/"; } int count = 0; try { FileSystem fs = writer.getFS(); FileStatus[] files = fs.listStatus(new Path(dir)); for (FileStatus file: files) { if (file.getLen() > 0) { String fileName = file.getPath().getName(); String fileExt = getFileExt(fileName); if (fileExt != null && fileExt.equals(done)) { notice.send(dir + fileName); ++count; } else if (fileExt != null) { long lastPeriod = new DateTime().minus(rotationPeriod).minus(rotationPeriod).getMillis(); if (file.getModificationTime() < lastPeriod) { ++errorClosedFiles; DynamicCounter.increment("closedFileError"); log.error(dir + fileName + " is not closed properly!!!"); String doneFile = fileName.replace(fileExt, done); writer.setDone(dir + fileName, dir + doneFile); notice.send(dir + doneFile); ++count; } else if (fetchAll) { ++count; } } } } } catch (Exception e) { log.error("Exception while on cleanUp: " + e.getMessage(), e); return Integer.MAX_VALUE; // return non-zero value } return count; }
Example #15
Source File: MessageSetProcessor.java From suro with Apache License 2.0 | 4 votes |
@Override public Result process(TMessageSet messageSet) throws TException { Result result = new Result(); try { // Stop adding chunks if it's no running if ( !isRunning) { DynamicCounter.increment(rejectedMessageCountMetrics, TagKey.APP, messageSet.getApp(), TagKey.REJECTED_REASON, "SURO_STOPPED"); log.warn("Message processor is not running. Message rejected"); result.setMessage("Suro server stopped"); result.setResultCode(ResultCode.STOPPED); return result; } if ( !isTakingTraffic ) { DynamicCounter.increment(rejectedMessageCountMetrics, TagKey.APP, messageSet.getApp(), TagKey.REJECTED_REASON, "SURO_THROTTLING"); log.warn("Suro is not taking traffic. Message rejected. "); result.setMessage("Suro server is not taking traffic"); result.setResultCode(ResultCode.OTHER_ERROR); return result; } MessageSetReader reader = new MessageSetReader(messageSet); if (!reader.checkCRC()) { DynamicCounter.increment(dataCorruptionCountMetrics, TagKey.APP, messageSet.getApp()); result.setMessage("data corrupted"); result.setResultCode(ResultCode.CRC_CORRUPTED); return result; } if (queue.offer(messageSet)) { DynamicCounter.increment( MonitorConfig.builder(messageCountMetrics) .withTag(TagKey.APP, messageSet.getApp()) .build(), messageSet.getNumMessages()); result.setMessage(Long.toString(messageSet.getCrc())); result.setResultCode(ResultCode.OK); } else { DynamicCounter.increment(retryCountMetrics, TagKey.APP, messageSet.getApp()); result.setMessage(Long.toString(messageSet.getCrc())); result.setResultCode(ResultCode.QUEUE_FULL); } return result; } catch (Exception e) { log.error("Exception when processing message set " + e.getMessage(), e); } return result; }
Example #16
Source File: MessageRouter.java From suro with Apache License 2.0 | 4 votes |
public void process(SuroInput input, MessageContainer msg) throws Exception { if (Strings.isNullOrEmpty(msg.getRoutingKey())) { DynamicCounter.increment( MonitorConfig.builder(TagKey.DROPPED_COUNT).withTag("reason", "emptyRoutingKey").build()); return; // discard message } DynamicCounter.increment( MonitorConfig .builder(TagKey.RECV_COUNT) .withTag("routingKey", msg.getRoutingKey()) .build()); RoutingMap.RoutingInfo info = routingMap.getRoutingInfo(msg.getRoutingKey()); if (info == null) { Sink defaultSink = sinkManager.getSink("default"); input.setPause(defaultSink.checkPause()); defaultSink.writeTo(msg); } else if (info.doFilter(msg)) { List<Route> routes = info.getWhere(); for (Route route : routes) { if (route.doFilter(msg)) { Sink sink = sinkManager.getSink(route.getSink()); input.setPause(sink.checkPause()); if (!Strings.isNullOrEmpty(route.getAlias())) { sink.writeTo( new DefaultMessageContainer( new Message(route.getAlias(), msg.getMessage().getPayload()), jsonMapper)); } else { sink.writeTo(msg); } DynamicCounter.increment( MonitorConfig .builder(TagKey.ATTEMPTED_COUNT) .withTag("routingKey", msg.getRoutingKey()) .withTag("sinkId", route.getSink()) .build()); } } } }