From e7a905980fbd296d9c09c2a0c64ebfa434f464e9 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Wed, 25 Jan 2017 16:44:58 -0800 Subject: [PATCH] Add Monitoring quickstart sample. --- monitoring/cloud-client/README.md | 31 ++++++ monitoring/cloud-client/pom.xml | 57 +++++++++++ .../example/monitoring/QuickstartSample.java | 97 +++++++++++++++++++ .../monitoring/QuickstartSampleIT.java | 60 ++++++++++++ 4 files changed, 245 insertions(+) create mode 100644 monitoring/cloud-client/README.md create mode 100644 monitoring/cloud-client/pom.xml create mode 100644 monitoring/cloud-client/src/main/java/com/example/monitoring/QuickstartSample.java create mode 100644 monitoring/cloud-client/src/test/java/com/example/monitoring/QuickstartSampleIT.java diff --git a/monitoring/cloud-client/README.md b/monitoring/cloud-client/README.md new file mode 100644 index 00000000000..626117bfa43 --- /dev/null +++ b/monitoring/cloud-client/README.md @@ -0,0 +1,31 @@ +# Getting Started with Google Stackdriver Monitoring API and the Google Cloud Client libraries + +[Google Stackdriver Monitoring API][monitoring] collects metrics, events, and +metadata from Google Cloud Platform, Amazon Web Services (AWS), hosted uptime +probes, application instrumentation, and a variety of common application +components including Cassandra, Nginx, Apache Web Server, Elasticsearch and many +others. + +These sample Java applications demonstrate how to access the Stackdriver +Monitoring API using the [Google Cloud Client Library for Java][google-cloud-java]. + +[monitoring]: https://cloud.google.com/monitoring/docs/ +[google-cloud-java]: https://github.com/GoogleCloudPlatform/google-cloud-java + +## Quickstart + +Install [Maven](http://maven.apache.org/). + +Build your project with: + + mvn clean package -DskipTests + +You can then run a given `ClassName` via: + + mvn exec:java -Dexec.mainClass=com.example.monitoring.ClassName \ + -DpropertyName=propertyValue \ + -Dexec.args="arg1 'arg 2' arg3" + +### Analyze a string for sentiment (using the quickstart sample) + + mvn exec:java -Dexec.mainClass=com.example.monitoring.QuickstartSample diff --git a/monitoring/cloud-client/pom.xml b/monitoring/cloud-client/pom.xml new file mode 100644 index 00000000000..478e5e58a69 --- /dev/null +++ b/monitoring/cloud-client/pom.xml @@ -0,0 +1,57 @@ + + + 4.0.0 + com.example.monitoring + monitoring-google-cloud-samples + jar + + + + doc-samples + com.google.cloud + 1.0.0 + ../.. + + + + 1.8 + 1.8 + UTF-8 + + + + + com.google.cloud + google-cloud-monitoring + 0.8.1-alpha + + + + + junit + junit + 4.12 + test + + + com.google.truth + truth + 0.31 + test + + + diff --git a/monitoring/cloud-client/src/main/java/com/example/monitoring/QuickstartSample.java b/monitoring/cloud-client/src/main/java/com/example/monitoring/QuickstartSample.java new file mode 100644 index 00000000000..e815d6ea317 --- /dev/null +++ b/monitoring/cloud-client/src/main/java/com/example/monitoring/QuickstartSample.java @@ -0,0 +1,97 @@ +/* + Copyright 2017, Google, Inc. + + Licensed 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 com.example.monitoring; + +// [START monitoring_quickstart] +// Imports the Google Cloud client library +import com.google.cloud.monitoring.spi.v3.MetricServiceClient; + +import com.google.api.Metric; +import com.google.api.MonitoredResource; +import com.google.monitoring.v3.CreateTimeSeriesRequest; +import com.google.monitoring.v3.Point; +import com.google.monitoring.v3.ProjectName; +import com.google.monitoring.v3.TimeInterval; +import com.google.monitoring.v3.TimeSeries; +import com.google.monitoring.v3.TypedValue; +import com.google.protobuf.util.Timestamps; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class QuickstartSample { + public static void main(String... args) throws Exception { + // Instantiates a client + MetricServiceClient metricServiceClient = MetricServiceClient.create(); + + // Your Google Cloud Platform project ID + String projectId = "YOUR_PROJECT_ID"; + + TimeInterval interval = TimeInterval.newBuilder() + .setEndTime(Timestamps.fromMillis(System.currentTimeMillis())) + .build(); + TypedValue value = TypedValue.newBuilder() + .setDoubleValue(123.45) + .build(); + + // Prepares an individual data point + Point point = Point.newBuilder() + .setInterval(interval) + .setValue(value) + .build(); + + List pointList = new ArrayList<>(); + pointList.add(point); + + ProjectName name = ProjectName.create(projectId); + + Map metricLabels = new HashMap(); + metricLabels.put("store_id", "Pittsburg"); + Metric metric = Metric.newBuilder() + .setType("custom.googleapis.com/stores/daily_sales") + .putAllLabels(metricLabels) + .build(); + Map resourceLabels = new HashMap(); + resourceLabels.put("project_id", projectId); + MonitoredResource resource = MonitoredResource.newBuilder() + .setType("global") + .putAllLabels(resourceLabels) + .build(); + TimeSeries timeSeries = TimeSeries.newBuilder() + .setMetric(metric) + .setResource(resource) + .addAllPoints(pointList) + .build(); + + List timeSeriesList = new ArrayList<>(); + timeSeriesList.add(timeSeries); + + // Prepares the time series request + CreateTimeSeriesRequest request = CreateTimeSeriesRequest.newBuilder() + .setNameWithProjectName(name) + .addAllTimeSeries(timeSeriesList) + .build(); + + // Writes time series data + metricServiceClient.createTimeSeries(request); + + System.out.printf("Done writing time series data.%n"); + } +} +// [END monitoring_quickstart] diff --git a/monitoring/cloud-client/src/test/java/com/example/monitoring/QuickstartSampleIT.java b/monitoring/cloud-client/src/test/java/com/example/monitoring/QuickstartSampleIT.java new file mode 100644 index 00000000000..ae269e5b2e8 --- /dev/null +++ b/monitoring/cloud-client/src/test/java/com/example/monitoring/QuickstartSampleIT.java @@ -0,0 +1,60 @@ +/* + Copyright 2016, Google, Inc. + + Licensed 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 com.example.monitoring; + +import static com.google.common.truth.Truth.assertThat; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +/** + * Tests for quickstart sample. + */ +@RunWith(JUnit4.class) +@SuppressWarnings("checkstyle:abbreviationaswordinname") +public class QuickstartSampleIT { + private ByteArrayOutputStream bout; + private PrintStream out; + + @Before + public void setUp() { + bout = new ByteArrayOutputStream(); + out = new PrintStream(bout); + System.setOut(out); + } + + @After + public void tearDown() { + System.setOut(null); + } + + @Test + public void testQuickstart() throws Exception { + // Act + QuickstartSample.main(); + + // Assert + String got = bout.toString(); + assertThat(got).contains("Done writing time series data."); + } +}