List of usage examples for com.amazonaws.services.cloudwatch.model MetricDatum setTimestamp
public void setTimestamp(java.util.Date timestamp)
The time the metric data was received, expressed as the number of milliseconds since Jan 1, 1970 00:00:00 UTC.
From source file:com.mulesoft.agent.monitoring.publisher.CloudwatchMonitorPublisher.java
License:Open Source License
/** * <p>//ww w . j av a 2s . c o m * Transforms the metrics from the Metric domain object o the MetricDatum type used by the AWS sdk * </p> * @param metrics The list of Metric objects * @return The converted list of MetricDatum objects */ private static List<MetricDatum> transformMetrics(List<Metric> metrics) { List<MetricDatum> cloudWatchMetrics = new LinkedList<>(); for (Metric metric : metrics) { MetricDatum cloudwatchMetric = new MetricDatum(); cloudwatchMetric.setMetricName(metric.getName()); cloudwatchMetric.setValue(metric.getValue().doubleValue()); cloudwatchMetric.setTimestamp(new Date(metric.getTimestamp())); cloudWatchMetrics.add(cloudwatchMetric); } return cloudWatchMetrics; }
From source file:com.nextdoor.bender.monitoring.cw.CloudwatchReporter.java
License:Apache License
@Override public void write(ArrayList<Stat> stats, long invokeTimeMs, Set<Tag> tags) { Date dt = new Date(); dt.setTime(invokeTimeMs);// www.j a v a 2s .c o m Collection<Dimension> parentDims = tagsToDimensions(tags); List<MetricDatum> metrics = new ArrayList<MetricDatum>(); /* * Create CW metric objects from bender internal Stat objects */ for (Stat stat : stats) { /* * Dimension are CW's version of metric tags. A conversion must be done. */ Collection<Dimension> metricDims = tagsToDimensions(stat.getTags()); metricDims.addAll(parentDims); MetricDatum metric = new MetricDatum(); metric.setMetricName(stat.getName()); // TODO: add units to Stat object SYSTEMS-870 metric.setUnit(StandardUnit.None); metric.setTimestamp(dt); metric.setDimensions(metricDims); metric.setValue((double) stat.getValue()); metrics.add(metric); } /* * Not very well documented in java docs but CW only allows 20 metrics at a time. */ List<List<MetricDatum>> chunks = ListUtils.partition(metrics, 20); for (List<MetricDatum> chunk : chunks) { PutMetricDataRequest req = new PutMetricDataRequest(); req.withMetricData(chunk); req.setNamespace(namespace); this.client.putMetricData(req); } }
From source file:com.pinterest.arcee.autoscaling.AwsAlarmManager.java
License:Apache License
@Override public void putMetricsToAlarm(String groupName, String metricName, Collection<MetricDatumBean> metricDataPoints) throws Exception { List<MetricDatum> metricData = new ArrayList<>(); if (metricDataPoints.isEmpty()) { LOG.debug(//w ww. ja va2 s .com String.format("There are no metric data for metric %s, for group %s.", metricName, groupName)); return; } for (MetricDatumBean metricDataPoint : metricDataPoints) { MetricDatum metricDatum = new MetricDatum(); metricDatum.setMetricName(metricName); metricDatum.setTimestamp(new Date(metricDataPoint.getTimestamp())); metricDatum.setValue(metricDataPoint.getValue()); metricDatum.setDimensions(Arrays.asList(getDimention(groupName))); metricData.add(metricDatum); if (metricData.size() == MAX_AWS_METRIC_RECORDS) { sendMetricsInternal(metricData, groupName); metricData.clear(); } } if (!metricData.isEmpty()) { sendMetricsInternal(metricData, groupName); } }
From source file:org.apache.nifi.processors.aws.cloudwatch.PutCloudWatchMetric.java
License:Apache License
@Override public void onTrigger(ProcessContext context, ProcessSession session) throws ProcessException { FlowFile flowFile = session.get();// w w w .j ava 2 s .c o m if (flowFile == null) { return; } MetricDatum datum = new MetricDatum(); try { datum.setMetricName(context.getProperty(METRIC_NAME).evaluateAttributeExpressions(flowFile).getValue()); final String valueString = context.getProperty(VALUE).evaluateAttributeExpressions(flowFile).getValue(); if (valueString != null) { datum.setValue(Double.parseDouble(valueString)); } else { StatisticSet statisticSet = new StatisticSet(); statisticSet.setMaximum(Double.parseDouble( context.getProperty(MAXIMUM).evaluateAttributeExpressions(flowFile).getValue())); statisticSet.setMinimum(Double.parseDouble( context.getProperty(MINIMUM).evaluateAttributeExpressions(flowFile).getValue())); statisticSet.setSampleCount(Double.parseDouble( context.getProperty(SAMPLECOUNT).evaluateAttributeExpressions(flowFile).getValue())); statisticSet.setSum(Double .parseDouble(context.getProperty(SUM).evaluateAttributeExpressions(flowFile).getValue())); datum.setStatisticValues(statisticSet); } final String timestamp = context.getProperty(TIMESTAMP).evaluateAttributeExpressions(flowFile) .getValue(); if (timestamp != null) { datum.setTimestamp(new Date(Long.parseLong(timestamp))); } final String unit = context.getProperty(UNIT).evaluateAttributeExpressions(flowFile).getValue(); if (unit != null) { datum.setUnit(unit); } // add dynamic properties as dimensions if (!dynamicPropertyNames.isEmpty()) { final List<Dimension> dimensions = new ArrayList<>(dynamicPropertyNames.size()); for (String propertyName : dynamicPropertyNames) { final String propertyValue = context.getProperty(propertyName) .evaluateAttributeExpressions(flowFile).getValue(); if (StringUtils.isNotBlank(propertyValue)) { dimensions.add(new Dimension().withName(propertyName).withValue(propertyValue)); } } datum.withDimensions(dimensions); } final PutMetricDataRequest metricDataRequest = new PutMetricDataRequest() .withNamespace(context.getProperty(NAMESPACE).evaluateAttributeExpressions(flowFile).getValue()) .withMetricData(datum); putMetricData(metricDataRequest); session.transfer(flowFile, REL_SUCCESS); getLogger().info("Successfully published cloudwatch metric for {}", new Object[] { flowFile }); } catch (final Exception e) { getLogger().error("Failed to publish cloudwatch metric for {} due to {}", new Object[] { flowFile, e }); flowFile = session.penalize(flowFile); session.transfer(flowFile, REL_FAILURE); } }
From source file:org.web.online.cloudwatch.tomcat.valve.ElapsedTimeAggregator.java
License:Apache License
/** * Collect the aggregated values (min, max, count, sum) into a * StatisticSet and send the data to Cloud Watch */// w ww . ja va 2 s . co m @Override public void run() { PutMetricDataRequest localPutMetricDataRequest = zeroValuePutMetricDataRequest; MetricDatum metricDatum = localPutMetricDataRequest.getMetricData().get(0); if (sampleCount > 0) { localPutMetricDataRequest = putMetricDataRequest; metricDatum = localPutMetricDataRequest.getMetricData().get(0); StatisticSet statisticSet = metricDatum.getStatisticValues(); synchronized (lock) { statisticSet.setMaximum(maximum); statisticSet.setMinimum(minimum); statisticSet.setSampleCount(sampleCount); statisticSet.setSum(sum); minimum = Double.MAX_VALUE; maximum = Double.MIN_VALUE; sampleCount = 0; sum = 0; } } metricDatum.setTimestamp(new Date()); if (log.isDebugEnabled()) { log.debug("sending " + localPutMetricDataRequest); } cloudWatchClient.putMetricData(localPutMetricDataRequest); }