Ana Guerrero 2024-11-27 21:11:02 +00:00 committed by Git OBS Bridge
commit 86aaa90614
5 changed files with 243 additions and 18 deletions

3
parent-0.16.0.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ec559ab546f5af67670afe747022fe198088ea5a5baafa3071747a9ccb927fe4
size 245785

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4e2567d9b6baaa2043d0487ab8d9524a266519be3b4848a41a80ad2a74915a9a
size 162801

View File

@ -1,3 +1,122 @@
-------------------------------------------------------------------
Tue Nov 26 11:30:00 UTC 2024 - Fridrich Strba <fstrba@suse.com>
- 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 <packaging>bundle</packaging> 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 <fstrba@suse.com>

View File

@ -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

View File

@ -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;
}
}