From e8d5836d5c6b3ad69fa477604295c7c0d5ff5730 Mon Sep 17 00:00:00 2001 From: BominRahmani Date: Wed, 5 Jun 2024 00:23:20 -0400 Subject: [PATCH 1/5] added catchpoint --- CHANGELOG.md | 574 ++++++++---------- internal/component/all/all.go | 1 + .../exporter/catchpoint/catchpoint.go | 56 ++ .../exporter/catchpoint/catchpoint_test.go | 52 ++ 4 files changed, 353 insertions(+), 330 deletions(-) create mode 100644 internal/component/prometheus/exporter/catchpoint/catchpoint.go create mode 100644 internal/component/prometheus/exporter/catchpoint/catchpoint_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index e1278c8e7aa3..fb69a6f1beb2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,11 +7,9 @@ This document contains a historical list of changes between releases. Only changes that impact end-user behavior are listed; changes to documentation or internal API changes are not present. -Main (unreleased) ------------------ +## Main (unreleased) -v0.41.1 (2024-06-07) --------------------- +## v0.41.1 (2024-06-07) ### Breaking changes @@ -23,9 +21,7 @@ v0.41.1 (2024-06-07) - Updated pyroscope to v0.4.6 introducing `symbols_map_size` and `pid_map_size` configuration. (@simonswine) - -v0.41.0 (2024-05-31) --------------------- +## v0.41.0 (2024-05-31) ### Breaking changes @@ -70,6 +66,8 @@ v0.41.0 (2024-05-31) - A new `snmp_context` configuration argument for `prometheus.exporter.snmp` and the `snmp` Static mode integration. It overrides the `context_name` parameter in the SNMP configuration file. (@ptodev) +- `prometheus.exporter.catchpoint` collects metrics from Catchpoint instance. + ### Bugfixes - Fix panic for `prometheus.exporter.snmp` and snmp_exporter integration @@ -103,8 +101,7 @@ v0.41.0 (2024-05-31) - Resync defaults for `otelcol.exporter.otlp` and `otelcol.exporter.otlphttp` with upstream. (@hainenber) -v0.40.5 (2024-05-15) --------------------- +## v0.40.5 (2024-05-15) ### Breaking changes @@ -135,28 +132,28 @@ v0.40.5 (2024-05-15) - Updating SNMP exporter from v0.24.1 to v0.26.0. -v0.40.4 (2024-04-12) --------------------- +## v0.40.4 (2024-04-12) ### Security fixes - Fixes following vulnerabilities (@ptodev) - * [CVE-2024-27304](https://github.com/advisories/GHSA-mrww-27vc-gghv) - * [CVE-2024-27289](https://github.com/advisories/GHSA-m7wr-2xf7-cm9p) - * [CVE-2024-28180](https://github.com/advisories/GHSA-c5q2-7r4c-mv6g) - * [CVE-2024-24786](https://github.com/advisories/GHSA-8r3f-844c-mc37) + - [CVE-2024-27304](https://github.com/advisories/GHSA-mrww-27vc-gghv) + - [CVE-2024-27289](https://github.com/advisories/GHSA-m7wr-2xf7-cm9p) + - [CVE-2024-28180](https://github.com/advisories/GHSA-c5q2-7r4c-mv6g) + - [CVE-2024-24786](https://github.com/advisories/GHSA-8r3f-844c-mc37) ### Enhancements - Update `prometheus.exporter.kafka` with the following functionalities (@wildum): - * GSSAPI config - * enable/disable PA_FX_FAST - * set a TLS server name - * show the offset/lag for all consumer group or only the connected ones - * set the minimum number of topics to monitor - * enable/disable auto-creation of requested topics if they don't already exist - * regex to exclude topics / groups - * added metric kafka_broker_info + + - GSSAPI config + - enable/disable PA_FX_FAST + - set a TLS server name + - show the offset/lag for all consumer group or only the connected ones + - set the minimum number of topics to monitor + - enable/disable auto-creation of requested topics if they don't already exist + - regex to exclude topics / groups + - added metric kafka_broker_info - In `prometheus.exporter.kafka`, the interpolation table used to compute estimated lag metrics is now pruned on `metadata_refresh_interval` instead of `prune_interval_seconds`. (@wildum) @@ -165,8 +162,7 @@ v0.40.4 (2024-04-12) - Update gcp_exporter to a newer version with a patch for incorrect delta histograms (@kgeckhart) -v0.40.3 (2024-03-14) --------------------- +## v0.40.3 (2024-03-14) ### Bugfixes @@ -179,110 +175,109 @@ v0.40.3 (2024-03-14) - Upgrade to Go 1.22.1 (@thampiotr) - Upgrade from OpenTelemetry Collector v0.87.0 to v0.96.0: - * [ottl]: Fix bug where named parameters needed a space after the equal sign (`=`) -https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/28511 - * [exporters] Additional enqueue_failed metrics -https://github.com/open-telemetry/opentelemetry-collector/issues/8673 - * [otelcol.receiver.kafka]: Fix issue where counting number of logs emitted could cause panic - * [otelcol.processor.k8sattributes]: The time format of k8s.pod.start_time attribute value migrated to RFC3339: -Before: 2023-07-10 12:34:39.740638 -0700 PDT m=+0.020184946 -After: 2023-07-10T12:39:53.112485-07:00 -https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/28817 - * [otelcol.processor.tail_sampling] A new `upper_threshold_ms` argument for the `latency` policy. -https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/26115 - * [otelcol.connector.spanmetrics] Add a new `events` metric. -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/27451 - * [otelcol.connector.spanmetrics] A new `max_per_data_point` argument for exemplar generation. - * https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/29242 - * [ottl] Add IsBool Converter -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/27897 - * [otelcol.processor.tail_sampling] Optimize memory performance of tailsamplingprocessor -https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/27889 - * [otelcol.connector.servicegraph] Add a `metrics_flush_interval` argument. -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/27679 - * [ottl] Add IsDouble Converter -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/27895 - * [ottl] Add new `silent` ErrorMode -https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/29710 - * [otelcol.connector.spanmetrics] A new `resource_metrics_cache_size` argument. -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/27654 - * [ottl] Add IsInt Converter -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/27894 - * [ottl] Validate that all path elements are used -https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/30042 - * [ottl] Validate Keys are used -https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/30162 - * [otelcol.receiver.vcenter] Add statement of support for version 8 of ESXi and vCenter -https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/30274 - * [ottl] Add Hour converter -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/29468 - * [otelcol.connector.spanmetrics] A new `resource_metrics_key_attributes` argument to fix broken spanmetrics counters - after a span producing service restart, when resource attributes contain dynamic/ephemeral values (e.g. process id). -https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/29711 - * [ottl] Issue with the hash value of a match group in the replace_pattern editors -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/29409 - * [ottl] Fix bug where IsBool wasn't usable -https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/30151 - * [ottl] Add flatten function -https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/30455 - * [ottl] Fix bugs with parsing of string escapes in OTTL -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/23238 - * [ottl]: Add functions for parsing CSV -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/30921 - * [ottl] Allow users to specify the format of the hashed replacement string in the `replace_pattern` editors -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/27820 - * [ottl] Add ParseKeyValue function -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/30998 - * [otelcol.receiver.opencensus] Fix memory leak on shutdown -https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/31152 - * [otelcol.processor.memory_limiter] Fix leaking goroutine -https://github.com/open-telemetry/opentelemetry-collector/issues/9099 - * Additional `http2_read_idle_timeout` and `http2_ping_timeout` arguments for HTTP clients -https://github.com/open-telemetry/opentelemetry-collector/pull/9022 - * [otelcol.auth.bearer] Fix for "401 Unauthorized" on HTTP connections -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/24656 + - [ottl]: Fix bug where named parameters needed a space after the equal sign (`=`) + https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/28511 + - [exporters] Additional enqueue_failed metrics + https://github.com/open-telemetry/opentelemetry-collector/issues/8673 + - [otelcol.receiver.kafka]: Fix issue where counting number of logs emitted could cause panic + - [otelcol.processor.k8sattributes]: The time format of k8s.pod.start_time attribute value migrated to RFC3339: + Before: 2023-07-10 12:34:39.740638 -0700 PDT m=+0.020184946 + After: 2023-07-10T12:39:53.112485-07:00 + https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/28817 + - [otelcol.processor.tail_sampling] A new `upper_threshold_ms` argument for the `latency` policy. + https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/26115 + - [otelcol.connector.spanmetrics] Add a new `events` metric. + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/27451 + - [otelcol.connector.spanmetrics] A new `max_per_data_point` argument for exemplar generation. + - https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/29242 + - [ottl] Add IsBool Converter + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/27897 + - [otelcol.processor.tail_sampling] Optimize memory performance of tailsamplingprocessor + https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/27889 + - [otelcol.connector.servicegraph] Add a `metrics_flush_interval` argument. + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/27679 + - [ottl] Add IsDouble Converter + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/27895 + - [ottl] Add new `silent` ErrorMode + https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/29710 + - [otelcol.connector.spanmetrics] A new `resource_metrics_cache_size` argument. + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/27654 + - [ottl] Add IsInt Converter + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/27894 + - [ottl] Validate that all path elements are used + https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/30042 + - [ottl] Validate Keys are used + https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/30162 + - [otelcol.receiver.vcenter] Add statement of support for version 8 of ESXi and vCenter + https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/30274 + - [ottl] Add Hour converter + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/29468 + - [otelcol.connector.spanmetrics] A new `resource_metrics_key_attributes` argument to fix broken spanmetrics counters + after a span producing service restart, when resource attributes contain dynamic/ephemeral values (e.g. process id). + https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/29711 + - [ottl] Issue with the hash value of a match group in the replace_pattern editors + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/29409 + - [ottl] Fix bug where IsBool wasn't usable + https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/30151 + - [ottl] Add flatten function + https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/30455 + - [ottl] Fix bugs with parsing of string escapes in OTTL + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/23238 + - [ottl]: Add functions for parsing CSV + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/30921 + - [ottl] Allow users to specify the format of the hashed replacement string in the `replace_pattern` editors + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/27820 + - [ottl] Add ParseKeyValue function + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/30998 + - [otelcol.receiver.opencensus] Fix memory leak on shutdown + https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/31152 + - [otelcol.processor.memory_limiter] Fix leaking goroutine + https://github.com/open-telemetry/opentelemetry-collector/issues/9099 + - Additional `http2_read_idle_timeout` and `http2_ping_timeout` arguments for HTTP clients + https://github.com/open-telemetry/opentelemetry-collector/pull/9022 + - [otelcol.auth.bearer] Fix for "401 Unauthorized" on HTTP connections + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/24656 + * Update to OTLP 1.1 -https://github.com/open-telemetry/opentelemetry-collector/pull/9588 - * [otelcol.auth.basic] Accept empty usernames. -https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/30470 - * [exporters] Do not re-enqueue failed batches, rely on the `retry_on_failure` strategy instead. -https://github.com/open-telemetry/opentelemetry-collector/issues/8382 - * [otelcol.exporter.otlphttp] A `Host` header is added automatically. -https://github.com/open-telemetry/opentelemetry-collector/issues/9395 - * [exporters] PartialSuccess is treated as success, logged as warning. -https://github.com/open-telemetry/opentelemetry-collector/issues/9243 - * [otelcol.exporter.otlphttp] Supports JSON encoding through an additional `encoding` argument. -https://github.com/open-telemetry/opentelemetry-collector/issues/6945 - * [exporters] A new `include_system_ca_certs_pool` argument for TLS config. -https://github.com/open-telemetry/opentelemetry-collector/issues/7774 - * [otelcol.receiver.vcenter] The receiver emits vCenter performance metrics with object metric label dimension. -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/30615 - * [otelcol.processor.transform] Add copy_metric function -https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/30846 - * [otelcol.exporter.loadbalancing] Optimized CPU performance -https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/30141 - * [otelcol.processor.k8sattributes] Set attributes from namespace/node labels or annotations even if node/namespaces attribute are not set. -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/28837 - * [otelcol.receiver.kafka] An additional `resolve_canonical_bootstrap_servers_only` argument -https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/26022 - * [otelcol.receiver.kafka] Add Azure Resource Log Support -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/18210 - * [otelcol.processor.resourcedetection] Add a `k8s.cluster.name` resource attribute for AKS and EKS. -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/26794 - * [otelcol.processor.resourcedetection] Add detection of `host.ip` to system detector. -https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/24450 - * [otelcol.processor.resourcedetection] Add detection of `host.mac` to system detector. -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/29587 - * [otelcol.processor.resourcedetection] Change type of `host.cpu.model.id` and `host.cpu.model.family` to string. -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/29025 - * [otelcol.processor.resourcedetection] Add a `aws.ecs.task.id` attribute -https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/8274 - * [otelcol.exporter.otlp] Additional RPC debug metrics such as `rpc_client_duration_milliseconds`. - * [otelcol.receiver.otlp] Additional RPC debug metrics such as `rpc_server_duration_milliseconds`. - - -v0.40.2 (2024-03-05) --------------------- + https://github.com/open-telemetry/opentelemetry-collector/pull/9588 + - [otelcol.auth.basic] Accept empty usernames. + https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/30470 + - [exporters] Do not re-enqueue failed batches, rely on the `retry_on_failure` strategy instead. + https://github.com/open-telemetry/opentelemetry-collector/issues/8382 + - [otelcol.exporter.otlphttp] A `Host` header is added automatically. + https://github.com/open-telemetry/opentelemetry-collector/issues/9395 + - [exporters] PartialSuccess is treated as success, logged as warning. + https://github.com/open-telemetry/opentelemetry-collector/issues/9243 + - [otelcol.exporter.otlphttp] Supports JSON encoding through an additional `encoding` argument. + https://github.com/open-telemetry/opentelemetry-collector/issues/6945 + - [exporters] A new `include_system_ca_certs_pool` argument for TLS config. + https://github.com/open-telemetry/opentelemetry-collector/issues/7774 + - [otelcol.receiver.vcenter] The receiver emits vCenter performance metrics with object metric label dimension. + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/30615 + - [otelcol.processor.transform] Add copy_metric function + https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/30846 + - [otelcol.exporter.loadbalancing] Optimized CPU performance + https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/30141 + - [otelcol.processor.k8sattributes] Set attributes from namespace/node labels or annotations even if node/namespaces attribute are not set. + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/28837 + - [otelcol.receiver.kafka] An additional `resolve_canonical_bootstrap_servers_only` argument + https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/26022 + - [otelcol.receiver.kafka] Add Azure Resource Log Support + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/18210 + - [otelcol.processor.resourcedetection] Add a `k8s.cluster.name` resource attribute for AKS and EKS. + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/26794 + - [otelcol.processor.resourcedetection] Add detection of `host.ip` to system detector. + https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/24450 + - [otelcol.processor.resourcedetection] Add detection of `host.mac` to system detector. + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/29587 + - [otelcol.processor.resourcedetection] Change type of `host.cpu.model.id` and `host.cpu.model.family` to string. + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/29025 + - [otelcol.processor.resourcedetection] Add a `aws.ecs.task.id` attribute + https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/8274 + - [otelcol.exporter.otlp] Additional RPC debug metrics such as `rpc_client_duration_milliseconds`. + - [otelcol.receiver.otlp] Additional RPC debug metrics such as `rpc_server_duration_milliseconds`. + +## v0.40.2 (2024-03-05) ### Bugfixes @@ -304,8 +299,7 @@ v0.40.2 (2024-03-05) - Change the Docker base image for Linux containers to `public.ecr.aws/ubuntu/ubuntu:mantic`. (@hainenber) -v0.40.1 (2024-02-27) --------------------- +## v0.40.1 (2024-02-27) ### Bugfixes @@ -315,8 +309,7 @@ v0.40.1 (2024-02-27) - Fix an issue where flow mode panics if the `logging` config block is given a `null` Loki receiver to write log entries to. (@rfratto) -v0.40.0 (2024-02-27) --------------------- +## v0.40.0 (2024-02-27) ### Breaking changes @@ -423,7 +416,7 @@ v0.40.0 (2024-02-27) - Fix OTEL metrics not getting collected after reload. (@hainenber) -- Fix bug in `pyroscope.ebpf` component when elf's PT_LOAD section is not page aligned. [PR](https://github.com/grafana/pyroscope/pull/2983) (@korniltsev) +- Fix bug in `pyroscope.ebpf` component when elf's PT_LOAD section is not page aligned. [PR](https://github.com/grafana/pyroscope/pull/2983) (@korniltsev) - Pyroscope eBPF profiling now respects the PID namespace Grafana Agent is running in. [PR](https://github.com/grafana/pyroscope/pull/3008) (@simonswine) @@ -450,8 +443,7 @@ v0.40.0 (2024-02-27) - Migrate away from EoL'ed `github.com/aws-sdk-go` v1. (@hainenber) -v0.39.2 (2024-1-31) --------------------- +## v0.39.2 (2024-1-31) ### Bugfixes @@ -460,8 +452,7 @@ v0.39.2 (2024-1-31) - An error will be returned in the converter from Static to Flow when `scrape_integration` is set to `true` but no `remote_write` is defined. (@erikbaranowski) -v0.39.1 (2024-01-19) --------------------- +## v0.39.1 (2024-01-19) ### Security fixes @@ -474,14 +465,14 @@ v0.39.1 (2024-01-19) - Fix issue where installing the Windows Agent Flow installer would hang then crash. (@mattdurham) -v0.39.0 (2024-01-09) --------------------- +## v0.39.0 (2024-01-09) ### Breaking changes - `otelcol.receiver.prometheus` will drop all `otel_scope_info` metrics when converting them to OTLP. (@wildum) + - If the `otel_scope_info` metric has labels `otel_scope_name` and `otel_scope_version`, - their values will be used to set OTLP Instrumentation Scope name and version respectively. + their values will be used to set OTLP Instrumentation Scope name and version respectively. - Labels of `otel_scope_info` metrics other than `otel_scope_name` and `otel_scope_version` are added as scope attributes with the matching name and version. @@ -545,6 +536,7 @@ v0.39.0 (2024-01-09) - Added 'country' mmdb-type to log pipeline-stage geoip. (@superstes) - Azure exporter enhancements for flow and static mode, (@kgeckhart) + - Allows for pulling metrics at the Azure subscription level instead of resource by resource - Disable dimension validation by default to reduce the number of exporter instances needed for full dimension coverage @@ -592,8 +584,7 @@ v0.39.0 (2024-01-09) Previously, a custom fork of v2.47.2 was used. The custom fork of v2.47.2 also contained prometheus#12729 and prometheus#12677. -v0.38.1 (2023-11-30) --------------------- +## v0.38.1 (2023-11-30) ### Security fixes @@ -624,8 +615,7 @@ v0.38.1 (2023-11-30) - Add Agent Deploy Mode to usage report. (@captncraig) -v0.38.0 (2023-11-21) --------------------- +## v0.38.0 (2023-11-21) ### Breaking changes @@ -656,13 +646,13 @@ v0.38.0 (2023-11-21) - Update version of River: - - River now supports raw strings, which are strings surrounded by backticks - instead of double quotes. Raw strings can span multiple lines, and do not - support any escape sequences. (@erikbaranowski) + - River now supports raw strings, which are strings surrounded by backticks + instead of double quotes. Raw strings can span multiple lines, and do not + support any escape sequences. (@erikbaranowski) - - River now permits using `[]` to access non-existent keys in an object. - When this is done, the access evaluates to `null`, such that `{}["foo"] - == null` is true. (@rfratto) + - River now permits using `[]` to access non-existent keys in an object. + When this is done, the access evaluates to `null`, such that `{}["foo"] +== null` is true. (@rfratto) - Added support for python profiling to `pyroscope.ebpf` component. (@korniltsev) @@ -738,7 +728,7 @@ v0.38.0 (2023-11-21) - Allow the usage of encodings other than UTF8 to be used with environment variable expansion. (@mattdurham) -- Fixed an issue where native histogram time series were being dropped silently. (@krajorama) +- Fixed an issue where native histogram time series were being dropped silently. (@krajorama) - Fix validation issue with ServiceMonitors when scrape timeout is greater than interval. (@captncraig) @@ -796,8 +786,7 @@ v0.38.0 (2023-11-21) - `loki.source.windowsevent` and `loki.source.*` changed to use a more robust positions file to prevent corruption on reboots when writing the positions file. (@mattdurham) -v0.37.4 (2023-11-06) ------------------ +## v0.37.4 (2023-11-06) ### Enhancements @@ -812,12 +801,11 @@ v0.37.4 (2023-11-06) - Added Kubernetes service resolver to static node's loadbalancing exporter and to Flow's `otelcol.exporter.loadbalancing`. (@ptodev) -v0.37.3 (2023-10-26) ------------------ +## v0.37.3 (2023-10-26) ### Bugfixes -- Fixed an issue where native histogram time series were being dropped silently. (@krajorama) +- Fixed an issue where native histogram time series were being dropped silently. (@krajorama) - Fix an issue where `remote.vault` ignored the `namespace` argument. (@rfratto) @@ -836,8 +824,7 @@ v0.37.3 (2023-10-26) - `otelcol.receiver.kafka` has a new `version` argument to change the version of the SASL Protocol for SASL authentication. -v0.37.2 (2023-10-16) ------------------ +## v0.37.2 (2023-10-16) ### Bugfixes @@ -863,16 +850,14 @@ v0.37.2 (2023-10-16) - Use Go 1.21.3 for builds. (@tpaschalis) -v0.37.1 (2023-10-10) ------------------ +## v0.37.1 (2023-10-10) ### Bugfixes - Fix the initialization of the default namespaces map for the operator and the loki.source.kubernetes component. (@wildum) -v0.37.0 (2023-10-10) ------------------ +## v0.37.0 (2023-10-10) ### Breaking changes @@ -937,7 +922,7 @@ v0.37.0 (2023-10-10) - Clustering: add IPv6 support when using advertise interfaces to assign IP addresses. (@wildum) - Add a `file_watch` block in `loki.source.file` to configure how often to poll files from disk for changes via `min_poll_frequency` and `max_poll_frequency`. - In static mode it can be configured in the global `file_watch_config` via `min_poll_frequency` and `max_poll_frequency`. (@wildum) + In static mode it can be configured in the global `file_watch_config` via `min_poll_frequency` and `max_poll_frequency`. (@wildum) - Flow: In `prometheus.exporter.blackbox`, allow setting labels for individual targets. (@spartan0x117) @@ -964,7 +949,7 @@ v0.37.0 (2023-10-10) remote_write to free memory associated with removed series sooner. (@rfratto) - Added a `disable_high_cardinality_metrics` configuration flag to `otelcol` - exporters and receivers to switch high cardinality debug metrics off. (@glindstedt) + exporters and receivers to switch high cardinality debug metrics off. (@glindstedt) - `loki.source.kafka` component now exposes internal label `__meta_kafka_offset` to indicate offset of consumed message. (@hainenber) @@ -989,6 +974,7 @@ v0.37.0 (2023-10-10) - Agent Management: Honor 503 ServiceUnavailable `Retry-After` header. (@jcreixell) - Bump opentelemetry-collector and opentelemetry-collector-contrib versions from v0.80 to v0.85 (@wildum): + - add `authoriy` attribute to `otelcol.exporter.loadbalancing` to override the default value in gRPC requests. - add `exemplars` support to `otelcol.connector.spanmetrics`. - add `exclude_dimensions` attribute to `otelcol.connector.spanmetrics` to exclude dimensions from the default set. @@ -1075,8 +1061,7 @@ v0.37.0 (2023-10-10) - Migrate NodeJS installation in CI build image away from installation script. (@hainenber) -v0.36.2 (2023-09-22) --------------------- +## v0.36.2 (2023-09-22) ### Bugfixes @@ -1088,8 +1073,7 @@ v0.36.2 (2023-09-22) - Fix `loki.source.file` race condition in cleaning up metrics when stopping to tail files. (@thampiotr) -v0.36.1 (2023-09-06) --------------------- +## v0.36.1 (2023-09-06) ### Bugfixes @@ -1121,8 +1105,7 @@ v0.36.1 (2023-09-06) - Operator: Update default config reloader version. (@captncraig) -v0.36.0 (2023-08-30) --------------------- +## v0.36.0 (2023-08-30) > **BREAKING CHANGES**: This release has breaking changes. Please read entries > carefully and consult the [upgrade guide][] for specific instructions. @@ -1144,7 +1127,7 @@ v0.36.0 (2023-08-30) - Add [godeltaprof](https://github.com/grafana/godeltaprof) profiling types (`godeltaprof_memory`, `godeltaprof_mutex`, `godeltaprof_block`) to `pyroscope.scrape` component - Flow: Allow the `logging` configuration block to tee the Agent's logs to one - or more loki.* components. (@tpaschalis) + or more loki.\* components. (@tpaschalis) - Added support for `promtail` configuration conversion in `grafana-agent convert` and `grafana-agent run` commands. (@thampiotr) @@ -1173,7 +1156,6 @@ v0.36.0 (2023-08-30) keys and values are sourced from `discovery.*` components. (@ptodev) - `otelcol.connector.spanmetrics` - creates OpenTelemetry metrics from traces. (@ptodev) - ### Enhancements - Integrations: include `direct_connect`, `discovering_mode` and `tls_basic_auth_config_path` fields for MongoDB configuration. (@gaantunes) @@ -1231,8 +1213,7 @@ v0.36.0 (2023-08-30) - Agent Management: Fix issue where an integration defined multiple times could lead to undefined behaviour. (@jcreixell) -v0.35.4 (2023-08-14) --------------------- +## v0.35.4 (2023-08-14) ### Bugfixes @@ -1242,8 +1223,7 @@ v0.35.4 (2023-08-14) - Clarify usage documentation surrounding `loki.source.file` (@joshuapare) -v0.35.3 (2023-08-09) --------------------- +## v0.35.3 (2023-08-09) ### Bugfixes @@ -1260,8 +1240,7 @@ v0.35.3 (2023-08-09) - Fix graceful termination when receiving SIGTERM/CTRL_SHUTDOWN_EVENT signals. (@tpaschalis) -v0.35.2 (2023-07-27) --------------------- +## v0.35.2 (2023-07-27) ### Bugfixes @@ -1284,8 +1263,7 @@ v0.35.2 (2023-07-27) `grafana-agentctl test-logs` functions as expected when testing tailing the systemd journal. (@rfratto) -v0.35.1 (2023-07-25) --------------------- +## v0.35.1 (2023-07-25) ### Bugfixes @@ -1293,8 +1271,7 @@ v0.35.1 (2023-07-25) Users of the static mode's service graph processor are also advised to upgrade, although the bug should theoretically not affect them. (@ptodev) -v0.35.0 (2023-07-18) --------------------- +## v0.35.0 (2023-07-18) > **BREAKING CHANGES**: This release has breaking changes. Please read entries > carefully and consult the [upgrade guide][] for specific instructions. @@ -1320,7 +1297,9 @@ v0.35.0 (2023-07-18) (@rfratto) - In the traces subsystem for Static mode, some metrics are removed and others are renamed. (@ptodev) + - Removed metrics: + - "blackbox_exporter_config_last_reload_success_timestamp_seconds" (gauge) - "blackbox_exporter_config_last_reload_successful" (gauge) - "blackbox_module_unknown_total" (counter) @@ -1446,6 +1425,7 @@ v0.35.0 (2023-07-18) - Allow `prometheus.exporter.snmp` and SNMP integration to be configured passing a YAML block. (@marctc) - Some metrics have been added to the traces subsystem for Static mode. (@ptodev) + - "traces_processor_batch_batch_send_size" (histogram) - "traces_processor_batch_batch_size_trigger_send_total" (counter) - "traces_processor_batch_metadata_cardinality" (gauge) @@ -1462,7 +1442,6 @@ v0.35.0 (2023-07-18) - Fix issue where `remote.http` incorrectly had a status of "Unknown" until the period specified by the polling frquency elapsed. (@rfratto) - - Add signing region to remote.s3 component for use with custom endpoints so that Authorization Headers work correctly when proxying requests. (@mattdurham) @@ -1499,8 +1478,7 @@ v0.35.0 (2023-07-18) - Clustering for Grafana Agent in flow mode has graduated from experimental to beta. -v0.34.3 (2023-06-27) --------------------- +## v0.34.3 (2023-06-27) ### Bugfixes @@ -1508,8 +1486,7 @@ v0.34.3 (2023-06-27) - Enforce sha256 digest signing for rpms enabling installation on FIPS-enabled OSes. (@kfriedrich123) - Fix panic from improper startup ordering in `prometheus.operator.servicemonitors`. (@captncraig) -v0.34.2 (2023-06-20) --------------------- +## v0.34.2 (2023-06-20) ### Enhancements @@ -1526,8 +1503,7 @@ v0.34.2 (2023-06-20) - Mongodb integration has been disabled for the time being due to licensing issues. (@jcreixell) -v0.34.1 (2023-06-12) --------------------- +## v0.34.1 (2023-06-12) ### Bugfixes @@ -1548,8 +1524,7 @@ v0.34.1 (2023-06-12) - Add logging to failed requests in `remote.http`. (@rfratto) -v0.34.0 (2023-06-08) --------------------- +## v0.34.0 (2023-06-08) ### Breaking changes @@ -1566,6 +1541,7 @@ v0.34.0 (2023-06-08) ### Features - New Grafana Agent Flow components: + - `loki.source.api` - receive Loki log entries over HTTP (e.g. from other agents). (@thampiotr) - `prometheus.operator.servicemonitors` discovers ServiceMonitor resources in your Kubernetes cluster and scrape the targets they reference. (@captncraig, @marctc, @jcreixell) @@ -1682,8 +1658,7 @@ v0.34.0 (2023-06-08) - Change the Docker base image for Linux containers to `ubuntu:lunar`. (@rfratto) -v0.33.2 (2023-05-11) --------------------- +## v0.33.2 (2023-05-11) ### Bugfixes @@ -1719,8 +1694,7 @@ v0.33.2 (2023-05-11) - The `phlare.scrape` Flow component `fetch profile failed` log has been set to `debug` instead of `error`. (@erikbaranowski) -v0.33.1 (2023-05-01) --------------------- +## v0.33.1 (2023-05-01) ### Bugfixes @@ -1744,8 +1718,7 @@ v0.33.1 (2023-05-01) - Support Bundles report the status of discovered log targets. (@tpaschalis) -v0.33.0 (2023-04-25) --------------------- +## v0.33.0 (2023-04-25) ### Breaking changes @@ -1754,12 +1727,12 @@ v0.33.0 (2023-04-25) compiler issues are resolved and 32-bit ARM builds are stable. (@rfratto) - Agent Management: `agent_management.api_url` config field has been replaced by -`agent_management.host`. The API path and version is now defined by the Agent. (@jcreixell) + `agent_management.host`. The API path and version is now defined by the Agent. (@jcreixell) - Agent Management: `agent_management.protocol` config field now allows defining "http" and "https" explicitly. Previously, "http" was previously used for both, with the actual protocol used inferred from the api url, which led to confusion. When upgrading, make sure to set to "https" when replacing `api_url` with `host`. (@jcreixell) - Agent Management: `agent_management.remote_config_cache_location` config field has been replaced by -`agent_management.remote_configuration.cache_location`. (@jcreixell) + `agent_management.remote_configuration.cache_location`. (@jcreixell) - Remove deprecated symbolic links to to `/bin/agent*` in Docker containers, as planned in v0.31. (@tpaschalis) @@ -1802,7 +1775,7 @@ v0.33.0 (2023-04-25) the targets they reference. (@captncraig, @marctc, @jcreixell) - `prometheus.exporter.windows` collects metrics from a Windows instance. (@jkroepke) - `prometheus.exporter.memcached` collects metrics from a Memcached server. (@spartan0x117) - - `loki.source.azure_event_hubs` reads messages from Azure Event Hub using Kafka and forwards them to other `loki` components. (@akselleirv) + - `loki.source.azure_event_hubs` reads messages from Azure Event Hub using Kafka and forwards them to other `loki` components. (@akselleirv) - Add support for Flow-specific system packages: @@ -1937,8 +1910,7 @@ v0.33.0 (2023-04-25) - Update prometheus.remote_write defaults to match new prometheus remote-write defaults. (@erikbaranowski) -v0.32.1 (2023-03-06) --------------------- +## v0.32.1 (2023-03-06) ### Bugfixes @@ -1953,8 +1925,7 @@ v0.32.1 (2023-03-06) defaulted incorrectly to the container name, causing tailers to never restart. (@rfratto) -v0.32.0 (2023-02-28) --------------------- +## v0.32.0 (2023-02-28) ### Breaking changes @@ -2103,8 +2074,7 @@ v0.32.0 (2023-02-28) - `phlare.scrape` is explicitly marked as beta. - `phlare.write` is explicitly marked as beta. -v0.31.3 (2023-02-13) --------------------- +## v0.31.3 (2023-02-13) ### Bugfixes @@ -2115,16 +2085,14 @@ v0.31.3 (2023-02-13) - `loki.source.cloudflare`: fix issue where `api_token` argument was not marked as a sensitive field. (@rfratto) -v0.31.2 (2023-02-08) --------------------- +## v0.31.2 (2023-02-08) ### Other changes - In the Agent Operator, upgrade the `prometheus-config-reloader` dependency from version 0.47.0 to version 0.62.0. (@ptodev) -v0.31.1 (2023-02-06) --------------------- +## v0.31.1 (2023-02-06) > **BREAKING CHANGES**: This release has breaking changes. Please read entries > carefully and consult the [upgrade guide][] for specific instructions. @@ -2139,8 +2107,7 @@ v0.31.1 (2023-02-06) - Support Go 1.20 for builds. Official release binaries are still produced using Go 1.19. (@rfratto) -v0.31.0 (2023-01-31) --------------------- +## v0.31.0 (2023-01-31) > **BREAKING CHANGES**: This release has breaking changes. Please read entries > carefully and consult the [upgrade guide][] for specific instructions. @@ -2235,8 +2202,7 @@ v0.31.0 (2023-01-31) - New windows containers for agent and agentctl. These can be found moving forward with the ${Version}-windows tags for grafana/agent and grafana/agentctl docker images (@erikbaranowski) -v0.30.2 (2023-01-11) --------------------- +## v0.30.2 (2023-01-11) ### Bugfixes @@ -2252,8 +2218,7 @@ v0.30.2 (2023-01-11) - Operator: Fix the handling of the enableHttp2 field as a boolean in `pod_monitor` and `service_monitor` templates. (@tpaschalis) -v0.30.1 (2022-12-23) --------------------- +## v0.30.1 (2022-12-23) ### Bugfixes @@ -2261,8 +2226,7 @@ v0.30.1 (2022-12-23) - Fix issue where some traces' metrics where not collected. (@marctc) -v0.30.0 (2022-12-20) --------------------- +## v0.30.0 (2022-12-20) > **BREAKING CHANGES**: This release has breaking changes. Please read entries > carefully and consult the [upgrade guide][] for specific instructions. @@ -2367,8 +2331,7 @@ v0.30.0 (2022-12-20) - Grafana Agent Flow has graduated from experimental to beta. -v0.29.0 (2022-11-08) --------------------- +## v0.29.0 (2022-11-08) > **BREAKING CHANGES**: This release has breaking changes. Please read entries > carefully and consult the [upgrade guide][] for specific instructions. @@ -2493,8 +2456,7 @@ v0.29.0 (2022-11-08) - Use Go 1.19.3 for builds. (@rfratto) -v0.28.1 (2022-11-03) --------------------- +## v0.28.1 (2022-11-03) ### Security @@ -2503,8 +2465,7 @@ v0.28.1 (2022-11-03) vulnerable to these issues, but the base image has been updated to remove the report from image scanners. (@rfratto) -v0.28.0 (2022-09-29) --------------------- +## v0.28.0 (2022-09-29) ### Features @@ -2529,8 +2490,7 @@ v0.28.0 (2022-09-29) - Add metrics for config reloads and config hash (@jcreixell) -v0.27.1 (2022-09-09) --------------------- +## v0.27.1 (2022-09-09) > **NOTE**: ARMv6 Docker images are no longer being published. > @@ -2544,8 +2504,7 @@ v0.27.1 (2022-09-09) - Switch docker image base from debian to ubuntu. (@captncraig) -v0.27.0 (2022-09-01) --------------------- +## v0.27.0 (2022-09-01) ### Features @@ -2571,7 +2530,7 @@ v0.27.0 (2022-09-01) ### Bugfixes - Tracing: Fixed issue with the PromSD processor using the `connection` method to discover the IP - address. It was failing to match because the port number was included in the address string. (@jphx) + address. It was failing to match because the port number was included in the address string. (@jphx) - Register prometheus discovery metrics. (@mattdurham) @@ -2589,8 +2548,7 @@ v0.27.0 (2022-09-01) - It is now possible to compile Grafana Agent using Go 1.19. (@rfratto) -v0.26.1 (2022-07-25) --------------------- +## v0.26.1 (2022-07-25) > **BREAKING CHANGES**: This release has breaking changes. Please read entries > carefully and consult the [upgrade guide][] for specific instructions. @@ -2606,8 +2564,7 @@ v0.26.1 (2022-07-25) - Build the Linux/AMD64 artifacts using the opt-out flag for the ebpf_exporter. (@tpaschalis) -v0.26.0 (2022-07-18) --------------------- +## v0.26.0 (2022-07-18) > **BREAKING CHANGES**: This release has breaking changes. Please read entries > carefully and consult the [upgrade guide][] for specific instructions. @@ -2639,8 +2596,7 @@ v0.26.0 (2022-07-18) - Fix mongodb exporter so that it now collects all metrics. (@mattdurham) -v0.25.1 (2022-06-16) --------------------- +## v0.25.1 (2022-06-16) ### Bugfixes @@ -2648,8 +2604,7 @@ v0.25.1 (2022-06-16) - Unwrap replayWAL error before attempting corruption repair. (@rlankfo) -v0.25.0 (2022-06-06) --------------------- +## v0.25.0 (2022-06-06) > **BREAKING CHANGES**: This release has breaking changes. Please read entries > carefully and consult the [upgrade guide][] for specific instructions. @@ -2695,7 +2650,7 @@ v0.25.0 (2022-06-06) ### Bugfixes -- Scraping service was not honoring the new server grpc flags `server.grpc.address`. (@mattdurham) +- Scraping service was not honoring the new server grpc flags `server.grpc.address`. (@mattdurham) ### Other changes @@ -2705,15 +2660,14 @@ v0.25.0 (2022-06-06) - Use Go 1.18 for builds. (@rfratto) - Add `metrics` prefix to the url of list instances endpoint (`GET - /agent/api/v1/instances`) and list targets endpoint (`GET - /agent/api/v1/metrics/targets`). (@marctc) +/agent/api/v1/instances`) and list targets endpoint (`GET +/agent/api/v1/metrics/targets`). (@marctc) - Add extra identifying labels (`job`, `instance`, `agent_hostname`) to eventhandler integration. (@hjet) - Add `extra_labels` configuration to eventhandler integration. (@hjet) -v0.24.2 (2022-05-02) --------------------- +## v0.24.2 (2022-05-02) ### Bugfixes @@ -2723,8 +2677,7 @@ v0.24.2 (2022-05-02) - Update version of node_exporter to include additional metrics for osx. (@v-zhuravlev) -v0.24.1 (2022-04-14) --------------------- +## v0.24.1 (2022-04-14) ### Bugfixes @@ -2749,8 +2702,7 @@ v0.24.1 (2022-04-14) - Embed timezone data to enable Promtail pipelines using the `location` field on Windows machines. (@tpaschalis) -v0.24.0 (2022-04-07) --------------------- +## v0.24.0 (2022-04-07) > **BREAKING CHANGES**: This release has breaking changes. Please read entries > carefully and consult the [upgrade guide][] for specific instructions. @@ -2881,7 +2833,7 @@ v0.24.0 (2022-04-07) custom Secrets will now be mounted at `/var/lib/grafana-agent/extra-secrets/` and custom ConfigMaps will now be mounted at `/var/lib/grafana-agent/extra-configmaps/`. This is not a breaking change as it was previously impossible to +name>`. This is not a breaking change as it was previously impossible to properly provide these custom mounts. (@rfratto) - Flags accidentally prefixed with `-metrics.service..` (two `.` in a row) have @@ -2895,8 +2847,7 @@ v0.24.0 (2022-04-07) will now default to `data-agent/`, the same default WAL directory as Prometheus Agent. (@rfratto) -v0.23.0 (2022-02-10) --------------------- +## v0.23.0 (2022-02-10) ### Enhancements @@ -2941,8 +2892,7 @@ v0.23.0 (2022-02-10) - Disable `machine-id` journal vol by default in sample logs manifest (@hjet) -v0.22.0 (2022-01-13) --------------------- +## v0.22.0 (2022-01-13) > This release has deprecations. Please read entries carefully and consult > the [upgrade guide][] for specific instructions. @@ -3029,8 +2979,7 @@ v0.22.0 (2022-01-13) - Remove log-level flag from systemd unit file (@jpkrohling) -v0.21.2 (2021-12-08) --------------------- +## v0.21.2 (2021-12-08) ### Security fixes @@ -3044,8 +2993,7 @@ v0.21.2 (2021-12-08) `--config.enable-read-api` flag at the command line to opt in to these endpoints. -v0.21.1 (2021-11-18) --------------------- +## v0.21.1 (2021-11-18) ### Bugfixes @@ -3064,8 +3012,7 @@ v0.21.1 (2021-11-18) - Metrics: Only run WAL cleaner when metrics are being used and a WAL is configured. (@rfratto) -v0.21.0 (2021-11-17) --------------------- +## v0.21.0 (2021-11-17) ### Enhancements @@ -3099,8 +3046,7 @@ v0.21.0 (2021-11-17) - Traces: Changed service graphs store implementation to improve CPU performance (@mapno) -v0.20.1 (2021-12-08) --------------------- +## v0.20.1 (2021-12-08) > _NOTE_: The fixes in this patch are only present in v0.20.1 and >=v0.21.2. @@ -3116,8 +3062,7 @@ v0.20.1 (2021-12-08) `--config.enable-read-api` flag at the command line to opt in to these endpoints. -v0.20.0 (2021-10-28) --------------------- +## v0.20.0 (2021-10-28) > **BREAKING CHANGES**: This release has breaking changes. Please read entries > carefully and consult the [upgrade guide][] for specific instructions. @@ -3149,7 +3094,7 @@ v0.20.0 (2021-10-28) - Updated elasticsearch_exporter to v1.2.1 (@gaantunes) -- Add remote write to silent Windows Installer (@mattdurham) +- Add remote write to silent Windows Installer (@mattdurham) - Updated mongodb_exporter to v0.20.7 (@rfratto) @@ -3190,8 +3135,7 @@ v0.20.0 (2021-10-28) - The windows_exporter now disables the textfile collector by default. (@rfratto) -v0.19.0 (2021-09-29) --------------------- +## v0.19.0 (2021-09-29) > **BREAKING CHANGES**: This release has breaking changes. Please read entries > carefully and consult the [upgrade guide][] for specific instructions. @@ -3253,7 +3197,7 @@ v0.19.0 (2021-09-29) - Allow reloading configuration using `SIGHUP` signal. (@tharun208) - Add HOSTNAME environment variable to service file to allow for expanding the - $HOSTNAME variable in agent config. (@dfrankel33) + $HOSTNAME variable in agent config. (@dfrankel33) - Update jsonnet-libs to 1.21 for Kubernetes 1.21+ compatability. (@MurzNN) @@ -3293,8 +3237,7 @@ v0.19.0 (2021-09-29) - Standardize scrape_interval to 1m in examples. (@mattdurham) -v0.18.4 (2021-09-14) --------------------- +## v0.18.4 (2021-09-14) ### Enhancements @@ -3308,8 +3251,7 @@ v0.18.4 (2021-09-14) - Scraping service: Ensure that a reshard is scheduled every reshard interval. (@rfratto) -v0.18.3 (2021-09-08) --------------------- +## v0.18.3 (2021-09-08) ### Bugfixes @@ -3330,22 +3272,19 @@ v0.18.3 (2021-09-08) - Scraping service: prevent more than one refresh from being queued at a time. (@rfratto) -v0.18.2 (2021-08-12) --------------------- +## v0.18.2 (2021-08-12) ### Bugfixes - Honor the prefix and remove prefix from consul list results (@mattdurham) -v0.18.1 (2021-08-09) --------------------- +## v0.18.1 (2021-08-09) ### Bugfixes - Reduce number of consul calls when ran in scrape service mode (@mattdurham) -v0.18.0 (2021-07-29) --------------------- +## v0.18.0 (2021-07-29) ### Features @@ -3364,8 +3303,7 @@ v0.18.0 (2021-07-29) - Enabled flag for integrations is not being honored. (@mattdurham) -v0.17.0 (2021-07-15) --------------------- +## v0.17.0 (2021-07-15) ### Features @@ -3377,16 +3315,14 @@ v0.17.0 (2021-07-15) - Fix race condition that may occur and result in a panic when initializing scraping service cluster. (@rfratto) -v0.16.1 (2021-06-22) --------------------- +## v0.16.1 (2021-06-22) ### Bugfixes - Fix issue where replaying a WAL caused incorrect metrics to be sent over remote write. (@rfratto) -v0.16.0 (2021-06-17) --------------------- +## v0.16.0 (2021-06-17) ### Features @@ -3407,8 +3343,7 @@ v0.16.0 (2021-06-17) that target had gone down for long enough that its series were removed from the in-memory cache (2 GC cycles). (@rfratto) -v0.15.0 (2021-06-03) --------------------- +## v0.15.0 (2021-06-03) > **BREAKING CHANGES**: This release has breaking changes. Please read entries > carefully and consult the [upgrade guide][] for specific instructions. @@ -3449,8 +3384,7 @@ v0.15.0 (2021-06-03) - Intentionally order tracing processors. (@joe-elliott) -v0.14.0 (2021-05-24) --------------------- +## v0.14.0 (2021-05-24) > **BREAKING CHANGES**: This release has breaking changes. Please read entries > carefully and consult the [upgrade guide][] for specific instructions. @@ -3493,7 +3427,7 @@ v0.14.0 (2021-05-24) against the main HTTP server. Instead, two new command-line flags have been added: `--reload-addr` and `--reload-port`. These will launch a `/-/reload`-only HTTP server that can be used to safely reload the Agent's - state. (@rfratto) + state. (@rfratto) - Add a /-/config endpoint. This endpoint will return the current configuration file with defaults applied that the Agent has loaded from disk. (@rfratto) @@ -3565,8 +3499,7 @@ v0.14.0 (2021-05-24) - Add `tempo_spanmetrics` namespace in spanmetrics (@mapno) -v0.13.1 (2021-04-09) --------------------- +## v0.13.1 (2021-04-09) ### Bugfixes @@ -3574,8 +3507,7 @@ v0.13.1 (2021-04-09) label set with duplicate labels, mirroring the behavior of Prometheus. (@rfratto) -v0.13.0 (2021-02-25) --------------------- +## v0.13.0 (2021-02-25) > The primary branch name has changed from `master` to `main`. You may have to > update your local checkouts of the repository to point at the new branch name. @@ -3614,8 +3546,7 @@ v0.13.0 (2021-02-25) - Add the ability to read and serve HTTPS integration metrics when given a set certificates (@mattdurham) -v0.12.0 (2021-02-05) --------------------- +## v0.12.0 (2021-02-05) > **BREAKING CHANGES**: This release has breaking changes. Please read entries > carefully and consult the [upgrade guide][] for specific instructions. @@ -3651,7 +3582,7 @@ v0.12.0 (2021-02-05) - Scraping service: Unhealthy Agents in the ring will no longer cause job distribution to fail. (@rfratto) -- Scraping service: Cortex ring metrics (prefixed with cortex_ring_) will now +- Scraping service: Cortex ring metrics (prefixed with cortex*ring*) will now be registered for tracking the state of the hash ring. (@rfratto) - Scraping service: instance config ownership is now determined by the hash of @@ -3669,8 +3600,7 @@ v0.12.0 (2021-02-05) - `agentctl config-check` will now work correctly when the supplied config file contains integrations. (@hoenn) -v0.11.0 (2021-01-20) --------------------- +## v0.11.0 (2021-01-20) ### Features @@ -3698,8 +3628,7 @@ v0.11.0 (2021-01-20) - The K8s manifests will no longer include the `default/kubernetes` job twice in both the DaemonSet and the Deployment. (@rfratto) -v0.10.0 (2021-01-13) --------------------- +## v0.10.0 (2021-01-13) ### Features @@ -3736,16 +3665,14 @@ v0.10.0 (2021-01-13) This was prevented by accidentally writing to a readonly volume mount. (@rfratto) -v0.9.1 (2021-01-04) -------------------- +## v0.9.1 (2021-01-04) ### Enhancements - agentctl will now be installed by the rpm and deb packages as `grafana-agentctl`. (@rfratto) -v0.9.0 (2020-12-10) -------------------- +## v0.9.0 (2020-12-10) ### Features @@ -3794,8 +3721,7 @@ v0.9.0 (2020-12-10) - The User-Agent header sent for logs will now be `GrafanaCloudAgent/` (@rfratto) -v0.8.0 (2020-11-06) -------------------- +## v0.8.0 (2020-11-06) ### Features @@ -3821,8 +3747,7 @@ v0.8.0 (2020-11-06) rather than just logging a generic message saying that retrieving the config has failed. (@rfratto) -v0.7.2 (2020-10-29) -------------------- +## v0.7.2 (2020-10-29) ### Enhancements @@ -3845,15 +3770,13 @@ v0.7.2 (2020-10-29) - Fix issue where the `push_config` for Tempo field was expected to be `remote_write`. `push_config` now works as expected. (@rfratto) -v0.7.1 (2020-10-23) -------------------- +## v0.7.1 (2020-10-23) ### Bugfixes - Fix issue where ARM binaries were not published with the GitHub release. -v0.7.0 (2020-10-23) -------------------- +## v0.7.0 (2020-10-23) ### Features @@ -3895,8 +3818,7 @@ v0.7.0 (2020-10-23) computed by remote_write. This change should not negatively affect existing users. (@rfratto) -v0.6.1 (2020-04-11) -------------------- +## v0.6.1 (2020-04-11) ### Bugfixes @@ -3909,8 +3831,7 @@ v0.6.1 (2020-04-11) - Fix deadlock that slowly prevents the Agent from scraping targets at a high scrape volume. (@rfratto) -v0.6.0 (2020-09-04) -------------------- +## v0.6.0 (2020-09-04) ### Breaking Changes @@ -3959,7 +3880,7 @@ v0.6.0 (2020-09-04) - The subsystems of the Agent (`prometheus`, `loki`) are now made optional. Enabling integrations also implicitly enables the associated subsystem. For example, enabling the `agent` or `node_exporter` integration will force the - `prometheus` subsystem to be enabled. (@rfratto) + `prometheus` subsystem to be enabled. (@rfratto) ### Bugfixes @@ -3983,8 +3904,7 @@ v0.6.0 (2020-09-04) - Fix a panic that may occur during shutdown if the WAL is closed in the middle of the WAL being truncated. (@rfratto) -v0.5.0 (2020-08-12) -------------------- +## v0.5.0 (2020-08-12) ### Features @@ -4021,8 +3941,7 @@ v0.5.0 (2020-08-12) needing to manually set the blocklist and allowlist of filesystems. (@rfratto) -v0.4.0 (2020-06-18) -------------------- +## v0.4.0 (2020-06-18) ### Features @@ -4049,8 +3968,7 @@ v0.4.0 (2020-06-18) - Enable agent host_filter in the Tanka configs, which was disabled by default by mistake. (@rfratto) -v0.3.2 (2020-05-29) -------------------- +## v0.3.2 (2020-05-29) ### Features @@ -4090,8 +4008,7 @@ v0.3.2 (2020-05-29) correctly show the pod name of the Agent instead of the exporter name. (@rfratto) -v0.3.1 (2020-05-20) -------------------- +## v0.3.1 (2020-05-20) ### Features @@ -4111,8 +4028,7 @@ v0.3.1 (2020-05-20) - `agentctl` and the config API will now validate that the YAML they receive are valid instance configs. (@rfratto) -v0.3.0 (2020-05-13) -------------------- +## v0.3.0 (2020-05-13) ### Features @@ -4139,8 +4055,7 @@ v0.3.0 (2020-05-13) - The Grafana Agent Tanka Mixins now are placed in an "Agent" folder within Grafana. (@cyriltovena) -v0.2.0 (2020-04-09) -------------------- +## v0.2.0 (2020-04-09) ### Features @@ -4150,6 +4065,7 @@ v0.2.0 (2020-04-09) (@gotjosh) These metrics are available to monitor metadata being sent: + - `prometheus_remote_storage_succeeded_metadata_total` - `prometheus_remote_storage_failed_metadata_total` - `prometheus_remote_storage_retried_metadata_total` @@ -4169,8 +4085,7 @@ v0.2.0 (2020-04-09) - Enabling host_filter will now allow metrics from node role Kubernetes service discovery to be scraped properly (e.g., cAdvisor, Kubelet). (@rfratto) -v0.1.1 (2020-03-16) -------------------- +## v0.1.1 (2020-03-16) ### Other changes @@ -4180,8 +4095,7 @@ v0.1.1 (2020-03-16) - Pass through release tag to `docker build` (@rfratto) -v0.1.0 (2020-03-16) -------------------- +## v0.1.0 (2020-03-16) > First release! diff --git a/internal/component/all/all.go b/internal/component/all/all.go index f6911eb95b30..94724a304166 100644 --- a/internal/component/all/all.go +++ b/internal/component/all/all.go @@ -100,6 +100,7 @@ import ( _ "github.com/grafana/agent/internal/component/prometheus/exporter/azure" // Import prometheus.exporter.azure _ "github.com/grafana/agent/internal/component/prometheus/exporter/blackbox" // Import prometheus.exporter.blackbox _ "github.com/grafana/agent/internal/component/prometheus/exporter/cadvisor" // Import prometheus.exporter.cadvisor + _ "github.com/grafana/agent/internal/component/prometheus/exporter/catchpoint" // Import prometheus.exporter.catchpoint _ "github.com/grafana/agent/internal/component/prometheus/exporter/cloudwatch" // Import prometheus.exporter.cloudwatch _ "github.com/grafana/agent/internal/component/prometheus/exporter/consul" // Import prometheus.exporter.consul _ "github.com/grafana/agent/internal/component/prometheus/exporter/dnsmasq" // Import prometheus.exporter.dnsmasq diff --git a/internal/component/prometheus/exporter/catchpoint/catchpoint.go b/internal/component/prometheus/exporter/catchpoint/catchpoint.go new file mode 100644 index 000000000000..a230a35f427d --- /dev/null +++ b/internal/component/prometheus/exporter/catchpoint/catchpoint.go @@ -0,0 +1,56 @@ +package catchpoint + +import ( + "github.com/grafana/agent/component" + "github.com/grafana/agent/component/prometheus/exporter" + "github.com/grafana/agent/pkg/integrations" + "github.com/grafana/agent/pkg/integrations/catchpoint_exporter" + "github.com/grafana/agent/pkg/river/rivertypes" + config_util "github.com/prometheus/common/config" +) + +func init() { + component.Register(component.Registration{ + Name: "prometheus.exporter.catchpoint", + Args: Arguments{}, + Exports: exporter.Exports{}, + Build: exporter.New(createExporter, "catchpoint"), + }) +} + +func createExporter(opts component.Options, args component.Arguments) (integrations.Integration, error) { + a := args.(Arguments) + return a.Convert().NewIntegration(opts.Logger) +} + +// DefaultArguments holds the default settings for the catchpoint exporter +var DefaultArguments = Arguments{ + Verbose: false, + WebhookPath: "/catchpoint-webhook", + Port: "9090", +} + +// Arguments controls the catchpoint exporter. +type Arguments struct { + Verbose bool `river:"verbose,attr"` + WebhookPath string `river:"webhookpath,attr"` + Port string `river:"port,attr"` + +} + +// UnmarshalRiver implements River unmarshalling for Arguments. +func (a *Arguments) UnmarshalRiver(f func(interface{}) error) error { + *a = DefaultArguments + + type args Arguments + return f((*args)(a)) +} + +func (a *Arguments) Convert() *catchpoint_exporter.Config { + return &catchpoint_exporter.Config{ + Verbose: a.Verbose, + WebhookPath: a.WebhookPath, + Port: a.Port, + } +} + diff --git a/internal/component/prometheus/exporter/catchpoint/catchpoint_test.go b/internal/component/prometheus/exporter/catchpoint/catchpoint_test.go new file mode 100644 index 000000000000..4a05a76969c2 --- /dev/null +++ b/internal/component/prometheus/exporter/catchpoint/catchpoint_test.go @@ -0,0 +1,52 @@ +package catchpoint + +import ( + "testing" + + "github.com/grafana/agent/pkg/integrations/catchpoint_exporter" + "github.com/grafana/agent/pkg/river" + "github.com/grafana/agent/pkg/river/rivertypes" + config_util "github.com/prometheus/common/config" + "github.com/stretchr/testify/require" +) + +func TestRiverUnmarshal(t *testing.T) { + riverConfig := ` + port = "3030" + verbose = true + webhookpath = "/nondefault-webhook-path" + ` + + var args Arguments + err := river.Unmarshal([]byte(riverConfig), &args) + require.NoError(t, err) + + expected := Arguments{ + Verbose: true, + Port: "3030", + WebhookPath: "/nondefault-webhook-path", + } + + require.Equal(t, expected, args) +} + +func TestConvert(t *testing.T) { + riverConfig := ` + port = "3030" + verbose = true + webhookpath = "/nondefault-webhook-path" + ` + + var args Arguments + err := river.Unmarshal([]byte(riverConfig), &args) + require.NoError(t, err) + + res := args.Convert() + + expected := catchpoint_exporter.Config{ + Verbose: true, + Port: "3030", + WebhookPath: "/nondefault-webhook-path", + } + require.Equal(t, expected, *res) +} From d8aa0d1aac0fa1b6f30498b39d49c7d3cb720b77 Mon Sep 17 00:00:00 2001 From: BominRahmani Date: Wed, 5 Jun 2024 15:40:55 -0400 Subject: [PATCH 2/5] progress --- .../exporter/catchpoint/catchpoint.go | 44 ++++++------ .../exporter/catchpoint/catchpoint_test.go | 8 +-- .../catchpoint_exporter.go | 69 +++++++++++++++++++ .../catchpoint_exporter_test.go | 64 +++++++++++++++++ 4 files changed, 157 insertions(+), 28 deletions(-) create mode 100644 static/integrations/catchpoint_exporter/catchpoint_exporter.go create mode 100644 static/integrations/catchpoint_exporter/catchpoint_exporter_test.go diff --git a/internal/component/prometheus/exporter/catchpoint/catchpoint.go b/internal/component/prometheus/exporter/catchpoint/catchpoint.go index a230a35f427d..c180f8e84c8f 100644 --- a/internal/component/prometheus/exporter/catchpoint/catchpoint.go +++ b/internal/component/prometheus/exporter/catchpoint/catchpoint.go @@ -1,41 +1,40 @@ package catchpoint import ( - "github.com/grafana/agent/component" - "github.com/grafana/agent/component/prometheus/exporter" - "github.com/grafana/agent/pkg/integrations" - "github.com/grafana/agent/pkg/integrations/catchpoint_exporter" - "github.com/grafana/agent/pkg/river/rivertypes" - config_util "github.com/prometheus/common/config" + "github.com/grafana/agent/internal/component" + "github.com/grafana/agent/internal/component/prometheus/exporter" + "github.com/grafana/agent/internal/featuregate" + "github.com/grafana/agent/static/integrations" + "github.com/grafana/agent/static/integrations/catchpoint_exporter" ) func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.catchpoint", - Args: Arguments{}, - Exports: exporter.Exports{}, - Build: exporter.New(createExporter, "catchpoint"), + Name: "prometheus.exporter.catchpoint", + Stability: featuregate.StabilityStable, + Args: Arguments{}, + Exports: exporter.Exports{}, + Build: exporter.New(createExporter, "catchpoint"), }) } -func createExporter(opts component.Options, args component.Arguments) (integrations.Integration, error) { +func createExporter(opts component.Options, args component.Arguments, defaultInstanceKey string) (integrations.Integration, string, error) { a := args.(Arguments) - return a.Convert().NewIntegration(opts.Logger) + return integrations.NewIntegrationWithInstanceKey(opts.Logger, a.Convert(), defaultInstanceKey) } // DefaultArguments holds the default settings for the catchpoint exporter var DefaultArguments = Arguments{ - Verbose: false, - WebhookPath: "/catchpoint-webhook", - Port: "9090", + Verbose: false, + WebhookPath: "/catchpoint-webhook", + Port: "9090", } // Arguments controls the catchpoint exporter. type Arguments struct { - Verbose bool `river:"verbose,attr"` - WebhookPath string `river:"webhookpath,attr"` - Port string `river:"port,attr"` - + Verbose bool `river:"verbose,attr"` + WebhookPath string `river:"webhookpath,attr"` + Port string `river:"port,attr"` } // UnmarshalRiver implements River unmarshalling for Arguments. @@ -48,9 +47,8 @@ func (a *Arguments) UnmarshalRiver(f func(interface{}) error) error { func (a *Arguments) Convert() *catchpoint_exporter.Config { return &catchpoint_exporter.Config{ - Verbose: a.Verbose, - WebhookPath: a.WebhookPath, - Port: a.Port, + Verbose: a.Verbose, + WebhookPath: a.WebhookPath, + Port: a.Port, } } - diff --git a/internal/component/prometheus/exporter/catchpoint/catchpoint_test.go b/internal/component/prometheus/exporter/catchpoint/catchpoint_test.go index 4a05a76969c2..56bd78e34093 100644 --- a/internal/component/prometheus/exporter/catchpoint/catchpoint_test.go +++ b/internal/component/prometheus/exporter/catchpoint/catchpoint_test.go @@ -3,16 +3,14 @@ package catchpoint import ( "testing" - "github.com/grafana/agent/pkg/integrations/catchpoint_exporter" - "github.com/grafana/agent/pkg/river" - "github.com/grafana/agent/pkg/river/rivertypes" - config_util "github.com/prometheus/common/config" + "github.com/grafana/agent/static/integrations/catchpoint_exporter" + "github.com/grafana/river" "github.com/stretchr/testify/require" ) func TestRiverUnmarshal(t *testing.T) { riverConfig := ` - port = "3030" + port = "3030" verbose = true webhookpath = "/nondefault-webhook-path" ` diff --git a/static/integrations/catchpoint_exporter/catchpoint_exporter.go b/static/integrations/catchpoint_exporter/catchpoint_exporter.go new file mode 100644 index 000000000000..b51578b6fcd3 --- /dev/null +++ b/static/integrations/catchpoint_exporter/catchpoint_exporter.go @@ -0,0 +1,69 @@ +package catchpoint_exporter + +import ( + "github.com/go-kit/log" + "github.com/grafana/agent/static/integrations" + integrations_v2 "github.com/grafana/agent/static/integrations/v2" + "github.com/grafana/agent/static/integrations/v2/metricsutils" + collector "github.com/grafana/catchpoint-prometheus-exporter" +) + +// DefaultConfig is the default config for the snowflake integration +var DefaultConfig = Config{ + Verbose: false, + WebhookPath: "/catchpoint-webhook", + Port: "9090", +} + +// Config is the configuration for the snowflake integration +type Config struct { + Verbose bool `yaml:"verbose,omitempty"` + WebhookPath string `yaml:"webhookpath,omitempty"` + Port string `yaml:"port,omitempty"` +} + +func (c *Config) exporterConfig() *collector.Config { + return &collector.Config{ + Verbose: c.Verbose, + WebhookPath: c.WebhookPath, + Port: string(c.Port), + } +} + +// Identifier returns a string that identifies the integration. +func (c *Config) InstanceKey(agentKey string) (string, error) { + return c.Port, nil +} + +// UnmarshalYAML implements yaml.Unmarshaler for Config +func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error { + *c = DefaultConfig + + type plain Config + return unmarshal((*plain)(c)) +} + +// Name returns the name of the integration this config is for. +func (c *Config) Name() string { + return "catchpoint" +} + +func init() { + integrations.RegisterIntegration(&Config{}) + integrations_v2.RegisterLegacy(&Config{}, integrations_v2.TypeMultiplex, metricsutils.NewNamedShim("catchpoint")) +} + +// NewIntegration creates a new integration from the config. +func (c *Config) NewIntegration(l log.Logger) (integrations.Integration, error) { + exporterConfig := c.exporterConfig() + + if err := exporterConfig.Validate(); err != nil { + return nil, err + } + + col := collector.NewCollector(l, exporterConfig) + return integrations.NewCollectorIntegration( + c.Name(), + integrations.WithCollectors(col), + ), nil +} diff --git a/static/integrations/catchpoint_exporter/catchpoint_exporter_test.go b/static/integrations/catchpoint_exporter/catchpoint_exporter_test.go new file mode 100644 index 000000000000..676c4df0b316 --- /dev/null +++ b/static/integrations/catchpoint_exporter/catchpoint_exporter_test.go @@ -0,0 +1,64 @@ +package catchpoint_exporter + +import ( + "os" + "testing" + + "github.com/go-kit/log" + "github.com/stretchr/testify/require" + "gopkg.in/yaml.v2" +) + +func TestConfig_UnmarshalYaml(t *testing.T) { + strConfig := ` + port = "3030" + verbose = true + webhookpath = "/nondefault-webhook-path" + ` + + var c Config + + require.NoError(t, yaml.UnmarshalStrict([]byte(strConfig), &c)) + + require.Equal(t, Config{ + Verbose: true, + Port: "3030", + WebhookPath: "/nondefault-webhook-path", + }, c) +} + +func TestConfig_NewIntegration(t *testing.T) { + t.Run("integration with valid config", func(t *testing.T) { + c := &Config{ + Verbose: true, + Port: "3030", + WebhookPath: "/nondefault-webhook-path", + } + + i, err := c.NewIntegration(log.NewJSONLogger(os.Stdout)) + require.NoError(t, err) + require.NotNil(t, i) + }) + + t.Run("integration with invalid config", func(t *testing.T) { + c := &Config{ + Verbose: "incorrect_value", + Port: "3030", + WebhookPath: "/nondefault-webhook-path", + } + + i, err := c.NewIntegration(log.NewJSONLogger(os.Stdout)) + require.Nil(t, i) + require.ErrorContains(t, err, "") + }) +} + +func TestConfig_AgentKey(t *testing.T) { + c := DefaultConfig + c.Port = "3030" + + ik := "agent-key" + id, err := c.InstanceKey(ik) + require.NoError(t, err) + require.Equal(t, "localhost:3030", id) +} From 38a7369cc303df7641eedc1381fc609c8dad0933 Mon Sep 17 00:00:00 2001 From: BominRahmani Date: Fri, 7 Jun 2024 08:58:49 -0400 Subject: [PATCH 3/5] added docs + altered catchpoint static/internal --- .../prometheus.exporter.catchpoint.md | 114 ++++++++++++++++++ go.mod | 1 + go.sum | 2 + .../exporter/catchpoint/catchpoint.go | 18 +-- .../exporter/catchpoint/catchpoint_test.go | 24 ++-- .../catchpoint_exporter.go | 29 ++--- .../catchpoint_exporter_test.go | 33 ++--- 7 files changed, 161 insertions(+), 60 deletions(-) create mode 100644 docs/sources/flow/reference/components/prometheus.exporter.catchpoint.md diff --git a/docs/sources/flow/reference/components/prometheus.exporter.catchpoint.md b/docs/sources/flow/reference/components/prometheus.exporter.catchpoint.md new file mode 100644 index 000000000000..2f1218efd45c --- /dev/null +++ b/docs/sources/flow/reference/components/prometheus.exporter.catchpoint.md @@ -0,0 +1,114 @@ +--- +aliases: + - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.catchpoint/ + - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.catchpoint/ + - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.catchpoint/ + - /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.catchpoint/ +canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.catchpoint/ +description: Learn about prometheus.exporter.catchpoint +title: prometheus.exporter.catchpoint +--- + +# prometheus.exporter.catchpoint + +The `prometheus.exporter.catchpoint` component embeds +[catchpoint_exporter](https://github.com/grafana/catchpoint-prometheus-exporter) for collecting statistics from a Catchpoint account. + +## Usage + +```river +prometheus.exporter.catchpoint "LABEL" { + port = PORT + verbosity_logging = VERBOSITY_LOGGING + webhook_path = WEBHOOK_PATH +} +``` + +## Arguments + +The following arguments can be used to configure the exporter's behavior. +Omitted fields take their default values. + +| Name | Type | Description | Default | Required | +| ------------------- | -------- | ----------------------------------------------------- | ----------------------- | -------- | +| `port` | `string` | The account to collect metrics for. | `"9090"` | yes | +| `verbosity_logging` | `bool` | The username for the user used when querying metrics. | `false` | yes | +| `webhook_path` | `string` | The password for the user used when querying metrics. | `"/catchpoint-webhook"` | yes | + +## Blocks + +The `prometheus.exporter.catchpoint` component does not support any blocks, and is configured +fully through arguments. + +## Exported fields + +{{< docs/shared lookup="flow/reference/components/exporter-component-exports.md" source="agent" version="" >}} + +## Component health + +`prometheus.exporter.catchpoint` is only reported as unhealthy if given +an invalid configuration. In those cases, exported fields retain their last +healthy values. + +## Debug information + +`prometheus.exporter.catchpoint` does not expose any component-specific +debug information. + +## Debug metrics + +`prometheus.exporter.catchpoint` does not expose any component-specific +debug metrics. + +## Example + +This example uses a [`prometheus.scrape` component][scrape] to collect metrics +from `prometheus.exporter.catchpoint`: + +```river +prometheus.exporter.catchpoint "example" { + port = "9090" + verbose_logging = false + webhook_path = "/catchpoint-webhook" +} + +// Configure a prometheus.scrape component to collect catchpoint metrics. +prometheus.scrape "demo" { + targets = prometheus.exporter.catchpoint.example.targets + forward_to = [prometheus.remote_write.demo.receiver] +} + +prometheus.remote_write "demo" { + endpoint { + url = PROMETHEUS_REMOTE_WRITE_URL + + basic_auth { + username = USERNAME + password = PASSWORD + } + } +} +``` + +Replace the following: + +- `PROMETHEUS_REMOTE_WRITE_URL`: The URL of the Prometheus remote_write-compatible server to send metrics to. +- `USERNAME`: The username to use for authentication to the remote_write API. +- `PASSWORD`: The password to use for authentication to the remote_write API. + +[scrape]: {{< relref "./prometheus.scrape.md" >}} + + + +## Compatible components + +`prometheus.exporter.catchpoint` has exports that can be consumed by the following components: + +- Components that consume [Targets](../../compatibility/#targets-consumers) + +{{< admonition type="note" >}} +Connecting some components may not be sensible or components may require further configuration to make the connection work correctly. +Refer to the linked documentation for more details. +{{< /admonition >}} + + diff --git a/go.mod b/go.mod index da9ba840cc99..368c07b0913b 100644 --- a/go.mod +++ b/go.mod @@ -603,6 +603,7 @@ require ( github.com/dimchansky/utfbom v1.1.1 github.com/githubexporter/github-exporter v0.0.0-20231025122338-656e7dc33fe7 github.com/grafana/agent-remote-config v0.0.2 + github.com/grafana/catchpoint-prometheus-exporter v0.0.0-20240606062944-e55f3668661d github.com/grafana/jfr-parser/pprof v0.0.0-20240126072739-986e71dc0361 github.com/grafana/jsonparser v0.0.0-20240209175146-098958973a2d github.com/grafana/kafka_exporter v0.0.0-20240409084445-5e3488ad9f9a diff --git a/go.sum b/go.sum index ea0d93d3a82c..6b009342d179 100644 --- a/go.sum +++ b/go.sum @@ -1024,6 +1024,8 @@ github.com/grafana/agent-remote-config v0.0.2 h1:s3FKgVzfY5Ij+xG0wVKgVvtDrh/Bz0Z github.com/grafana/agent-remote-config v0.0.2/go.mod h1:amyG3pVNXKcMo+kNN46yhnAXAz/m/9Ew9MRf53n7XBg= github.com/grafana/cadvisor v0.0.0-20231110094609-5f7917925dea h1:Q5f5/nJJ0SbusZjA6F6XkJuHDbl2/PqdTGw6wHsuccA= github.com/grafana/cadvisor v0.0.0-20231110094609-5f7917925dea/go.mod h1:XjiOCFjmxXIWwauV5p39Mr2Yxlpyk72uKQH1UZvd4fQ= +github.com/grafana/catchpoint-prometheus-exporter v0.0.0-20240606062944-e55f3668661d h1:6sNPBwOokfCxAyateu7iLdtyWDUzaLLShPs7F4eTLfw= +github.com/grafana/catchpoint-prometheus-exporter v0.0.0-20240606062944-e55f3668661d/go.mod h1:aGPSALDAkw18nn8M7gumhM/MbJG+zgOA3jNWTwPYtLg= github.com/grafana/ckit v0.0.0-20230906125525-c046c99a5c04 h1:tG8Qxq4dN1WqakMmsPaxaH4+OQhYg5HVsarw5acLBX8= github.com/grafana/ckit v0.0.0-20230906125525-c046c99a5c04/go.mod h1:HOnDIbkxfvVlDM5FBujt0uawGLfdpdTeqE7fIwfBmQk= github.com/grafana/cloudflare-go v0.0.0-20230110200409-c627cf6792f2 h1:qhugDMdQ4Vp68H0tp/0iN17DM2ehRo1rLEdOFe/gB8I= diff --git a/internal/component/prometheus/exporter/catchpoint/catchpoint.go b/internal/component/prometheus/exporter/catchpoint/catchpoint.go index c180f8e84c8f..01409755474f 100644 --- a/internal/component/prometheus/exporter/catchpoint/catchpoint.go +++ b/internal/component/prometheus/exporter/catchpoint/catchpoint.go @@ -25,16 +25,16 @@ func createExporter(opts component.Options, args component.Arguments, defaultIns // DefaultArguments holds the default settings for the catchpoint exporter var DefaultArguments = Arguments{ - Verbose: false, - WebhookPath: "/catchpoint-webhook", - Port: "9090", + VerboseLogging: false, + WebhookPath: "/catchpoint-webhook", + Port: "9090", } // Arguments controls the catchpoint exporter. type Arguments struct { - Verbose bool `river:"verbose,attr"` - WebhookPath string `river:"webhookpath,attr"` - Port string `river:"port,attr"` + VerboseLogging bool `river:"verbose_logging,attr"` + WebhookPath string `river:"webhook_path,attr"` + Port string `river:"port,attr"` } // UnmarshalRiver implements River unmarshalling for Arguments. @@ -47,8 +47,8 @@ func (a *Arguments) UnmarshalRiver(f func(interface{}) error) error { func (a *Arguments) Convert() *catchpoint_exporter.Config { return &catchpoint_exporter.Config{ - Verbose: a.Verbose, - WebhookPath: a.WebhookPath, - Port: a.Port, + VerboseLogging: a.VerboseLogging, + WebhookPath: a.WebhookPath, + Port: a.Port, } } diff --git a/internal/component/prometheus/exporter/catchpoint/catchpoint_test.go b/internal/component/prometheus/exporter/catchpoint/catchpoint_test.go index 56bd78e34093..8179fa1baee4 100644 --- a/internal/component/prometheus/exporter/catchpoint/catchpoint_test.go +++ b/internal/component/prometheus/exporter/catchpoint/catchpoint_test.go @@ -10,9 +10,9 @@ import ( func TestRiverUnmarshal(t *testing.T) { riverConfig := ` - port = "3030" - verbose = true - webhookpath = "/nondefault-webhook-path" + port = "3030" + verbose_logging = true + webhook_path = "/nondefault-webhook-path" ` var args Arguments @@ -20,9 +20,9 @@ func TestRiverUnmarshal(t *testing.T) { require.NoError(t, err) expected := Arguments{ - Verbose: true, - Port: "3030", - WebhookPath: "/nondefault-webhook-path", + VerboseLogging: true, + Port: "3030", + WebhookPath: "/nondefault-webhook-path", } require.Equal(t, expected, args) @@ -30,9 +30,9 @@ func TestRiverUnmarshal(t *testing.T) { func TestConvert(t *testing.T) { riverConfig := ` - port = "3030" - verbose = true - webhookpath = "/nondefault-webhook-path" + port = "3030" + verbose_logging = true + webhook_path = "/nondefault-webhook-path" ` var args Arguments @@ -42,9 +42,9 @@ func TestConvert(t *testing.T) { res := args.Convert() expected := catchpoint_exporter.Config{ - Verbose: true, - Port: "3030", - WebhookPath: "/nondefault-webhook-path", + VerboseLogging: true, + Port: "3030", + WebhookPath: "/nondefault-webhook-path", } require.Equal(t, expected, *res) } diff --git a/static/integrations/catchpoint_exporter/catchpoint_exporter.go b/static/integrations/catchpoint_exporter/catchpoint_exporter.go index b51578b6fcd3..8013716004bc 100644 --- a/static/integrations/catchpoint_exporter/catchpoint_exporter.go +++ b/static/integrations/catchpoint_exporter/catchpoint_exporter.go @@ -5,28 +5,29 @@ import ( "github.com/grafana/agent/static/integrations" integrations_v2 "github.com/grafana/agent/static/integrations/v2" "github.com/grafana/agent/static/integrations/v2/metricsutils" - collector "github.com/grafana/catchpoint-prometheus-exporter" + + collector "github.com/grafana/catchpoint-prometheus-exporter/collector" ) -// DefaultConfig is the default config for the snowflake integration +// DefaultConfig is the default config for the catchpoint integration var DefaultConfig = Config{ - Verbose: false, - WebhookPath: "/catchpoint-webhook", - Port: "9090", + VerboseLogging: false, + WebhookPath: "/catchpoint-webhook", + Port: "9090", } -// Config is the configuration for the snowflake integration +// Config is the configuration for the catchpoint integration type Config struct { - Verbose bool `yaml:"verbose,omitempty"` - WebhookPath string `yaml:"webhookpath,omitempty"` - Port string `yaml:"port,omitempty"` + VerboseLogging bool `yaml:"verbose_logging,omitempty"` + WebhookPath string `yaml:"webhook_path,omitempty"` + Port string `yaml:"port,omitempty"` } func (c *Config) exporterConfig() *collector.Config { return &collector.Config{ - Verbose: c.Verbose, - WebhookPath: c.WebhookPath, - Port: string(c.Port), + VerboseLogging: c.VerboseLogging, + WebhookPath: c.WebhookPath, + Port: c.Port, } } @@ -57,10 +58,6 @@ func init() { func (c *Config) NewIntegration(l log.Logger) (integrations.Integration, error) { exporterConfig := c.exporterConfig() - if err := exporterConfig.Validate(); err != nil { - return nil, err - } - col := collector.NewCollector(l, exporterConfig) return integrations.NewCollectorIntegration( c.Name(), diff --git a/static/integrations/catchpoint_exporter/catchpoint_exporter_test.go b/static/integrations/catchpoint_exporter/catchpoint_exporter_test.go index 676c4df0b316..a154043b2ad9 100644 --- a/static/integrations/catchpoint_exporter/catchpoint_exporter_test.go +++ b/static/integrations/catchpoint_exporter/catchpoint_exporter_test.go @@ -11,46 +11,33 @@ import ( func TestConfig_UnmarshalYaml(t *testing.T) { strConfig := ` - port = "3030" - verbose = true - webhookpath = "/nondefault-webhook-path" - ` +port: "3030" +verbose_logging: true +webhook_path: "/nondefault-webhook-path"` var c Config require.NoError(t, yaml.UnmarshalStrict([]byte(strConfig), &c)) require.Equal(t, Config{ - Verbose: true, - Port: "3030", - WebhookPath: "/nondefault-webhook-path", + VerboseLogging: true, + Port: "3030", + WebhookPath: "/nondefault-webhook-path", }, c) } func TestConfig_NewIntegration(t *testing.T) { t.Run("integration with valid config", func(t *testing.T) { c := &Config{ - Verbose: true, - Port: "3030", - WebhookPath: "/nondefault-webhook-path", + VerboseLogging: true, + Port: "3030", + WebhookPath: "/nondefault-webhook-path", } i, err := c.NewIntegration(log.NewJSONLogger(os.Stdout)) require.NoError(t, err) require.NotNil(t, i) }) - - t.Run("integration with invalid config", func(t *testing.T) { - c := &Config{ - Verbose: "incorrect_value", - Port: "3030", - WebhookPath: "/nondefault-webhook-path", - } - - i, err := c.NewIntegration(log.NewJSONLogger(os.Stdout)) - require.Nil(t, i) - require.ErrorContains(t, err, "") - }) } func TestConfig_AgentKey(t *testing.T) { @@ -60,5 +47,5 @@ func TestConfig_AgentKey(t *testing.T) { ik := "agent-key" id, err := c.InstanceKey(ik) require.NoError(t, err) - require.Equal(t, "localhost:3030", id) + require.Equal(t, "3030", id) } From b9241ca57fe41d1deef35daa63011630dd95adb5 Mon Sep 17 00:00:00 2001 From: BominRahmani Date: Fri, 7 Jun 2024 09:10:41 -0400 Subject: [PATCH 4/5] updated changelog --- CHANGELOG.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb69a6f1beb2..e9428e74b8e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,10 @@ internal API changes are not present. - Updated pyroscope to v0.4.6 introducing `symbols_map_size` and `pid_map_size` configuration. (@simonswine) +### Features + +- `prometheus.exporter.catchpoint` collects metrics from a catchpoint webhook. (@bominrahmani) + ## v0.41.0 (2024-05-31) ### Breaking changes @@ -66,8 +70,6 @@ internal API changes are not present. - A new `snmp_context` configuration argument for `prometheus.exporter.snmp` and the `snmp` Static mode integration. It overrides the `context_name` parameter in the SNMP configuration file. (@ptodev) -- `prometheus.exporter.catchpoint` collects metrics from Catchpoint instance. - ### Bugfixes - Fix panic for `prometheus.exporter.snmp` and snmp_exporter integration From b462d1e1aeb5afc853b9d9004a60ff2085a3cefc Mon Sep 17 00:00:00 2001 From: BominRahmani Date: Sun, 9 Jun 2024 23:53:09 -0400 Subject: [PATCH 5/5] added docs --- .../configuration/integrations/integrations-next/_index.md | 3 +++ internal/converter/internal/staticconvert/validate.go | 3 +++ static/integrations/install/install.go | 1 + 3 files changed, 7 insertions(+) diff --git a/docs/sources/static/configuration/integrations/integrations-next/_index.md b/docs/sources/static/configuration/integrations/integrations-next/_index.md index cfa54bfb9b8f..838ddb6ccd56 100644 --- a/docs/sources/static/configuration/integrations/integrations-next/_index.md +++ b/docs/sources/static/configuration/integrations/integrations-next/_index.md @@ -149,6 +149,9 @@ integrations: cloudwatch_configs: [- ] + + catchpoint_configs: + [- ] ``` Note that most integrations are no longer configured with the `_exporter` name. diff --git a/internal/converter/internal/staticconvert/validate.go b/internal/converter/internal/staticconvert/validate.go index 2b3c42971e29..5bafbd98d891 100644 --- a/internal/converter/internal/staticconvert/validate.go +++ b/internal/converter/internal/staticconvert/validate.go @@ -12,6 +12,7 @@ import ( "github.com/grafana/agent/static/integrations/azure_exporter" "github.com/grafana/agent/static/integrations/blackbox_exporter" "github.com/grafana/agent/static/integrations/cadvisor" + "github.com/grafana/agent/static/integrations/catchpoint_exporter" "github.com/grafana/agent/static/integrations/cloudwatch_exporter" "github.com/grafana/agent/static/integrations/consul_exporter" "github.com/grafana/agent/static/integrations/dnsmasq_exporter" @@ -149,6 +150,7 @@ func validateIntegrationsV1(integrationsConfig *v1.ManagerConfig) diag.Diagnosti case *redis_exporter.Config: case *snmp_exporter.Config: case *snowflake_exporter.Config: + case *catchpoint_exporter.Config: case *squid_exporter.Config: case *statsd_exporter.Config: case *windows_exporter.Config: @@ -196,6 +198,7 @@ func validateIntegrationsV2(integrationsConfig *v2.SubsystemOptions) diag.Diagno case *process_exporter.Config: case *redis_exporter.Config: case *snowflake_exporter.Config: + case *catchpoint_exporter.Config: case *squid_exporter.Config: case *statsd_exporter.Config: case *windows_exporter.Config: diff --git a/static/integrations/install/install.go b/static/integrations/install/install.go index 12d0aee30a0f..35ec941395a4 100644 --- a/static/integrations/install/install.go +++ b/static/integrations/install/install.go @@ -11,6 +11,7 @@ import ( _ "github.com/grafana/agent/static/integrations/azure_exporter" // register azure_exporter _ "github.com/grafana/agent/static/integrations/blackbox_exporter" // register blackbox_exporter _ "github.com/grafana/agent/static/integrations/cadvisor" // register cadvisor + _ "github.com/grafana/agent/static/integrations/catchpoint_exporter" // register catchpoint_exporter _ "github.com/grafana/agent/static/integrations/cloudwatch_exporter" // register cloudwatch_exporter _ "github.com/grafana/agent/static/integrations/consul_exporter" // register consul_exporter _ "github.com/grafana/agent/static/integrations/dnsmasq_exporter" // register dnsmasq_exporter