This is an automated email from the ASF dual-hosted git repository. avijayan pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/ambari.git
commit d991f3c4d68fe1da7797c5593ee32595edd89fa4 Author: Aravindan Vijayan <[email protected]> AuthorDate: Wed Sep 27 10:43:48 2017 -0700 AMBARI-22077 : Create maven module and package structure for the anomaly detection engine. (avijayan) --- .../pom.xml | 62 ++++++++- .../alertservice/prototype/common/DataSeries.java | 0 .../alertservice/prototype/common/ResultSet.java | 0 .../prototype/common/StatisticUtils.java | 0 .../prototype/core}/AmbariServerInterface.java | 2 +- .../prototype/core}/MetricKafkaProducer.java | 2 +- .../prototype/core}/MetricSparkConsumer.java | 4 +- .../prototype/core}/MetricsCollectorInterface.java | 2 +- .../prototype/core}/PointInTimeADSystem.java | 2 +- .../prototype/core}/RFunctionInvoker.java | 2 +- .../prototype/core}/TrendADSystem.java | 2 +- .../alertservice/prototype/core}/TrendMetric.java | 2 +- .../methods/AnomalyDetectionTechnique.java | 0 .../prototype/methods/MetricAnomaly.java | 0 .../prototype/methods/ema/EmaModel.java | 0 .../prototype/methods/ema/EmaModelLoader.java | 0 .../prototype/methods/ema/EmaTechnique.java | 0 .../prototype/methods/hsdev/HsdevTechnique.java | 0 .../prototype/methods/kstest/KSTechnique.java | 2 +- .../utilities}/MetricAnomalyDetectorTestInput.java | 2 +- .../testing/utilities}/MetricAnomalyTester.java | 5 +- .../utilities/TestMetricSeriesGenerator.java | 92 +++++++++++++ .../testing/utilities}/TestSeriesInputRequest.java | 2 +- .../seriesgenerator/AbstractMetricSeries.java | 0 .../seriesgenerator/DualBandMetricSeries.java | 0 .../MetricSeriesGeneratorFactory.java | 0 .../seriesgenerator/MonotonicMetricSeries.java | 0 .../seriesgenerator/NormalMetricSeries.java | 0 .../SteadyWithTurbulenceMetricSeries.java | 0 .../seriesgenerator/StepFunctionMetricSeries.java | 0 .../seriesgenerator/UniformMetricSeries.java | 0 .../src/main/resources/R-scripts/ema.R | 0 .../src/main/resources/R-scripts/hsdev.r | 0 .../src/main/resources/R-scripts/iforest.R | 0 .../src/main/resources/R-scripts/kstest.r | 0 .../src/main/resources/R-scripts/test.R | 0 .../src/main/resources/R-scripts/tukeys.r | 0 .../src/main/resources/input-config.properties | 0 .../metrics/spark/MetricAnomalyDetector.scala | 127 +++++++++++++++++ .../ambari/metrics/spark/SparkPhoenixReader.scala | 16 +-- .../alertservice/prototype/TestEmaTechnique.java | 2 +- .../prototype/TestRFunctionInvoker.java | 2 +- .../metrics/alertservice/prototype/TestTukeys.java | 3 +- .../seriesgenerator/MetricSeriesGeneratorTest.java | 7 - ambari-metrics/ambari-metrics-spark/pom.xml | 151 --------------------- .../metrics/spark/MetricAnomalyDetector.scala | 109 --------------- .../ambari-metrics-timelineservice/pom.xml | 6 - .../metrics/TestMetricSeriesGenerator.java | 87 ------------ .../webapp/MetricAnomalyDetectorTestService.java | 87 ------------ .../webapp/TimelineWebServices.java | 1 - ambari-metrics/pom.xml | 3 +- 51 files changed, 301 insertions(+), 483 deletions(-) diff --git a/ambari-metrics/ambari-metrics-alertservice/pom.xml b/ambari-metrics/ambari-metrics-anomaly-detector/pom.xml similarity index 71% rename from ambari-metrics/ambari-metrics-alertservice/pom.xml rename to ambari-metrics/ambari-metrics-anomaly-detector/pom.xml index 4db8a6a..e6e12f2 100644 --- a/ambari-metrics/ambari-metrics-alertservice/pom.xml +++ b/ambari-metrics/ambari-metrics-anomaly-detector/pom.xml @@ -26,8 +26,29 @@ <version>2.0.0.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> - <artifactId>ambari-metrics-alertservice</artifactId> + <artifactId>ambari-metrics-anomaly-detector</artifactId> <version>2.0.0.0-SNAPSHOT</version> + <properties> + <scala.version>2.10.4</scala.version> + <scala.binary.version>2.11</scala.binary.version> + </properties> + + <repositories> + <repository> + <id>scala-tools.org</id> + <name>Scala-Tools Maven2 Repository</name> + <url>http://scala-tools.org/repo-releases</url> + </repository> + </repositories> + + <pluginRepositories> + <pluginRepository> + <id>scala-tools.org</id> + <name>Scala-Tools Maven2 Repository</name> + <url>http://scala-tools.org/repo-releases</url> + </pluginRepository> + </pluginRepositories> + <build> <plugins> <plugin> @@ -37,9 +58,27 @@ <target>1.8</target> </configuration> </plugin> + <plugin> + <groupId>org.scala-tools</groupId> + <artifactId>maven-scala-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>compile</goal> + <goal>testCompile</goal> + </goals> + </execution> + </executions> + <configuration> + <scalaVersion>${scala.version}</scalaVersion> + <args> + <arg>-target:jvm-1.5</arg> + </args> + </configuration> + </plugin> </plugins> </build> - <name>Ambari Metrics Alert Service</name> + <name>Ambari Metrics Anomaly Detector</name> <packaging>jar</packaging> <dependencies> @@ -122,7 +161,7 @@ <dependency> <groupId>org.apache.phoenix</groupId> <artifactId>phoenix-spark</artifactId> - <version>4.7.0-HBase-1.0</version> + <version>4.10.0-HBase-1.1</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> @@ -145,5 +184,22 @@ <artifactId>httpclient</artifactId> <version>4.2.5</version> </dependency> + <dependency> + <groupId>org.scala-lang</groupId> + <artifactId>scala-library</artifactId> + <version>${scala.version}</version> + </dependency> + <dependency> + <groupId>org.apache.spark</groupId> + <artifactId>spark-core_${scala.binary.version}</artifactId> + <version>2.1.1</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.spark</groupId> + <artifactId>spark-mllib_${scala.binary.version}</artifactId> + <version>2.1.1</version> + <scope>provided</scope> + </dependency> </dependencies> </project> \ No newline at end of file diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/common/DataSeries.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/common/DataSeries.java similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/common/DataSeries.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/common/DataSeries.java diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/common/ResultSet.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/common/ResultSet.java similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/common/ResultSet.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/common/ResultSet.java diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/common/StatisticUtils.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/common/StatisticUtils.java similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/common/StatisticUtils.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/common/StatisticUtils.java diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/AmbariServerInterface.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/AmbariServerInterface.java similarity index 98% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/AmbariServerInterface.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/AmbariServerInterface.java index b98f04c..b6b1bf5 100644 --- a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/AmbariServerInterface.java +++ b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/AmbariServerInterface.java @@ -16,7 +16,7 @@ * limitations under the License. */ -package org.apache.ambari.metrics.alertservice.prototype; +package org.apache.ambari.metrics.alertservice.prototype.core; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/MetricKafkaProducer.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/MetricKafkaProducer.java similarity index 97% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/MetricKafkaProducer.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/MetricKafkaProducer.java index 8023d15..2287ee3 100644 --- a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/MetricKafkaProducer.java +++ b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/MetricKafkaProducer.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.ambari.metrics.alertservice.prototype; +package org.apache.ambari.metrics.alertservice.prototype.core; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/MetricSparkConsumer.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/MetricSparkConsumer.java similarity index 98% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/MetricSparkConsumer.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/MetricSparkConsumer.java index 61b3dee..706c69f 100644 --- a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/MetricSparkConsumer.java +++ b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/MetricSparkConsumer.java @@ -15,12 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.ambari.metrics.alertservice.prototype; +package org.apache.ambari.metrics.alertservice.prototype.core; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.ambari.metrics.alertservice.prototype.methods.MetricAnomaly; import org.apache.ambari.metrics.alertservice.prototype.methods.ema.EmaTechnique; -import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric; @@ -40,7 +39,6 @@ import java.util.*; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/MetricsCollectorInterface.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/MetricsCollectorInterface.java similarity index 99% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/MetricsCollectorInterface.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/MetricsCollectorInterface.java index dab4a0a..246565d 100644 --- a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/MetricsCollectorInterface.java +++ b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/MetricsCollectorInterface.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.ambari.metrics.alertservice.prototype; +package org.apache.ambari.metrics.alertservice.prototype.core; import org.apache.ambari.metrics.alertservice.prototype.methods.MetricAnomaly; import org.apache.commons.collections.CollectionUtils; diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/PointInTimeADSystem.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/PointInTimeADSystem.java similarity index 99% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/PointInTimeADSystem.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/PointInTimeADSystem.java index b3e7bd3..c579515 100644 --- a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/PointInTimeADSystem.java +++ b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/PointInTimeADSystem.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.ambari.metrics.alertservice.prototype; +package org.apache.ambari.metrics.alertservice.prototype.core; import org.apache.ambari.metrics.alertservice.prototype.common.DataSeries; import org.apache.ambari.metrics.alertservice.prototype.common.ResultSet; diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/RFunctionInvoker.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/RFunctionInvoker.java similarity index 99% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/RFunctionInvoker.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/RFunctionInvoker.java index 4fdf27d..4538f0b 100644 --- a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/RFunctionInvoker.java +++ b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/RFunctionInvoker.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.ambari.metrics.alertservice.prototype; +package org.apache.ambari.metrics.alertservice.prototype.core; import org.apache.ambari.metrics.alertservice.prototype.common.ResultSet; diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/TrendADSystem.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/TrendADSystem.java similarity index 99% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/TrendADSystem.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/TrendADSystem.java index df36a4a..2a205d1 100644 --- a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/TrendADSystem.java +++ b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/TrendADSystem.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.ambari.metrics.alertservice.prototype; +package org.apache.ambari.metrics.alertservice.prototype.core; import org.apache.ambari.metrics.alertservice.prototype.common.DataSeries; import org.apache.ambari.metrics.alertservice.prototype.methods.MetricAnomaly; diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/TrendMetric.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/TrendMetric.java similarity index 94% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/TrendMetric.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/TrendMetric.java index 3bead8b..0640142 100644 --- a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/TrendMetric.java +++ b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/core/TrendMetric.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.ambari.metrics.alertservice.prototype; +package org.apache.ambari.metrics.alertservice.prototype.core; import java.io.Serializable; diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/AnomalyDetectionTechnique.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/AnomalyDetectionTechnique.java similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/AnomalyDetectionTechnique.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/AnomalyDetectionTechnique.java diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/MetricAnomaly.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/MetricAnomaly.java similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/MetricAnomaly.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/MetricAnomaly.java diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/ema/EmaModel.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/ema/EmaModel.java similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/ema/EmaModel.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/ema/EmaModel.java diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/ema/EmaModelLoader.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/ema/EmaModelLoader.java similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/ema/EmaModelLoader.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/ema/EmaModelLoader.java diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/ema/EmaTechnique.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/ema/EmaTechnique.java similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/ema/EmaTechnique.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/ema/EmaTechnique.java diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/hsdev/HsdevTechnique.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/hsdev/HsdevTechnique.java similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/hsdev/HsdevTechnique.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/hsdev/HsdevTechnique.java diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/kstest/KSTechnique.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/kstest/KSTechnique.java similarity index 97% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/kstest/KSTechnique.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/kstest/KSTechnique.java index ff8dbcf..a9360d3 100644 --- a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/kstest/KSTechnique.java +++ b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/methods/kstest/KSTechnique.java @@ -18,7 +18,7 @@ package org.apache.ambari.metrics.alertservice.prototype.methods.kstest; -import org.apache.ambari.metrics.alertservice.prototype.RFunctionInvoker; +import org.apache.ambari.metrics.alertservice.prototype.core.RFunctionInvoker; import org.apache.ambari.metrics.alertservice.prototype.common.DataSeries; import org.apache.ambari.metrics.alertservice.prototype.common.ResultSet; import org.apache.ambari.metrics.alertservice.prototype.methods.MetricAnomaly; diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/MetricAnomalyDetectorTestInput.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/testing/utilities/MetricAnomalyDetectorTestInput.java similarity index 97% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/MetricAnomalyDetectorTestInput.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/testing/utilities/MetricAnomalyDetectorTestInput.java index 490328a..268cd15 100644 --- a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/MetricAnomalyDetectorTestInput.java +++ b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/testing/utilities/MetricAnomalyDetectorTestInput.java @@ -16,7 +16,7 @@ * limitations under the License. */ -package org.apache.ambari.metrics.alertservice.prototype; +package org.apache.ambari.metrics.alertservice.prototype.testing.utilities; import javax.xml.bind.annotation.XmlRootElement; import java.util.List; diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/MetricAnomalyTester.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/testing/utilities/MetricAnomalyTester.java similarity index 96% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/MetricAnomalyTester.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/testing/utilities/MetricAnomalyTester.java index bff8120..6485ebb 100644 --- a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/MetricAnomalyTester.java +++ b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/testing/utilities/MetricAnomalyTester.java @@ -15,8 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.ambari.metrics.alertservice.prototype; +package org.apache.ambari.metrics.alertservice.prototype.testing.utilities; + +import org.apache.ambari.metrics.alertservice.prototype.core.MetricsCollectorInterface; +import org.apache.ambari.metrics.alertservice.prototype.core.RFunctionInvoker; import org.apache.ambari.metrics.alertservice.prototype.common.DataSeries; import org.apache.ambari.metrics.alertservice.prototype.common.ResultSet; import org.apache.ambari.metrics.alertservice.seriesgenerator.MetricSeriesGeneratorFactory; diff --git a/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/testing/utilities/TestMetricSeriesGenerator.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/testing/utilities/TestMetricSeriesGenerator.java new file mode 100644 index 0000000..b817f3e --- /dev/null +++ b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/testing/utilities/TestMetricSeriesGenerator.java @@ -0,0 +1,92 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.ambari.metrics.alertservice.prototype.testing.utilities; + +/** + * Class which was originally used to send test series from AMS to Spark through Kafka. + */ + +public class TestMetricSeriesGenerator { + //implements Runnable { + +// private Map<TestSeriesInputRequest, AbstractMetricSeries> configuredSeries = new HashMap<>(); +// private static final Log LOG = LogFactory.getLog(TestMetricSeriesGenerator.class); +// private TimelineMetricStore metricStore; +// private String hostname; +// +// public TestMetricSeriesGenerator(TimelineMetricStore metricStore) { +// this.metricStore = metricStore; +// try { +// this.hostname = InetAddress.getLocalHost().getHostName(); +// } catch (UnknownHostException e) { +// e.printStackTrace(); +// } +// } +// +// public void addSeries(TestSeriesInputRequest inputRequest) { +// if (!configuredSeries.containsKey(inputRequest)) { +// AbstractMetricSeries metricSeries = MetricSeriesGeneratorFactory.generateSeries(inputRequest.getSeriesType(), inputRequest.getConfigs()); +// configuredSeries.put(inputRequest, metricSeries); +// LOG.info("Added series " + inputRequest.getSeriesName()); +// } +// } +// +// public void removeSeries(String seriesName) { +// boolean isPresent = false; +// TestSeriesInputRequest tbd = null; +// for (TestSeriesInputRequest inputRequest : configuredSeries.keySet()) { +// if (inputRequest.getSeriesName().equals(seriesName)) { +// isPresent = true; +// tbd = inputRequest; +// } +// } +// if (isPresent) { +// LOG.info("Removing series " + seriesName); +// configuredSeries.remove(tbd); +// } else { +// LOG.info("Series not found : " + seriesName); +// } +// } +// +// @Override +// public void run() { +// long currentTime = System.currentTimeMillis(); +// TimelineMetrics timelineMetrics = new TimelineMetrics(); +// +// for (TestSeriesInputRequest input : configuredSeries.keySet()) { +// AbstractMetricSeries metricSeries = configuredSeries.get(input); +// TimelineMetric timelineMetric = new TimelineMetric(); +// timelineMetric.setMetricName(input.getSeriesName()); +// timelineMetric.setAppId("anomaly-engine-test-metric"); +// timelineMetric.setInstanceId(null); +// timelineMetric.setStartTime(currentTime); +// timelineMetric.setHostName(hostname); +// TreeMap<Long, Double> metricValues = new TreeMap(); +// metricValues.put(currentTime, metricSeries.nextValue()); +// timelineMetric.setMetricValues(metricValues); +// timelineMetrics.addOrMergeTimelineMetric(timelineMetric); +// LOG.info("Emitting metric with appId = " + timelineMetric.getAppId()); +// } +// try { +// LOG.info("Publishing test metrics for " + timelineMetrics.getMetrics().size() + " series."); +// metricStore.putMetrics(timelineMetrics); +// } catch (Exception e) { +// LOG.error(e); +// } +// } +} diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/TestSeriesInputRequest.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/testing/utilities/TestSeriesInputRequest.java similarity index 97% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/TestSeriesInputRequest.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/testing/utilities/TestSeriesInputRequest.java index 7485f01..a424f8e 100644 --- a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/prototype/TestSeriesInputRequest.java +++ b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/prototype/testing/utilities/TestSeriesInputRequest.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.ambari.metrics.alertservice.prototype; +package org.apache.ambari.metrics.alertservice.prototype.testing.utilities; import org.apache.htrace.fasterxml.jackson.core.JsonProcessingException; import org.apache.htrace.fasterxml.jackson.databind.ObjectMapper; diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/AbstractMetricSeries.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/AbstractMetricSeries.java similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/AbstractMetricSeries.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/AbstractMetricSeries.java diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/DualBandMetricSeries.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/DualBandMetricSeries.java similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/DualBandMetricSeries.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/DualBandMetricSeries.java diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/MetricSeriesGeneratorFactory.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/MetricSeriesGeneratorFactory.java similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/MetricSeriesGeneratorFactory.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/MetricSeriesGeneratorFactory.java diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/MonotonicMetricSeries.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/MonotonicMetricSeries.java similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/MonotonicMetricSeries.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/MonotonicMetricSeries.java diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/NormalMetricSeries.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/NormalMetricSeries.java similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/NormalMetricSeries.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/NormalMetricSeries.java diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/SteadyWithTurbulenceMetricSeries.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/SteadyWithTurbulenceMetricSeries.java similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/SteadyWithTurbulenceMetricSeries.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/SteadyWithTurbulenceMetricSeries.java diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/StepFunctionMetricSeries.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/StepFunctionMetricSeries.java similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/StepFunctionMetricSeries.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/StepFunctionMetricSeries.java diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/UniformMetricSeries.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/UniformMetricSeries.java similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/UniformMetricSeries.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/java/org/apache/ambari/metrics/alertservice/seriesgenerator/UniformMetricSeries.java diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/resources/R-scripts/ema.R b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/resources/R-scripts/ema.R similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/resources/R-scripts/ema.R rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/resources/R-scripts/ema.R diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/resources/R-scripts/hsdev.r b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/resources/R-scripts/hsdev.r similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/resources/R-scripts/hsdev.r rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/resources/R-scripts/hsdev.r diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/resources/R-scripts/iforest.R b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/resources/R-scripts/iforest.R similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/resources/R-scripts/iforest.R rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/resources/R-scripts/iforest.R diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/resources/R-scripts/kstest.r b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/resources/R-scripts/kstest.r similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/resources/R-scripts/kstest.r rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/resources/R-scripts/kstest.r diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/resources/R-scripts/test.R b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/resources/R-scripts/test.R similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/resources/R-scripts/test.R rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/resources/R-scripts/test.R diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/resources/R-scripts/tukeys.r b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/resources/R-scripts/tukeys.r similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/resources/R-scripts/tukeys.r rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/resources/R-scripts/tukeys.r diff --git a/ambari-metrics/ambari-metrics-alertservice/src/main/resources/input-config.properties b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/resources/input-config.properties similarity index 100% rename from ambari-metrics/ambari-metrics-alertservice/src/main/resources/input-config.properties rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/resources/input-config.properties diff --git a/ambari-metrics/ambari-metrics-anomaly-detector/src/main/scala/org/apache/ambari/metrics/spark/MetricAnomalyDetector.scala b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/scala/org/apache/ambari/metrics/spark/MetricAnomalyDetector.scala new file mode 100644 index 0000000..324058b --- /dev/null +++ b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/scala/org/apache/ambari/metrics/spark/MetricAnomalyDetector.scala @@ -0,0 +1,127 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.ambari.metrics.spark + + +import java.io.{FileInputStream, IOException, InputStream} +import java.util +import java.util.Properties +import java.util.logging.LogManager + +import com.fasterxml.jackson.databind.ObjectMapper +import org.apache.ambari.metrics.alertservice.prototype.core.MetricsCollectorInterface +import org.apache.spark.SparkConf +import org.apache.spark.streaming._ +import org.apache.spark.streaming.kafka._ +import org.apache.ambari.metrics.alertservice.prototype.methods.{AnomalyDetectionTechnique, MetricAnomaly} +import org.apache.ambari.metrics.alertservice.prototype.methods.ema.{EmaModelLoader, EmaTechnique} +import org.apache.hadoop.metrics2.sink.timeline.TimelineMetrics +import org.apache.log4j.Logger +import org.apache.spark.storage.StorageLevel + +object MetricAnomalyDetector { + + /* + Load current EMA model + Filter step - Check if anomaly + Collect / Write to AMS / Print. + */ + +// var brokers = "avijayan-ams-1.openstacklocal:2181,avijayan-ams-2.openstacklocal:2181,avijayan-ams-3.openstacklocal:2181" +// var groupId = "ambari-metrics-group" +// var topicName = "ambari-metrics-topic" +// var numThreads = 1 +// val anomalyDetectionModels: Array[AnomalyDetectionTechnique] = Array[AnomalyDetectionTechnique]() +// +// def readProperties(propertiesFile: String): Properties = try { +// val properties = new Properties +// var inputStream = ClassLoader.getSystemResourceAsStream(propertiesFile) +// if (inputStream == null) inputStream = new FileInputStream(propertiesFile) +// properties.load(inputStream) +// properties +// } catch { +// case ioEx: IOException => +// null +// } +// +// def main(args: Array[String]): Unit = { +// +// @transient +// lazy val log = org.apache.log4j.LogManager.getLogger("MetricAnomalyDetectorLogger") +// +// if (args.length < 1) { +// System.err.println("Usage: MetricSparkConsumer <input-config-file>") +// System.exit(1) +// } +// +// //Read properties +// val properties = readProperties(propertiesFile = args(0)) +// +// //Load EMA parameters - w, n +// val emaW = properties.getProperty("emaW").toDouble +// val emaN = properties.getProperty("emaN").toDouble +// +// //collector info +// val collectorHost: String = properties.getProperty("collectorHost") +// val collectorPort: String = properties.getProperty("collectorPort") +// val collectorProtocol: String = properties.getProperty("collectorProtocol") +// val anomalyMetricPublisher = new MetricsCollectorInterface(collectorHost, collectorProtocol, collectorPort) +// +// //Instantiate Kafka stream reader +// val sparkConf = new SparkConf().setAppName("AmbariMetricsAnomalyDetector") +// val streamingContext = new StreamingContext(sparkConf, Duration(10000)) +// +// val topicsSet = topicName.toSet +// val kafkaParams = Map[String, String]("metadata.broker.list" -> brokers) +//// val stream = KafkaUtils.createDirectStream() +// +// val kafkaStream = KafkaUtils.createStream(streamingContext, zkQuorum, groupId, Map(topicName -> numThreads), StorageLevel.MEMORY_AND_DISK_SER_2) +// kafkaStream.print() +// +// var timelineMetricsStream = kafkaStream.map( message => { +// val mapper = new ObjectMapper +// val metrics = mapper.readValue(message._2, classOf[TimelineMetrics]) +// metrics +// }) +// timelineMetricsStream.print() +// +// var appMetricStream = timelineMetricsStream.map( timelineMetrics => { +// (timelineMetrics.getMetrics.get(0).getAppId, timelineMetrics) +// }) +// appMetricStream.print() +// +// var filteredAppMetricStream = appMetricStream.filter( appMetricTuple => { +// appIds.contains(appMetricTuple._1) +// } ) +// filteredAppMetricStream.print() +// +// filteredAppMetricStream.foreachRDD( rdd => { +// rdd.foreach( appMetricTuple => { +// val timelineMetrics = appMetricTuple._2 +// logger.info("Received Metric (1): " + timelineMetrics.getMetrics.get(0).getMetricName) +// log.info("Received Metric (2): " + timelineMetrics.getMetrics.get(0).getMetricName) +// for (timelineMetric <- timelineMetrics.getMetrics) { +// var anomalies = emaModel.test(timelineMetric) +// anomalyMetricPublisher.publish(anomalies) +// } +// }) +// }) +// +// streamingContext.start() +// streamingContext.awaitTermination() +// } + } diff --git a/ambari-metrics/ambari-metrics-spark/src/main/scala/org/apache/ambari/metrics/spark/SparkPhoenixReader.scala b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/scala/org/apache/ambari/metrics/spark/SparkPhoenixReader.scala similarity index 84% rename from ambari-metrics/ambari-metrics-spark/src/main/scala/org/apache/ambari/metrics/spark/SparkPhoenixReader.scala rename to ambari-metrics/ambari-metrics-anomaly-detector/src/main/scala/org/apache/ambari/metrics/spark/SparkPhoenixReader.scala index edd6366..ccded6b 100644 --- a/ambari-metrics/ambari-metrics-spark/src/main/scala/org/apache/ambari/metrics/spark/SparkPhoenixReader.scala +++ b/ambari-metrics/ambari-metrics-anomaly-detector/src/main/scala/org/apache/ambari/metrics/spark/SparkPhoenixReader.scala @@ -19,10 +19,8 @@ package org.apache.ambari.metrics.spark import org.apache.ambari.metrics.alertservice.prototype.methods.ema.EmaTechnique import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric -import org.apache.spark.mllib.stat.Statistics import org.apache.spark.sql.SQLContext import org.apache.spark.{SparkConf, SparkContext} -import org.apache.spark.rdd.RDD object SparkPhoenixReader { @@ -71,17 +69,9 @@ object SparkPhoenixReader { timelineMetric.setHostName(hostname) timelineMetric.setMetricValues(metricValues) -// var emaModel = new EmaTechnique() -// emaModel.train(timelineMetric, weight, timessdev) -// emaModel.save(sc, modelDir) - -// var metricData:Seq[Double] = Seq.empty -// result.collect().foreach( -// t => metricData :+ t.getDouble(4) / t.getInt(5) -// ) -// val data: RDD[Double] = sc.parallelize(metricData) -// val myCDF = Map(0.1 -> 0.2, 0.15 -> 0.6, 0.2 -> 0.05, 0.3 -> 0.05, 0.25 -> 0.1) -// val testResult2 = Statistics.kolmogorovSmirnovTest(data, myCDF) + var emaModel = new EmaTechnique(weight, timessdev) + emaModel.test(timelineMetric) + emaModel.save(sc, modelDir) } diff --git a/ambari-metrics/ambari-metrics-alertservice/src/test/java/org/apache/ambari/metrics/alertservice/prototype/TestEmaTechnique.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/test/java/org/apache/ambari/metrics/alertservice/prototype/TestEmaTechnique.java similarity index 97% rename from ambari-metrics/ambari-metrics-alertservice/src/test/java/org/apache/ambari/metrics/alertservice/prototype/TestEmaTechnique.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/test/java/org/apache/ambari/metrics/alertservice/prototype/TestEmaTechnique.java index d1e2b41..a0b06e6 100644 --- a/ambari-metrics/ambari-metrics-alertservice/src/test/java/org/apache/ambari/metrics/alertservice/prototype/TestEmaTechnique.java +++ b/ambari-metrics/ambari-metrics-anomaly-detector/src/test/java/org/apache/ambari/metrics/alertservice/prototype/TestEmaTechnique.java @@ -17,12 +17,12 @@ */ package org.apache.ambari.metrics.alertservice.prototype; +import org.apache.ambari.metrics.alertservice.prototype.core.RFunctionInvoker; import org.apache.ambari.metrics.alertservice.prototype.methods.MetricAnomaly; import org.apache.ambari.metrics.alertservice.prototype.methods.ema.EmaTechnique; import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric; import org.junit.Assert; import org.junit.Assume; -import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; diff --git a/ambari-metrics/ambari-metrics-alertservice/src/test/java/org/apache/ambari/metrics/alertservice/prototype/TestRFunctionInvoker.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/test/java/org/apache/ambari/metrics/alertservice/prototype/TestRFunctionInvoker.java similarity index 98% rename from ambari-metrics/ambari-metrics-alertservice/src/test/java/org/apache/ambari/metrics/alertservice/prototype/TestRFunctionInvoker.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/test/java/org/apache/ambari/metrics/alertservice/prototype/TestRFunctionInvoker.java index 9a102a0..d98ef0c 100644 --- a/ambari-metrics/ambari-metrics-alertservice/src/test/java/org/apache/ambari/metrics/alertservice/prototype/TestRFunctionInvoker.java +++ b/ambari-metrics/ambari-metrics-anomaly-detector/src/test/java/org/apache/ambari/metrics/alertservice/prototype/TestRFunctionInvoker.java @@ -19,6 +19,7 @@ package org.apache.ambari.metrics.alertservice.prototype; import org.apache.ambari.metrics.alertservice.prototype.common.ResultSet; import org.apache.ambari.metrics.alertservice.prototype.common.DataSeries; +import org.apache.ambari.metrics.alertservice.prototype.core.RFunctionInvoker; import org.apache.ambari.metrics.alertservice.seriesgenerator.UniformMetricSeries; import org.apache.commons.lang.ArrayUtils; import org.junit.Assert; @@ -31,7 +32,6 @@ import java.net.URISyntaxException; import java.net.URL; import java.util.HashMap; import java.util.Map; -import java.util.Random; public class TestRFunctionInvoker { diff --git a/ambari-metrics/ambari-metrics-alertservice/src/test/java/org/apache/ambari/metrics/alertservice/prototype/TestTukeys.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/test/java/org/apache/ambari/metrics/alertservice/prototype/TestTukeys.java similarity index 95% rename from ambari-metrics/ambari-metrics-alertservice/src/test/java/org/apache/ambari/metrics/alertservice/prototype/TestTukeys.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/test/java/org/apache/ambari/metrics/alertservice/prototype/TestTukeys.java index ef0125f..86590bd 100644 --- a/ambari-metrics/ambari-metrics-alertservice/src/test/java/org/apache/ambari/metrics/alertservice/prototype/TestTukeys.java +++ b/ambari-metrics/ambari-metrics-anomaly-detector/src/test/java/org/apache/ambari/metrics/alertservice/prototype/TestTukeys.java @@ -17,6 +17,8 @@ */ package org.apache.ambari.metrics.alertservice.prototype; +import org.apache.ambari.metrics.alertservice.prototype.core.MetricsCollectorInterface; +import org.apache.ambari.metrics.alertservice.prototype.core.RFunctionInvoker; import org.apache.ambari.metrics.alertservice.prototype.methods.MetricAnomaly; import org.apache.ambari.metrics.alertservice.prototype.methods.ema.EmaTechnique; import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric; @@ -26,7 +28,6 @@ import org.junit.BeforeClass; import org.junit.Test; import java.io.File; -import java.net.InetAddress; import java.net.URISyntaxException; import java.net.URL; import java.net.UnknownHostException; diff --git a/ambari-metrics/ambari-metrics-alertservice/src/test/java/org/apache/ambari/metrics/alertservice/seriesgenerator/MetricSeriesGeneratorTest.java b/ambari-metrics/ambari-metrics-anomaly-detector/src/test/java/org/apache/ambari/metrics/alertservice/seriesgenerator/MetricSeriesGeneratorTest.java similarity index 93% rename from ambari-metrics/ambari-metrics-alertservice/src/test/java/org/apache/ambari/metrics/alertservice/seriesgenerator/MetricSeriesGeneratorTest.java rename to ambari-metrics/ambari-metrics-anomaly-detector/src/test/java/org/apache/ambari/metrics/alertservice/seriesgenerator/MetricSeriesGeneratorTest.java index 575ea8b..fe7dba9 100644 --- a/ambari-metrics/ambari-metrics-alertservice/src/test/java/org/apache/ambari/metrics/alertservice/seriesgenerator/MetricSeriesGeneratorTest.java +++ b/ambari-metrics/ambari-metrics-anomaly-detector/src/test/java/org/apache/ambari/metrics/alertservice/seriesgenerator/MetricSeriesGeneratorTest.java @@ -17,16 +17,9 @@ */ package org.apache.ambari.metrics.alertservice.seriesgenerator; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.apache.ambari.metrics.alertservice.prototype.MetricAnomalyDetectorTestInput; import org.junit.Assert; import org.junit.Test; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; - public class MetricSeriesGeneratorTest { @Test diff --git a/ambari-metrics/ambari-metrics-spark/pom.xml b/ambari-metrics/ambari-metrics-spark/pom.xml deleted file mode 100644 index 4732cb5..0000000 --- a/ambari-metrics/ambari-metrics-spark/pom.xml +++ /dev/null @@ -1,151 +0,0 @@ -<!-- - ~ Licensed to the Apache Software Foundation (ASF) under one - ~ or more contributor license agreements. See the NOTICE file - ~ distributed with this work for additional information - ~ regarding copyright ownership. The ASF licenses this file - ~ to you under the Apache License, Version 2.0 (the - ~ "License"); you may not use this file except in compliance - ~ with the License. You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, software - ~ distributed under the License is distributed on an "AS IS" BASIS, - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - ~ See the License for the specific language governing permissions and - ~ limitations under the License. - --> - -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <parent> - <artifactId>ambari-metrics</artifactId> - <groupId>org.apache.ambari</groupId> - <version>2.0.0.0-SNAPSHOT</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <artifactId>ambari-metrics-spark</artifactId> - <version>2.0.0.0-SNAPSHOT</version> - <properties> - <scala.version>2.10.4</scala.version> - </properties> - - <repositories> - <repository> - <id>scala-tools.org</id> - <name>Scala-Tools Maven2 Repository</name> - <url>http://scala-tools.org/repo-releases</url> - </repository> - </repositories> - - <pluginRepositories> - <pluginRepository> - <id>scala-tools.org</id> - <name>Scala-Tools Maven2 Repository</name> - <url>http://scala-tools.org/repo-releases</url> - </pluginRepository> - </pluginRepositories> - - <dependencies> - <dependency> - <groupId>org.scala-lang</groupId> - <artifactId>scala-library</artifactId> - <version>${scala.version}</version> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.4</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.specs</groupId> - <artifactId>specs</artifactId> - <version>1.2.5</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.spark</groupId> - <artifactId>spark-core_2.10</artifactId> - <version>1.6.3</version> - </dependency> - <dependency> - <groupId>org.apache.spark</groupId> - <artifactId>spark-sql_2.10</artifactId> - <version>1.6.3</version> - </dependency> - <dependency> - <groupId>org.apache.phoenix</groupId> - <artifactId>phoenix-spark</artifactId> - <version>4.7.0-HBase-1.1</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.apache.ambari</groupId> - <artifactId>ambari-metrics-alertservice</artifactId> - <version>2.0.0.0-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-api-scala_2.10</artifactId> - <version>2.8.2</version> - </dependency> - <dependency> - <groupId>org.apache.spark</groupId> - <artifactId>spark-mllib_2.10</artifactId> - <version>2.1.1</version> - </dependency> - </dependencies> - - <build> - <sourceDirectory>src/main/scala</sourceDirectory> - <plugins> - <plugin> - <groupId>org.scala-tools</groupId> - <artifactId>maven-scala-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>compile</goal> - <goal>testCompile</goal> - </goals> - </execution> - </executions> - <configuration> - <scalaVersion>${scala.version}</scalaVersion> - <args> - <arg>-target:jvm-1.5</arg> - </args> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-eclipse-plugin</artifactId> - <configuration> - <downloadSources>true</downloadSources> - <buildcommands> - <buildcommand>ch.epfl.lamp.sdt.core.scalabuilder</buildcommand> - </buildcommands> - <additionalProjectnatures> - <projectnature>ch.epfl.lamp.sdt.core.scalanature</projectnature> - </additionalProjectnatures> - <classpathContainers> - <classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer> - <classpathContainer>ch.epfl.lamp.sdt.launching.SCALA_CONTAINER</classpathContainer> - </classpathContainers> - </configuration> - </plugin> - </plugins> - </build> - <reporting> - <plugins> - <plugin> - <groupId>org.scala-tools</groupId> - <artifactId>maven-scala-plugin</artifactId> - <configuration> - <scalaVersion>${scala.version}</scalaVersion> - </configuration> - </plugin> - </plugins> - </reporting> -</project> diff --git a/ambari-metrics/ambari-metrics-spark/src/main/scala/org/apache/ambari/metrics/spark/MetricAnomalyDetector.scala b/ambari-metrics/ambari-metrics-spark/src/main/scala/org/apache/ambari/metrics/spark/MetricAnomalyDetector.scala deleted file mode 100644 index e51a47f..0000000 --- a/ambari-metrics/ambari-metrics-spark/src/main/scala/org/apache/ambari/metrics/spark/MetricAnomalyDetector.scala +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.ambari.metrics.spark - - -import java.util -import java.util.logging.LogManager - -import com.fasterxml.jackson.databind.ObjectMapper -import org.apache.ambari.metrics.alertservice.prototype.MetricsCollectorInterface -import org.apache.spark.SparkConf -import org.apache.spark.streaming._ -import org.apache.spark.streaming.kafka._ -import org.apache.ambari.metrics.alertservice.prototype.methods.{AnomalyDetectionTechnique, MetricAnomaly} -import org.apache.ambari.metrics.alertservice.prototype.methods.ema.{EmaModelLoader, EmaTechnique} -import org.apache.hadoop.metrics2.sink.timeline.TimelineMetrics -import org.apache.log4j.Logger -import org.apache.spark.storage.StorageLevel - -import scala.collection.JavaConversions._ -import org.apache.logging.log4j.scala.Logging - -object MetricAnomalyDetector extends Logging { - - - var zkQuorum = "avijayan-ams-1.openstacklocal:2181,avijayan-ams-2.openstacklocal:2181,avijayan-ams-3.openstacklocal:2181" - var groupId = "ambari-metrics-group" - var topicName = "ambari-metrics-topic" - var numThreads = 1 - val anomalyDetectionModels: Array[AnomalyDetectionTechnique] = Array[AnomalyDetectionTechnique]() - - def main(args: Array[String]): Unit = { - - @transient - lazy val log: Logger = org.apache.log4j.LogManager.getLogger("MetricAnomalyDetectorLogger") - - if (args.length < 5) { - System.err.println("Usage: MetricAnomalyDetector <method1,method2> <appid1,appid2> <collector_host> <port> <protocol>") - System.exit(1) - } - - for (method <- args(0).split(",")) { - if (method == "ema") anomalyDetectionModels :+ new EmaTechnique(0.5, 3) - } - - val appIds = util.Arrays.asList(args(1).split(",")) - - val collectorHost = args(2) - val collectorPort = args(3) - val collectorProtocol = args(4) - - val anomalyMetricPublisher: MetricsCollectorInterface = new MetricsCollectorInterface(collectorHost, collectorProtocol, collectorPort) - - val sparkConf = new SparkConf().setAppName("AmbariMetricsAnomalyDetector") - - val streamingContext = new StreamingContext(sparkConf, Duration(10000)) - - val emaModel = new EmaModelLoader().load(streamingContext.sparkContext, "/tmp/model/ema") - - val kafkaStream = KafkaUtils.createStream(streamingContext, zkQuorum, groupId, Map(topicName -> numThreads), StorageLevel.MEMORY_AND_DISK_SER_2) - kafkaStream.print() - - var timelineMetricsStream = kafkaStream.map( message => { - val mapper = new ObjectMapper - val metrics = mapper.readValue(message._2, classOf[TimelineMetrics]) - metrics - }) - timelineMetricsStream.print() - - var appMetricStream = timelineMetricsStream.map( timelineMetrics => { - (timelineMetrics.getMetrics.get(0).getAppId, timelineMetrics) - }) - appMetricStream.print() - - var filteredAppMetricStream = appMetricStream.filter( appMetricTuple => { - appIds.contains(appMetricTuple._1) - } ) - filteredAppMetricStream.print() - - filteredAppMetricStream.foreachRDD( rdd => { - rdd.foreach( appMetricTuple => { - val timelineMetrics = appMetricTuple._2 - logger.info("Received Metric (1): " + timelineMetrics.getMetrics.get(0).getMetricName) - log.info("Received Metric (2): " + timelineMetrics.getMetrics.get(0).getMetricName) - for (timelineMetric <- timelineMetrics.getMetrics) { - var anomalies = emaModel.test(timelineMetric) - anomalyMetricPublisher.publish(anomalies) - } - }) - }) - - streamingContext.start() - streamingContext.awaitTermination() - } - } diff --git a/ambari-metrics/ambari-metrics-timelineservice/pom.xml b/ambari-metrics/ambari-metrics-timelineservice/pom.xml index a8ac1da..3d119f9 100644 --- a/ambari-metrics/ambari-metrics-timelineservice/pom.xml +++ b/ambari-metrics/ambari-metrics-timelineservice/pom.xml @@ -346,12 +346,6 @@ </dependency> <dependency> - <groupId>org.apache.ambari</groupId> - <artifactId>ambari-metrics-alertservice</artifactId> - <version>${project.version}</version> - </dependency> - - <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/TestMetricSeriesGenerator.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/TestMetricSeriesGenerator.java deleted file mode 100644 index 2420ef3..0000000 --- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/TestMetricSeriesGenerator.java +++ /dev/null @@ -1,87 +0,0 @@ -package org.apache.hadoop.yarn.server.applicationhistoryservice.metrics; - -import org.apache.ambari.metrics.alertservice.prototype.TestSeriesInputRequest; -import org.apache.ambari.metrics.alertservice.seriesgenerator.AbstractMetricSeries; -import org.apache.ambari.metrics.alertservice.seriesgenerator.MetricSeriesGeneratorFactory; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric; -import org.apache.hadoop.metrics2.sink.timeline.TimelineMetrics; -import org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricStore; - -import java.io.IOException; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.sql.SQLException; -import java.util.HashMap; -import java.util.Map; -import java.util.TreeMap; - -public class TestMetricSeriesGenerator implements Runnable { - - private Map<TestSeriesInputRequest, AbstractMetricSeries> configuredSeries = new HashMap<>(); - private static final Log LOG = LogFactory.getLog(TestMetricSeriesGenerator.class); - private TimelineMetricStore metricStore; - private String hostname; - - public TestMetricSeriesGenerator(TimelineMetricStore metricStore) { - this.metricStore = metricStore; - try { - this.hostname = InetAddress.getLocalHost().getHostName(); - } catch (UnknownHostException e) { - e.printStackTrace(); - } - } - - public void addSeries(TestSeriesInputRequest inputRequest) { - if (!configuredSeries.containsKey(inputRequest)) { - AbstractMetricSeries metricSeries = MetricSeriesGeneratorFactory.generateSeries(inputRequest.getSeriesType(), inputRequest.getConfigs()); - configuredSeries.put(inputRequest, metricSeries); - LOG.info("Added series " + inputRequest.getSeriesName()); - } - } - - public void removeSeries(String seriesName) { - boolean isPresent = false; - TestSeriesInputRequest tbd = null; - for (TestSeriesInputRequest inputRequest : configuredSeries.keySet()) { - if (inputRequest.getSeriesName().equals(seriesName)) { - isPresent = true; - tbd = inputRequest; - } - } - if (isPresent) { - LOG.info("Removing series " + seriesName); - configuredSeries.remove(tbd); - } else { - LOG.info("Series not found : " + seriesName); - } - } - - @Override - public void run() { - long currentTime = System.currentTimeMillis(); - TimelineMetrics timelineMetrics = new TimelineMetrics(); - - for (TestSeriesInputRequest input : configuredSeries.keySet()) { - AbstractMetricSeries metricSeries = configuredSeries.get(input); - TimelineMetric timelineMetric = new TimelineMetric(); - timelineMetric.setMetricName(input.getSeriesName()); - timelineMetric.setAppId("anomaly-engine-test-metric"); - timelineMetric.setInstanceId(null); - timelineMetric.setStartTime(currentTime); - timelineMetric.setHostName(hostname); - TreeMap<Long, Double> metricValues = new TreeMap(); - metricValues.put(currentTime, metricSeries.nextValue()); - timelineMetric.setMetricValues(metricValues); - timelineMetrics.addOrMergeTimelineMetric(timelineMetric); - LOG.info("Emitting metric with appId = " + timelineMetric.getAppId()); - } - try { - LOG.info("Publishing test metrics for " + timelineMetrics.getMetrics().size() + " series."); - metricStore.putMetrics(timelineMetrics); - } catch (Exception e) { - LOG.error(e); - } - } -} diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/MetricAnomalyDetectorTestService.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/MetricAnomalyDetectorTestService.java deleted file mode 100644 index 6f7b14a..0000000 --- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/MetricAnomalyDetectorTestService.java +++ /dev/null @@ -1,87 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.hadoop.yarn.server.applicationhistoryservice.webapp; - -import com.google.inject.Inject; -import com.google.inject.Singleton; -import org.apache.ambari.metrics.alertservice.prototype.MetricAnomalyDetectorTestInput; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.hadoop.metrics2.sink.timeline.TimelineMetrics; -import org.apache.hadoop.yarn.api.records.timeline.TimelinePutResponse; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.Consumes; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -@Singleton -@Path("/ws/v1/metrictestservice") -public class MetricAnomalyDetectorTestService { - - private static final Log LOG = LogFactory.getLog(MetricAnomalyDetectorTestService.class); - - @Inject - public MetricAnomalyDetectorTestService() { - } - - private void init(HttpServletResponse response) { - response.setContentType(null); - } - - @Path("/anomaly") - @POST - @Consumes({ MediaType.APPLICATION_JSON /* , MediaType.APPLICATION_XML */}) - public TimelinePutResponse postAnomalyDetectionRequest( - @Context HttpServletRequest req, - @Context HttpServletResponse res, - MetricAnomalyDetectorTestInput input) { - - init(res); - if (input == null) { - return new TimelinePutResponse(); - } - - try { - return null; - } catch (Exception e) { - throw new WebApplicationException(e, Response.Status.INTERNAL_SERVER_ERROR); - } - } - - @GET - @Path("/dataseries") - @Produces({MediaType.APPLICATION_JSON}) - public TimelineMetrics getTestDataSeries( - @Context HttpServletRequest req, - @Context HttpServletResponse res, - @QueryParam("type") String seriesType, - @QueryParam("configs") String config - ) { - return null; - } -} diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TimelineWebServices.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TimelineWebServices.java index 20aba23..5d9bb35 100644 --- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TimelineWebServices.java +++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TimelineWebServices.java @@ -36,7 +36,6 @@ import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric; import org.apache.hadoop.metrics2.sink.timeline.TimelineMetrics; import org.apache.hadoop.yarn.api.records.timeline.TimelinePutResponse; import org.apache.hadoop.metrics2.sink.timeline.Precision; -import org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.TestMetricSeriesGenerator; import org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricStore; import org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.discovery.TimelineMetricMetadataKey; import org.apache.hadoop.yarn.server.applicationhistoryservice.timeline.EntityIdentifier; diff --git a/ambari-metrics/pom.xml b/ambari-metrics/pom.xml index 0d4767d..386be91 100644 --- a/ambari-metrics/pom.xml +++ b/ambari-metrics/pom.xml @@ -29,13 +29,12 @@ <module>ambari-metrics-kafka-sink</module> <module>ambari-metrics-storm-sink</module> <module>ambari-metrics-storm-sink-legacy</module> - <module>ambari-metrics-alertservice</module> <module>ambari-metrics-timelineservice</module> <module>ambari-metrics-host-monitoring</module> <module>ambari-metrics-grafana</module> <module>ambari-metrics-assembly</module> <module>ambari-metrics-host-aggregator</module> - <module>ambari-metrics-spark</module> + <module>ambari-metrics-anomaly-detector</module> </modules> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> -- To stop receiving notification emails like this one, please contact [email protected].
