@Override public Map<String, Map<Long, Double>> getkafkaTopicOffsets(TopologyLayout topology, Component component, long from, long to, String asUser) { String stormTopologyName = StormTopologyUtil.findOrGenerateTopologyName(client, topology.getId(), topology.getName(), asUser); String stormComponentName = getComponentName(component); String topicName = findKafkaTopicName(component); if (topicName == null) { throw new IllegalStateException("Cannot find Kafka topic name from source config - topology name: " + topology.getName() + " / source : " + component.getName()); } StormMappedMetric[] metrics = { StormMappedMetric.logsize, StormMappedMetric.offset, StormMappedMetric.lag }; Map<String, Map<Long, Double>> kafkaOffsets = new HashMap<>(); for (StormMappedMetric metric : metrics) { kafkaOffsets.put(metric.name(), queryKafkaMetrics(stormTopologyName, stormComponentName, metric, topicName, from, to)); } return kafkaOffsets; }