From a7643b40a7e44d86895304364fa1d5c1b170e8b9 Mon Sep 17 00:00:00 2001 From: Cunjun Wang Date: Tue, 4 Aug 2020 14:08:25 -0400 Subject: [PATCH 01/11] add prometheus exporter utils header --- .../prometheus/prometheus_exporter_utils.h | 179 ++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h diff --git a/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h b/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h new file mode 100644 index 0000000000..980d41e150 --- /dev/null +++ b/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h @@ -0,0 +1,179 @@ +#pragma once + +#include +#include + +#include "opentelemetry/sdk/metrics/record.h" +#include "prometheus/metric_family.h" + +namespace prometheus_client = ::prometheus; +namespace metric_sdk = opentelemetry::sdk::metrics; + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace exporter +{ +namespace prometheus +{ +/** + * The Prometheus Utils contains utility functions for Prometheus Exporter + */ +class PrometheusExporterUtils +{ +public: + /** + * Helper function to convert OpenTelemetry metrics data collection + * to Prometheus metrics data collection + * + * @param records a collection of metrics in OpenTelemetry + * @return a collection of translated metrics that is acceptable by Prometheus + */ + static std::vector TranslateToPrometheus( + std::vector &records); + +private: + /** + * Sanitize the given metric name or label according to Prometheus rule. + * + * This function is needed because names in OpenTelemetry can contain + * alphanumeric characters, '_', '.', and '-', whereas in Prometheus the + * name should only contain alphanumeric characters and '_'. + * + * @param key name in OpenTelemetry + * @return sanitized name in Prometheus + */ + static std::string SanitizeNames(std::string name); + + /** + * Determine whether the input name is a valid OTel name or not + * + * From the spec: + * 1. They are non-empty strings + * 2. They are case-insensitive + * 3. The first character must be non-numeric, non-space, non-punctuation + * 4. Subsequent characters must belong to the alphanumeric characters, '_', '.', and '-'. + * + * @param name name to be determined + * @return a boolean flag + */ + static bool IsValidName(const std::string &name); + + /** + * Set value to metric family according to record + * + * @param record + * @param metric_family + */ + static void SetMetricFamily(metric_sdk::Record &record, + prometheus_client::MetricFamily *metric_family); + + template + static void SetMetricFamilyByAggregator(nostd::shared_ptr> aggregator, + std::string labels_str, + prometheus_client::MetricFamily *metric_family); + + /** + * Translate the OTel metric type to Prometheus metric type + * + * @param kind + * @return + */ + static prometheus_client::MetricType TranslateType(metric_sdk::AggregatorKind kind); + + /** + * Set metric data for: + * Counter => Prometheus Counter + * Gauge => Prometheus Gauge + */ + template + static void SetData(std::vector values, + const std::string &labels, + prometheus_client::MetricType type, + std::chrono::nanoseconds time, + prometheus_client::MetricFamily *metric_family); + + /** + * Set metric data for: + * Histogram => Prometheus Histogram + */ + template + static void SetData(std::vector values, + const std::vector &boundaries, + const std::vector &counts, + const std::string &labels, + std::chrono::nanoseconds time, + prometheus_client::MetricFamily *metric_family); + + /** + * Set metric data for: + * MinMaxSumCount => Prometheus Gauge + * Use Average (sum / count) as the gauge metric + */ + static void SetData(double value, + const std::string &labels, + std::chrono::nanoseconds time, + prometheus_client::MetricFamily *metric_family); + + /** + * Set metric data for: + * Exact => Prometheus Summary + */ + template + static void SetData(std::vector values, + const std::vector &quantiles, + const std::string &labels, + std::chrono::nanoseconds time, + prometheus_client::MetricFamily *metric_family); + + static void SetMetricBasic(prometheus_client::ClientMetric &metric, + std::chrono::nanoseconds time, + const std::string &labels); + + /** + * Parse a string of labels (key:value) into a vector of pairs + * {,} + * {l1:v1,l2:v2,...,} + * + * @param a string of labels + * @return a vector of key value pairs + */ + static std::vector> ParseLabel(std::string labels); + + /** + * Build a quantiles vector from aggregator + */ + template + static std::vector GetQuantilesVector(nostd::shared_ptr> aggregator); + + /** + * Handle Counter and Gauge. + */ + template + static void SetValue(std::vector values, + prometheus_client::MetricType type, + prometheus_client::ClientMetric *metric); + + /** + * Handle Gauge from MinMaxSumCount + */ + static void SetValue(double value, prometheus_client::ClientMetric *metric); + + /** + * Handle Histogram + */ + template + static void SetValue(std::vector values, + std::vector boundaries, + std::vector counts, + prometheus_client::ClientMetric *metric); + + /** + * Handle Exact + */ + template + static void SetValue(std::vector values, + std::vector quantiles, + prometheus_client::ClientMetric *metric); +}; +} // namespace prometheus +} // namespace exporter +OPENTELEMETRY_END_NAMESPACE \ No newline at end of file From 6a0c8e6d13135ce76a681f668a90e963ad146f27 Mon Sep 17 00:00:00 2001 From: Cunjun Wang Date: Tue, 4 Aug 2020 14:24:44 -0400 Subject: [PATCH 02/11] add prometheus exporter build file for bazel and cmake --- exporters/prometheus/BUILD | 103 ++++++++++++++++++++++++++++ exporters/prometheus/CMakeLists.txt | 12 ++++ 2 files changed, 115 insertions(+) create mode 100644 exporters/prometheus/BUILD create mode 100644 exporters/prometheus/CMakeLists.txt diff --git a/exporters/prometheus/BUILD b/exporters/prometheus/BUILD new file mode 100644 index 0000000000..0db8d452e5 --- /dev/null +++ b/exporters/prometheus/BUILD @@ -0,0 +1,103 @@ +# Copyright 2020, OpenTelemetry Authors +# +# 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(default_visibility = ["//visibility:public"]) + +cc_library( + name = "prometheus_exporter", + srcs = [ + "src/prometheus_exporter.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/prometheus/prometheus_exporter.h", + "include/opentelemetry/exporters/prometheus/prometheus_collector.h" + ], + strip_include_prefix = "include", + deps = [ + "@com_github_jupp0r_prometheus_cpp//core", + "@com_github_jupp0r_prometheus_cpp//pull", + "//sdk:headers", + "//api:api" + ] +) + +cc_library( + name = "prometheus_collector", + srcs = [ + "src/prometheus_collector.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/prometheus/prometheus_collector.h", + "include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h", + ], + strip_include_prefix = "include", + deps = [ + ":prometheus_utils", + "@com_github_jupp0r_prometheus_cpp//core", + "//sdk:headers", + "//api:api" + ] +) + +cc_library( + name = "prometheus_utils", + srcs = [ + "src/prometheus_exporter_utils.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h", + ], + strip_include_prefix = "include", + deps = [ + "@com_github_jupp0r_prometheus_cpp//core", + "//sdk:headers", + "//api:api" + ] +) + +cc_test( + name = "prometheus_exporter_test", + srcs = [ + "test/prometheus_exporter_test.cc", + ], + deps = [ + ":prometheus_collector", + ":prometheus_exporter", + "@com_github_jupp0r_prometheus_cpp//pull", + "@com_github_jupp0r_prometheus_cpp//core", + "@com_google_googletest//:gtest_main" + ], +) + +cc_test( + name = "prometheus_collector_test", + srcs = [ + "test/prometheus_collector_test.cc" + ], + deps = [ + ":prometheus_collector", + "@com_google_googletest//:gtest_main" + ], +) + +cc_test( + name = "prometheus_exporter_utils_test", + srcs = [ + "test/prometheus_exporter_utils_test.cc" + ], + deps = [ + ":prometheus_utils", + "@com_google_googletest//:gtest_main" + ], +) \ No newline at end of file diff --git a/exporters/prometheus/CMakeLists.txt b/exporters/prometheus/CMakeLists.txt new file mode 100644 index 0000000000..91975a4c7c --- /dev/null +++ b/exporters/prometheus/CMakeLists.txt @@ -0,0 +1,12 @@ +include_directories(include) + +find_package(prometheus-cpp CONFIG REQUIRED) +add_library(prometheus_exporter src/prometheus_exporter.cc src/prometheus_collector.cc src/prometheus_exporter_utils.cc) + +add_executable(prometheus_exporter_test test/prometheus_exporter_test.cc test/prometheus_collector_test.cc test/prometheus_exporter_utils_test.cc) + +target_link_libraries( + prometheus_exporter_test ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} + prometheus_exporter prometheus-cpp::pull) +gtest_add_tests(TARGET prometheus_exporter_test TEST_PREFIX exporter. TEST_LIST + prometheus_exporter_test) \ No newline at end of file From b9a96be2e345614bfd462a19ae99d19239cbeb56 Mon Sep 17 00:00:00 2001 From: Cunjun Wang Date: Tue, 4 Aug 2020 14:28:52 -0400 Subject: [PATCH 03/11] change comments --- .../prometheus/prometheus_exporter_utils.h | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h b/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h index 980d41e150..ba5ab11b36 100644 --- a/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h +++ b/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h @@ -37,9 +37,6 @@ class PrometheusExporterUtils * This function is needed because names in OpenTelemetry can contain * alphanumeric characters, '_', '.', and '-', whereas in Prometheus the * name should only contain alphanumeric characters and '_'. - * - * @param key name in OpenTelemetry - * @return sanitized name in Prometheus */ static std::string SanitizeNames(std::string name); @@ -51,17 +48,11 @@ class PrometheusExporterUtils * 2. They are case-insensitive * 3. The first character must be non-numeric, non-space, non-punctuation * 4. Subsequent characters must belong to the alphanumeric characters, '_', '.', and '-'. - * - * @param name name to be determined - * @return a boolean flag */ static bool IsValidName(const std::string &name); /** * Set value to metric family according to record - * - * @param record - * @param metric_family */ static void SetMetricFamily(metric_sdk::Record &record, prometheus_client::MetricFamily *metric_family); @@ -73,9 +64,6 @@ class PrometheusExporterUtils /** * Translate the OTel metric type to Prometheus metric type - * - * @param kind - * @return */ static prometheus_client::MetricType TranslateType(metric_sdk::AggregatorKind kind); @@ -133,7 +121,7 @@ class PrometheusExporterUtils * {,} * {l1:v1,l2:v2,...,} * - * @param a string of labels + * @param labels a string of labels * @return a vector of key value pairs */ static std::vector> ParseLabel(std::string labels); From 3d39f3bf642c3e24728b7aaad013499b0ef116f2 Mon Sep 17 00:00:00 2001 From: Cunjun Wang Date: Tue, 4 Aug 2020 14:32:25 -0400 Subject: [PATCH 04/11] change comments --- .../exporters/prometheus/prometheus_exporter_utils.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h b/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h index ba5ab11b36..2d6f980af8 100644 --- a/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h +++ b/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h @@ -57,6 +57,9 @@ class PrometheusExporterUtils static void SetMetricFamily(metric_sdk::Record &record, prometheus_client::MetricFamily *metric_family); + /** + * Set value to metric family for different aggregators + */ template static void SetMetricFamilyByAggregator(nostd::shared_ptr> aggregator, std::string labels_str, @@ -94,7 +97,7 @@ class PrometheusExporterUtils /** * Set metric data for: * MinMaxSumCount => Prometheus Gauge - * Use Average (sum / count) as the gauge metric + * Use the average (sum/count) as the gauge metric */ static void SetData(double value, const std::string &labels, @@ -112,6 +115,9 @@ class PrometheusExporterUtils std::chrono::nanoseconds time, prometheus_client::MetricFamily *metric_family); + /** + * Set time and labels to metric data + */ static void SetMetricBasic(prometheus_client::ClientMetric &metric, std::chrono::nanoseconds time, const std::string &labels); @@ -120,9 +126,6 @@ class PrometheusExporterUtils * Parse a string of labels (key:value) into a vector of pairs * {,} * {l1:v1,l2:v2,...,} - * - * @param labels a string of labels - * @return a vector of key value pairs */ static std::vector> ParseLabel(std::string labels); From f31b0542737b30fc750942dae9c88e8611a707b3 Mon Sep 17 00:00:00 2001 From: Cunjun Wang Date: Tue, 4 Aug 2020 17:05:54 -0400 Subject: [PATCH 05/11] add WORKSPACE change --- WORKSPACE | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/WORKSPACE b/WORKSPACE index 1dd2ea37fc..49316f9981 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -16,6 +16,30 @@ workspace(name = "io_opentelemetry_cpp") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +# Load gRPC dependency +# Note that this dependency needs to be loaded first due to +# https://github.com/bazelbuild/bazel/issues/6664 +http_archive( + name = "com_github_grpc_grpc", + strip_prefix = "grpc-1.28.0", + urls = [ + "https://github.com/grpc/grpc/archive/v1.28.0.tar.gz", + ], +) + +load("@com_github_grpc_grpc//bazel:grpc_deps.bzl", "grpc_deps") + +grpc_deps() + +# Load extra gRPC dependencies due to https://github.com/grpc/grpc/issues/20511 +load("@com_github_grpc_grpc//bazel:grpc_extra_deps.bzl", "grpc_extra_deps") + +grpc_extra_deps() + +load("@upb//bazel:repository_defs.bzl", "bazel_version_repository") + +bazel_version_repository(name = "upb_bazel_version") + # Uses older protobuf version because of # https://github.com/protocolbuffers/protobuf/issues/7179 http_archive( @@ -54,3 +78,16 @@ http_archive( strip_prefix = "benchmark-1.5.0", urls = ["https://github.com/google/benchmark/archive/v1.5.0.tar.gz"], ) + + +# C++ Prometheus Client library. +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file") +http_archive( + name = "com_github_jupp0r_prometheus_cpp", + strip_prefix = "prometheus-cpp-master", + urls = ["https://github.com/jupp0r/prometheus-cpp/archive/master.zip"], +) + +load("@com_github_jupp0r_prometheus_cpp//bazel:repositories.bzl", "prometheus_cpp_repositories") + +prometheus_cpp_repositories() From 5c6cfce2dacabff73e739e850a7fe1b370e6ec62 Mon Sep 17 00:00:00 2001 From: Cunjun Wang Date: Thu, 6 Aug 2020 11:14:35 -0400 Subject: [PATCH 06/11] change BUILD file --- exporters/prometheus/BUILD | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/exporters/prometheus/BUILD b/exporters/prometheus/BUILD index 0db8d452e5..e7d932ea14 100644 --- a/exporters/prometheus/BUILD +++ b/exporters/prometheus/BUILD @@ -21,7 +21,8 @@ cc_library( ], hdrs = [ "include/opentelemetry/exporters/prometheus/prometheus_exporter.h", - "include/opentelemetry/exporters/prometheus/prometheus_collector.h" + "include/opentelemetry/exporters/prometheus/prometheus_collector.h", + "include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h", ], strip_include_prefix = "include", deps = [ From a92bac0c693bcb34dc4bdf264063cc5b6d541569 Mon Sep 17 00:00:00 2001 From: Cunjun Wang Date: Thu, 6 Aug 2020 13:40:23 -0400 Subject: [PATCH 07/11] modify helper function signature to parse Sketch Aggregator --- .../prometheus/prometheus_exporter_utils.h | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h b/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h index 2d6f980af8..1c1124fbde 100644 --- a/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h +++ b/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h @@ -31,6 +31,12 @@ class PrometheusExporterUtils std::vector &records); private: + /** + * Set value to metric family according to record + */ + static void SetMetricFamily(metric_sdk::Record &record, + prometheus_client::MetricFamily *metric_family); + /** * Sanitize the given metric name or label according to Prometheus rule. * @@ -52,13 +58,7 @@ class PrometheusExporterUtils static bool IsValidName(const std::string &name); /** - * Set value to metric family according to record - */ - static void SetMetricFamily(metric_sdk::Record &record, - prometheus_client::MetricFamily *metric_family); - - /** - * Set value to metric family for different aggregators + * Set value to metric family for different aggregator */ template static void SetMetricFamilyByAggregator(nostd::shared_ptr> aggregator, @@ -97,7 +97,7 @@ class PrometheusExporterUtils /** * Set metric data for: * MinMaxSumCount => Prometheus Gauge - * Use the average (sum/count) as the gauge metric + * Use Average (sum / count) as the gauge metric */ static void SetData(double value, const std::string &labels, @@ -110,6 +110,7 @@ class PrometheusExporterUtils */ template static void SetData(std::vector values, + metric_sdk::AggregatorKind kind, const std::vector &quantiles, const std::string &labels, std::chrono::nanoseconds time, @@ -158,10 +159,11 @@ class PrometheusExporterUtils prometheus_client::ClientMetric *metric); /** - * Handle Exact + * Handle Exact and Sketch */ template static void SetValue(std::vector values, + metric_sdk::AggregatorKind kind, std::vector quantiles, prometheus_client::ClientMetric *metric); }; From f166482366dfb848244dd48e0e9f0526f37b8998 Mon Sep 17 00:00:00 2001 From: Cunjun Wang Date: Thu, 6 Aug 2020 15:04:17 -0400 Subject: [PATCH 08/11] modify comments --- .../exporters/prometheus/prometheus_exporter_utils.h | 1 + 1 file changed, 1 insertion(+) diff --git a/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h b/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h index 1c1124fbde..72743921a3 100644 --- a/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h +++ b/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h @@ -107,6 +107,7 @@ class PrometheusExporterUtils /** * Set metric data for: * Exact => Prometheus Summary + * Sketch => Prometheus Summary */ template static void SetData(std::vector values, From 90143e04b361f8040ae25b16cd8e1e0d3561ca59 Mon Sep 17 00:00:00 2001 From: Cunjun Wang Date: Fri, 7 Aug 2020 11:04:40 -0400 Subject: [PATCH 09/11] add copyright headers and add a new line at the end of file --- exporters/prometheus/BUILD | 2 +- exporters/prometheus/CMakeLists.txt | 16 +++++++++++++++- .../prometheus/prometheus_exporter_utils.h | 18 +++++++++++++++++- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/exporters/prometheus/BUILD b/exporters/prometheus/BUILD index e7d932ea14..20e9b2aa0f 100644 --- a/exporters/prometheus/BUILD +++ b/exporters/prometheus/BUILD @@ -101,4 +101,4 @@ cc_test( ":prometheus_utils", "@com_google_googletest//:gtest_main" ], -) \ No newline at end of file +) diff --git a/exporters/prometheus/CMakeLists.txt b/exporters/prometheus/CMakeLists.txt index 91975a4c7c..ea896e44ba 100644 --- a/exporters/prometheus/CMakeLists.txt +++ b/exporters/prometheus/CMakeLists.txt @@ -1,3 +1,17 @@ +# Copyright 2020, OpenTelemetry Authors +# +# 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. + include_directories(include) find_package(prometheus-cpp CONFIG REQUIRED) @@ -9,4 +23,4 @@ target_link_libraries( prometheus_exporter_test ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} prometheus_exporter prometheus-cpp::pull) gtest_add_tests(TARGET prometheus_exporter_test TEST_PREFIX exporter. TEST_LIST - prometheus_exporter_test) \ No newline at end of file + prometheus_exporter_test) diff --git a/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h b/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h index 72743921a3..34ed0bfb40 100644 --- a/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h +++ b/exporters/prometheus/include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h @@ -1,3 +1,19 @@ +/* + * Copyright The OpenTelemetry Authors + * + * 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. + */ + #pragma once #include @@ -170,4 +186,4 @@ class PrometheusExporterUtils }; } // namespace prometheus } // namespace exporter -OPENTELEMETRY_END_NAMESPACE \ No newline at end of file +OPENTELEMETRY_END_NAMESPACE From f1d9dedd63244acdca6cbcbf41ce5838bd30f24d Mon Sep 17 00:00:00 2001 From: Cunjun Wang Date: Fri, 7 Aug 2020 13:23:23 -0400 Subject: [PATCH 10/11] run format script --- WORKSPACE | 4 ++-- exporters/prometheus/BUILD | 32 ++++++++++++++--------------- exporters/prometheus/CMakeLists.txt | 15 +++++++++----- 3 files changed, 28 insertions(+), 23 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index 49316f9981..6ae42f2592 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -23,7 +23,7 @@ http_archive( name = "com_github_grpc_grpc", strip_prefix = "grpc-1.28.0", urls = [ - "https://github.com/grpc/grpc/archive/v1.28.0.tar.gz", + "https://github.com/grpc/grpc/archive/v1.28.0.tar.gz", ], ) @@ -79,9 +79,9 @@ http_archive( urls = ["https://github.com/google/benchmark/archive/v1.5.0.tar.gz"], ) - # C++ Prometheus Client library. load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file") + http_archive( name = "com_github_jupp0r_prometheus_cpp", strip_prefix = "prometheus-cpp-master", diff --git a/exporters/prometheus/BUILD b/exporters/prometheus/BUILD index 20e9b2aa0f..850ca2ed48 100644 --- a/exporters/prometheus/BUILD +++ b/exporters/prometheus/BUILD @@ -20,17 +20,17 @@ cc_library( "src/prometheus_exporter.cc", ], hdrs = [ - "include/opentelemetry/exporters/prometheus/prometheus_exporter.h", "include/opentelemetry/exporters/prometheus/prometheus_collector.h", + "include/opentelemetry/exporters/prometheus/prometheus_exporter.h", "include/opentelemetry/exporters/prometheus/prometheus_exporter_utils.h", ], strip_include_prefix = "include", deps = [ + "//api", + "//sdk:headers", "@com_github_jupp0r_prometheus_cpp//core", "@com_github_jupp0r_prometheus_cpp//pull", - "//sdk:headers", - "//api:api" - ] + ], ) cc_library( @@ -45,10 +45,10 @@ cc_library( strip_include_prefix = "include", deps = [ ":prometheus_utils", - "@com_github_jupp0r_prometheus_cpp//core", + "//api", "//sdk:headers", - "//api:api" - ] + "@com_github_jupp0r_prometheus_cpp//core", + ], ) cc_library( @@ -61,10 +61,10 @@ cc_library( ], strip_include_prefix = "include", deps = [ - "@com_github_jupp0r_prometheus_cpp//core", + "//api", "//sdk:headers", - "//api:api" - ] + "@com_github_jupp0r_prometheus_cpp//core", + ], ) cc_test( @@ -75,30 +75,30 @@ cc_test( deps = [ ":prometheus_collector", ":prometheus_exporter", - "@com_github_jupp0r_prometheus_cpp//pull", "@com_github_jupp0r_prometheus_cpp//core", - "@com_google_googletest//:gtest_main" + "@com_github_jupp0r_prometheus_cpp//pull", + "@com_google_googletest//:gtest_main", ], ) cc_test( name = "prometheus_collector_test", srcs = [ - "test/prometheus_collector_test.cc" + "test/prometheus_collector_test.cc", ], deps = [ ":prometheus_collector", - "@com_google_googletest//:gtest_main" + "@com_google_googletest//:gtest_main", ], ) cc_test( name = "prometheus_exporter_utils_test", srcs = [ - "test/prometheus_exporter_utils_test.cc" + "test/prometheus_exporter_utils_test.cc", ], deps = [ ":prometheus_utils", - "@com_google_googletest//:gtest_main" + "@com_google_googletest//:gtest_main", ], ) diff --git a/exporters/prometheus/CMakeLists.txt b/exporters/prometheus/CMakeLists.txt index ea896e44ba..be49a40c7b 100644 --- a/exporters/prometheus/CMakeLists.txt +++ b/exporters/prometheus/CMakeLists.txt @@ -15,12 +15,17 @@ include_directories(include) find_package(prometheus-cpp CONFIG REQUIRED) -add_library(prometheus_exporter src/prometheus_exporter.cc src/prometheus_collector.cc src/prometheus_exporter_utils.cc) +add_library( + prometheus_exporter src/prometheus_exporter.cc src/prometheus_collector.cc + src/prometheus_exporter_utils.cc) -add_executable(prometheus_exporter_test test/prometheus_exporter_test.cc test/prometheus_collector_test.cc test/prometheus_exporter_utils_test.cc) +add_executable( + prometheus_exporter_test + test/prometheus_exporter_test.cc test/prometheus_collector_test.cc + test/prometheus_exporter_utils_test.cc) target_link_libraries( - prometheus_exporter_test ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} - prometheus_exporter prometheus-cpp::pull) + prometheus_exporter_test ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} + prometheus_exporter prometheus-cpp::pull) gtest_add_tests(TARGET prometheus_exporter_test TEST_PREFIX exporter. TEST_LIST - prometheus_exporter_test) + prometheus_exporter_test) From 36c22fd76a2e7281a3d28a291170a3930964a84f Mon Sep 17 00:00:00 2001 From: Cunjun Wang Date: Fri, 14 Aug 2020 15:00:42 -0400 Subject: [PATCH 11/11] remove test configuration from CMakeLists.txt for exporter --- exporters/prometheus/CMakeLists.txt | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/exporters/prometheus/CMakeLists.txt b/exporters/prometheus/CMakeLists.txt index be49a40c7b..8c2ae89334 100644 --- a/exporters/prometheus/CMakeLists.txt +++ b/exporters/prometheus/CMakeLists.txt @@ -16,16 +16,9 @@ include_directories(include) find_package(prometheus-cpp CONFIG REQUIRED) add_library( - prometheus_exporter src/prometheus_exporter.cc src/prometheus_collector.cc - src/prometheus_exporter_utils.cc) + prometheus_exporter src/prometheus_exporter.cc src/prometheus_collector.cc + src/prometheus_exporter_utils.cc) -add_executable( - prometheus_exporter_test - test/prometheus_exporter_test.cc test/prometheus_collector_test.cc - test/prometheus_exporter_utils_test.cc) - -target_link_libraries( - prometheus_exporter_test ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} - prometheus_exporter prometheus-cpp::pull) -gtest_add_tests(TARGET prometheus_exporter_test TEST_PREFIX exporter. TEST_LIST - prometheus_exporter_test) +if (BUILD_TESTING) + add_subdirectory(test) +endif ()