diff --git a/parent-0.16.0.tar.gz b/parent-0.16.0.tar.gz new file mode 100644 index 0000000..72979af --- /dev/null +++ b/parent-0.16.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec559ab546f5af67670afe747022fe198088ea5a5baafa3071747a9ccb927fe4 +size 245785 diff --git a/parent-0.8.0.tar.gz b/parent-0.8.0.tar.gz deleted file mode 100644 index 5ac4daa..0000000 --- a/parent-0.8.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4e2567d9b6baaa2043d0487ab8d9524a266519be3b4848a41a80ad2a74915a9a -size 162801 diff --git a/prometheus-simpleclient-java.changes b/prometheus-simpleclient-java.changes index 5859393..bf9cbe7 100644 --- a/prometheus-simpleclient-java.changes +++ b/prometheus-simpleclient-java.changes @@ -1,3 +1,122 @@ +------------------------------------------------------------------- +Tue Nov 26 11:30:00 UTC 2024 - Fridrich Strba + +- Update to upstream version 0.16.0 + * Bugfixes: + + Don't throw NPE if .help() wasn't called + + Don't wrap a RuntimeException in another RuntimeException. + + Make pushgateway module compile on Java 11 + + Make sure GZIPOutputStream is always closed for httpserver + + Specify the charset of HTTPServer response for systems not + using utf-8 by default + + Use bundle everywhere so that + client_java works with OSGI again. + + use the correct name for the metric type gaugehistogram in + OpenMetrics (previously this was wrongly named + gauge_histogram) + + Correct handling of HEAD requests. + + Apply ServletConfig during Servlet initialization in + simpleclient_servlet and simpleclient_servlet_jakarta + + HTTPServer: Don't send a Content-Length header when + Transfer-Encoding is chunked. + + simpleclient_log4j set the log4j dependency scope as provided + so that users don't accidentally pull the log4j version used + in client_java. + Note: This module is for monitoring log4j version 1, + in simpleclient_log4j2 the dependency is already provided. + + simpleclient_dropwizard set the Dropwizard dependency scope as + provided so that users don't accidentally pull the Dropwizard + version used in client_java. + + Fix missing Dropwizard metrics in Vertx. + + Fix incorrect buffer size in the Servlet exporter. + + Fix sample name filter for the JMX metric + jvm_memory_bytes_committed. + * Enhancements: + + Bump caffeine dependency to 2.7.0 to support AsyncCache. + + Added health check api to simpleclient_httpserver. + + Remove dependency on sun.misc.Unsafe, allowing building on + JDK11 + + Wrap PrintWriter with BufferedWriter, making servlet + exposition about 2x faster + + Handle empty label values for the pushgateway + + Add Bill of Materials + + Count HTTP statuses returned for servlet filter + + Introduce TestContainers integration test, for example for + testing different Java versions. This means you need Docker + installed to run ./mvnw verify. + + HTTPServer: Set request/response timeouts. + + HTTPServer: Make HTTPMetricHandler public so that it can be + used in a custom HTTPServer. + + New JVM memory metrics: jvm_memory_pool_collection_used_bytes, + jvm_memory_pool_collection_committed_bytes, + jvm_memory_pool_collection_max_bytes, + jvm_memory_pool_collection_init_bytes, + jvm_memory_objects_pending_finalization. + + Version bumps (junit, jetty, maven plugins) + + add support for Jakarta Servlet, implemented in the new + simpleclient_servlet_jakarta module. + + provide a way for filtering metrics by name / name prefix. + This can be configured either in the HTTPServer, or in the + Servlet exporter (both javax and Jakarta). For example, if + some JMX metrics cause performance issues, this can be used + for excluding these metrics. + + for the Servlet filter (both javax and Jakarta): Add a + parameter to strip the deployment path from the path label. + + Add HTTP Authentication to the HTTPServer #682. + + Allow passing a custom registry to the logback + InstrumentedAppender. + + Lots of more integration tests and tests with different Java + versions. + + Make HTTPMetricHandler public so that users can use them in + their own HttpServers. + + Make Base64 encoding in the HTTP authentication for the + PushGateway work with all Java versions. + + The HTTPServer can now be configured to use SSL. + + Lots of dependency version bumps. + + Environment variable PROMETHEUS_DISABLE_CREATED_SERIES=true + for disabling _created metrics. + + Support for OpenTelemetry trace sampling: Only traces that are + sampled will be used as exemplars. + + Handle thread IDs <= 0. Apparently Apache Zookeeper generates + negative thread IDs, which causes issues in jmx_exporter. + + Mark opentelemetry-api as optional to make it an optional + dependency in OSGi. + + Move servlet adapters to an internal package to avoid + duplicating classes when building OSGi bundles. + + Extend the API of the HTTPServer.Builder to allow custom + ExecutorService instances. + + Reduce the number of core threads in HTTPServer from 5 to 1. + The HTTPServer will still start up to 5 threads on demand if + there are parallel requests, but it will use only 1 thread as + long as requests are sequential. + + Optimize metric name sanitization: Replace the regular + expression with a hard-coded optimized algorithm to improve + performance. + + Lots of dependency version bumps. + * Changes: + + Switch data model to OpenMetrics. Primarily this means that + _total if present is stripped from the metric name of + counters, and _total is now always a suffix on the sample + value. This means that all Counter samples now have a _total + suffix + + The io.prometheus.client.Collector.Type enum's value UNTYPED + renamed to UNKNOWN + * Features: + + Add Info and Enumeration metric types for direct + instrumentation + + Counter, Summary, and Histogram metrics now expose a _created + sample with when their child was created + + Add support for units + + Add gauge histograms, info, stateset for custom collectors + + Support negotiating and exposing OpenMetrics for all HTTP + server exposition + + Add ability to filter metrics in DropwizardExports + + Exemplars: API for adding OpenMetrics Exemplars and + out-of-the-box integration with OpenTelemetry tracing. +- Added patch: + * remove_opentelemetry_tracer.patch + + remove dependency on opentelemetry + ------------------------------------------------------------------- Tue Sep 19 11:10:30 UTC 2023 - Fridrich Strba diff --git a/prometheus-simpleclient-java.spec b/prometheus-simpleclient-java.spec index 9c221c2..7f70586 100644 --- a/prometheus-simpleclient-java.spec +++ b/prometheus-simpleclient-java.spec @@ -1,7 +1,7 @@ # # spec file for package prometheus-simpleclient-java # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,17 +19,19 @@ %global version_id parent %global upstream_name client_java Name: prometheus-simpleclient-java -Version: 0.8.0 +Version: 0.16.0 Release: 0 Summary: Prometheus Java Suite License: Apache-2.0 AND CC0-1.0 URL: https://github.com/prometheus/client_java/ Source0: https://github.com/prometheus/client_java/archive/%{version_id}-%{version}.tar.gz +Patch1: remove_opentelemetry_tracer.patch BuildRequires: fdupes -BuildRequires: java-devel >= 1.8 BuildRequires: maven-local BuildRequires: mvn(ch.qos.logback:logback-classic) +BuildRequires: mvn(com.github.ben-manes.caffeine:caffeine) >= 2.7.0 BuildRequires: mvn(com.google.guava:guava) +BuildRequires: mvn(jakarta.servlet:jakarta.servlet-api) BuildRequires: mvn(javax.servlet:javax.servlet-api) BuildRequires: mvn(javax.xml.bind:jaxb-api) BuildRequires: mvn(log4j:log4j) @@ -37,7 +39,6 @@ BuildRequires: mvn(org.apache.felix:maven-bundle-plugin) BuildRequires: mvn(org.apache.logging.log4j:log4j-core) BuildRequires: mvn(org.eclipse.jetty:jetty-server) BuildRequires: mvn(org.eclipse.jetty:jetty-servlet) -BuildRequires: mvn(org.sonatype.oss:oss-parent:pom:) BuildArch: noarch %description @@ -49,6 +50,18 @@ Summary: Prometheus Java Suite parent pom %description parent The Prometheus Java Suite: Client Metrics, Exposition, and Examples. +%package bom +Summary: Prometheus Java Simpleclient BOM + +%description bom +Bill of Materials for the Simpleclient. + +%package caffeine +Summary: Prometheus Java Simpleclient Caffeine + +%description caffeine +Metrics collector for caffeine based caches. + %package common Summary: Prometheus Java Simpleclient Common @@ -116,11 +129,35 @@ Summary: Prometheus Java Simpleclient Pushgateway Pushgateway exporter for the simpleclient. %package servlet -Summary: Prometheus Java Simpleclient Servlet +Summary: Prometheus Java Simpleclient Servlet (javax) %description servlet +HTTP servlet exporter for the simpleclient (Javax API). + +%package servlet-common +Summary: Prometheus Java Simpleclient Servlet + +%description servlet-common HTTP servlet exporter for the simpleclient. +%package servlet-jakarta +Summary: Prometheus Java Simpleclient Servlet (jakarta) + +%description servlet-jakarta +HTTP servlet exporter for the simpleclient (Jakarta API). + +%package tracer +Summary: Prometheus Java Span Context Supplier - Parent + +%description tracer +Prometheus Java Span Context Supplier - Parent POM. + +%package tracer-common +Summary: Prometheus Java Span Context Supplier - Common + +%description tracer-common +Prometheus Java Span Context Supplier - Common. + %package javadoc Summary: Javadoc for %{name} @@ -133,30 +170,38 @@ This package contains javadoc for %{name}. # Remove included jar files find . -name \*.jar -print0 | xargs -0 rm +%pom_remove_plugin :maven-enforcer-plugin %pom_remove_plugin :maven-release-plugin %pom_remove_plugin :maven-deploy-plugin %pom_remove_plugin :maven-javadoc-plugin +%pom_remove_plugin :versions-maven-plugin -# Disable modules where we lack dependencies -for m in simpleclient_caffeine \ - simpleclient_dropwizard \ +for m in simpleclient_dropwizard \ simpleclient_hibernate \ simpleclient_spring_web \ simpleclient_spring_boot \ simpleclient_vertx \ - benchmark; do + simpleclient_vertx4 \ + integration_tests \ + benchmarks; do %pom_disable_module $m done +# Only build simpleclient_tracer_common as it's being used by an Examplar class +%pom_disable_module simpleclient_tracer_otel_agent simpleclient_tracer +%pom_disable_module simpleclient_tracer_otel simpleclient_tracer -%pom_add_dep javax.xml.bind:jaxb-api::provided simpleclient_pushgateway +# remove OpenTelemetry stuff, which we don't support +%patch -P1 -p2 +%pom_remove_dep io.prometheus:simpleclient_tracer_otel simpleclient +%pom_remove_dep io.prometheus:simpleclient_tracer_otel_agent simpleclient +%pom_add_dep io.prometheus:simpleclient_tracer_common:%{version} simpleclient -%pom_xpath_set "pom:plugin[pom:artifactId[text()='maven-compiler-plugin']]/pom:configuration/pom:source" "1.8" -%pom_xpath_set "pom:plugin[pom:artifactId[text()='maven-compiler-plugin']]/pom:configuration/pom:target" "1.8" +# Change compiler source/target version to JDK 8 level +%pom_xpath_set "pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-compiler-plugin']/pom:configuration/pom:source" "1.8" . simpleclient_hotspot +%pom_xpath_set "pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-compiler-plugin']/pom:configuration/pom:target" "1.8" . simpleclient_hotspot %build -%{mvn_build} -f -s -- \ - -Dproject.build.outputTimestamp=$(date -u -d @${SOURCE_DATE_EPOCH:-$(date +%%s)} +%%Y-%%m-%%dT%%H:%%M:%%SZ) \ - -Dsource=8 +%{mvn_build} -f -s %install %mvn_install @@ -168,6 +213,10 @@ done %files parent -f .mfiles-parent +%files bom -f .mfiles-simpleclient_bom + +%files caffeine -f .mfiles-simpleclient_caffeine + %files common -f .mfiles-simpleclient_common %files graphite_bridge -f .mfiles-simpleclient_graphite_bridge @@ -192,6 +241,14 @@ done %files servlet -f .mfiles-simpleclient_servlet +%files servlet-common -f .mfiles-simpleclient_servlet_common + +%files servlet-jakarta -f .mfiles-simpleclient_servlet_jakarta + +%files tracer -f .mfiles-simpleclient_tracer + +%files tracer-common -f .mfiles-simpleclient_tracer_common + %files javadoc -f .mfiles-javadoc %license LICENSE %doc NOTICE diff --git a/remove_opentelemetry_tracer.patch b/remove_opentelemetry_tracer.patch new file mode 100644 index 0000000..2272502 --- /dev/null +++ b/remove_opentelemetry_tracer.patch @@ -0,0 +1,49 @@ +diff --git a/client_java-parent-0.12.0/simpleclient/src/main/java/io/prometheus/client/exemplars/Tracer.java b/client_java-parent-0.12.0/simpleclient/src/main/java/io/prometheus/client/exemplars/Tracer.java +index 97ec4f4..0686268 100644 +--- a/client_java-parent-0.12.0/simpleclient/src/main/java/io/prometheus/client/exemplars/Tracer.java ++++ b/client_java-parent-0.12.0/simpleclient/src/main/java/io/prometheus/client/exemplars/Tracer.java +@@ -1,44 +1,14 @@ + package io.prometheus.client.exemplars; + +-import io.prometheus.client.exemplars.tracer.common.SpanContextSupplier; +-import io.prometheus.client.exemplars.tracer.otel.OpenTelemetrySpanContextSupplier; +-import io.prometheus.client.exemplars.tracer.otel_agent.OpenTelemetryAgentSpanContextSupplier; +- + class Tracer { + + ExemplarSampler initExemplarSampler() { +- try { +- Object spanContextSupplier = findSpanContextSupplier(); +- if (spanContextSupplier != null) { +- return new DefaultExemplarSampler((SpanContextSupplier) spanContextSupplier); +- } +- } catch (NoClassDefFoundError ignored) { +- // simpleclient_tracer_common dependency not found +- } + return null; + } + + // Avoid SpanContextSupplier in the method signature so that we can handle the NoClassDefFoundError + // even if the user excluded simpleclient_tracer_common from the classpath. + private Object findSpanContextSupplier() { +- try { +- if (OpenTelemetrySpanContextSupplier.isAvailable()) { +- return new OpenTelemetrySpanContextSupplier(); +- } +- } catch (NoClassDefFoundError ignored) { +- // tracer_otel dependency not found +- } catch (UnsupportedClassVersionError ignored) { +- // OpenTelemetry requires Java 8, but client_java might run on Java 6. +- } +- try { +- if (OpenTelemetryAgentSpanContextSupplier.isAvailable()) { +- return new OpenTelemetryAgentSpanContextSupplier(); +- } +- } catch (NoClassDefFoundError ignored) { +- // tracer_otel_agent dependency not found +- } catch (UnsupportedClassVersionError ignored) { +- // OpenTelemetry requires Java 8, but client_java might run on Java 6. +- } + return null; + } + }