diff --git a/CHANGELOG.md b/CHANGELOG.md
index cdb515335bd2..512265ab8771 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -73,8 +73,6 @@ Main (unreleased)
- A new `loki.rules.kubernetes` component that discovers `PrometheusRule` Kubernetes resources and loads them into a Loki Ruler instance. (@EStork09)
-- Add `beyla.ebpf` component to automatically instrument services with eBPF. (@marctc)
-
### Bugfixes
- Fix an issue where JSON string array elements were not parsed correctly in `loki.source.cloudflare`. (@thampiotr)
diff --git a/CODEOWNERS b/CODEOWNERS
index b48a1816109b..4f1541f12dbd 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -18,5 +18,4 @@
/docs/sources/ @clayton-cornell
# Components:
-/internal/component/pyroscope/ @grafana/grafana-agent-profiling-maintainers
-/internal/component/beyla/ @marctc
\ No newline at end of file
+/component/pyroscope/ @grafana/grafana-agent-profiling-maintainers
diff --git a/README.md b/README.md
index 6e4ae7364568..e2d6aebf04df 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,14 @@
+> **Deprecation notice**: Grafana Agent has been deprecated and is now in
+> Long-Term Support mode. We recommend migrating to the new Grafana Alloy
+> collector, which is built on the foundation of Grafana Agent Flow.
+>
+> For more information, read our blog posts about Alloy and how to easily
+> migrate from Agent to Alloy:
+>
+> * [Alloy announcement blog post](https://grafana.com/blog/2024/04/09/grafana-alloy-opentelemetry-collector-with-prometheus-pipelines/)
+> * [Alloy FAQ](https://grafana.com/blog/2024/04/09/grafana-agent-to-grafana-alloy-opentelemetry-collector-faq/)
+> * [Migrate to Alloy](https://grafana.com/docs/alloy/latest/tasks/migrate/)
+
Grafana Agent is an OpenTelemetry Collector distribution with configuration
diff --git a/docs/sources/flow/reference/compatibility/_index.md b/docs/sources/flow/reference/compatibility/_index.md
index 30825a901f4b..61775bcf26b5 100644
--- a/docs/sources/flow/reference/compatibility/_index.md
+++ b/docs/sources/flow/reference/compatibility/_index.md
@@ -44,10 +44,6 @@ The following components, grouped by namespace, _export_ Targets.
-{{< collapse title="beyla" >}}
-- [beyla.ebpf](../components/beyla.ebpf)
-{{< /collapse >}}
-
{{< collapse title="discovery" >}}
- [discovery.azure](../components/discovery.azure)
- [discovery.consul](../components/discovery.consul)
@@ -319,10 +315,6 @@ The following components, grouped by namespace, _consume_ OpenTelemetry `otelcol
-{{< collapse title="beyla" >}}
-- [beyla.ebpf](../components/beyla.ebpf)
-{{< /collapse >}}
-
{{< collapse title="faro" >}}
- [faro.receiver](../components/faro.receiver)
{{< /collapse >}}
diff --git a/docs/sources/flow/reference/components/beyla.ebpf.md b/docs/sources/flow/reference/components/beyla.ebpf.md
deleted file mode 100644
index ad35b9ccba45..000000000000
--- a/docs/sources/flow/reference/components/beyla.ebpf.md
+++ /dev/null
@@ -1,276 +0,0 @@
----
-canonical: https://grafana.com/docs/agent/latest/flow/reference/components/beyla.ebpf/
-description: Learn about beyla.ebpf
-title: beyla.ebpf
-labels:
- stage: beta
----
-
-# beyla.ebpf
-
-{{< docs/shared lookup="flow/stability/beta.md" source="agent" version="" >}}
-
-The `beyla.ebpf` component is used as a wrapper for [Grafana Beyla][] which uses [eBPF][] to automatically inspect application executables and the OS networking layer, and capture trace spans related to web transactions and Rate Errors Duration (RED) metrics for Linux HTTP/S and gRPC services.
-You can configure the component to collect telemetry data from a specific port or executable path, and other criteria from Kubernetes metadata.
-The component exposes metrics that can be collected by a Prometheus scrape component, and traces that can be forwarded to an OTEL exporter component.
-
-{{< admonition type="note" >}}
-To run this component, {{< param "PRODUCT_NAME" >}} requires administrative (`sudo`) privileges, or at least it needs to be granted the `CAP_SYS_ADMIN` and `CAP_SYS_PTRACE` capability. In Kubernetes environments, app armour must be disabled for the Deployment or DaemonSet running {{< param "PRODUCT_NAME" >}}.
-{{< /admonition >}}
-
-[Grafana Beyla]: https://github.com/grafana/beyla
-[eBPF]: https://ebpf.io/
-
-## Usage
-
-```river
-beyla.ebpf "" {
-
-}
-```
-
-## Arguments
-
-`beyla.ebpf` supports the following arguments:
-
-Name | Type | Description | Default | Required
----- | ---- |-----------------------------------------------------------| ------- | --------
-`open_port` | `string` | The port of the running service for Beyla automatically instrumented with eBPF. | | no
-`excutable_name` | `string` | The name of the executable to match for Beyla automatically instrumented with eBPF. | | no
-
-
-`open_port` accepts a comma-separated list of ports (for example, `80,443`), and port ranges (for example, `8000-8999`).
-If the executable matches only one of the ports in the list, it is considered to match the selection criteria.
-
-`excutable_name` accepts a regular expression to be matched against the full executable command line, including the directory where the executable resides on the file system.
-
-## Blocks
-
-The following blocks are supported inside the definition of `beyla.ebpf`:
-
-Hierarchy | Block | Description | Required
---------- | ----- | ----------- | --------
-routes | [routes][] | Configures the routes to match HTTP paths into user-provided HTTP routes. | no
-attributes | [attributes][] | Configures the Beyla attributes for the component. | no
-attributes > kubernetes | [kubernetes][] | Configures decorating of the metrics and traces with Kubernetes metadata of the instrumented Pods. | no
-discovery | [discovery][] | Configures the discovery for instrumentable processes matching a given criteria. | no
-discovery > services | [services][] | Configures the discovery for the component. | no
-output | [output][] | Configures where to send received telemetry data. | yes
-
-The `>` symbol indicates deeper levels of nesting. For example,
-`attributes > kubernetes` refers to a `kubernetes` block defined inside an
-`attributes` block.
-
-[routes]: #routes-block
-[attributes]: #attributes-block
-[kubernetes]: #kubernetes-block
-[discovery]: #discovery-block
-[services]: #services-block
-[output]: #output-block
-
-### attributes block
-
-This block allows you to configure how some attributes for metrics and traces are decorated.
-
-It contains the following blocks:
-[kubernetes]: #kubernetes-block
-
-#### kubernetes block
-
-Name | Type | Description | Default | Required
----- | ---- |-----------------------------------------------------------| ------- | --------
-`enable` | `string` | Enable the Kubernetes metadata decoration. | `false` | no
-
-If set to `true`, Beyla will decorate the metrics and traces with Kubernetes metadata. The following labels will be added:
-
-- `k8s.namespace.name`
-- `k8s.deployment.name`
-- `k8s.statefulset.name`
-- `k8s.replicaset.name`
-- `k8s.daemonset.name`
-- `k8s.node.name`
-- `k8s.pod.name`
-- `k8s.pod.uid`
-- `k8s.pod.start_time`
-
-If set to `false`, the Kubernetes metadata decorator will be disabled.
-
-If set to `autodetect`, Beyla will try to automatically detect if it is running inside Kubernetes, and enable the metadata decoration if that is the case.
-
-
-### routes block
-
-This block is used to configure the routes to match HTTP paths into user-provided HTTP routes.
-
-Name | Type | Description | Default | Required
----- | ---- |-----------------------------------------------------------| ------- | --------
-`patterns` | `list(string)` | List of provided URL path patterns to set the `http.route` trace/metric property | | no
-`ignore_patterns` | `list(string)` | List of provided URL path patterns to ignore from `http.route` trace/metric property. | | no
-`ignore_mode` | `string` | The mode to use when ignoring patterns. | | no
-`unmatched` | `string` | Specifies what to do when a trace HTTP path does not match any of the `patterns` entries | | no
-
-`patterns` and `ignored_patterns` are a list of patterns which a URL path with specific tags which allow for grouping path segments (or ignored them).
-The matcher tags can be in the `:name` or `{name}` format.
-`ignore_mode` properties are:
-- `all` discards metrics and traces matching the `ignored_patterns`.
-- `traces` discards only the traces that match the `ignored_patterns`. No metric events are ignored.
-- `metrics` discards only the metrics that match the `ignored_patterns`. No trace events are ignored.
-`unmatched` properties are:
-- `unset` leaves the `http.route` property as unset.
-- `path` copies the `http.route` field property to the path value.
- - Caution: This option could lead to a cardinality explosion on the ingester side.
-- `wildcard` sets the `http.route` field property to a generic asterisk-based `/**` value.
-- `heuristic` automatically derives the `http.route` field property from the path value based on the following rules:
- - Any path components that have numbers or characters outside of the ASCII alphabet (or `-` and _), are replaced by an asterisk `*`.
- - Any alphabetical components that don’t look like words are replaced by an asterisk `*`.
-
-
-### discovery block
-
-This block is used to configure the discovery for instrumentable processes matching a given criteria.
-
-It contains the following blocks:
-[services]: #services-block
-
-### services block
-
-In some scenarios, Beyla will instrument a wide variety of services, such as a Kubernetes DaemonSet that instruments all the services in a node.
-This block allows you to filter the services to instrument based on their metadata.
-
-Name | Type | Description | Default | Required
----- | ---- |-----------------------------------------------------------| ------- | --------
-`name ` | `string` | The name of the service to match. | | no
-`namespace` | `string` | The namespace of the service to match. | | no
-`open_ports` | `string` | The port of the running service for Beyla automatically instrumented with eBPF. | | no
-`path` | `string` | The path of the running service for Beyla automatically instrumented with eBPF. | | no
-
-`name` defines a name for the matching instrumented service. It is used to populate the `service.name` OTEL property and/or the `service_name` Prometheus property in the exported metrics/traces.
-`open_port` accepts a comma-separated list of ports (for example, `80,443`), and port ranges (for example, `8000-8999`). If the executable matches only one of the ports in the list, it is considered to match the selection criteria.
-`path` accepts a regular expression to be matched against the full executable command line, including the directory where the executable resides on the file system.
-
-
-### output block
-
-The `output` block configures a set of components to forward the resulting telemetry data to.
-
-The following arguments are supported:
-
-Name | Type | Description | Default | Required
-----------|--------------------------|---------------------------------------|---------|---------
-`traces` | `list(otelcol.Consumer)` | List of consumers to send traces to. | `[]` | no
-
-You must specify the `output` block, but all its arguments are optional.
-By default, telemetry data is dropped.
-Configure the `traces` argument to send traces data to other components.
-
-## Exported fields
-
-The following fields are exported and can be referenced by other components.
-
-Name | Type | Description
-----------|---------------------|----------------------------------------------------------
-`targets` | `list(map(string))` | The targets that can be used to collect metrics of instrumented services with eBPF.
-
-For example, the `targets` can either be passed to a `discovery.relabel` component to rewrite the targets' label sets or to a `prometheus.scrape` component that collects the exposed metrics.
-
-The exported targets use the configured [in-memory traffic][] address specified by the [run command][].
-
-[in-memory traffic]: ../../../concepts/component_controller#in-memory-traffic
-[run command]: ../../cli/run/
-
-## Component health
-
-`beyla.ebpf` is only reported as unhealthy if given an invalid
-configuration.
-
-## Debug information
-
-`beyla.ebpf` does not expose any component-specific debug
-information.
-
-## Example
-
-### Metrics
-
-This example uses a [`prometheus.scrape` component][scrape] to collect metrics from `beyla.ebpf` of
-the specified port:
-
-```river
-beyla.ebpf "default" {
- open_port =
-}
-
-prometheus.scrape "beyla" {
- targets = beyla.ebpf.default.targets
- forward_to = [prometheus.remote_write.mimir.receiver]
-}
-
-prometheus.remote_write "demo" {
- endpoint {
- url =
-
- basic_auth {
- username =
- password =
- }
- }
-}
-```
-
-Replace the following:
-
-- _``_: The port of the running service for Beyla automatically instrumented with eBPF.
-- _``_: The URL of the Prometheus remote_write-compatible server to send metrics to.
-- _``_: The username to use for authentication to the remote_write API.
-- _``_: The password to use for authentication to the remote_write API.
-
-[scrape]: ../prometheus.scrape/
-
-### Traces
-
-This example gets traces from `beyla.ebpf` and forwards them to `otlp`:
-
-```river
-beyla.ebpf "default" {
- open_port =
- output {
- traces = [otelcol.processor.batch.default.input]
- }
-}
-
-otelcol.processor.batch "default" {
- output {
- traces = [otelcol.exporter.otlp.default.input]
- }
-}
-
-otelcol.exporter.otlp "default" {
- client {
- endpoint = env("")
- }
-}
-```
-
-Replace the following:
-
-- _``_: The port of the running service for Beyla automatically instrumented with eBPF.
-- _``_: The endpoint of the OpenTelemetry Collector to send traces to.
-
-
-
-## Compatible components
-
-`beyla.ebpf` can accept arguments from the following components:
-
-- Components that export [OpenTelemetry `otelcol.Consumer`](../../compatibility/#opentelemetry-otelcolconsumer-exporters)
-
-`beyla.ebpf` 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 >}}
-
-
\ No newline at end of file
diff --git a/go.mod b/go.mod
index c19e876cd204..4dbe3378793d 100644
--- a/go.mod
+++ b/go.mod
@@ -215,11 +215,11 @@ require (
go.uber.org/goleak v1.3.0
go.uber.org/multierr v1.11.0
go.uber.org/zap v1.27.0
- golang.org/x/crypto v0.21.0
+ golang.org/x/crypto v0.20.0
golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc
golang.org/x/net v0.21.0
golang.org/x/oauth2 v0.17.0
- golang.org/x/sys v0.18.0
+ golang.org/x/sys v0.17.0
golang.org/x/text v0.14.0
golang.org/x/time v0.5.0
google.golang.org/api v0.155.0
@@ -544,8 +544,8 @@ require (
github.com/tencentcloud/tencentcloud-sdk-go v1.0.162 // indirect
github.com/tg123/go-htpasswd v1.2.2 // indirect
github.com/tilinna/clock v1.1.0
- github.com/tklauser/go-sysconf v0.3.13 // indirect
- github.com/tklauser/numcpus v0.7.0 // indirect
+ github.com/tklauser/go-sysconf v0.3.12 // indirect
+ github.com/tklauser/numcpus v0.6.1 // indirect
github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 // indirect
github.com/uber/jaeger-lib v2.4.1+incompatible // indirect
github.com/vertica/vertica-sql-go v1.3.3 // indirect
@@ -566,7 +566,7 @@ require (
github.com/xhit/go-str2duration/v2 v2.1.0 // indirect
github.com/xo/dburl v0.20.0 // indirect
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
- github.com/yusufpapurcu/wmi v1.2.4 // indirect
+ github.com/yusufpapurcu/wmi v1.2.3 // indirect
go.etcd.io/etcd/api/v3 v3.5.10 // indirect
go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect
go.etcd.io/etcd/client/v3 v3.5.10 // indirect
@@ -577,9 +577,9 @@ require (
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
go.opentelemetry.io/otel/bridge/opencensus v1.24.0 // indirect
go4.org/netipx v0.0.0-20230125063823-8449b0a6169f // indirect
- golang.org/x/mod v0.15.0 // indirect
+ golang.org/x/mod v0.14.0 // indirect
golang.org/x/sync v0.6.0 // indirect
- golang.org/x/term v0.18.0 // indirect
+ golang.org/x/term v0.17.0 // indirect
golang.org/x/tools v0.16.1
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
@@ -607,7 +607,6 @@ require (
github.com/Shopify/sarama v1.38.1
github.com/githubexporter/github-exporter v0.0.0-20231025122338-656e7dc33fe7
github.com/grafana/agent-remote-config v0.0.2
- github.com/grafana/beyla v1.4.1-0.20240328093156-fca861576b2c
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
@@ -627,7 +626,6 @@ require (
require (
dario.cat/mergo v1.0.0 // indirect
- github.com/AlessandroPomponio/go-gibberish v0.0.0-20191004143433-a2d4156f0396 // indirect
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v4 v4.2.1 // indirect
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v2 v2.2.1 // indirect
github.com/DataDog/sketches-go v1.4.4 // indirect
@@ -639,25 +637,22 @@ require (
github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.19.0 // indirect
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.38.0 // indirect
github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.36.0 // indirect
- github.com/aws/aws-sdk-go-v2/service/ec2 v1.149.1 // indirect
+ github.com/aws/aws-sdk-go-v2/service/ec2 v1.147.0 // indirect
github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.20.0 // indirect
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.27.0 // indirect
github.com/aws/aws-sdk-go-v2/service/shield v1.24.0 // indirect
github.com/aws/aws-sdk-go-v2/service/storagegateway v1.26.0 // indirect
github.com/axiomhq/hyperloglog v0.0.0-20240124082744-24bca3a5b39b // indirect
- github.com/caarlos0/env/v9 v9.0.0 // indirect
github.com/channelmeter/iso8601duration v0.0.0-20150204201828-8da3af7a2a61 // indirect
github.com/cloudflare/circl v1.3.7 // indirect
github.com/containerd/log v0.1.0 // indirect
github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc // indirect
github.com/drone/envsubst v1.0.3 // indirect
github.com/expr-lang/expr v1.16.1 // indirect
- github.com/gavv/monotime v0.0.0-20190418164738-30dba4353424 // indirect
github.com/go-jose/go-jose/v3 v3.0.3 // indirect
github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 // indirect
github.com/golang-jwt/jwt/v5 v5.0.0 // indirect
github.com/google/gnostic-models v0.6.8 // indirect
- github.com/grafana/go-offsets-tracker v0.1.7 // indirect
github.com/grafana/jfr-parser v0.8.0 // indirect
github.com/hashicorp/go-version v1.6.0 // indirect
github.com/hetznercloud/hcloud-go/v2 v2.4.0 // indirect
@@ -665,7 +660,6 @@ require (
github.com/julienschmidt/httprouter v1.3.0 // indirect
github.com/knadh/koanf/v2 v2.1.0 // indirect
github.com/lightstep/go-expohisto v1.0.0 // indirect
- github.com/mariomac/pipes v0.9.0 // indirect
github.com/metalmatze/signal v0.0.0-20210307161603-1c9aa721a97a // indirect
github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 // indirect
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 // indirect
@@ -685,7 +679,6 @@ require (
github.com/sagikazarmark/locafero v0.4.0 // indirect
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
github.com/sercand/kuberesolver/v5 v5.1.1 // indirect
- github.com/shirou/gopsutil v3.21.11+incompatible // indirect
github.com/skeema/knownhosts v1.2.1 // indirect
github.com/sony/gobreaker v0.5.0 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
@@ -694,8 +687,6 @@ require (
github.com/tidwall/pretty v1.2.0 // indirect
github.com/tidwall/tinylru v1.1.0 // indirect
github.com/tidwall/wal v1.1.7 // indirect
- github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2 // indirect
- github.com/yl2chen/cidranger v1.0.2 // indirect
go.opentelemetry.io/collector/confmap/provider/envprovider v0.96.0 // indirect
go.opentelemetry.io/collector/confmap/provider/httpprovider v0.96.0 // indirect
go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.96.0 // indirect
@@ -706,7 +697,6 @@ require (
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.24.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0 // indirect
- golang.org/x/arch v0.7.0 // indirect
)
// NOTE: replace directives below must always be *temporary*.
diff --git a/go.sum b/go.sum
index 4d664716ca6b..a67db62650ac 100644
--- a/go.sum
+++ b/go.sum
@@ -70,8 +70,6 @@ github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
github.com/AlekSi/pointer v1.1.0 h1:SSDMPcXD9jSl8FPy9cRzoRaMJtm9g9ggGTxecRUbQoI=
github.com/AlekSi/pointer v1.1.0/go.mod h1:y7BvfRI3wXPWKXEBhU71nbnIEEZX0QTSB2Bj48UJIZE=
-github.com/AlessandroPomponio/go-gibberish v0.0.0-20191004143433-a2d4156f0396 h1:cKIHT8I2mrmw/VgdyNeACP/AvetK8AgGsiRfOC3ZjmQ=
-github.com/AlessandroPomponio/go-gibberish v0.0.0-20191004143433-a2d4156f0396/go.mod h1:2VCDG9kHYQ5vfYUqeoB7foVlcvIvB7rp9LxTELLD1qU=
github.com/Azure/azure-amqp-common-go/v3 v3.0.0/go.mod h1:SY08giD/XbhTz07tJdpw1SoxQXHPN30+DI3Z04SYqyg=
github.com/Azure/azure-event-hubs-go/v3 v3.2.0/go.mod h1:BPIIJNH/l/fVHYq3Rm6eg4clbrULrQ3q7+icmqHyyLc=
github.com/Azure/azure-pipeline-go v0.1.8/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg=
@@ -349,8 +347,8 @@ github.com/aws/aws-sdk-go-v2/service/autoscaling v1.38.0 h1:BnElrrgowaG50hoUCbBc
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.38.0/go.mod h1:6ioQn0JPZSvTdXmnUAQa9h7x8m+KU63rkgiAD1ZLnqc=
github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.36.0 h1:aQD36/NeII5cKl5tDgGgFRIIVCVofPsYQ/tYJnlVkqY=
github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.36.0/go.mod h1:EF/UkL+0uEqcqr0sKFJJIT3Jbcxgt2oWz9R0vaLNSVU=
-github.com/aws/aws-sdk-go-v2/service/ec2 v1.149.1 h1:OGZUMBYZnz+R5nkW6FS1J8UlfLeM/pKojck+74+ZQGY=
-github.com/aws/aws-sdk-go-v2/service/ec2 v1.149.1/go.mod h1:XxJNg7fIkR8cbm89i0zVZSxKpcPYsC8BWRwMIJOWbnk=
+github.com/aws/aws-sdk-go-v2/service/ec2 v1.147.0 h1:m9+QgPg/qzlxL0Oxb/dD12jzeWfuQGn9XqCWyDAipi8=
+github.com/aws/aws-sdk-go-v2/service/ec2 v1.147.0/go.mod h1:ntWksNNQcXImRQMdxab74tp+H94neF/TwQJ9Ndxb04k=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1 h1:EyBZibRTVAs6ECHZOw5/wlylS9OcTzwyjeQMudmREjE=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1/go.mod h1:JKpmtYhhPs7D97NL/ltqz7yCkERFW5dOlHyVl66ZYF8=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.0 h1:UiSyK6ent6OKpkMJN3+k5HZ4sk4UfchEaaW5wv7SblQ=
@@ -416,8 +414,6 @@ github.com/burningalchemist/sql_exporter v0.0.0-20240103092044-466b38b6abc4/go.m
github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
github.com/c2h5oh/datasize v0.0.0-20220606134207-859f65c6625b h1:6+ZFm0flnudZzdSE0JxlhR2hKnGPcNB35BjQf4RYQDY=
github.com/c2h5oh/datasize v0.0.0-20220606134207-859f65c6625b/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M=
-github.com/caarlos0/env/v9 v9.0.0 h1:SI6JNsOA+y5gj9njpgybykATIylrRMklbs5ch6wO6pc=
-github.com/caarlos0/env/v9 v9.0.0/go.mod h1:ye5mlCVMYh6tZ+vCgrs/B95sj88cg5Tlnc0XIzgZ020=
github.com/caio/go-tdigest v2.3.0+incompatible/go.mod h1:sHQM/ubZStBUmF1WbB8FAm8q9GjDajLC5T7ydxE3JHI=
github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
github.com/cenkalti/backoff v2.0.0+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
@@ -685,8 +681,6 @@ github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nos
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU=
github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
-github.com/gavv/monotime v0.0.0-20190418164738-30dba4353424 h1:Vh7rylVZRZCj6W41lRlP17xPk4Nq260H4Xo/DDYmEZk=
-github.com/gavv/monotime v0.0.0-20190418164738-30dba4353424/go.mod h1:vmp8DIyckQMXOPl0AQVHt+7n5h7Gb7hS6CUydiV8QeA=
github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I=
@@ -1026,10 +1020,6 @@ github.com/gosnmp/gosnmp v1.36.0/go.mod h1:iLcZxN2MxKhH0jPQDVMZaSNypw1ykqVi27O79
github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY=
github.com/grafana/agent-remote-config v0.0.2 h1:s3FKgVzfY5Ij+xG0wVKgVvtDrh/Bz0ZvB3D5MM7LJxU=
github.com/grafana/agent-remote-config v0.0.2/go.mod h1:amyG3pVNXKcMo+kNN46yhnAXAz/m/9Ew9MRf53n7XBg=
-github.com/grafana/beyla v1.4.1-0.20240327164442-58a6a7f202b6 h1:9AFgJEhaJuOTH0rdxB4pKUVmYtV7jRoMxutqCdFKq6k=
-github.com/grafana/beyla v1.4.1-0.20240327164442-58a6a7f202b6/go.mod h1:Sr/rrYyfY5jP8THckwt0czat+1gstouBqcJ96djHaVk=
-github.com/grafana/beyla v1.4.1-0.20240328093156-fca861576b2c h1:ZmhqaUU7ELXwIYlUMlAG5Sl2DJC4ctKyIVLny5rVtgU=
-github.com/grafana/beyla v1.4.1-0.20240328093156-fca861576b2c/go.mod h1:Sr/rrYyfY5jP8THckwt0czat+1gstouBqcJ96djHaVk=
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/ckit v0.0.0-20230906125525-c046c99a5c04 h1:tG8Qxq4dN1WqakMmsPaxaH4+OQhYg5HVsarw5acLBX8=
@@ -1040,8 +1030,6 @@ github.com/grafana/dskit v0.0.0-20240104111617-ea101a3b86eb h1:AWE6+kvtE18HP+lRW
github.com/grafana/dskit v0.0.0-20240104111617-ea101a3b86eb/go.mod h1:kkWM4WUV230bNG3urVRWPBnSJHs64y/0RmWjftnnn0c=
github.com/grafana/go-gelf/v2 v2.0.1 h1:BOChP0h/jLeD+7F9mL7tq10xVkDG15he3T1zHuQaWak=
github.com/grafana/go-gelf/v2 v2.0.1/go.mod h1:lexHie0xzYGwCgiRGcvZ723bSNyNI8ZRD4s0CLobh90=
-github.com/grafana/go-offsets-tracker v0.1.7 h1:2zBQ7iiGzvyXY7LA8kaaSiEqH/Yx82UcfRabbY5aOG4=
-github.com/grafana/go-offsets-tracker v0.1.7/go.mod h1:qcQdu7zlUKIFNUdBJlLyNHuJGW0SKWKjkrN6jtt+jds=
github.com/grafana/gocql v0.0.0-20200605141915-ba5dc39ece85/go.mod h1:crI9WX6p0IhrqB+DqIUHulRW853PaNFf7o4UprV//3I=
github.com/grafana/gomemcache v0.0.0-20231204155601-7de47a8c3cb0 h1:aLBiDMjTtXx2800iCIp+8kdjIlvGX0MF/zICQMQO2qU=
github.com/grafana/gomemcache v0.0.0-20231204155601-7de47a8c3cb0/go.mod h1:PGk3RjYHpxMM8HFPhKKo+vve3DdlPUELZLSDEFehPuU=
@@ -1509,10 +1497,6 @@ github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7
github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/mariomac/guara v0.0.0-20230621100729-42bd7716e524 h1:24nnoPrOI7cw2YZTWqDHqIchSJ07thcQDIUNnL6V+2o=
-github.com/mariomac/guara v0.0.0-20230621100729-42bd7716e524/go.mod h1:TMuTALUh4SPCDJdYOuOYIEwBgH2rzCDP1nNgj+lI8AE=
-github.com/mariomac/pipes v0.9.0 h1:spCbBgHQpCbFoI8yNZDiwsUFuKaeUSbWe1oqt0mnY8U=
-github.com/mariomac/pipes v0.9.0/go.mod h1:c4UsamVvniQ7+YX+X2mxDTTfyXOEU35pMFKZ8JD4ShE=
github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
@@ -2056,8 +2040,6 @@ github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
github.com/shirou/gopsutil v0.0.0-20181107111621-48177ef5f880/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/shirou/gopsutil v2.20.9+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
-github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
-github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/shirou/gopsutil/v3 v3.24.1 h1:R3t6ondCEvmARp3wxODhXMTLC/klMa87h2PHUw5m7QI=
github.com/shirou/gopsutil/v3 v3.24.1/go.mod h1:UU7a2MSBQa+kW1uuDq8DeEBS8kmrnQwsv2b5O513rwU=
github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc=
@@ -2194,12 +2176,10 @@ github.com/tidwall/wal v1.1.7/go.mod h1:r6lR1j27W9EPalgHiB7zLJDYu3mzW5BQP5KrzBpY
github.com/tilinna/clock v1.1.0 h1:6IQQQCo6KoBxVudv6gwtY8o4eDfhHo8ojA5dP0MfhSs=
github.com/tilinna/clock v1.1.0/go.mod h1:ZsP7BcY7sEEz7ktc0IVy8Us6boDrK8VradlKRUGfOao=
github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg=
+github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
-github.com/tklauser/go-sysconf v0.3.13 h1:GBUpcahXSpR2xN01jhkNAbTLRk2Yzgggk8IM08lq3r4=
-github.com/tklauser/go-sysconf v0.3.13/go.mod h1:zwleP4Q4OehZHGn4CYZDipCgg9usW5IJePewFCGVEa0=
+github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
-github.com/tklauser/numcpus v0.7.0 h1:yjuerZP127QG9m5Zh/mSO4wqurYil27tHrqwRoRjpr4=
-github.com/tklauser/numcpus v0.7.0/go.mod h1:bb6dMVcj8A42tSE7i32fsIUCbQNllK5iDguyOZRUzAY=
github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 h1:nrZ3ySNYwJbSpD6ce9duiP+QkD3JuLCcWkdaehUS/3Y=
github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80/go.mod h1:iFyPdL66DjUD96XmzVL3ZntbzcflLnznH0fr99w5VqE=
@@ -2274,10 +2254,6 @@ github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtX
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/xo/dburl v0.20.0 h1:v601OhM9J4Zh56R270ncM9HRgoxp39tf9+nt5ft9UD0=
github.com/xo/dburl v0.20.0/go.mod h1:B7/G9FGungw6ighV8xJNwWYQPMfn3gsi2sn5SE8Bzco=
-github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2 h1:zzrxE1FKn5ryBNl9eKOeqQ58Y/Qpo3Q9QNxKHX5uzzQ=
-github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2/go.mod h1:hzfGeIUDq/j97IG+FhNqkowIyEcD88LrW6fyU3K3WqY=
-github.com/yl2chen/cidranger v1.0.2 h1:lbOWZVCG1tCRX4u24kuM1Tb4nHqWkDxwLdoS+SevawU=
-github.com/yl2chen/cidranger v1.0.2/go.mod h1:9U1yz7WPYDwf0vpNWFaeRh0bjwz5RVgRy/9UEQfHl0g=
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -2289,9 +2265,8 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t
github.com/yuin/gopher-lua v0.0.0-20180630135845-46796da1b0b4/go.mod h1:aEV29XrmTYFr3CiRxZeGHpkvbwq+prZduBqMaascyCU=
github.com/yuin/gopher-lua v1.1.0 h1:BojcDhfyDWgU2f2TOzYK/g5p2gxMrku8oupLDqlnSqE=
github.com/yuin/gopher-lua v1.1.0/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw=
+github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw=
github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
-github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
-github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ=
github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0=
@@ -2469,8 +2444,6 @@ go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
go4.org/netipx v0.0.0-20230125063823-8449b0a6169f h1:ketMxHg+vWm3yccyYiq+uK8D3fRmna2Fcj+awpQp84s=
go4.org/netipx v0.0.0-20230125063823-8449b0a6169f/go.mod h1:tgPU4N2u9RByaTN3NC2p9xOzyFpte4jYwsIIRF7XlSc=
-golang.org/x/arch v0.7.0 h1:pskyeJh/3AmoQ8CPE95vxHLqp1G1GfGNXTmcl9NEKTc=
-golang.org/x/arch v0.7.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
@@ -2508,8 +2481,8 @@ golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
-golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
-golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
+golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg=
+golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ=
golang.org/x/crypto/x509roots/fallback v0.0.0-20240208163226-62c9f1799c91 h1:Lyizcy9jX02jYR0ceBkL6S+jRys8Uepf7wt1vrz6Ras=
golang.org/x/crypto/x509roots/fallback v0.0.0-20240208163226-62c9f1799c91/go.mod h1:kNa9WdvYnzFwC79zRpLRMJbdEFlhyM5RPFBBZp/wWH8=
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -2557,8 +2530,8 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8=
-golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
+golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -2785,9 +2758,8 @@ golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
-golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@@ -2797,9 +2769,8 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo=
+golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
-golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8=
-golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
diff --git a/internal/cmd/integration-tests/tests/read-log-file/read_log_file_test.go b/internal/cmd/integration-tests/tests/read-log-file/read_log_file_test.go
index 0549fcbb1e72..9799794e7b40 100644
--- a/internal/cmd/integration-tests/tests/read-log-file/read_log_file_test.go
+++ b/internal/cmd/integration-tests/tests/read-log-file/read_log_file_test.go
@@ -17,10 +17,12 @@ func TestReadLogFile(t *testing.T) {
err := common.FetchDataFromURL(query, &logResponse)
assert.NoError(c, err)
if assert.NotEmpty(c, logResponse.Data.Result) {
- assert.Equal(c, logResponse.Data.Result[0].Stream["filename"], "logs.txt")
- logs := make([]string, len(logResponse.Data.Result[0].Values))
- for i, valuePair := range logResponse.Data.Result[0].Values {
- logs[i] = valuePair[1]
+ logs := make([]string, 0)
+ for _, result := range logResponse.Data.Result {
+ assert.Equal(c, result.Stream["filename"], "logs.txt")
+ for _, valuePair := range result.Values {
+ logs = append(logs, valuePair[1])
+ }
}
assert.Contains(c, logs, "[2023-10-02 14:25:43] INFO: Starting the web application...")
}
diff --git a/internal/component/all/all.go b/internal/component/all/all.go
index eff9706a8c9c..f6911eb95b30 100644
--- a/internal/component/all/all.go
+++ b/internal/component/all/all.go
@@ -2,7 +2,6 @@
package all
import (
- _ "github.com/grafana/agent/internal/component/beyla/ebpf" // Import beyla.ebpf
_ "github.com/grafana/agent/internal/component/discovery/aws" // Import discovery.aws.ec2 and discovery.aws.lightsail
_ "github.com/grafana/agent/internal/component/discovery/azure" // Import discovery.azure
_ "github.com/grafana/agent/internal/component/discovery/consul" // Import discovery.consul
diff --git a/internal/component/beyla/ebpf/args.go b/internal/component/beyla/ebpf/args.go
deleted file mode 100644
index 1f904d51d0b6..000000000000
--- a/internal/component/beyla/ebpf/args.go
+++ /dev/null
@@ -1,48 +0,0 @@
-package beyla
-
-import (
- "github.com/grafana/agent/internal/component/discovery"
- "github.com/grafana/agent/internal/component/otelcol"
-)
-
-// Arguments configures the Beyla component.
-type Arguments struct {
- Port string `river:"open_port,attr,optional"`
- ExecutableName string `river:"executable_name,attr,optional"`
- Routes Routes `river:"routes,block,optional"`
- Attributes Attributes `river:"attributes,block,optional"`
- Discovery Discovery `river:"discovery,block,optional"`
- Output *otelcol.ConsumerArguments `river:"output,block,optional"`
-}
-
-type Exports struct {
- Targets []discovery.Target `river:"targets,attr"`
-}
-
-type Routes struct {
- Unmatch string `river:"unmatched,attr,optional"`
- Patterns []string `river:"patterns,attr,optional"`
- IgnorePatterns []string `river:"ignored_patterns,attr,optional"`
- IgnoredEvents string `river:"ignore_mode,attr,optional"`
-}
-
-type Attributes struct {
- Kubernetes KubernetesDecorator `river:"kubernetes,block"`
-}
-
-type KubernetesDecorator struct {
- Enable string `river:"enable,attr"`
-}
-
-type Services []Service
-
-type Service struct {
- Name string `river:"name,attr,optional"`
- Namespace string `river:"namespace,attr,optional"`
- OpenPorts string `river:"open_ports,attr,optional"`
- Path string `river:"exe_path,attr,optional"`
-}
-
-type Discovery struct {
- Services Services `river:"services,block"`
-}
diff --git a/internal/component/beyla/ebpf/beyla_linux.go b/internal/component/beyla/ebpf/beyla_linux.go
deleted file mode 100644
index 523317ad34be..000000000000
--- a/internal/component/beyla/ebpf/beyla_linux.go
+++ /dev/null
@@ -1,287 +0,0 @@
-//go:build (linux && arm64) || (linux && amd64)
-
-package beyla
-
-import (
- "context"
- "fmt"
- "net/http"
- "os"
- "path"
- "regexp"
- "sync"
- "time"
-
- "github.com/grafana/agent/internal/component"
- "github.com/grafana/agent/internal/component/discovery"
- "github.com/grafana/agent/internal/component/otelcol"
- "github.com/grafana/agent/internal/featuregate"
- "github.com/grafana/agent/internal/flow/logging/level"
- http_service "github.com/grafana/agent/internal/service/http"
- "github.com/grafana/beyla/pkg/beyla"
- "github.com/grafana/beyla/pkg/components"
- "github.com/grafana/beyla/pkg/services"
- "github.com/grafana/beyla/pkg/transform"
- "github.com/prometheus/client_golang/prometheus"
- "github.com/prometheus/client_golang/prometheus/promhttp"
- "github.com/prometheus/common/model"
-)
-
-func init() {
- component.Register(component.Registration{
- Name: "beyla.ebpf",
- Stability: featuregate.StabilityBeta,
- Args: Arguments{},
- Exports: Exports{},
-
- Build: func(opts component.Options, args component.Arguments) (component.Component, error) {
- return New(opts, args.(Arguments))
- },
- })
-}
-
-type Component struct {
- opts component.Options
- mut sync.Mutex
- args Arguments
- reload chan struct{}
- reg *prometheus.Registry
- healthMut sync.RWMutex
- health component.Health
-}
-
-var _ component.HealthComponent = (*Component)(nil)
-
-func (args Routes) Convert() *transform.RoutesConfig {
- return &transform.RoutesConfig{
- Unmatch: transform.UnmatchType(args.Unmatch),
- Patterns: args.Patterns,
- IgnorePatterns: args.IgnorePatterns,
- IgnoredEvents: transform.IgnoreMode(args.IgnoredEvents),
- }
-}
-
-func (args Attributes) Convert() beyla.Attributes {
- return beyla.Attributes{
- Kubernetes: transform.KubernetesDecorator{
- Enable: transform.KubeEnableFlag(args.Kubernetes.Enable),
- },
- }
-}
-
-func (args Discovery) Convert() (services.DiscoveryConfig, error) {
- srv, err := args.Services.Convert()
- if err != nil {
- return services.DiscoveryConfig{}, err
- }
- return services.DiscoveryConfig{
- Services: srv,
- }, nil
-}
-
-func (args Services) Convert() (services.DefinitionCriteria, error) {
- var attrs services.DefinitionCriteria
- for _, s := range args {
- ports, err := stringToPortEnum(s.OpenPorts)
- if err != nil {
- return nil, err
- }
- paths, err := stringToRegexpAttr(s.Path)
- if err != nil {
- return nil, err
- }
- attrs = append(attrs, services.Attributes{
- Name: s.Name,
- Namespace: s.Namespace,
- OpenPorts: ports,
- Path: paths,
- })
- }
- return attrs, nil
-}
-
-func New(opts component.Options, args Arguments) (*Component, error) {
- reg := prometheus.NewRegistry()
- c := &Component{
- opts: opts,
- args: args,
- reload: make(chan struct{}, 1),
- reg: reg,
- }
-
- if err := c.Update(args); err != nil {
- return nil, err
- }
- return c, nil
-}
-
-// Run implements component.Component.
-func (c *Component) Run(ctx context.Context) error {
- var cancel context.CancelFunc
- for {
- select {
- case <-ctx.Done():
- return nil
- case <-c.reload:
- // cancel any previously running Beyla instance
- if cancel != nil {
- cancel()
- }
- newCtx, cancelFunc := context.WithCancel(ctx)
- cancel = cancelFunc
-
- c.mut.Lock()
- cfg, err := c.args.Convert()
- if err != nil {
- level.Error(c.opts.Logger).Log("msg", "failed to convert arguments", "err", err)
- c.reportUnhealthy(err)
- c.mut.Unlock()
- continue
- }
- c.reportHealthy()
- cfg.Prometheus.Registry = c.reg
- c.mut.Unlock()
- components.RunBeyla(newCtx, cfg)
- }
- }
-}
-
-// Update implements component.Component.
-func (c *Component) Update(args component.Arguments) error {
- c.mut.Lock()
- defer c.mut.Unlock()
- baseTarget, err := c.baseTarget()
- if err != nil {
- return err
- }
- c.opts.OnStateChange(Exports{
- Targets: []discovery.Target{baseTarget},
- })
- select {
- case c.reload <- struct{}{}:
- default:
- }
- return nil
-}
-
-// baseTarget returns the base target for the component which includes metrics of the instrumented services.
-func (c *Component) baseTarget() (discovery.Target, error) {
- data, err := c.opts.GetServiceData(http_service.ServiceName)
- if err != nil {
- return nil, fmt.Errorf("failed to get HTTP information: %w", err)
- }
- httpData := data.(http_service.Data)
-
- return discovery.Target{
- model.AddressLabel: httpData.MemoryListenAddr,
- model.SchemeLabel: "http",
- model.MetricsPathLabel: path.Join(httpData.HTTPPathForComponent(c.opts.ID), "metrics"),
- "instance": defaultInstance(),
- "job": "beyla",
- }, nil
-}
-
-func (c *Component) reportUnhealthy(err error) {
- c.healthMut.Lock()
- defer c.healthMut.Unlock()
- c.health = component.Health{
- Health: component.HealthTypeUnhealthy,
- Message: err.Error(),
- UpdateTime: time.Now(),
- }
-}
-
-func (c *Component) reportHealthy() {
- c.healthMut.Lock()
- defer c.healthMut.Unlock()
- c.health = component.Health{
- Health: component.HealthTypeHealthy,
- UpdateTime: time.Now(),
- }
-}
-
-func (c *Component) CurrentHealth() component.Health {
- c.healthMut.RLock()
- defer c.healthMut.RUnlock()
- return c.health
-}
-
-func (c *Component) Handler() http.Handler {
- return promhttp.HandlerFor(c.reg, promhttp.HandlerOpts{})
-}
-
-func (a *Arguments) Convert() (*beyla.Config, error) {
- var err error
- cfg := beyla.DefaultConfig
- if a.Output != nil {
- cfg.TracesReceiver = convertTraceConsumers(a.Output.Traces)
- }
- cfg.Port, err = stringToPortEnum(a.Port)
- if err != nil {
- return nil, err
- }
- cfg.Exec, err = stringToRegexpAttr(a.ExecutableName)
- if err != nil {
- return nil, err
- }
- cfg.Routes = a.Routes.Convert()
- cfg.Attributes = a.Attributes.Convert()
- cfg.Discovery, err = a.Discovery.Convert()
- if err != nil {
- return nil, err
- }
- return &cfg, nil
-}
-
-func (args *Arguments) Validate() error {
- if args.Port == "" && args.ExecutableName == "" && len(args.Discovery.Services) == 0 {
- return fmt.Errorf("you need to define at least open_port, executable_name, or services in the discovery section")
- }
- return nil
-}
-
-func stringToRegexpAttr(s string) (services.RegexpAttr, error) {
- if s == "" {
- return services.RegexpAttr{}, nil
- }
- re, err := regexp.Compile(s)
- if err != nil {
- return services.RegexpAttr{}, err
- }
- return services.NewPathRegexp(re), nil
-}
-
-func stringToPortEnum(s string) (services.PortEnum, error) {
- if s == "" {
- return services.PortEnum{}, nil
- }
- p := services.PortEnum{}
- err := p.UnmarshalText([]byte(s))
- if err != nil {
- return services.PortEnum{}, err
- }
- return p, nil
-}
-
-func convertTraceConsumers(consumers []otelcol.Consumer) beyla.TracesReceiverConfig {
- convertedConsumers := make([]beyla.Consumer, len(consumers))
- for i, trace := range consumers {
- convertedConsumers[i] = trace
- }
- return beyla.TracesReceiverConfig{
- Traces: convertedConsumers,
- }
-}
-
-func defaultInstance() string {
- hostname := os.Getenv("HOSTNAME")
- if hostname != "" {
- return hostname
- }
-
- hostname, err := os.Hostname()
- if err != nil {
- return "unknown"
- }
- return hostname
-}
diff --git a/internal/component/beyla/ebpf/beyla_linux_test.go b/internal/component/beyla/ebpf/beyla_linux_test.go
deleted file mode 100644
index 5de85615f58a..000000000000
--- a/internal/component/beyla/ebpf/beyla_linux_test.go
+++ /dev/null
@@ -1,200 +0,0 @@
-//go:build (linux && arm64) || (linux && amd64)
-
-package beyla
-
-import (
- "errors"
- "testing"
-
- "github.com/grafana/beyla/pkg/beyla"
- "github.com/grafana/beyla/pkg/services"
- "github.com/grafana/beyla/pkg/transform"
- "github.com/grafana/river"
- "github.com/stretchr/testify/require"
-)
-
-func TestArguments_UnmarshalRiver(t *testing.T) {
- in := `
- open_port = "80,443,8000-8999"
- executable_name = "test"
- routes {
- unmatched = "wildcard"
- patterns = ["/api/v1/*"]
- ignored_patterns = ["/api/v1/health"]
- ignore_mode = "all"
- }
- attributes {
- kubernetes {
- enable = "true"
- }
- }
- discovery {
- services {
- name = "test"
- namespace = "default"
- open_ports = "80,443"
- }
- services {
- name = "test2"
- namespace = "default"
- open_ports = "80,443"
- }
- }
- output { /* no-op */ }
- `
- var args Arguments
- require.NoError(t, river.Unmarshal([]byte(in), &args))
- cfg, err := args.Convert()
- require.NoError(t, err)
- require.Equal(t, services.PortEnum{Ranges: []services.PortRange{{Start: 80, End: 0}, {Start: 443, End: 0}, {Start: 8000, End: 8999}}}, cfg.Port)
- require.True(t, cfg.Exec.IsSet())
- require.Equal(t, transform.UnmatchType("wildcard"), cfg.Routes.Unmatch)
- require.Equal(t, []string{"/api/v1/*"}, cfg.Routes.Patterns)
- require.Equal(t, []string{"/api/v1/health"}, cfg.Routes.IgnorePatterns)
- require.Equal(t, transform.IgnoreMode("all"), cfg.Routes.IgnoredEvents)
- require.Equal(t, transform.KubeEnableFlag("true"), cfg.Attributes.Kubernetes.Enable)
- require.Len(t, cfg.Discovery.Services, 2)
- require.Equal(t, "test", cfg.Discovery.Services[0].Name)
- require.Equal(t, "default", cfg.Discovery.Services[0].Namespace)
-}
-
-func TestArguments_UnmarshalInvalidRiver(t *testing.T) {
- var tests = []struct {
- testname string
- cfg string
- expectedError string
- }{
- {
- "invalid regex",
- `
- executable_name = "["
- `,
- "error parsing regexp: missing closing ]: `[`",
- },
- {
- "invalid port range",
- `
- open_port = "-8000"
- `,
- "invalid port range \"-8000\". Must be a comma-separated list of numeric ports or port ranges (e.g. 8000-8999)",
- },
- }
- for _, tt := range tests {
- t.Run(tt.testname, func(t *testing.T) {
- var args Arguments
- require.NoError(t, river.Unmarshal([]byte(tt.cfg), &args))
- _, err := args.Convert()
- require.EqualError(t, err, tt.expectedError)
- })
- }
-}
-
-func TestConvert_Routes(t *testing.T) {
- args := Routes{
- Unmatch: "wildcard",
- Patterns: []string{"/api/v1/*"},
- IgnorePatterns: []string{"/api/v1/health"},
- IgnoredEvents: "all",
- }
-
- expectedConfig := &transform.RoutesConfig{
- Unmatch: transform.UnmatchType(args.Unmatch),
- Patterns: args.Patterns,
- IgnorePatterns: args.IgnorePatterns,
- IgnoredEvents: transform.IgnoreMode(args.IgnoredEvents),
- }
-
- config := args.Convert()
-
- require.Equal(t, expectedConfig, config)
-}
-
-func TestConvert_Attribute(t *testing.T) {
- args := Attributes{
- Kubernetes: KubernetesDecorator{
- Enable: "true",
- },
- }
-
- expectedConfig := beyla.Attributes{
- Kubernetes: transform.KubernetesDecorator{
- Enable: transform.KubeEnableFlag(args.Kubernetes.Enable),
- },
- }
-
- config := args.Convert()
-
- require.Equal(t, expectedConfig, config)
-}
-
-func TestConvert_Discovery(t *testing.T) {
- args := Discovery{
- Services: []Service{
- {
- Name: "test",
- Namespace: "default",
- OpenPorts: "80",
- Path: "/api/v1/*",
- },
- },
- }
- config, err := args.Convert()
-
- require.NoError(t, err)
- require.Len(t, config.Services, 1)
- require.Equal(t, "test", config.Services[0].Name)
- require.Equal(t, "default", config.Services[0].Namespace)
- require.Equal(t, services.PortEnum{Ranges: []services.PortRange{{Start: 80, End: 0}}}, config.Services[0].OpenPorts)
- require.True(t, config.Services[0].Path.IsSet())
-}
-
-func TestArguments_Validate(t *testing.T) {
- tests := []struct {
- name string
- args Arguments
- expected error
- }{
- {
- name: "empty arguments",
- args: Arguments{},
- expected: errors.New("you need to define at least open_port, executable_name, or services in the discovery section"),
- },
- {
- name: "with service discovery",
- args: Arguments{
- Discovery: Discovery{
- Services: []Service{
- {
- Name: "test",
- Namespace: "default",
- OpenPorts: "80",
- Path: "/api/v1/*",
- },
- },
- },
- },
- expected: nil,
- },
- {
- name: "with port",
- args: Arguments{
- Port: "80",
- },
- expected: nil,
- },
- {
- name: "with executable name",
- args: Arguments{
- ExecutableName: "test",
- },
- expected: nil,
- },
- }
-
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- err := tt.args.Validate()
- require.Equal(t, tt.expected, err)
- })
- }
-}
diff --git a/internal/component/beyla/ebpf/beyla_placeholder.go b/internal/component/beyla/ebpf/beyla_placeholder.go
deleted file mode 100644
index 0226ff372095..000000000000
--- a/internal/component/beyla/ebpf/beyla_placeholder.go
+++ /dev/null
@@ -1,43 +0,0 @@
-//go:build !(linux && (arm64 || amd64))
-
-package beyla
-
-import (
- "context"
-
- "github.com/grafana/agent/internal/component"
- "github.com/grafana/agent/internal/featuregate"
- "github.com/grafana/agent/internal/flow/logging/level"
-)
-
-func init() {
- component.Register(component.Registration{
- Name: "beyla.ebpf",
- Stability: featuregate.StabilityBeta,
- Args: Arguments{},
- Exports: Exports{},
-
- Build: func(opts component.Options, args component.Arguments) (component.Component, error) {
- arguments := args.(Arguments)
- return New(opts, arguments)
- },
- })
-}
-
-// Component is a noop placeholder to print a warning when the ebpf component is used but the OS is not linux.
-type Component struct {
-}
-
-func New(opts component.Options, args Arguments) (component.Component, error) {
- level.Warn(opts.Logger).Log("msg", "the beyla.ebpf component only works on ARM64 and AMD64 Linux platforms; enabling it otherwise will do nothing")
- return &Component{}, nil
-}
-
-func (i *Component) Run(ctx context.Context) error {
- <-ctx.Done()
- return ctx.Err()
-}
-
-func (c *Component) Update(args component.Arguments) error {
- return nil
-}