From 1dbb46c62ad2fd26da05b89dfa18d8b9ab5b91fe Mon Sep 17 00:00:00 2001 From: Paschalis Tsilias Date: Tue, 7 Nov 2023 11:43:07 +0200 Subject: [PATCH 001/166] helm: update agent version to v0.37.4 (#5727) Signed-off-by: Paschalis Tsilias --- operations/helm/charts/grafana-agent/CHANGELOG.md | 10 ++++++++-- operations/helm/charts/grafana-agent/Chart.yaml | 4 ++-- operations/helm/charts/grafana-agent/README.md | 2 +- .../templates/controllers/statefulset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../templates/controllers/deployment.yaml | 2 +- .../templates/controllers/deployment.yaml | 2 +- .../templates/controllers/statefulset.yaml | 2 +- .../templates/controllers/statefulset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- 26 files changed, 34 insertions(+), 28 deletions(-) diff --git a/operations/helm/charts/grafana-agent/CHANGELOG.md b/operations/helm/charts/grafana-agent/CHANGELOG.md index b5197eadc370..a07f6c76f0f0 100644 --- a/operations/helm/charts/grafana-agent/CHANGELOG.md +++ b/operations/helm/charts/grafana-agent/CHANGELOG.md @@ -10,10 +10,16 @@ internal API changes are not present. Unreleased ---------- +0.27.1 (2023-11-07) +---------- + ### Enhancements -- Expose the `ui-path-prefix` flag on the Helm chart (@mlcdf) -- Expose controller `extraAnnotations` on the Helm chart (@mcanevet) +- Expose the `ui-path-prefix` flag on the Helm chart. (@mlcdf) + +- Expose controller `extraAnnotations` on the Helm chart. (@mcanevet) + +- Update Grafana Agent version to v0.37.4. (@tpaschalis) 0.27.1 (2023-10-26) ---------- diff --git a/operations/helm/charts/grafana-agent/Chart.yaml b/operations/helm/charts/grafana-agent/Chart.yaml index 18fc351f6e6b..d73883aeae7d 100644 --- a/operations/helm/charts/grafana-agent/Chart.yaml +++ b/operations/helm/charts/grafana-agent/Chart.yaml @@ -2,8 +2,8 @@ apiVersion: v2 name: grafana-agent description: 'Grafana Agent' type: application -version: 0.27.1 -appVersion: 'v0.37.3' +version: 0.27.2 +appVersion: 'v0.37.4' dependencies: - name: crds diff --git a/operations/helm/charts/grafana-agent/README.md b/operations/helm/charts/grafana-agent/README.md index ccb539ff0e36..f85c05a0b40b 100644 --- a/operations/helm/charts/grafana-agent/README.md +++ b/operations/helm/charts/grafana-agent/README.md @@ -1,6 +1,6 @@ # Grafana Agent Helm chart -![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![Version: 0.27.1](https://img.shields.io/badge/Version-0.27.1-informational?style=flat-square) ![AppVersion: v0.37.3](https://img.shields.io/badge/AppVersion-v0.37.3-informational?style=flat-square) +![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![Version: 0.27.2](https://img.shields.io/badge/Version-0.27.2-informational?style=flat-square) ![AppVersion: v0.37.4](https://img.shields.io/badge/AppVersion-v0.37.4-informational?style=flat-square) Helm chart for deploying [Grafana Agent][] to Kubernetes. diff --git a/operations/helm/tests/clustering/grafana-agent/templates/controllers/statefulset.yaml b/operations/helm/tests/clustering/grafana-agent/templates/controllers/statefulset.yaml index 110ea280064e..1aca2fb93859 100644 --- a/operations/helm/tests/clustering/grafana-agent/templates/controllers/statefulset.yaml +++ b/operations/helm/tests/clustering/grafana-agent/templates/controllers/statefulset.yaml @@ -28,7 +28,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/controller-volumes-extra/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/controller-volumes-extra/grafana-agent/templates/controllers/daemonset.yaml index 46b03f1562f5..f19ed25ad63b 100644 --- a/operations/helm/tests/controller-volumes-extra/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/controller-volumes-extra/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/create-daemonset-hostnetwork/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/create-daemonset-hostnetwork/grafana-agent/templates/controllers/daemonset.yaml index d3b59975bedd..f7d69461630e 100644 --- a/operations/helm/tests/create-daemonset-hostnetwork/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/create-daemonset-hostnetwork/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/create-daemonset/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/create-daemonset/grafana-agent/templates/controllers/daemonset.yaml index 90261f803345..0038338c8e15 100644 --- a/operations/helm/tests/create-daemonset/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/create-daemonset/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/create-deployment-autoscaling/grafana-agent/templates/controllers/deployment.yaml b/operations/helm/tests/create-deployment-autoscaling/grafana-agent/templates/controllers/deployment.yaml index a015962dbbbf..33115f481940 100644 --- a/operations/helm/tests/create-deployment-autoscaling/grafana-agent/templates/controllers/deployment.yaml +++ b/operations/helm/tests/create-deployment-autoscaling/grafana-agent/templates/controllers/deployment.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/create-deployment/grafana-agent/templates/controllers/deployment.yaml b/operations/helm/tests/create-deployment/grafana-agent/templates/controllers/deployment.yaml index 39edcec78ecd..17238227bbe4 100644 --- a/operations/helm/tests/create-deployment/grafana-agent/templates/controllers/deployment.yaml +++ b/operations/helm/tests/create-deployment/grafana-agent/templates/controllers/deployment.yaml @@ -26,7 +26,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/create-statefulset-autoscaling/grafana-agent/templates/controllers/statefulset.yaml b/operations/helm/tests/create-statefulset-autoscaling/grafana-agent/templates/controllers/statefulset.yaml index b8b2bd70f459..56f4e29353a8 100644 --- a/operations/helm/tests/create-statefulset-autoscaling/grafana-agent/templates/controllers/statefulset.yaml +++ b/operations/helm/tests/create-statefulset-autoscaling/grafana-agent/templates/controllers/statefulset.yaml @@ -27,7 +27,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/create-statefulset/grafana-agent/templates/controllers/statefulset.yaml b/operations/helm/tests/create-statefulset/grafana-agent/templates/controllers/statefulset.yaml index df52fc53f9e9..57ffe8a5b38d 100644 --- a/operations/helm/tests/create-statefulset/grafana-agent/templates/controllers/statefulset.yaml +++ b/operations/helm/tests/create-statefulset/grafana-agent/templates/controllers/statefulset.yaml @@ -28,7 +28,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/custom-config/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/custom-config/grafana-agent/templates/controllers/daemonset.yaml index 90261f803345..0038338c8e15 100644 --- a/operations/helm/tests/custom-config/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/custom-config/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/default-values/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/default-values/grafana-agent/templates/controllers/daemonset.yaml index 90261f803345..0038338c8e15 100644 --- a/operations/helm/tests/default-values/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/default-values/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/enable-servicemonitor/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/enable-servicemonitor/grafana-agent/templates/controllers/daemonset.yaml index 90261f803345..0038338c8e15 100644 --- a/operations/helm/tests/enable-servicemonitor/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/enable-servicemonitor/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/envFrom/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/envFrom/grafana-agent/templates/controllers/daemonset.yaml index 60a3b77ef02a..af9f8733bfa3 100644 --- a/operations/helm/tests/envFrom/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/envFrom/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/existing-config/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/existing-config/grafana-agent/templates/controllers/daemonset.yaml index 919fa19bca02..b3acab2c314f 100644 --- a/operations/helm/tests/existing-config/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/existing-config/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/extra-env/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/extra-env/grafana-agent/templates/controllers/daemonset.yaml index 9d51abfff613..b375f5c2d740 100644 --- a/operations/helm/tests/extra-env/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/extra-env/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/extra-ports/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/extra-ports/grafana-agent/templates/controllers/daemonset.yaml index a5e83acc381c..b949dab97850 100644 --- a/operations/helm/tests/extra-ports/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/extra-ports/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/faro-ingress/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/faro-ingress/grafana-agent/templates/controllers/daemonset.yaml index 2b9e24e7ad4b..1a4310f118dc 100644 --- a/operations/helm/tests/faro-ingress/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/faro-ingress/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/global-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/global-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml index 36efcdd0db4a..23c984e2bd59 100644 --- a/operations/helm/tests/global-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/global-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml @@ -30,7 +30,7 @@ spec: - name: global-cred containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/global-image-registry/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/global-image-registry/grafana-agent/templates/controllers/daemonset.yaml index 6b93b0748552..fb0c5bccfba3 100644 --- a/operations/helm/tests/global-image-registry/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/global-image-registry/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: quay.io/grafana/agent:v0.37.3 + image: quay.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/initcontainers/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/initcontainers/grafana-agent/templates/controllers/daemonset.yaml index 48dcdd113d53..00b72a087f56 100644 --- a/operations/helm/tests/initcontainers/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/initcontainers/grafana-agent/templates/controllers/daemonset.yaml @@ -43,7 +43,7 @@ spec: name: geoip containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/local-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/local-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml index 05300bfee656..c9bbe3a6d165 100644 --- a/operations/helm/tests/local-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/local-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml @@ -27,7 +27,7 @@ spec: - name: local-cred containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/local-image-registry/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/local-image-registry/grafana-agent/templates/controllers/daemonset.yaml index 6b93b0748552..fb0c5bccfba3 100644 --- a/operations/helm/tests/local-image-registry/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/local-image-registry/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: quay.io/grafana/agent:v0.37.3 + image: quay.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/nodeselectors-and-tolerations/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/nodeselectors-and-tolerations/grafana-agent/templates/controllers/daemonset.yaml index 97f65910a123..d38ffc899ae0 100644 --- a/operations/helm/tests/nodeselectors-and-tolerations/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/nodeselectors-and-tolerations/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/static-mode/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/static-mode/grafana-agent/templates/controllers/daemonset.yaml index ccdaf9fa8ab6..afd7d674720b 100644 --- a/operations/helm/tests/static-mode/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/static-mode/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.3 + image: docker.io/grafana/agent:v0.37.4 imagePullPolicy: IfNotPresent args: - -config.file=/etc/agent/config.yaml From b9787dc6c95e8a82791e1166e6464c8a88d7f7a4 Mon Sep 17 00:00:00 2001 From: Pablo <2617411+thepalbi@users.noreply.github.com> Date: Tue, 7 Nov 2023 10:21:58 -0300 Subject: [PATCH 002/166] Added last read/wrote timestamp metrics to loki.write (#5699) --- component/common/loki/client/client.go | 29 +++++---------- component/common/loki/client/manager.go | 3 +- component/common/loki/client/metrics.go | 37 +++++++++++++++++++ component/common/loki/client/queue_client.go | 25 +++++++++---- .../common/loki/client/queue_client_test.go | 6 +-- component/common/loki/wal/watcher_metrics.go | 27 +++++--------- component/common/loki/wal/writer.go | 11 ++++++ pkg/util/metrics.go | 16 ++++++++ 8 files changed, 106 insertions(+), 48 deletions(-) create mode 100644 component/common/loki/client/metrics.go create mode 100644 pkg/util/metrics.go diff --git a/component/common/loki/client/client.go b/component/common/loki/client/client.go index 36839dbcffa3..964b6c98513b 100644 --- a/component/common/loki/client/client.go +++ b/component/common/loki/client/client.go @@ -21,6 +21,7 @@ import ( "github.com/grafana/agent/component/common/loki" "github.com/grafana/agent/pkg/build" + "github.com/grafana/agent/pkg/util" lokiutil "github.com/grafana/loki/pkg/util" ) @@ -116,30 +117,20 @@ func NewMetrics(reg prometheus.Registerer) *Metrics { } if reg != nil { - m.encodedBytes = mustRegisterOrGet(reg, m.encodedBytes).(*prometheus.CounterVec) - m.sentBytes = mustRegisterOrGet(reg, m.sentBytes).(*prometheus.CounterVec) - m.droppedBytes = mustRegisterOrGet(reg, m.droppedBytes).(*prometheus.CounterVec) - m.sentEntries = mustRegisterOrGet(reg, m.sentEntries).(*prometheus.CounterVec) - m.droppedEntries = mustRegisterOrGet(reg, m.droppedEntries).(*prometheus.CounterVec) - m.mutatedEntries = mustRegisterOrGet(reg, m.mutatedEntries).(*prometheus.CounterVec) - m.mutatedBytes = mustRegisterOrGet(reg, m.mutatedBytes).(*prometheus.CounterVec) - m.requestDuration = mustRegisterOrGet(reg, m.requestDuration).(*prometheus.HistogramVec) - m.batchRetries = mustRegisterOrGet(reg, m.batchRetries).(*prometheus.CounterVec) + m.encodedBytes = util.MustRegisterOrGet(reg, m.encodedBytes).(*prometheus.CounterVec) + m.sentBytes = util.MustRegisterOrGet(reg, m.sentBytes).(*prometheus.CounterVec) + m.droppedBytes = util.MustRegisterOrGet(reg, m.droppedBytes).(*prometheus.CounterVec) + m.sentEntries = util.MustRegisterOrGet(reg, m.sentEntries).(*prometheus.CounterVec) + m.droppedEntries = util.MustRegisterOrGet(reg, m.droppedEntries).(*prometheus.CounterVec) + m.mutatedEntries = util.MustRegisterOrGet(reg, m.mutatedEntries).(*prometheus.CounterVec) + m.mutatedBytes = util.MustRegisterOrGet(reg, m.mutatedBytes).(*prometheus.CounterVec) + m.requestDuration = util.MustRegisterOrGet(reg, m.requestDuration).(*prometheus.HistogramVec) + m.batchRetries = util.MustRegisterOrGet(reg, m.batchRetries).(*prometheus.CounterVec) } return &m } -func mustRegisterOrGet(reg prometheus.Registerer, c prometheus.Collector) prometheus.Collector { - if err := reg.Register(c); err != nil { - if are, ok := err.(prometheus.AlreadyRegisteredError); ok { - return are.ExistingCollector - } - panic(err) - } - return c -} - // Client pushes entries to Loki and can be stopped type Client interface { loki.EntryHandler diff --git a/component/common/loki/client/manager.go b/component/common/loki/client/manager.go index 290ddcc0f951..6683e9e5772b 100644 --- a/component/common/loki/client/manager.go +++ b/component/common/loki/client/manager.go @@ -70,6 +70,7 @@ func NewManager(metrics *Metrics, logger log.Logger, limits limit.Config, reg pr walWatcherMetrics := wal.NewWatcherMetrics(reg) walMarkerMetrics := internal.NewMarkerMetrics(reg) + queueClientMetrics := NewQueueClientMetrics(reg) if len(clientCfgs) == 0 { return nil, fmt.Errorf("at least one client config must be provided") @@ -98,7 +99,7 @@ func NewManager(metrics *Metrics, logger log.Logger, limits limit.Config, reg pr } markerHandler := internal.NewMarkerHandler(markerFileHandler, walCfg.MaxSegmentAge, logger, walMarkerMetrics.WithCurriedId(clientName)) - queue, err := NewQueue(metrics, cfg, limits.MaxStreams, limits.MaxLineSize.Val(), limits.MaxLineSizeTruncate, logger, markerHandler) + queue, err := NewQueue(metrics, queueClientMetrics.CurryWithId(clientName), cfg, limits.MaxStreams, limits.MaxLineSize.Val(), limits.MaxLineSizeTruncate, logger, markerHandler) if err != nil { return nil, fmt.Errorf("error starting queue client: %w", err) } diff --git a/component/common/loki/client/metrics.go b/component/common/loki/client/metrics.go new file mode 100644 index 000000000000..6d32bf1ce459 --- /dev/null +++ b/component/common/loki/client/metrics.go @@ -0,0 +1,37 @@ +package client + +import ( + "github.com/grafana/agent/pkg/util" + "github.com/prometheus/client_golang/prometheus" +) + +type QueueClientMetrics struct { + lastReadTimestamp *prometheus.GaugeVec +} + +func NewQueueClientMetrics(reg prometheus.Registerer) *QueueClientMetrics { + m := &QueueClientMetrics{ + lastReadTimestamp: prometheus.NewGaugeVec( + prometheus.GaugeOpts{ + Namespace: "loki_write", + Name: "last_read_timestamp", + Help: "Latest timestamp read from the WAL", + }, + []string{"id"}, + ), + } + + if reg != nil { + m.lastReadTimestamp = util.MustRegisterOrGet(reg, m.lastReadTimestamp).(*prometheus.GaugeVec) + } + + return m +} + +func (m *QueueClientMetrics) CurryWithId(id string) *QueueClientMetrics { + return &QueueClientMetrics{ + lastReadTimestamp: m.lastReadTimestamp.MustCurryWith(map[string]string{ + "id": id, + }), + } +} diff --git a/component/common/loki/client/queue_client.go b/component/common/loki/client/queue_client.go index 458839db60dd..dc8ed469fba3 100644 --- a/component/common/loki/client/queue_client.go +++ b/component/common/loki/client/queue_client.go @@ -150,10 +150,11 @@ func (q *queue) closeNow() { // which allows it to be injected in the wal.Watcher as a destination where to write read series and entries. As the watcher // reads from the WAL, batches are created and dispatched onto a send queue when ready to be sent. type queueClient struct { - metrics *Metrics - logger log.Logger - cfg Config - client *http.Client + metrics *Metrics + qcMetrics *QueueClientMetrics + logger log.Logger + cfg Config + client *http.Client batches map[string]*batch batchesMtx sync.Mutex @@ -180,14 +181,14 @@ type queueClient struct { } // NewQueue creates a new queueClient. -func NewQueue(metrics *Metrics, cfg Config, maxStreams, maxLineSize int, maxLineSizeTruncate bool, logger log.Logger, markerHandler MarkerHandler) (StoppableWriteTo, error) { +func NewQueue(metrics *Metrics, queueClientMetrics *QueueClientMetrics, cfg Config, maxStreams, maxLineSize int, maxLineSizeTruncate bool, logger log.Logger, markerHandler MarkerHandler) (StoppableWriteTo, error) { if cfg.StreamLagLabels.String() != "" { return nil, fmt.Errorf("client config stream_lag_labels is deprecated and the associated metric has been removed, stream_lag_labels: %+v", cfg.StreamLagLabels.String()) } - return newQueueClient(metrics, cfg, maxStreams, maxLineSize, maxLineSizeTruncate, logger, markerHandler) + return newQueueClient(metrics, queueClientMetrics, cfg, maxStreams, maxLineSize, maxLineSizeTruncate, logger, markerHandler) } -func newQueueClient(metrics *Metrics, cfg Config, maxStreams, maxLineSize int, maxLineSizeTruncate bool, logger log.Logger, markerHandler MarkerHandler) (*queueClient, error) { +func newQueueClient(metrics *Metrics, qcMetrics *QueueClientMetrics, cfg Config, maxStreams, maxLineSize int, maxLineSizeTruncate bool, logger log.Logger, markerHandler MarkerHandler) (*queueClient, error) { if cfg.URL.URL == nil { return nil, errors.New("client needs target URL") } @@ -198,6 +199,7 @@ func newQueueClient(metrics *Metrics, cfg Config, maxStreams, maxLineSize int, m logger: log.With(logger, "component", "client", "host", cfg.URL.Host), cfg: cfg, metrics: metrics, + qcMetrics: qcMetrics, drainTimeout: cfg.Queue.DrainTimeout, quit: make(chan struct{}), @@ -283,9 +285,13 @@ func (c *queueClient) AppendEntries(entries wal.RefEntries, segment int) error { c.seriesLock.RLock() l, ok := c.series[entries.Ref] c.seriesLock.RUnlock() + var maxSeenTimestamp int64 = -1 if ok { for _, e := range entries.Entries { c.appendSingleEntry(segment, l, e) + if e.Timestamp.Unix() > maxSeenTimestamp { + maxSeenTimestamp = e.Timestamp.Unix() + } } // count all enqueued appended entries as received from WAL c.markerHandler.UpdateReceivedData(segment, len(entries.Entries)) @@ -293,6 +299,11 @@ func (c *queueClient) AppendEntries(entries wal.RefEntries, segment int) error { // TODO(thepalbi): Add metric here level.Debug(c.logger).Log("msg", "series for entry not found") } + + // It's safe to assume that upon an AppendEntries call, there will always be at least + // one entry. + c.qcMetrics.lastReadTimestamp.WithLabelValues().Set(float64(maxSeenTimestamp)) + return nil } diff --git a/component/common/loki/client/queue_client_test.go b/component/common/loki/client/queue_client_test.go index a23804d44634..cf59f49e1b7a 100644 --- a/component/common/loki/client/queue_client_test.go +++ b/component/common/loki/client/queue_client_test.go @@ -135,8 +135,7 @@ func TestQueueClient(t *testing.T) { logger := log.NewLogfmtLogger(os.Stdout) - m := NewMetrics(reg) - qc, err := NewQueue(m, cfg, 0, 0, false, logger, nilMarkerHandler{}) + qc, err := NewQueue(NewMetrics(reg), NewQueueClientMetrics(reg).CurryWithId("test"), cfg, 0, 0, false, logger, nilMarkerHandler{}) require.NoError(t, err) //labels := model.LabelSet{"app": "test"} @@ -281,8 +280,7 @@ func runQueueClientBenchCase(b *testing.B, bc testCase, mhFactory func(t *testin logger := log.NewLogfmtLogger(os.Stdout) - m := NewMetrics(reg) - qc, err := NewQueue(m, cfg, 0, 0, false, logger, mhFactory(b)) + qc, err := NewQueue(NewMetrics(reg), NewQueueClientMetrics(reg).CurryWithId("test"), cfg, 0, 0, false, logger, mhFactory(b)) require.NoError(b, err) //labels := model.LabelSet{"app": "test"} diff --git a/component/common/loki/wal/watcher_metrics.go b/component/common/loki/wal/watcher_metrics.go index 4064f8b22aac..ce8052fd442d 100644 --- a/component/common/loki/wal/watcher_metrics.go +++ b/component/common/loki/wal/watcher_metrics.go @@ -1,6 +1,9 @@ package wal -import "github.com/prometheus/client_golang/prometheus" +import ( + "github.com/grafana/agent/pkg/util" + "github.com/prometheus/client_golang/prometheus" +) type WatcherMetrics struct { recordsRead *prometheus.CounterVec @@ -80,23 +83,13 @@ func NewWatcherMetrics(reg prometheus.Registerer) *WatcherMetrics { } if reg != nil { - m.recordsRead = mustRegisterOrGet(reg, m.recordsRead).(*prometheus.CounterVec) - m.recordDecodeFails = mustRegisterOrGet(reg, m.recordDecodeFails).(*prometheus.CounterVec) - m.droppedWriteNotifications = mustRegisterOrGet(reg, m.droppedWriteNotifications).(*prometheus.CounterVec) - m.segmentRead = mustRegisterOrGet(reg, m.segmentRead).(*prometheus.CounterVec) - m.currentSegment = mustRegisterOrGet(reg, m.currentSegment).(*prometheus.GaugeVec) - m.watchersRunning = mustRegisterOrGet(reg, m.watchersRunning).(*prometheus.GaugeVec) + m.recordsRead = util.MustRegisterOrGet(reg, m.recordsRead).(*prometheus.CounterVec) + m.recordDecodeFails = util.MustRegisterOrGet(reg, m.recordDecodeFails).(*prometheus.CounterVec) + m.droppedWriteNotifications = util.MustRegisterOrGet(reg, m.droppedWriteNotifications).(*prometheus.CounterVec) + m.segmentRead = util.MustRegisterOrGet(reg, m.segmentRead).(*prometheus.CounterVec) + m.currentSegment = util.MustRegisterOrGet(reg, m.currentSegment).(*prometheus.GaugeVec) + m.watchersRunning = util.MustRegisterOrGet(reg, m.watchersRunning).(*prometheus.GaugeVec) } return m } - -func mustRegisterOrGet(reg prometheus.Registerer, c prometheus.Collector) prometheus.Collector { - if err := reg.Register(c); err != nil { - if are, ok := err.(prometheus.AlreadyRegisteredError); ok { - return are.ExistingCollector - } - panic(err) - } - return c -} diff --git a/component/common/loki/wal/writer.go b/component/common/loki/wal/writer.go index 929199529c5d..e71773d944d6 100644 --- a/component/common/loki/wal/writer.go +++ b/component/common/loki/wal/writer.go @@ -59,6 +59,7 @@ type Writer struct { reclaimedOldSegmentsSpaceCounter *prometheus.CounterVec lastReclaimedSegment *prometheus.GaugeVec + lastWrittenTimestamp *prometheus.GaugeVec closeCleaner chan struct{} } @@ -96,10 +97,17 @@ func NewWriter(walCfg Config, logger log.Logger, reg prometheus.Registerer) (*Wr Name: "last_reclaimed_segment", Help: "Last reclaimed segment number", }, []string{}) + wrt.lastWrittenTimestamp = prometheus.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: "loki_write", + Subsystem: "wal_writer", + Name: "last_written_timestamp", + Help: "Latest timestamp that was written to the WAL", + }, []string{}) if reg != nil { _ = reg.Register(wrt.reclaimedOldSegmentsSpaceCounter) _ = reg.Register(wrt.lastReclaimedSegment) + _ = reg.Register(wrt.lastWrittenTimestamp) } wrt.start(walCfg.MaxSegmentAge) @@ -118,6 +126,9 @@ func (wrt *Writer) start(maxSegmentAge time.Duration) { continue } + // emit metric with latest written timestamp, to be able to track delay from writer to watcher + wrt.lastWrittenTimestamp.WithLabelValues().Set(float64(e.Timestamp.Unix())) + wrt.writeSubscribersLock.RLock() for _, s := range wrt.writeSubscribers { s.NotifyWrite() diff --git a/pkg/util/metrics.go b/pkg/util/metrics.go new file mode 100644 index 000000000000..850b535fe8fb --- /dev/null +++ b/pkg/util/metrics.go @@ -0,0 +1,16 @@ +package util + +import "github.com/prometheus/client_golang/prometheus" + +// MustRegisterOrGet will attempt to register the supplied collector into the register. If it's already +// registered, it will return that one. +// In case that the register procedure fails with something other than already registered, this will panic. +func MustRegisterOrGet(reg prometheus.Registerer, c prometheus.Collector) prometheus.Collector { + if err := reg.Register(c); err != nil { + if are, ok := err.(prometheus.AlreadyRegisteredError); ok { + return are.ExistingCollector + } + panic(err) + } + return c +} From 49f1bd1bc6186b09caf5f8382efea06a7acfe40b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Tudur=C3=AD?= Date: Tue, 7 Nov 2023 18:28:43 +0100 Subject: [PATCH 003/166] Clarify blackbox exporter documentation (#5719) --- .../prometheus/exporter/blackbox/blackbox.go | 6 +++++- .../exporter/blackbox/blackbox_test.go | 16 +++++++++++++--- .../components/prometheus.exporter.blackbox.md | 8 +++++++- .../integrations/blackbox-config.md | 1 + .../blackbox_exporter/blackbox_exporter.go | 4 ++++ 5 files changed, 30 insertions(+), 5 deletions(-) diff --git a/component/prometheus/exporter/blackbox/blackbox.go b/component/prometheus/exporter/blackbox/blackbox.go index 223ac8cb8837..206ac1f1d12b 100644 --- a/component/prometheus/exporter/blackbox/blackbox.go +++ b/component/prometheus/exporter/blackbox/blackbox.go @@ -106,10 +106,14 @@ func (a *Arguments) Validate() error { return errors.New("config and config_file are mutually exclusive") } + if a.ConfigFile == "" && a.Config.Value == "" { + return errors.New("config or config_file must be set") + } + var blackboxConfig blackbox_config.Config err := yaml.UnmarshalStrict([]byte(a.Config.Value), &blackboxConfig) if err != nil { - return fmt.Errorf("invalid backbox_exporter config: %s", err) + return fmt.Errorf("invalid blackbox_exporter config: %s", err) } return nil diff --git a/component/prometheus/exporter/blackbox/blackbox_test.go b/component/prometheus/exporter/blackbox/blackbox_test.go index 1b3e169a3661..6a4e9dab0d15 100644 --- a/component/prometheus/exporter/blackbox/blackbox_test.go +++ b/component/prometheus/exporter/blackbox/blackbox_test.go @@ -106,7 +106,7 @@ func TestUnmarshalRiverWithInlineConfigYaml(t *testing.T) { require.Contains(t, "http_2xx", args.Targets[1].Module) } -func TestUnmarshalRiverWithInvalidInlineConfig(t *testing.T) { +func TestUnmarshalRiverWithInvalidConfig(t *testing.T) { var tests = []struct { testname string cfg string @@ -122,7 +122,7 @@ func TestUnmarshalRiverWithInvalidInlineConfig(t *testing.T) { module = "http_2xx" } `, - `invalid backbox_exporter config: yaml: line 1: did not find expected ',' or '}'`, + `invalid blackbox_exporter config: yaml: line 1: did not find expected ',' or '}'`, }, { "Invalid property", @@ -134,7 +134,7 @@ func TestUnmarshalRiverWithInvalidInlineConfig(t *testing.T) { module = "http_2xx" } `, - "invalid backbox_exporter config: yaml: unmarshal errors:\n line 1: field module not found in type config.plain", + "invalid blackbox_exporter config: yaml: unmarshal errors:\n line 1: field module not found in type config.plain", }, { "Define config and config_file", @@ -149,6 +149,16 @@ func TestUnmarshalRiverWithInvalidInlineConfig(t *testing.T) { `, `config and config_file are mutually exclusive`, }, + { + "Define neither config nor config_file", + ` + target "target_a" { + address = "http://example.com" + module = "http_2xx" + } + `, + `config or config_file must be set`, + }, } for _, tt := range tests { t.Run(tt.testname, func(t *testing.T) { diff --git a/docs/sources/flow/reference/components/prometheus.exporter.blackbox.md b/docs/sources/flow/reference/components/prometheus.exporter.blackbox.md index 4cd6e5effcc3..40cd6db39e0a 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.blackbox.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.blackbox.md @@ -17,6 +17,9 @@ The `prometheus.exporter.blackbox` component embeds ```river prometheus.exporter.blackbox "LABEL" { + target "example" { + address = "EXAMPLE_ADDRESS" + } } ``` @@ -31,6 +34,7 @@ Omitted fields take their default values. | `config` | `string` or `secret` | blackbox_exporter configuration as inline string. | | no | | `probe_timeout_offset` | `duration` | Offset in seconds to subtract from timeout when probing targets. | `"0.5s"` | no | +Either `config_file` or `config` must be specified. The `config_file` argument points to a YAML file defining which blackbox_exporter modules to use. The `config` argument must be a YAML document as string defining which blackbox_exporter modules to use. `config` is typically loaded by using the exports of another component. For example, @@ -90,7 +94,9 @@ debug metrics. ### Collect metrics using a blackbox exporter config file This example uses a [`prometheus.scrape` component][scrape] to collect metrics -from `prometheus.exporter.blackbox`. It adds an extra label, `env="dev"`, to the metrics emitted by the `grafana` target. The `example` target does not have any added labels. +from `prometheus.exporter.blackbox`. It adds an extra label, `env="dev"`, to the metrics emitted by the `grafana` target. The `example` target does not have any added labels. + +The `config_file` argument is used to define which `blackbox_exporter` modules to use. You can use the [blackbox example config file](https://github.com/prometheus/blackbox_exporter/blob/master/example.yml). ```river prometheus.exporter.blackbox "example" { diff --git a/docs/sources/static/configuration/integrations/blackbox-config.md b/docs/sources/static/configuration/integrations/blackbox-config.md index b7911fdecd0b..755416ab565a 100644 --- a/docs/sources/static/configuration/integrations/blackbox-config.md +++ b/docs/sources/static/configuration/integrations/blackbox-config.md @@ -91,6 +91,7 @@ Full reference of options: [config_file: | default = ""] # Embedded blackbox configuration. You can specify your modules here instead of an external config file. + # config_file or blackbox_config must be specified. # See https://github.com/prometheus/blackbox_exporter/blob/master/CONFIGURATION.md for more details how to specify your blackbox modules. blackbox_config: [- ... ] diff --git a/pkg/integrations/blackbox_exporter/blackbox_exporter.go b/pkg/integrations/blackbox_exporter/blackbox_exporter.go index 510df3a8d0ec..36634a5231cc 100644 --- a/pkg/integrations/blackbox_exporter/blackbox_exporter.go +++ b/pkg/integrations/blackbox_exporter/blackbox_exporter.go @@ -104,6 +104,10 @@ func LoadBlackboxConfig(log log.Logger, configFile string, targets []BlackboxTar // New creates a new blackbox_exporter integration func New(log log.Logger, c *Config) (integrations.Integration, error) { + if c.BlackboxConfigFile == "" && c.BlackboxConfig == nil { + return nil, fmt.Errorf("failed to load blackbox config; no config file or config block provided") + } + var blackbox_config blackbox_config.Config err := yaml.Unmarshal(c.BlackboxConfig, &blackbox_config) if err != nil { From fd7e8dec6934a917f82a4218b58bdecc1c780fd0 Mon Sep 17 00:00:00 2001 From: Pablo <2617411+thepalbi@users.noreply.github.com> Date: Tue, 7 Nov 2023 17:33:47 -0300 Subject: [PATCH 004/166] Add locking to loki.write sink + nits (#5694) * Address PR comments * added bench * add locking to loki.write sink * adding changelog * imports order * fix changelog * remove unused client write to * added missing entry * typos * add missing changelog entry * remove duplicate entry --- CHANGELOG.md | 4 + .../common/loki/client/client_writeto.go | 78 ------ .../common/loki/client/client_writeto_test.go | 247 ------------------ .../loki/client/internal/marker_encoding.go | 2 +- component/common/loki/wal/watcher_test.go | 7 +- component/loki/write/write.go | 3 + component/loki/write/write_test.go | 104 +++++++- pkg/flow/componenttest/context.go | 2 +- pkg/util/test_logger.go | 2 +- 9 files changed, 112 insertions(+), 337 deletions(-) delete mode 100644 component/common/loki/client/client_writeto.go delete mode 100644 component/common/loki/client/client_writeto_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index fabedfa99040..4533ecedec3b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -95,6 +95,8 @@ Main (unreleased) - Grafana Agent Operator: `config-reloader` container no longer runs as root. (@rootmout) +- Added support for replaying not sent data for `loki.write` when WAL is enabled. (@thepalbi) + ### Bugfixes - Fixed an issue where `loki.process` validation for stage `metric.counter` was @@ -129,6 +131,8 @@ Main (unreleased) - Fixed a bug where UDP syslog messages were never processed (@joshuapare) +- Updating configuration for `loki.write` no longer drops data. (@thepalbi) + v0.37.4 (2023-11-06) ----------------- diff --git a/component/common/loki/client/client_writeto.go b/component/common/loki/client/client_writeto.go deleted file mode 100644 index 355b060286ef..000000000000 --- a/component/common/loki/client/client_writeto.go +++ /dev/null @@ -1,78 +0,0 @@ -package client - -import ( - "fmt" - "sync" - - "github.com/go-kit/log" - "github.com/grafana/agent/pkg/flow/logging/level" - "github.com/prometheus/common/model" - "github.com/prometheus/prometheus/tsdb/chunks" - "github.com/prometheus/prometheus/tsdb/record" - - "github.com/grafana/agent/component/common/loki" - "github.com/grafana/loki/pkg/ingester/wal" - "github.com/grafana/loki/pkg/util" -) - -// clientWriteTo implements a wal.WriteTo that re-builds entries with the stored series, and the received entries. After, -// sends each to the provided Client channel. -type clientWriteTo struct { - series map[chunks.HeadSeriesRef]model.LabelSet - seriesSegment map[chunks.HeadSeriesRef]int - seriesLock sync.RWMutex - - logger log.Logger - toClient chan<- loki.Entry -} - -// newClientWriteTo creates a new clientWriteTo -func newClientWriteTo(toClient chan<- loki.Entry, logger log.Logger) *clientWriteTo { - return &clientWriteTo{ - series: make(map[chunks.HeadSeriesRef]model.LabelSet), - seriesSegment: make(map[chunks.HeadSeriesRef]int), - toClient: toClient, - logger: logger, - } -} - -func (c *clientWriteTo) StoreSeries(series []record.RefSeries, segment int) { - c.seriesLock.Lock() - defer c.seriesLock.Unlock() - for _, seriesRec := range series { - c.seriesSegment[seriesRec.Ref] = segment - labels := util.MapToModelLabelSet(seriesRec.Labels.Map()) - c.series[seriesRec.Ref] = labels - } -} - -// SeriesReset will delete all cache entries that were last seen in segments numbered equal or lower than segmentNum -func (c *clientWriteTo) SeriesReset(segmentNum int) { - c.seriesLock.Lock() - defer c.seriesLock.Unlock() - for k, v := range c.seriesSegment { - if v <= segmentNum { - level.Debug(c.logger).Log("msg", fmt.Sprintf("reclaiming series under segment %d", segmentNum)) - delete(c.seriesSegment, k) - delete(c.series, k) - } - } -} - -func (c *clientWriteTo) AppendEntries(entries wal.RefEntries, _ int) error { - var entry loki.Entry - c.seriesLock.RLock() - l, ok := c.series[entries.Ref] - c.seriesLock.RUnlock() - if ok { - entry.Labels = l - for _, e := range entries.Entries { - entry.Entry = e - c.toClient <- entry - } - } else { - // TODO(thepalbi): Add metric here - level.Debug(c.logger).Log("msg", "series for entry not found") - } - return nil -} diff --git a/component/common/loki/client/client_writeto_test.go b/component/common/loki/client/client_writeto_test.go deleted file mode 100644 index 1ad7929b58ad..000000000000 --- a/component/common/loki/client/client_writeto_test.go +++ /dev/null @@ -1,247 +0,0 @@ -package client - -import ( - "fmt" - "math/rand" - "os" - "sync" - "testing" - "time" - - "go.uber.org/atomic" - - "github.com/go-kit/log" - "github.com/grafana/agent/pkg/flow/logging/level" - "github.com/prometheus/common/model" - "github.com/prometheus/prometheus/model/labels" - "github.com/prometheus/prometheus/tsdb/chunks" - "github.com/prometheus/prometheus/tsdb/record" - "github.com/stretchr/testify/require" - - "github.com/grafana/agent/component/common/loki" - "github.com/grafana/agent/component/common/loki/utils" - "github.com/grafana/loki/pkg/ingester/wal" - "github.com/grafana/loki/pkg/logproto" -) - -func TestClientWriter_LogEntriesAreReconstructedAndForwardedCorrectly(t *testing.T) { - logger := level.NewFilter(log.NewLogfmtLogger(os.Stdout), level.AllowDebug()) - ch := make(chan loki.Entry) - defer close(ch) - - var receivedEntries = utils.NewSyncSlice[loki.Entry]() - - go func() { - for e := range ch { - receivedEntries.Append(e) - } - }() - - var lines = []string{ - "some entry", - "some other entry", - "this is a song", - "about entries", - "I'm in a starbucks", - } - - writeTo := newClientWriteTo(ch, logger) - testAppLabelsRef := chunks.HeadSeriesRef(1) - writeTo.StoreSeries([]record.RefSeries{ - { - Ref: testAppLabelsRef, - Labels: []labels.Label{ - { - Name: "app", - Value: "test", - }, - }, - }, - }, 1) - - for _, line := range lines { - _ = writeTo.AppendEntries(wal.RefEntries{ - Ref: testAppLabelsRef, - Entries: []logproto.Entry{ - { - Timestamp: time.Now(), - Line: line, - }, - }, - }, 0) - } - - require.Eventually(t, func() bool { - return receivedEntries.Length() == len(lines) - }, time.Second*10, time.Second) - defer receivedEntries.DoneIterate() - for _, receivedEntry := range receivedEntries.StartIterate() { - require.Contains(t, lines, receivedEntry.Line, "entry line was not expected") - require.Equal(t, model.LabelValue("test"), receivedEntry.Labels["app"]) - } -} - -func TestClientWriter_LogEntriesWithoutMatchingSeriesAreIgnored(t *testing.T) { - logger := level.NewFilter(log.NewLogfmtLogger(os.Stdout), level.AllowDebug()) - ch := make(chan loki.Entry) - defer close(ch) - - var receivedEntries = utils.NewSyncSlice[loki.Entry]() - - go func() { - for e := range ch { - receivedEntries.Append(e) - } - }() - - var lines = []string{ - "some entry", - "some other entry", - "this is a song", - "about entries", - "I'm in a starbucks", - } - - writeTo := newClientWriteTo(ch, logger) - testAppLabelsRef := chunks.HeadSeriesRef(1) - writeTo.StoreSeries([]record.RefSeries{ - { - Ref: testAppLabelsRef, - Labels: []labels.Label{ - { - Name: "app", - Value: "test", - }, - }, - }, - }, 1) - - for _, line := range lines { - _ = writeTo.AppendEntries(wal.RefEntries{ - Ref: chunks.HeadSeriesRef(61324), - Entries: []logproto.Entry{ - { - Timestamp: time.Now(), - Line: line, - }, - }, - }, 0) - } - - time.Sleep(time.Second * 2) - require.Equal(t, 0, receivedEntries.Length(), "no entry should have arrived") -} - -func BenchmarkClientWriteTo(b *testing.B) { - type testCase struct { - numWriters int - totalLines int - } - for _, tc := range []testCase{ - {numWriters: 5, totalLines: 1_000}, - {numWriters: 10, totalLines: 1_000}, - {numWriters: 5, totalLines: 10_000}, - {numWriters: 10, totalLines: 10_000}, - {numWriters: 5, totalLines: 100_000}, - {numWriters: 10, totalLines: 100_000}, - {numWriters: 10, totalLines: 1_000_000}, - } { - b.Run(fmt.Sprintf("num writers %d, with %d lines written in total", tc.numWriters, tc.totalLines), - func(b *testing.B) { - require.True(b, tc.totalLines%tc.numWriters == 0, "total lines must be divisible by num of writers") - for n := 0; n < b.N; n++ { - bench(tc.numWriters, tc.totalLines, b) - } - }) - } -} - -// bench is a single execution of the ClientWriteTo benchmark. During the execution of the benchmark, numWriters routines -// will run, writing totalLines in total. After the writers have finished, the execution will block until the number of -// expected written entries is reached, or it times out. -func bench(numWriters, totalLines int, b *testing.B) { - logger := level.NewFilter(log.NewLogfmtLogger(os.Stdout), level.AllowDebug()) - readerWG := sync.WaitGroup{} - ch := make(chan loki.Entry) - - b.Log("starting reader routine") - readerWG.Add(1) - var totalReceived atomic.Int64 - go func() { - defer readerWG.Done() - // discard received entries - for range ch { - totalReceived.Inc() - } - }() - - writeTo := newClientWriteTo(ch, logger) - - // spin up the numWriters routines - writersWG := sync.WaitGroup{} - for n := 0; n < numWriters; n++ { - writersWG.Add(1) - go func(n int) { - defer writersWG.Done() - b.Logf("starting writer routine %d", n) - // run as writing from segment n+w, and after finishing reset series up to n. That way we are only causing blocking, - // and not deleting actually used series - startWriter(numWriters+n, n, writeTo, totalLines/numWriters, record.RefSeries{ - Ref: chunks.HeadSeriesRef(n), - Labels: labels.Labels{ - {Name: "n", Value: fmt.Sprint(n)}, - }, - }, time.Millisecond*500) - }(n) - } - - b.Log("waiting for writers to finish") - writersWG.Wait() - - b.Log("waiting for reader to finish") - require.Eventually(b, func() bool { - var read = totalReceived.Load() - b.Logf("checking, value read: %d", read) - return read == int64(totalLines) - }, time.Second*10, time.Second) - close(ch) - readerWG.Wait() - require.Equal(b, int64(totalLines), totalReceived.Load(), "some lines where not read") -} - -// startWriter orchestrates each writer routine that bench launches. Each routine will execute the following actions: -// 1. Add some jitter to the whole routine execution by waiting between 0 and maxInitialSleep. -// 2. Store the series that all written entries will use. -// 3. Write the lines entries, adding a small jitter between 0 and 1 ms after each write operation. -// 4. After all are written, call a SeriesReset. This will block the entire series map and will hopefully block -// some other writing routine. -func startWriter(segmentNum, seriesToReset int, target *clientWriteTo, lines int, series record.RefSeries, maxInitialSleep time.Duration) { - randomSleepMax := func(max time.Duration) { - // random sleep to add some jitter - s := int64(rand.Uint64()) % int64(max) - time.Sleep(time.Duration(s)) - } - // random sleep to add some jitter - randomSleepMax(maxInitialSleep) - - // store series - target.StoreSeries([]record.RefSeries{series}, segmentNum) - - // write lines with that series - for i := 0; i < lines; i++ { - _ = target.AppendEntries(wal.RefEntries{ - Ref: series.Ref, - Entries: []logproto.Entry{ - { - Timestamp: time.Now(), - Line: fmt.Sprintf("%d - %d - hellooo", segmentNum, i), - }, - }, - }, 0) - // add some jitter between writes - randomSleepMax(time.Millisecond * 1) - } - - // reset segment - target.SeriesReset(seriesToReset) -} diff --git a/component/common/loki/client/internal/marker_encoding.go b/component/common/loki/client/internal/marker_encoding.go index 48415f421c7f..c3ed7dd5778f 100644 --- a/component/common/loki/client/internal/marker_encoding.go +++ b/component/common/loki/client/internal/marker_encoding.go @@ -15,7 +15,7 @@ var ( func EncodeMarkerV1(segment uint64) ([]byte, error) { // marker format v1 // marker [ 0 , 1 ] - HEADER, which is used to track version - // marker [ 2 , 9 ] - encoded unit 64 which is the content of the marker, the last "consumed" segment + // marker [ 2 , 9 ] - encoded uint64 which is the content of the marker, the last "consumed" segment // marker [ 10, 13 ] - CRC32 of the first 10 bytes of the marker, using IEEE polynomial bs := make([]byte, 14) // write header with marker format version diff --git a/component/common/loki/wal/watcher_test.go b/component/common/loki/wal/watcher_test.go index a24b7ff63049..97de19748dee 100644 --- a/component/common/loki/wal/watcher_test.go +++ b/component/common/loki/wal/watcher_test.go @@ -64,12 +64,9 @@ func (t *testWriteTo) AssertContainsLines(tst *testing.T, lines ...string) { } t.ReadEntries.DoneIterate() - allSeen := true - for _, wasSeen := range seen { - allSeen = allSeen && wasSeen + for line, wasSeen := range seen { + require.True(tst, wasSeen, "expected to have received line: %s", line) } - - require.True(tst, allSeen, "expected all entries to have been received") } // watcherTestResources contains all resources necessary to test an individual Watcher functionality diff --git a/component/loki/write/write.go b/component/loki/write/write.go index 45d4aa063ec3..a9d9c2730936 100644 --- a/component/loki/write/write.go +++ b/component/loki/write/write.go @@ -119,11 +119,14 @@ func (c *Component) Run(ctx context.Context) error { case <-ctx.Done(): return nil case entry := <-c.receiver.Chan(): + c.mut.RLock() select { case <-ctx.Done(): + c.mut.RUnlock() return nil case c.sink.Chan() <- entry: } + c.mut.RUnlock() } } } diff --git a/component/loki/write/write_test.go b/component/loki/write/write_test.go index 0e7c1a3165cb..642b53703e0c 100644 --- a/component/loki/write/write_test.go +++ b/component/loki/write/write_test.go @@ -10,18 +10,19 @@ import ( "testing" "time" - "github.com/prometheus/common/model" - "github.com/stretchr/testify/require" - "github.com/grafana/agent/component/common/loki" "github.com/grafana/agent/component/common/loki/wal" "github.com/grafana/agent/component/discovery" lsf "github.com/grafana/agent/component/loki/source/file" "github.com/grafana/agent/pkg/flow/componenttest" "github.com/grafana/agent/pkg/util" + "github.com/grafana/river" + "github.com/prometheus/common/model" + "github.com/stretchr/testify/require" + "go.uber.org/atomic" + "github.com/grafana/loki/pkg/logproto" loki_util "github.com/grafana/loki/pkg/util" - "github.com/grafana/river" ) func TestRiverConfig(t *testing.T) { @@ -304,3 +305,98 @@ func testMultipleEndpoint(t *testing.T, alterArgs func(arguments *Arguments)) { } } } + +type testCase struct { + linesCount int + seriesCount int +} + +func BenchmarkLokiWrite(b *testing.B) { + for name, tc := range map[string]testCase{ + "100 lines, single series": { + linesCount: 100, + seriesCount: 1, + }, + "100k lines, 100 series": { + linesCount: 100_000, + seriesCount: 100, + }, + } { + b.Run(name, func(b *testing.B) { + benchSingleEndpoint(b, tc, func(arguments *Arguments) {}) + }) + } +} + +func benchSingleEndpoint(b *testing.B, tc testCase, alterConfig func(arguments *Arguments)) { + // Set up the server that will receive the log entry, and expose it on ch. + var seenLines atomic.Int64 + ch := make(chan logproto.PushRequest) + + // just count seenLines for each entry received + go func() { + for pr := range ch { + count := 0 + for _, str := range pr.Streams { + count += len(str.Entries) + } + seenLines.Add(int64(count)) + } + }() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + var pushReq logproto.PushRequest + err := loki_util.ParseProtoReader(context.Background(), r.Body, int(r.ContentLength), math.MaxInt32, &pushReq, loki_util.RawSnappy) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + tenantHeader := r.Header.Get("X-Scope-OrgID") + require.Equal(b, tenantHeader, "tenant-1") + + ch <- pushReq + })) + defer srv.Close() + + // Set up the component Arguments. + cfg := fmt.Sprintf(` + endpoint { + url = "%s" + batch_wait = "10ms" + tenant_id = "tenant-1" + } + `, srv.URL) + var args Arguments + require.NoError(b, river.Unmarshal([]byte(cfg), &args)) + + alterConfig(&args) + + // Set up and start the component. + testComp, err := componenttest.NewControllerFromID(util.TestLogger(b), "loki.write") + require.NoError(b, err) + go func() { + err = testComp.Run(componenttest.TestContext(b), args) + require.NoError(b, err) + }() + require.NoError(b, testComp.WaitExports(time.Second)) + + // get exports from component + exports := testComp.Exports().(Exports) + + for i := 0; i < b.N; i++ { + for j := 0; j < tc.linesCount; j++ { + logEntry := loki.Entry{ + Labels: model.LabelSet{"foo": model.LabelValue(fmt.Sprintf("bar-%d", i%tc.seriesCount))}, + Entry: logproto.Entry{ + Timestamp: time.Now(), + Line: "very important log", + }, + } + exports.Receiver.Chan() <- logEntry + } + + require.Eventually(b, func() bool { + return int64(tc.linesCount) == seenLines.Load() + }, time.Minute, time.Second, "haven't seen expected number of lines") + } +} diff --git a/pkg/flow/componenttest/context.go b/pkg/flow/componenttest/context.go index b0ede0221b39..462787177324 100644 --- a/pkg/flow/componenttest/context.go +++ b/pkg/flow/componenttest/context.go @@ -6,7 +6,7 @@ import ( ) // TestContext returns a context which cancels itself when t finishes. -func TestContext(t *testing.T) context.Context { +func TestContext(t testing.TB) context.Context { ctx, cancel := context.WithCancel(context.Background()) t.Cleanup(cancel) return ctx diff --git a/pkg/util/test_logger.go b/pkg/util/test_logger.go index 150c5f14f9a6..739d178cba49 100644 --- a/pkg/util/test_logger.go +++ b/pkg/util/test_logger.go @@ -11,7 +11,7 @@ import ( ) // TestLogger generates a logger for a test. -func TestLogger(t *testing.T) log.Logger { +func TestLogger(t testing.TB) log.Logger { t.Helper() l := log.NewSyncLogger(log.NewLogfmtLogger(os.Stderr)) From 1d30d823e8ce4981f92e524e482aca6386c226fd Mon Sep 17 00:00:00 2001 From: William Dumont Date: Wed, 8 Nov 2023 11:13:39 +0100 Subject: [PATCH 005/166] integration-tests: prom metrics improvements (#5695) --- integration-tests/common/metric.go | 79 ++++++-- integration-tests/configs/mimir/mimir.yaml | 1 + integration-tests/configs/prom-gen/Dockerfile | 9 + integration-tests/configs/prom-gen/main.go | 179 ++++++++++++++++++ integration-tests/docker-compose.yaml | 12 +- .../tests/scrape-prom-metrics/config.river | 3 + .../scrape_prom_metrics_test.go | 54 +++++- 7 files changed, 316 insertions(+), 21 deletions(-) create mode 100644 integration-tests/configs/prom-gen/Dockerfile create mode 100644 integration-tests/configs/prom-gen/main.go diff --git a/integration-tests/common/metric.go b/integration-tests/common/metric.go index ea5622fe7fad..95990a042475 100644 --- a/integration-tests/common/metric.go +++ b/integration-tests/common/metric.go @@ -15,10 +15,28 @@ type MetricData struct { Result []MetricResult `json:"result"` } -// TODO: check for the type +type HistogramRawData struct { + Timestamp int64 + Data HistogramData +} + +type Bucket struct { + BoundaryRule float64 + LeftBoundary string + RightBoundary string + CountInBucket string +} + +type HistogramData struct { + Count string `json:"count"` + Sum string `json:"sum"` + Buckets []Bucket `json:"buckets"` +} + type MetricResult struct { - Metric Metric `json:"metric"` - Value Value `json:"value"` + Metric Metric `json:"metric"` + Value *Value `json:"value,omitempty"` + Histogram *HistogramRawData `json:"histogram,omitempty"` } type Value struct { @@ -26,6 +44,52 @@ type Value struct { Value string } +type Metric struct { + TestName string `json:"test_name"` + Name string `json:"__name__"` +} + +func (m *MetricResponse) Unmarshal(data []byte) error { + return json.Unmarshal(data, m) +} + +func (h *HistogramRawData) UnmarshalJSON(b []byte) error { + var arr []json.RawMessage + if err := json.Unmarshal(b, &arr); err != nil { + return err + } + if len(arr) != 2 { + return fmt.Errorf("expected 2 values in histogram raw data, got %d", len(arr)) + } + + if err := json.Unmarshal(arr[0], &h.Timestamp); err != nil { + return err + } + return json.Unmarshal(arr[1], &h.Data) +} + +func (b *Bucket) UnmarshalJSON(data []byte) error { + var raw []interface{} + if err := json.Unmarshal(data, &raw); err != nil { + return err + } + if len(raw) != 4 { + return fmt.Errorf("expected 4 values for bucket, got %d", len(raw)) + } + + if v, ok := raw[0].(float64); ok { + b.BoundaryRule = v + } else { + return fmt.Errorf("expected float64 for BoundaryRule, got %T", raw[0]) + } + + b.LeftBoundary, _ = raw[1].(string) + b.RightBoundary, _ = raw[2].(string) + b.CountInBucket, _ = raw[3].(string) + + return nil +} + func (v *Value) UnmarshalJSON(b []byte) error { var arr []interface{} if err := json.Unmarshal(b, &arr); err != nil { @@ -38,12 +102,3 @@ func (v *Value) UnmarshalJSON(b []byte) error { v.Value, _ = arr[1].(string) return nil } - -type Metric struct { - TestName string `json:"test_name"` - Name string `json:"__name__"` -} - -func (m *MetricResponse) Unmarshal(data []byte) error { - return json.Unmarshal(data, m) -} diff --git a/integration-tests/configs/mimir/mimir.yaml b/integration-tests/configs/mimir/mimir.yaml index e48447f24c3a..a6237eb750d5 100644 --- a/integration-tests/configs/mimir/mimir.yaml +++ b/integration-tests/configs/mimir/mimir.yaml @@ -61,3 +61,4 @@ ruler_storage: limits: ingestion_burst_size: 500000 ingestion_rate: 250000 + native_histograms_ingestion_enabled: true diff --git a/integration-tests/configs/prom-gen/Dockerfile b/integration-tests/configs/prom-gen/Dockerfile new file mode 100644 index 000000000000..7c395748689a --- /dev/null +++ b/integration-tests/configs/prom-gen/Dockerfile @@ -0,0 +1,9 @@ +FROM golang:1.21 as build +WORKDIR /app/ +COPY go.mod go.sum ./ +RUN go mod download +COPY ./integration-tests/configs/prom-gen/ ./ +RUN CGO_ENABLED=0 go build -o main main.go +FROM alpine:3.18 +COPY --from=build /app/main /app/main +CMD ["/app/main"] diff --git a/integration-tests/configs/prom-gen/main.go b/integration-tests/configs/prom-gen/main.go new file mode 100644 index 000000000000..a91e2939e681 --- /dev/null +++ b/integration-tests/configs/prom-gen/main.go @@ -0,0 +1,179 @@ +package main + +import ( + "context" + "flag" + "fmt" + "log" + "math/rand" + "net" + "net/http" + "time" + + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/promhttp" +) + +const defaultPort = "9001" + +type Config struct { + ListenAddress string +} + +func (cfg *Config) RegisterFlags(f *flag.FlagSet) { + f.StringVar(&cfg.ListenAddress, "bind", fmt.Sprintf(":%s", defaultPort), "Bind address") +} + +func main() { + // Parse CLI flags. + cfg := &Config{} + cfg.RegisterFlags(flag.CommandLine) + flag.Parse() + + address, port := getAddressAndPort(cfg.ListenAddress) + listenAddress := fmt.Sprintf("%s:%s", address, port) + http.Handle("/metrics", promhttp.Handler()) + server := &http.Server{Addr: listenAddress, Handler: nil} + defer func() { + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + + if err := server.Shutdown(ctx); err != nil { + log.Fatalf("Server shutdown error: %v", err) + } + }() + log.Printf("HTTP server on %s", listenAddress) + + go func() { log.Fatal(server.ListenAndServe()) }() + + labels := map[string]string{ + "address": address, + "port": port, + } + + go handleCounter(setupCounter(labels)) + go handleGaugeInput(setupGauge(labels)) + go handleHistogramInput(setupHistogram(labels)) + go handleHistogramInput(setupNativeHistogram(labels)) + go handleSummary(setupSummary(labels)) + stopChan := make(chan struct{}) + <-stopChan +} + +// getAddressAndPort always defines a non empty address and port +// +// The Go http server can use empty to mean any, but we want +// something meaningful in the metric labels. +func getAddressAndPort(listenAddress string) (string, string) { + address, port, error := net.SplitHostPort(listenAddress) + if error != nil { + log.Fatal(error) + } + if address == "" { + address = "0.0.0.0" + } + if port == "" { + port = defaultPort + } + + return address, port +} + +func setupGauge(labels map[string]string) prometheus.Gauge { + gauge := prometheus.NewGauge( + prometheus.GaugeOpts{ + Namespace: "golang", + Name: "gauge", + ConstLabels: labels, + }) + prometheus.MustRegister(gauge) + return gauge +} + +func handleGaugeInput(gauge prometheus.Gauge) { + ticker := time.NewTicker(time.Second) + defer ticker.Stop() + + for range ticker.C { + newValue := rand.Float64() * 100 + gauge.Set(newValue) + } +} + +func setupNativeHistogram(labels map[string]string) prometheus.Histogram { + nativeHistogram := prometheus.NewHistogram( + prometheus.HistogramOpts{ + Namespace: "golang", + Name: "native_histogram", + ConstLabels: labels, + NativeHistogramBucketFactor: 1.1, + NativeHistogramMaxBucketNumber: 100, + NativeHistogramMinResetDuration: 1 * time.Hour, + }) + prometheus.MustRegister(nativeHistogram) + return nativeHistogram +} + +func setupHistogram(labels map[string]string) prometheus.Histogram { + histogram := prometheus.NewHistogram( + prometheus.HistogramOpts{ + Namespace: "golang", + Name: "histogram", + ConstLabels: labels, + Buckets: []float64{1, 10, 100, 1000}, + }) + prometheus.MustRegister(histogram) + return histogram +} + +func handleHistogramInput(histogram prometheus.Histogram) { + ticker := time.NewTicker(time.Second) + defer ticker.Stop() + + for range ticker.C { + newValue := rand.Float64() * 1000 + histogram.Observe(newValue) + } +} + +func setupCounter(labels map[string]string) prometheus.Counter { + counter := prometheus.NewCounter( + prometheus.CounterOpts{ + Namespace: "golang", + Name: "counter", + ConstLabels: labels, + }) + prometheus.MustRegister(counter) + return counter +} + +func handleCounter(counter prometheus.Counter) { + ticker := time.NewTicker(time.Second) + defer ticker.Stop() + + for range ticker.C { + counter.Inc() + } +} + +func setupSummary(labels map[string]string) prometheus.Summary { + summary := prometheus.NewSummary( + prometheus.SummaryOpts{ + Namespace: "golang", + Name: "summary", + ConstLabels: labels, + Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001}, + }) + prometheus.MustRegister(summary) + return summary +} + +func handleSummary(summary prometheus.Summary) { + ticker := time.NewTicker(time.Second) + defer ticker.Stop() + + for range ticker.C { + newValue := rand.Float64() * 1000 + summary.Observe(newValue) + } +} diff --git a/integration-tests/docker-compose.yaml b/integration-tests/docker-compose.yaml index 2aa98f9b1500..b576a425fa68 100644 --- a/integration-tests/docker-compose.yaml +++ b/integration-tests/docker-compose.yaml @@ -2,7 +2,7 @@ version: "3" services: mimir: - image: grafana/mimir:2.9.0 + image: grafana/mimir:latest volumes: - ./configs/mimir:/etc/mimir-config entrypoint: @@ -52,11 +52,9 @@ services: depends_on: - otel-collector - avalanche: - image: quay.io/freshtracks.io/avalanche:latest - command: - - --metric-count=50 - - --series-interval=7200 - - --metric-interval=7200 + prom-gen: + build: + dockerfile: ./integration-tests/configs/prom-gen/Dockerfile + context: .. ports: - "9001:9001" \ No newline at end of file diff --git a/integration-tests/tests/scrape-prom-metrics/config.river b/integration-tests/tests/scrape-prom-metrics/config.river index 77fa88430977..cf546412a554 100644 --- a/integration-tests/tests/scrape-prom-metrics/config.river +++ b/integration-tests/tests/scrape-prom-metrics/config.river @@ -3,6 +3,8 @@ prometheus.scrape "scrape_prom_metrics" { {"__address__" = "localhost:9001"}, ] forward_to = [prometheus.remote_write.scrape_prom_metrics.receiver] + scrape_classic_histograms = true + enable_protobuf_negotiation = true scrape_interval = "1s" scrape_timeout = "500ms" } @@ -10,6 +12,7 @@ prometheus.scrape "scrape_prom_metrics" { prometheus.remote_write "scrape_prom_metrics" { endpoint { url = "http://localhost:9009/api/v1/push" + send_native_histograms = true metadata_config { send_interval = "1s" } diff --git a/integration-tests/tests/scrape-prom-metrics/scrape_prom_metrics_test.go b/integration-tests/tests/scrape-prom-metrics/scrape_prom_metrics_test.go index f6c99a08c132..f57e1ca37b3c 100644 --- a/integration-tests/tests/scrape-prom-metrics/scrape_prom_metrics_test.go +++ b/integration-tests/tests/scrape-prom-metrics/scrape_prom_metrics_test.go @@ -1,23 +1,73 @@ package main import ( + "fmt" "testing" "github.com/grafana/agent/integration-tests/common" "github.com/stretchr/testify/assert" ) -const query = "http://localhost:9009/prometheus/api/v1/query?query=avalanche_metric_mmmmm_0_0{test_name='scrape_prom_metrics'}" +const promURL = "http://localhost:9009/prometheus/api/v1/query?query=" + +func metricQuery(metricName string) string { + return fmt.Sprintf("%s%s{test_name='scrape_prom_metrics'}", promURL, metricName) +} func TestScrapePromMetrics(t *testing.T) { + tests := []struct { + query string + metric string + }{ + // TODO: better differentiate these metric types? + {metricQuery("golang_counter"), "golang_counter"}, + {metricQuery("golang_gauge"), "golang_gauge"}, + {metricQuery("golang_histogram_bucket"), "golang_histogram_bucket"}, + {metricQuery("golang_summary"), "golang_summary"}, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.metric, func(t *testing.T) { + t.Parallel() + assertMetricData(t, tt.query, tt.metric) + }) + } + t.Run("golang_native_histogram", func(t *testing.T) { + t.Parallel() + assertHistogramData(t, metricQuery("golang_native_histogram"), "golang_native_histogram") + }) +} + +func assertHistogramData(t *testing.T, query string, expectedMetric string) { + var metricResponse common.MetricResponse + assert.EventuallyWithT(t, func(c *assert.CollectT) { + err := common.FetchDataFromURL(query, &metricResponse) + assert.NoError(c, err) + if assert.NotEmpty(c, metricResponse.Data.Result) { + assert.Equal(c, metricResponse.Data.Result[0].Metric.Name, expectedMetric) + assert.Equal(c, metricResponse.Data.Result[0].Metric.TestName, "scrape_prom_metrics") + if assert.NotNil(c, metricResponse.Data.Result[0].Histogram) { + histogram := metricResponse.Data.Result[0].Histogram + assert.NotEmpty(c, histogram.Data.Count) + assert.NotEmpty(c, histogram.Data.Sum) + assert.NotEmpty(c, histogram.Data.Buckets) + assert.Nil(c, metricResponse.Data.Result[0].Value) + } + } + }, common.DefaultTimeout, common.DefaultRetryInterval, "Histogram data did not satisfy the conditions within the time limit") +} + +func assertMetricData(t *testing.T, query, expectedMetric string) { var metricResponse common.MetricResponse assert.EventuallyWithT(t, func(c *assert.CollectT) { err := common.FetchDataFromURL(query, &metricResponse) assert.NoError(c, err) if assert.NotEmpty(c, metricResponse.Data.Result) { - assert.Equal(c, metricResponse.Data.Result[0].Metric.Name, "avalanche_metric_mmmmm_0_0") + assert.Equal(c, metricResponse.Data.Result[0].Metric.Name, expectedMetric) assert.Equal(c, metricResponse.Data.Result[0].Metric.TestName, "scrape_prom_metrics") assert.NotEmpty(c, metricResponse.Data.Result[0].Value.Value) + assert.Nil(c, metricResponse.Data.Result[0].Histogram) } }, common.DefaultTimeout, common.DefaultRetryInterval, "Data did not satisfy the conditions within the time limit") } From 90a03f920d19750c3cd33076631aec269624647a Mon Sep 17 00:00:00 2001 From: Paschalis Tsilias Date: Wed, 8 Nov 2023 12:17:23 +0200 Subject: [PATCH 006/166] helm: fix the CHANGELOG header for v0.27.2 (#5736) Signed-off-by: Paschalis Tsilias --- operations/helm/charts/grafana-agent/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/operations/helm/charts/grafana-agent/CHANGELOG.md b/operations/helm/charts/grafana-agent/CHANGELOG.md index a07f6c76f0f0..f87918d883ce 100644 --- a/operations/helm/charts/grafana-agent/CHANGELOG.md +++ b/operations/helm/charts/grafana-agent/CHANGELOG.md @@ -10,7 +10,7 @@ internal API changes are not present. Unreleased ---------- -0.27.1 (2023-11-07) +0.27.2 (2023-11-07) ---------- ### Enhancements From 0961bf4e4897cf5e1a0541e6eb803896681b3331 Mon Sep 17 00:00:00 2001 From: Jack Baldry Date: Wed, 8 Nov 2023 13:24:28 +0000 Subject: [PATCH 007/166] Add aliases in preparation for the move of Grafana Cloud agent documentation (#5731) * Roundtrip front matter through alias tool Signed-off-by: Jack Baldry * Add /docs/grafana-cloud/monitor-infrastructure/agent/ aliases to all pages Signed-off-by: Jack Baldry * Add /docs/grafana-cloud/send-data/agent/ aliases to all pages Signed-off-by: Jack Baldry * Regenerate the docs --------- Signed-off-by: Jack Baldry Co-authored-by: Clayton Cornell Co-authored-by: Clayton Cornell <131809008+clayton-cornell@users.noreply.github.com> --- docs/sources/_index.md | 1 + docs/sources/_index.md.t | 1 + docs/sources/about.md | 3 ++- docs/sources/data-collection.md | 3 ++- docs/sources/flow/_index.md | 4 +++- docs/sources/flow/concepts/_index.md | 3 ++- docs/sources/flow/concepts/clustering.md | 3 ++- docs/sources/flow/concepts/component_controller.md | 3 ++- docs/sources/flow/concepts/components.md | 3 ++- docs/sources/flow/concepts/configuration_language.md | 3 ++- docs/sources/flow/concepts/modules.md | 3 ++- docs/sources/flow/config-language/_index.md | 3 ++- docs/sources/flow/config-language/components.md | 3 ++- .../sources/flow/config-language/expressions/_index.md | 3 ++- .../flow/config-language/expressions/function_calls.md | 3 ++- .../flow/config-language/expressions/operators.md | 3 ++- .../config-language/expressions/referencing_exports.md | 3 ++- .../config-language/expressions/types_and_values.md | 3 ++- docs/sources/flow/config-language/files.md | 3 ++- docs/sources/flow/config-language/syntax.md | 3 ++- docs/sources/flow/getting-started/_index.md | 3 ++- .../flow/getting-started/collect-opentelemetry-data.md | 3 ++- .../flow/getting-started/collect-prometheus-metrics.md | 3 ++- .../flow/getting-started/configure-agent-clustering.md | 3 ++- .../distribute-prometheus-scrape-load.md | 3 ++- .../flow/getting-started/migrating-from-operator.md | 3 +++ .../flow/getting-started/migrating-from-prometheus.md | 3 ++- .../flow/getting-started/migrating-from-promtail.md | 3 ++- .../flow/getting-started/migrating-from-static.md | 4 +++- .../getting-started/opentelemetry-to-lgtm-stack.md | 4 +++- docs/sources/flow/monitoring/_index.md | 3 ++- docs/sources/flow/monitoring/component_metrics.md | 3 ++- docs/sources/flow/monitoring/controller_metrics.md | 3 ++- docs/sources/flow/monitoring/debugging.md | 3 ++- docs/sources/flow/reference/_index.md | 5 +++-- docs/sources/flow/reference/cli/_index.md | 5 ++--- docs/sources/flow/reference/cli/convert.md | 5 ++--- docs/sources/flow/reference/cli/fmt.md | 4 ++-- docs/sources/flow/reference/cli/run.md | 5 ++--- docs/sources/flow/reference/cli/tools.md | 4 ++-- docs/sources/flow/reference/components/_index.md | 3 ++- .../flow/reference/components/discovery.azure.md | 3 ++- .../flow/reference/components/discovery.consul.md | 3 ++- .../flow/reference/components/discovery.consulagent.md | 5 ++++- .../reference/components/discovery.digitalocean.md | 3 ++- .../sources/flow/reference/components/discovery.dns.md | 5 +++-- .../flow/reference/components/discovery.docker.md | 3 ++- .../flow/reference/components/discovery.dockerswarm.md | 9 +++++---- .../sources/flow/reference/components/discovery.ec2.md | 3 ++- .../flow/reference/components/discovery.eureka.md | 3 ++- .../flow/reference/components/discovery.file.md | 3 ++- .../sources/flow/reference/components/discovery.gce.md | 3 ++- .../flow/reference/components/discovery.hetzner.md | 3 ++- .../flow/reference/components/discovery.http.md | 3 ++- .../flow/reference/components/discovery.ionos.md | 3 ++- .../flow/reference/components/discovery.kubelet.md | 3 ++- .../flow/reference/components/discovery.kubernetes.md | 3 ++- .../flow/reference/components/discovery.kuma.md | 3 ++- .../flow/reference/components/discovery.lightsail.md | 3 ++- .../flow/reference/components/discovery.linode.md | 5 ++++- .../flow/reference/components/discovery.marathon.md | 3 ++- .../flow/reference/components/discovery.nerve.md | 5 ++++- .../flow/reference/components/discovery.nomad.md | 3 ++- .../flow/reference/components/discovery.openstack.md | 3 ++- .../flow/reference/components/discovery.puppetdb.md | 3 ++- .../flow/reference/components/discovery.relabel.md | 3 ++- .../flow/reference/components/discovery.scaleway.md | 5 ++++- .../flow/reference/components/discovery.serverset.md | 5 ++++- .../flow/reference/components/discovery.triton.md | 3 ++- .../flow/reference/components/discovery.uyuni.md | 3 ++- .../sources/flow/reference/components/faro.receiver.md | 3 ++- docs/sources/flow/reference/components/local.file.md | 3 ++- .../flow/reference/components/local.file_match.md | 3 ++- docs/sources/flow/reference/components/loki.echo.md | 3 ++- docs/sources/flow/reference/components/loki.process.md | 3 ++- docs/sources/flow/reference/components/loki.relabel.md | 3 ++- .../flow/reference/components/loki.source.api.md | 3 ++- .../reference/components/loki.source.awsfirehose.md | 3 ++- .../components/loki.source.azure_event_hubs.md | 3 ++- .../reference/components/loki.source.cloudflare.md | 3 ++- .../flow/reference/components/loki.source.docker.md | 5 +++-- .../flow/reference/components/loki.source.file.md | 9 +++++---- .../flow/reference/components/loki.source.gcplog.md | 3 ++- .../flow/reference/components/loki.source.gelf.md | 3 ++- .../flow/reference/components/loki.source.heroku.md | 3 ++- .../flow/reference/components/loki.source.journal.md | 3 ++- .../flow/reference/components/loki.source.kafka.md | 3 ++- .../reference/components/loki.source.kubernetes.md | 3 ++- .../components/loki.source.kubernetes_events.md | 3 ++- .../flow/reference/components/loki.source.podlogs.md | 3 ++- .../flow/reference/components/loki.source.syslog.md | 3 ++- .../reference/components/loki.source.windowsevent.md | 3 ++- docs/sources/flow/reference/components/loki.write.md | 3 ++- .../reference/components/mimir.rules.kubernetes.md | 3 ++- docs/sources/flow/reference/components/module.file.md | 3 ++- docs/sources/flow/reference/components/module.git.md | 3 ++- docs/sources/flow/reference/components/module.http.md | 3 ++- .../sources/flow/reference/components/module.string.md | 3 ++- .../flow/reference/components/otelcol.auth.basic.md | 3 ++- .../flow/reference/components/otelcol.auth.bearer.md | 3 ++- .../flow/reference/components/otelcol.auth.headers.md | 3 ++- .../flow/reference/components/otelcol.auth.oauth2.md | 3 ++- .../flow/reference/components/otelcol.auth.sigv4.md | 3 ++- .../components/otelcol.connector.servicegraph.md | 5 ++++- .../reference/components/otelcol.connector.spanlogs.md | 3 ++- .../components/otelcol.connector.spanmetrics.md | 3 ++- .../components/otelcol.exporter.loadbalancing.md | 3 ++- .../reference/components/otelcol.exporter.logging.md | 3 ++- .../flow/reference/components/otelcol.exporter.loki.md | 3 ++- .../flow/reference/components/otelcol.exporter.otlp.md | 3 ++- .../reference/components/otelcol.exporter.otlphttp.md | 3 ++- .../components/otelcol.exporter.prometheus.md | 3 ++- .../otelcol.extension.jaeger_remote_sampling.md | 3 ++- .../components/otelcol.processor.attributes.md | 3 ++- .../reference/components/otelcol.processor.batch.md | 3 ++- .../components/otelcol.processor.discovery.md | 3 ++- .../reference/components/otelcol.processor.filter.md | 3 ++- .../components/otelcol.processor.k8sattributes.md | 3 ++- .../components/otelcol.processor.memory_limiter.md | 3 ++- .../otelcol.processor.probabilistic_sampler.md | 5 ++++- .../reference/components/otelcol.processor.span.md | 3 ++- .../components/otelcol.processor.tail_sampling.md | 3 ++- .../components/otelcol.processor.transform.md | 3 ++- .../reference/components/otelcol.receiver.jaeger.md | 3 ++- .../reference/components/otelcol.receiver.kafka.md | 3 ++- .../flow/reference/components/otelcol.receiver.loki.md | 3 ++- .../components/otelcol.receiver.opencensus.md | 3 ++- .../flow/reference/components/otelcol.receiver.otlp.md | 3 ++- .../components/otelcol.receiver.prometheus.md | 3 ++- .../reference/components/otelcol.receiver.zipkin.md | 3 ++- .../reference/components/prometheus.exporter.agent.md | 5 ++++- .../reference/components/prometheus.exporter.apache.md | 3 ++- .../reference/components/prometheus.exporter.azure.md | 9 +++++---- .../components/prometheus.exporter.blackbox.md | 3 ++- .../components/prometheus.exporter.cadvisor.md | 3 ++- .../components/prometheus.exporter.cloudwatch.md | 3 ++- .../reference/components/prometheus.exporter.consul.md | 3 ++- .../components/prometheus.exporter.dnsmasq.md | 3 ++- .../components/prometheus.exporter.elasticsearch.md | 3 ++- .../reference/components/prometheus.exporter.gcp.md | 3 ++- .../reference/components/prometheus.exporter.github.md | 3 ++- .../reference/components/prometheus.exporter.kafka.md | 3 ++- .../components/prometheus.exporter.memcached.md | 3 ++- .../components/prometheus.exporter.mongodb.md | 3 ++- .../reference/components/prometheus.exporter.mssql.md | 3 ++- .../reference/components/prometheus.exporter.mysql.md | 3 ++- .../components/prometheus.exporter.oracledb.md | 3 ++- .../components/prometheus.exporter.postgres.md | 3 ++- .../components/prometheus.exporter.process.md | 3 ++- .../reference/components/prometheus.exporter.redis.md | 3 ++- .../reference/components/prometheus.exporter.snmp.md | 3 ++- .../components/prometheus.exporter.snowflake.md | 3 ++- .../reference/components/prometheus.exporter.squid.md | 3 ++- .../reference/components/prometheus.exporter.statsd.md | 3 ++- .../reference/components/prometheus.exporter.unix.md | 3 ++- .../components/prometheus.exporter.vsphere.md | 3 ++- .../components/prometheus.exporter.windows.md | 3 ++- .../components/prometheus.operator.podmonitors.md | 3 ++- .../reference/components/prometheus.operator.probes.md | 3 ++- .../components/prometheus.operator.servicemonitors.md | 3 ++- .../reference/components/prometheus.receive_http.md | 3 ++- .../flow/reference/components/prometheus.relabel.md | 3 ++- .../reference/components/prometheus.remote_write.md | 3 ++- .../flow/reference/components/prometheus.scrape.md | 3 ++- .../flow/reference/components/pyroscope.ebpf.md | 9 +++++---- .../flow/reference/components/pyroscope.scrape.md | 3 ++- .../flow/reference/components/pyroscope.write.md | 3 ++- docs/sources/flow/reference/components/remote.http.md | 3 ++- .../components/remote.kubernetes.configmap.md | 5 ++++- .../reference/components/remote.kubernetes.secret.md | 5 ++++- docs/sources/flow/reference/components/remote.s3.md | 3 ++- docs/sources/flow/reference/components/remote.vault.md | 5 +++-- docs/sources/flow/reference/config-blocks/_index.md | 3 ++- docs/sources/flow/reference/config-blocks/argument.md | 5 +++-- docs/sources/flow/reference/config-blocks/export.md | 5 +++-- docs/sources/flow/reference/config-blocks/http.md | 5 +++-- docs/sources/flow/reference/config-blocks/logging.md | 5 +++-- docs/sources/flow/reference/config-blocks/tracing.md | 5 +++-- docs/sources/flow/reference/stdlib/_index.md | 4 +++- docs/sources/flow/reference/stdlib/coalesce.md | 3 ++- docs/sources/flow/reference/stdlib/concat.md | 3 ++- docs/sources/flow/reference/stdlib/constants.md | 3 ++- docs/sources/flow/reference/stdlib/env.md | 3 ++- docs/sources/flow/reference/stdlib/format.md | 3 ++- docs/sources/flow/reference/stdlib/join.md | 3 ++- docs/sources/flow/reference/stdlib/json_decode.md | 3 ++- docs/sources/flow/reference/stdlib/json_path.md | 3 ++- docs/sources/flow/reference/stdlib/nonsensitive.md | 3 ++- docs/sources/flow/reference/stdlib/replace.md | 3 ++- docs/sources/flow/reference/stdlib/split.md | 3 ++- docs/sources/flow/reference/stdlib/to_lower.md | 3 ++- docs/sources/flow/reference/stdlib/to_upper.md | 3 ++- docs/sources/flow/reference/stdlib/trim.md | 3 ++- docs/sources/flow/reference/stdlib/trim_prefix.md | 3 ++- docs/sources/flow/reference/stdlib/trim_space.md | 3 ++- docs/sources/flow/reference/stdlib/trim_suffix.md | 3 ++- docs/sources/flow/release-notes.md | 1 + docs/sources/flow/setup/_index.md | 1 + docs/sources/flow/setup/configure/_index.md | 1 + .../flow/setup/configure/configure-kubernetes.md | 1 + docs/sources/flow/setup/configure/configure-linux.md | 1 + docs/sources/flow/setup/configure/configure-macos.md | 1 + docs/sources/flow/setup/configure/configure-windows.md | 1 + docs/sources/flow/setup/deploy-agent.md | 1 + docs/sources/flow/setup/install/_index.md | 3 ++- docs/sources/flow/setup/install/binary.md | 1 + docs/sources/flow/setup/install/docker.md | 1 + docs/sources/flow/setup/install/kubernetes.md | 1 + docs/sources/flow/setup/install/linux.md | 1 + docs/sources/flow/setup/install/macos.md | 1 + docs/sources/flow/setup/install/windows.md | 1 + docs/sources/flow/setup/start-agent.md | 1 + docs/sources/flow/tutorials/_index.md | 3 ++- docs/sources/flow/tutorials/chaining.md | 1 + .../flow/tutorials/collecting-prometheus-metrics.md | 1 + docs/sources/flow/tutorials/filtering-metrics.md | 1 + docs/sources/operator/_index.md | 5 +++-- docs/sources/operator/add-custom-scrape-jobs.md | 3 ++- docs/sources/operator/api.md | 1 + docs/sources/operator/architecture.md | 3 ++- .../operator/deploy-agent-operator-resources.md | 3 ++- docs/sources/operator/getting-started.md | 3 ++- docs/sources/operator/helm-getting-started.md | 3 ++- docs/sources/operator/operator-integrations.md | 3 ++- docs/sources/operator/release-notes.md | 5 ++--- docs/sources/shared/deploy-agent.md | 3 ++- .../flow/reference/components/authorization-block.md | 1 + .../shared/flow/reference/components/azuread-block.md | 1 + .../flow/reference/components/basic-auth-block.md | 1 + .../reference/components/exporter-component-exports.md | 1 + .../flow/reference/components/extract-field-block.md | 1 + .../flow/reference/components/field-filter-block.md | 2 ++ .../reference/components/http-client-config-block.md | 1 + .../reference/components/local-file-arguments-text.md | 1 + .../flow/reference/components/loki-server-grpc.md | 1 + .../flow/reference/components/loki-server-http.md | 1 + .../reference/components/managed_identity-block.md | 1 + .../reference/components/match-properties-block.md | 1 + .../shared/flow/reference/components/oauth2-block.md | 1 + .../reference/components/otelcol-compression-field.md | 3 ++- .../components/otelcol-debug-metrics-block.md | 1 + .../components/otelcol-filter-attribute-block.md | 1 + .../components/otelcol-filter-library-block.md | 1 + .../components/otelcol-filter-log-severity-block.md | 1 + .../components/otelcol-filter-regexp-block.md | 1 + .../components/otelcol-filter-resource-block.md | 1 + .../reference/components/otelcol-grpc-authority.md | 3 ++- .../reference/components/otelcol-grpc-balancer-name.md | 3 ++- .../flow/reference/components/otelcol-queue-block.md | 1 + .../flow/reference/components/otelcol-retry-block.md | 1 + .../reference/components/otelcol-tls-config-block.md | 1 + .../flow/reference/components/output-block-logs.md | 1 + .../flow/reference/components/output-block-metrics.md | 1 + .../flow/reference/components/output-block-traces.md | 1 + .../shared/flow/reference/components/output-block.md | 1 + .../flow/reference/components/prom-operator-scrape.md | 2 ++ .../flow/reference/components/rule-block-logs.md | 1 + .../shared/flow/reference/components/rule-block.md | 1 + .../shared/flow/reference/components/sigv4-block.md | 1 + .../flow/reference/components/tls-config-block.md | 1 + docs/sources/shared/flow/stability/beta.md | 1 + docs/sources/shared/flow/stability/experimental.md | 1 + docs/sources/shared/index.md | 5 ++++- docs/sources/shared/wal-data-retention.md | 1 + docs/sources/stability.md | 6 +++++- docs/sources/static/_index.md | 5 ++++- docs/sources/static/api/_index.md | 6 ++++-- docs/sources/static/configuration/_index.md | 4 +++- docs/sources/static/configuration/agent-management.md | 5 ++++- .../sources/static/configuration/create-config-file.md | 6 ++++-- docs/sources/static/configuration/flags.md | 4 +++- .../static/configuration/integrations/_index.md | 4 +++- .../integrations/apache-exporter-config.md | 4 +++- .../integrations/azure-exporter-config.md | 4 +++- .../configuration/integrations/blackbox-config.md | 4 +++- .../configuration/integrations/cadvisor-config.md | 4 +++- .../integrations/cloudwatch-exporter-config.md | 4 +++- .../integrations/consul-exporter-config.md | 4 +++- .../integrations/dnsmasq-exporter-config.md | 4 +++- .../integrations/elasticsearch-exporter-config.md | 4 +++- .../configuration/integrations/gcp-exporter-config.md | 4 +++- .../integrations/github-exporter-config.md | 4 +++- .../integrations/integrations-next/_index.md | 6 ++++-- .../integrations-next/app-agent-receiver-config.md | 4 +++- .../integrations/integrations-next/blackbox-config.md | 4 +++- .../integrations-next/eventhandler-config.md | 4 +++- .../integrations/integrations-next/snmp-config.md | 4 +++- .../integrations/integrations-next/vsphere-config.md | 6 ++++-- .../integrations/kafka-exporter-config.md | 4 +++- .../integrations/memcached-exporter-config.md | 4 +++- .../integrations/mongodb_exporter-config.md | 4 +++- .../static/configuration/integrations/mssql-config.md | 4 +++- .../integrations/mysqld-exporter-config.md | 4 +++- .../configuration/integrations/node-exporter-config.md | 4 +++- .../configuration/integrations/oracledb-config.md | 4 +++- .../integrations/postgres-exporter-config.md | 4 +++- .../integrations/process-exporter-config.md | 4 +++- .../integrations/redis-exporter-config.md | 4 +++- .../static/configuration/integrations/snmp-config.md | 4 +++- .../configuration/integrations/snowflake-config.md | 4 +++- .../static/configuration/integrations/squid-config.md | 4 +++- .../integrations/statsd-exporter-config.md | 4 +++- .../integrations/windows-exporter-config.md | 4 +++- docs/sources/static/configuration/logs-config.md | 6 ++++-- docs/sources/static/configuration/metrics-config.md | 6 ++++-- docs/sources/static/configuration/scraping-service.md | 8 +++++--- docs/sources/static/configuration/server-config.md | 4 +++- docs/sources/static/configuration/traces-config.md | 4 +++- docs/sources/static/operation-guide/_index.md | 4 +++- docs/sources/static/release-notes.md | 10 ++++++---- docs/sources/static/set-up/_index.md | 7 ++++--- docs/sources/static/set-up/deploy-agent.md | 6 ++++-- docs/sources/static/set-up/install/_index.md | 6 ++++-- .../static/set-up/install/install-agent-binary.md | 4 +++- .../static/set-up/install/install-agent-docker.md | 4 +++- .../static/set-up/install/install-agent-kubernetes.md | 5 ++++- .../static/set-up/install/install-agent-linux.md | 4 +++- .../static/set-up/install/install-agent-macos.md | 4 +++- .../static/set-up/install/install-agent-on-windows.md | 4 +++- docs/sources/static/set-up/quick-starts.md | 4 +++- docs/sources/static/set-up/start-agent.md | 6 ++++-- tools/gen-crd-docs/template/pkg.tpl | 1 + 322 files changed, 716 insertions(+), 313 deletions(-) diff --git a/docs/sources/_index.md b/docs/sources/_index.md index c46dfe04feea..36d97758b795 100644 --- a/docs/sources/_index.md +++ b/docs/sources/_index.md @@ -3,6 +3,7 @@ aliases: - /docs/grafana-cloud/agent/ - /docs/grafana-cloud/monitor-infrastructure/agent/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/ +- /docs/grafana-cloud/send-data/agent/ canonical: https://grafana.com/docs/agent/latest/ title: Grafana Agent description: Grafana Agent is a flexible, performant, vendor-neutral, telemetry collector diff --git a/docs/sources/_index.md.t b/docs/sources/_index.md.t index a8c7eb6fddf9..b14448733925 100644 --- a/docs/sources/_index.md.t +++ b/docs/sources/_index.md.t @@ -3,6 +3,7 @@ aliases: - /docs/grafana-cloud/agent/ - /docs/grafana-cloud/monitor-infrastructure/agent/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/ +- /docs/grafana-cloud/send-data/agent/ canonical: https://grafana.com/docs/agent/latest/ title: Grafana Agent description: Grafana Agent is a flexible, performant, vendor-neutral, telemetry collector diff --git a/docs/sources/about.md b/docs/sources/about.md index 4684df62a529..4c15b43297b6 100644 --- a/docs/sources/about.md +++ b/docs/sources/about.md @@ -4,10 +4,11 @@ aliases: - /docs/grafana-cloud/agent/about/ - /docs/grafana-cloud/monitor-infrastructure/agent/about/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/about/ +- /docs/grafana-cloud/send-data/agent/about/ canonical: https://grafana.com/docs/agent/latest/about/ +description: Grafana Agent is a flexible, performant, vendor-neutral, telemetry collector menuTitle: Introduction title: Introduction to Grafana Agent -description: Grafana Agent is a flexible, performant, vendor-neutral, telemetry collector weight: 100 --- diff --git a/docs/sources/data-collection.md b/docs/sources/data-collection.md index 51060733b0ea..2ff7ec44f86e 100644 --- a/docs/sources/data-collection.md +++ b/docs/sources/data-collection.md @@ -4,10 +4,11 @@ aliases: - /docs/grafana-cloud/agent/data-collection/ - /docs/grafana-cloud/monitor-infrastructure/agent/data-collection/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/data-collection/ +- /docs/grafana-cloud/send-data/agent/data-collection/ canonical: https://grafana.com/docs/agent/latest/data-collection/ +description: Grafana Agent data collection menuTitle: Data collection title: Grafana Agent data collection -description: Grafana Agent data collection weight: 500 --- diff --git a/docs/sources/flow/_index.md b/docs/sources/flow/_index.md index 65909d624de0..aa434950db5c 100644 --- a/docs/sources/flow/_index.md +++ b/docs/sources/flow/_index.md @@ -3,9 +3,11 @@ aliases: - /docs/grafana-cloud/agent/flow/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/ +- /docs/grafana-cloud/send-data/agent/flow/ canonical: https://grafana.com/docs/agent/latest/flow/ +description: Grafana Agent Flow is a component-based revision of Grafana Agent with + a focus on ease-of-use, debuggability, and adaptability title: Flow mode -description: Grafana Agent Flow is a component-based revision of Grafana Agent with a focus on ease-of-use, debuggability, and adaptability weight: 400 --- diff --git a/docs/sources/flow/concepts/_index.md b/docs/sources/flow/concepts/_index.md index 0eaca30934ac..5e6174c09845 100644 --- a/docs/sources/flow/concepts/_index.md +++ b/docs/sources/flow/concepts/_index.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/concepts/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/concepts/ +- /docs/grafana-cloud/send-data/agent/flow/concepts/ canonical: https://grafana.com/docs/agent/latest/flow/concepts/ -title: Concepts description: Learn about the Grafana Agent flow mode concepts +title: Concepts weight: 100 --- diff --git a/docs/sources/flow/concepts/clustering.md b/docs/sources/flow/concepts/clustering.md index 9dac5fedbcc8..6b0726c2439b 100644 --- a/docs/sources/flow/concepts/clustering.md +++ b/docs/sources/flow/concepts/clustering.md @@ -3,12 +3,13 @@ aliases: - /docs/grafana-cloud/agent/flow/concepts/clustering/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/clustering/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/concepts/clustering/ +- /docs/grafana-cloud/send-data/agent/flow/concepts/clustering/ canonical: https://grafana.com/docs/agent/latest/flow/concepts/clustering/ +description: Learn about Grafana Agent clustering concepts labels: stage: beta menuTitle: Clustering title: Clustering (beta) -description: Learn about Grafana Agent clustering concepts weight: 500 --- diff --git a/docs/sources/flow/concepts/component_controller.md b/docs/sources/flow/concepts/component_controller.md index 887d427b8c90..08b8a6afa452 100644 --- a/docs/sources/flow/concepts/component_controller.md +++ b/docs/sources/flow/concepts/component_controller.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/concepts/component_controller/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/component_controller/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/concepts/component_controller/ +- /docs/grafana-cloud/send-data/agent/flow/concepts/component_controller/ canonical: https://grafana.com/docs/agent/latest/flow/concepts/component_controller/ -title: Component controller description: Learn about the component controller +title: Component controller weight: 200 --- diff --git a/docs/sources/flow/concepts/components.md b/docs/sources/flow/concepts/components.md index 4d3f273c73af..b66416d9d62c 100644 --- a/docs/sources/flow/concepts/components.md +++ b/docs/sources/flow/concepts/components.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/concepts/components/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/components/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/concepts/components/ +- /docs/grafana-cloud/send-data/agent/flow/concepts/components/ canonical: https://grafana.com/docs/agent/latest/flow/concepts/components/ -title: Components description: Learn about components +title: Components weight: 100 --- diff --git a/docs/sources/flow/concepts/configuration_language.md b/docs/sources/flow/concepts/configuration_language.md index 55671679714e..77b42df3293f 100644 --- a/docs/sources/flow/concepts/configuration_language.md +++ b/docs/sources/flow/concepts/configuration_language.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/concepts/configuration_language/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/configuration_language/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/concepts/configuration_language/ +- /docs/grafana-cloud/send-data/agent/flow/concepts/configuration_language/ canonical: https://grafana.com/docs/agent/latest/flow/concepts/configuration_language/ -title: Configuration language concepts description: Learn about configuration language concepts +title: Configuration language concepts weight: 400 --- diff --git a/docs/sources/flow/concepts/modules.md b/docs/sources/flow/concepts/modules.md index 77cae3170d36..191159c9f0bf 100644 --- a/docs/sources/flow/concepts/modules.md +++ b/docs/sources/flow/concepts/modules.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/concepts/modules/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/modules/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/concepts/modules/ +- /docs/grafana-cloud/send-data/agent/flow/concepts/modules/ canonical: https://grafana.com/docs/agent/latest/flow/concepts/modules/ -title: Modules description: Learn about modules +title: Modules weight: 300 --- diff --git a/docs/sources/flow/config-language/_index.md b/docs/sources/flow/config-language/_index.md index a363b2977642..845005fe9f7f 100644 --- a/docs/sources/flow/config-language/_index.md +++ b/docs/sources/flow/config-language/_index.md @@ -3,10 +3,11 @@ aliases: - /docs/grafana-cloud/agent/flow/config-language/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/config-language/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/config-language/ +- /docs/grafana-cloud/send-data/agent/flow/config-language/ - configuration-language/ canonical: https://grafana.com/docs/agent/latest/flow/config-language/ -title: Configuration language description: Learn about the configuration language +title: Configuration language weight: 400 --- diff --git a/docs/sources/flow/config-language/components.md b/docs/sources/flow/config-language/components.md index 2e04643e1d53..be675572aa7e 100644 --- a/docs/sources/flow/config-language/components.md +++ b/docs/sources/flow/config-language/components.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/config-language/components/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/config-language/components/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/config-language/components/ +- /docs/grafana-cloud/send-data/agent/flow/config-language/components/ canonical: https://grafana.com/docs/agent/latest/flow/config-language/components/ -title: Components configuration language description: Learn about the components configuration language +title: Components configuration language weight: 300 --- diff --git a/docs/sources/flow/config-language/expressions/_index.md b/docs/sources/flow/config-language/expressions/_index.md index 5693e91ceeb7..7fc1363432a7 100644 --- a/docs/sources/flow/config-language/expressions/_index.md +++ b/docs/sources/flow/config-language/expressions/_index.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/config-language/expressions/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/config-language/expressions/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/config-language/expressions/ +- /docs/grafana-cloud/send-data/agent/flow/config-language/expressions/ canonical: https://grafana.com/docs/agent/latest/flow/config-language/expressions/ -title: Expressions description: Learn about expressions +title: Expressions weight: 400 --- diff --git a/docs/sources/flow/config-language/expressions/function_calls.md b/docs/sources/flow/config-language/expressions/function_calls.md index 77fab0d2df53..d8a6ade75048 100644 --- a/docs/sources/flow/config-language/expressions/function_calls.md +++ b/docs/sources/flow/config-language/expressions/function_calls.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/config-language/expressions/function_calls/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/config-language/expressions/function_calls/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/config-language/expressions/function_calls/ +- /docs/grafana-cloud/send-data/agent/flow/config-language/expressions/function_calls/ canonical: https://grafana.com/docs/agent/latest/flow/config-language/expressions/function_calls/ -title: Function calls description: Learn about function calls +title: Function calls weight: 400 --- diff --git a/docs/sources/flow/config-language/expressions/operators.md b/docs/sources/flow/config-language/expressions/operators.md index c9c724952d81..73ef1868688a 100644 --- a/docs/sources/flow/config-language/expressions/operators.md +++ b/docs/sources/flow/config-language/expressions/operators.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/config-language/expressions/operators/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/config-language/expressions/operators/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/config-language/expressions/operators/ +- /docs/grafana-cloud/send-data/agent/flow/config-language/expressions/operators/ canonical: https://grafana.com/docs/agent/latest/flow/config-language/expressions/operators/ -title: Operators description: Learn about operators +title: Operators weight: 300 --- diff --git a/docs/sources/flow/config-language/expressions/referencing_exports.md b/docs/sources/flow/config-language/expressions/referencing_exports.md index 3a23508a63a6..ed35c3ec7f88 100644 --- a/docs/sources/flow/config-language/expressions/referencing_exports.md +++ b/docs/sources/flow/config-language/expressions/referencing_exports.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/config-language/expressions/referencing_exports/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/config-language/expressions/referencing_exports/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/config-language/expressions/referencing_exports/ +- /docs/grafana-cloud/send-data/agent/flow/config-language/expressions/referencing_exports/ canonical: https://grafana.com/docs/agent/latest/flow/config-language/expressions/referencing_exports/ -title: Referencing component exports description: Learn about referencing component exports +title: Referencing component exports weight: 200 --- diff --git a/docs/sources/flow/config-language/expressions/types_and_values.md b/docs/sources/flow/config-language/expressions/types_and_values.md index 764be479661c..3bba23836638 100644 --- a/docs/sources/flow/config-language/expressions/types_and_values.md +++ b/docs/sources/flow/config-language/expressions/types_and_values.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/config-language/expressions/types_and_values/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/config-language/expressions/types_and_values/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/config-language/expressions/types_and_values/ +- /docs/grafana-cloud/send-data/agent/flow/config-language/expressions/types_and_values/ canonical: https://grafana.com/docs/agent/latest/flow/config-language/expressions/types_and_values/ -title: Types and values description: Learn about the River types and values +title: Types and values weight: 100 --- diff --git a/docs/sources/flow/config-language/files.md b/docs/sources/flow/config-language/files.md index 9e62da529231..39d6f5a144b3 100644 --- a/docs/sources/flow/config-language/files.md +++ b/docs/sources/flow/config-language/files.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/config-language/files/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/config-language/files/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/config-language/files/ +- /docs/grafana-cloud/send-data/agent/flow/config-language/files/ canonical: https://grafana.com/docs/agent/latest/flow/config-language/files/ -title: Files description: Learn about River files +title: Files weight: 100 --- diff --git a/docs/sources/flow/config-language/syntax.md b/docs/sources/flow/config-language/syntax.md index 5e21a5e37c1f..ee2eebed9b65 100644 --- a/docs/sources/flow/config-language/syntax.md +++ b/docs/sources/flow/config-language/syntax.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/config-language/syntax/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/config-language/syntax/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/config-language/syntax/ +- /docs/grafana-cloud/send-data/agent/flow/config-language/syntax/ canonical: https://grafana.com/docs/agent/latest/flow/config-language/syntax/ -title: Syntax description: Learn about the River syntax +title: Syntax weight: 200 --- diff --git a/docs/sources/flow/getting-started/_index.md b/docs/sources/flow/getting-started/_index.md index 79d34abe6f92..cbb1b02ea445 100644 --- a/docs/sources/flow/getting-started/_index.md +++ b/docs/sources/flow/getting-started/_index.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/getting-started/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/getting-started/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/getting-started/ +- /docs/grafana-cloud/send-data/agent/flow/getting-started/ - getting_started/ canonical: https://grafana.com/docs/agent/latest/flow/getting-started/ +description: Learn how to use Grafana Agent in flow mode menuTitle: Get started title: Get started with Grafana Agent in flow mode -description: Learn how to use Grafana Agent in flow mode weight: 200 --- diff --git a/docs/sources/flow/getting-started/collect-opentelemetry-data.md b/docs/sources/flow/getting-started/collect-opentelemetry-data.md index ecf484271d37..6d32c28dac4f 100644 --- a/docs/sources/flow/getting-started/collect-opentelemetry-data.md +++ b/docs/sources/flow/getting-started/collect-opentelemetry-data.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/getting-started/collect-opentelemetry-data/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/getting-started/collect-opentelemetry-data/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/getting-started/collect-opentelemetry-data/ +- /docs/grafana-cloud/send-data/agent/flow/getting-started/collect-opentelemetry-data/ canonical: https://grafana.com/docs/agent/latest/flow/getting-started/collect-opentelemetry-data/ -title: Collect OpenTelemetry data description: Learn how to collect OpenTelemetry data +title: Collect OpenTelemetry data weight: 300 --- diff --git a/docs/sources/flow/getting-started/collect-prometheus-metrics.md b/docs/sources/flow/getting-started/collect-prometheus-metrics.md index b7bed5f92fe1..9cfbd468ce2a 100644 --- a/docs/sources/flow/getting-started/collect-prometheus-metrics.md +++ b/docs/sources/flow/getting-started/collect-prometheus-metrics.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/getting-started/collect-prometheus-metrics/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/getting-started/collect-prometheus-metrics/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/getting-started/collect-prometheus-metrics/ +- /docs/grafana-cloud/send-data/agent/flow/getting-started/collect-prometheus-metrics/ canonical: https://grafana.com/docs/agent/latest/flow/getting-started/collect-prometheus-metrics/ -title: Collect and forward Prometheus metrics description: Learn how to collect and forward Prometheus metrics +title: Collect and forward Prometheus metrics weight: 200 --- diff --git a/docs/sources/flow/getting-started/configure-agent-clustering.md b/docs/sources/flow/getting-started/configure-agent-clustering.md index af7085b9d1f1..22d9cdd1942f 100644 --- a/docs/sources/flow/getting-started/configure-agent-clustering.md +++ b/docs/sources/flow/getting-started/configure-agent-clustering.md @@ -3,10 +3,11 @@ aliases: - /docs/grafana-cloud/agent/flow/getting-started/configure-agent-clustering/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/getting-started/configure-agent-clustering/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/getting-started/configure-agent-clustering/ +- /docs/grafana-cloud/send-data/agent/flow/getting-started/configure-agent-clustering/ canonical: https://grafana.com/docs/agent/latest/flow/getting-started/configure-agent-clustering/ +description: Learn how to configure Grafana Agent clustering in an existing installation menuTitle: Configure Grafana Agent clustering title: Configure Grafana Agent clustering in an existing installation -description: Learn how to configure Grafana Agent clustering in an existing installation weight: 400 --- diff --git a/docs/sources/flow/getting-started/distribute-prometheus-scrape-load.md b/docs/sources/flow/getting-started/distribute-prometheus-scrape-load.md index b3319b72e193..5317150fdc95 100644 --- a/docs/sources/flow/getting-started/distribute-prometheus-scrape-load.md +++ b/docs/sources/flow/getting-started/distribute-prometheus-scrape-load.md @@ -3,10 +3,11 @@ aliases: - /docs/grafana-cloud/agent/flow/getting-started/distribute-prometheus-scrape-load/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/getting-started/distribute-prometheus-scrape-load/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/getting-started/distribute-prometheus-scrape-load/ +- /docs/grafana-cloud/send-data/agent/flow/getting-started/distribute-prometheus-scrape-load/ canonical: https://grafana.com/docs/agent/latest/flow/getting-started/distribute-prometheus-scrape-load/ +description: Learn how to distribute your Prometheus metrics scrape load menuTitle: Distribute Prometheus metrics scrape load title: Distribute Prometheus metrics scrape load -description: Learn how to distribute your Prometheus metrics scrape load weight: 500 --- diff --git a/docs/sources/flow/getting-started/migrating-from-operator.md b/docs/sources/flow/getting-started/migrating-from-operator.md index da62154488cb..9262930f4abf 100644 --- a/docs/sources/flow/getting-started/migrating-from-operator.md +++ b/docs/sources/flow/getting-started/migrating-from-operator.md @@ -1,4 +1,7 @@ --- +aliases: +- /docs/grafana-cloud/monitor-infrastructure/agent/flow/getting-started/migrating-from-operator/ +- /docs/grafana-cloud/send-data/agent/flow/getting-started/migrating-from-operator/ canonical: https://grafana.com/docs/agent/latest/flow/getting-started/migrating-from-operator/ description: Migrating from Grafana Agent Operator to Grafana Agent Flow menuTitle: Migrate from Operator diff --git a/docs/sources/flow/getting-started/migrating-from-prometheus.md b/docs/sources/flow/getting-started/migrating-from-prometheus.md index 14e32241f83b..e6abc8f334db 100644 --- a/docs/sources/flow/getting-started/migrating-from-prometheus.md +++ b/docs/sources/flow/getting-started/migrating-from-prometheus.md @@ -3,10 +3,11 @@ aliases: - /docs/grafana-cloud/agent/flow/getting-started/migrating-from-prometheus/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/getting-started/migrating-from-prometheus/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/getting-started/migrating-from-prometheus/ +- /docs/grafana-cloud/send-data/agent/flow/getting-started/migrating-from-prometheus/ canonical: https://grafana.com/docs/agent/latest/flow/getting-started/migrating-from-prometheus/ +description: Learn how to migrate from Prometheus to Grafana Agent Flow menuTitle: Migrate from Prometheus title: Migrate from Prometheus to Grafana Agent Flow -description: Learn how to migrate from Prometheus to Grafana Agent Flow weight: 320 --- diff --git a/docs/sources/flow/getting-started/migrating-from-promtail.md b/docs/sources/flow/getting-started/migrating-from-promtail.md index 7fbe1b109d16..09cf44a7bd39 100644 --- a/docs/sources/flow/getting-started/migrating-from-promtail.md +++ b/docs/sources/flow/getting-started/migrating-from-promtail.md @@ -3,10 +3,11 @@ aliases: - /docs/grafana-cloud/agent/flow/getting-started/migrating-from-promtail/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/getting-started/migrating-from-promtail/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/getting-started/migrating-from-promtail/ +- /docs/grafana-cloud/send-data/agent/flow/getting-started/migrating-from-promtail/ canonical: https://grafana.com/docs/agent/latest/flow/getting-started/migrating-from-promtail/ +description: Learn how to migrate from Promtail to Grafana Agent Flow menuTitle: Migrate from Promtail title: Migrate from Promtail to Grafana Agent Flow -description: Learn how to migrate from Promtail to Grafana Agent Flow weight: 330 --- diff --git a/docs/sources/flow/getting-started/migrating-from-static.md b/docs/sources/flow/getting-started/migrating-from-static.md index 0b1f0bedd2d0..ff201deec463 100644 --- a/docs/sources/flow/getting-started/migrating-from-static.md +++ b/docs/sources/flow/getting-started/migrating-from-static.md @@ -3,8 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/getting-started/migrating-from-static/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/getting-started/migrating-from-static/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/getting-started/migrating-from-static/ +- /docs/grafana-cloud/send-data/agent/flow/getting-started/migrating-from-static/ canonical: https://grafana.com/docs/agent/latest/flow/getting-started/migrating-from-static/ -description: Learn how to migrate your configuration from Grafana Agent Static mode to Flow mode +description: Learn how to migrate your configuration from Grafana Agent Static mode + to Flow mode menuTitle: Migrate from Static mode to Flow mode title: Migrate Grafana Agent from Static mode to Flow mode weight: 340 diff --git a/docs/sources/flow/getting-started/opentelemetry-to-lgtm-stack.md b/docs/sources/flow/getting-started/opentelemetry-to-lgtm-stack.md index 76764fb7276c..e0ac3996e04b 100644 --- a/docs/sources/flow/getting-started/opentelemetry-to-lgtm-stack.md +++ b/docs/sources/flow/getting-started/opentelemetry-to-lgtm-stack.md @@ -3,9 +3,11 @@ aliases: - /docs/grafana-cloud/agent/flow/getting-started/opentelemetry-to-lgtm-stack/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/getting-started/opentelemetry-to-lgtm-stack/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/getting-started/opentelemetry-to-lgtm-stack/ +- /docs/grafana-cloud/send-data/agent/flow/getting-started/opentelemetry-to-lgtm-stack/ canonical: https://grafana.com/docs/agent/latest/flow/getting-started/opentelemetry-to-lgtm-stack/ +description: Learn how to collect OpenTelemetry data and forward it to the Grafana + stack title: OpenTelemetry to Grafana stack -description: Learn how to collect OpenTelemetry data and forward it to the Grafana stack weight: 350 --- diff --git a/docs/sources/flow/monitoring/_index.md b/docs/sources/flow/monitoring/_index.md index 41e5cffca7c8..184bd46b7a35 100644 --- a/docs/sources/flow/monitoring/_index.md +++ b/docs/sources/flow/monitoring/_index.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/monitoring/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/monitoring/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/monitoring/ +- /docs/grafana-cloud/send-data/agent/flow/monitoring/ canonical: https://grafana.com/docs/agent/latest/flow/monitoring/ -title: Monitoring Grafana Agent Flow description: Learn about monitoring Grafana Agent Flow +title: Monitoring Grafana Agent Flow weight: 500 --- diff --git a/docs/sources/flow/monitoring/component_metrics.md b/docs/sources/flow/monitoring/component_metrics.md index ba9762647f4a..7b94337bd2b7 100644 --- a/docs/sources/flow/monitoring/component_metrics.md +++ b/docs/sources/flow/monitoring/component_metrics.md @@ -3,10 +3,11 @@ aliases: - /docs/grafana-cloud/agent/flow/monitoring/component_metrics/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/monitoring/component_metrics/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/monitoring/component_metrics/ +- /docs/grafana-cloud/send-data/agent/flow/monitoring/component_metrics/ - component-metrics/ canonical: https://grafana.com/docs/agent/latest/flow/monitoring/component_metrics/ -title: Component metrics description: Learn about component metrics +title: Component metrics weight: 200 --- diff --git a/docs/sources/flow/monitoring/controller_metrics.md b/docs/sources/flow/monitoring/controller_metrics.md index f45b114724cb..03a05b0991eb 100644 --- a/docs/sources/flow/monitoring/controller_metrics.md +++ b/docs/sources/flow/monitoring/controller_metrics.md @@ -3,10 +3,11 @@ aliases: - /docs/grafana-cloud/agent/flow/monitoring/controller_metrics/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/monitoring/controller_metrics/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/monitoring/controller_metrics/ +- /docs/grafana-cloud/send-data/agent/flow/monitoring/controller_metrics/ - controller-metrics/ canonical: https://grafana.com/docs/agent/latest/flow/monitoring/controller_metrics/ -title: Controller metrics description: Learn about controller metrics +title: Controller metrics weight: 100 --- diff --git a/docs/sources/flow/monitoring/debugging.md b/docs/sources/flow/monitoring/debugging.md index cffa6f5ffb5d..423319addeb6 100644 --- a/docs/sources/flow/monitoring/debugging.md +++ b/docs/sources/flow/monitoring/debugging.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/monitoring/debugging/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/monitoring/debugging/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/monitoring/debugging/ +- /docs/grafana-cloud/send-data/agent/flow/monitoring/debugging/ canonical: https://grafana.com/docs/agent/latest/flow/monitoring/debugging/ -title: Debugging description: Learn about debugging +title: Debugging weight: 300 --- diff --git a/docs/sources/flow/reference/_index.md b/docs/sources/flow/reference/_index.md index e130628f0033..65ca0dac4a64 100644 --- a/docs/sources/flow/reference/_index.md +++ b/docs/sources/flow/reference/_index.md @@ -3,10 +3,11 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/ +- /docs/grafana-cloud/send-data/agent/flow/reference/ canonical: https://grafana.com/docs/agent/latest/flow/reference/ -title: Grafana Agent Flow Reference -menuTitle: Reference description: The reference-level documentaiton for Grafana Agent +menuTitle: Reference +title: Grafana Agent Flow Reference weight: 600 --- diff --git a/docs/sources/flow/reference/cli/_index.md b/docs/sources/flow/reference/cli/_index.md index e48a3f703623..556ee99f96d2 100644 --- a/docs/sources/flow/reference/cli/_index.md +++ b/docs/sources/flow/reference/cli/_index.md @@ -3,12 +3,11 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/cli/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/cli/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/cli/ +- /docs/grafana-cloud/send-data/agent/flow/reference/cli/ canonical: https://grafana.com/docs/agent/latest/flow/reference/cli/ -description: The Grafana Agent command line interface provides subcommands to perform - various operations. +description: Learn about the Grafana Agent command line interface menuTitle: Command-line interface title: The Grafana Agent command-line interface -description: Learn about the Grafana Agent command line interface weight: 100 --- diff --git a/docs/sources/flow/reference/cli/convert.md b/docs/sources/flow/reference/cli/convert.md index cd976f108784..483f21da6d29 100644 --- a/docs/sources/flow/reference/cli/convert.md +++ b/docs/sources/flow/reference/cli/convert.md @@ -3,14 +3,13 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/cli/convert/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/cli/convert/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/cli/convert/ +- /docs/grafana-cloud/send-data/agent/flow/reference/cli/convert/ canonical: https://grafana.com/docs/agent/latest/flow/reference/cli/convert/ -description: The `convert` command converts supported configuration formats to River - format. +description: Learn about the convert command labels: stage: beta menuTitle: convert title: The convert command -description: Learn about the convert command weight: 100 --- diff --git a/docs/sources/flow/reference/cli/fmt.md b/docs/sources/flow/reference/cli/fmt.md index 18ae1fdddd41..0eb7d8635636 100644 --- a/docs/sources/flow/reference/cli/fmt.md +++ b/docs/sources/flow/reference/cli/fmt.md @@ -3,11 +3,11 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/cli/fmt/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/cli/fmt/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/cli/fmt/ +- /docs/grafana-cloud/send-data/agent/flow/reference/cli/fmt/ canonical: https://grafana.com/docs/agent/latest/flow/reference/cli/fmt/ -description: The `fmt` command formats a Grafana Agent configuration file. +description: Learn about the fmt command menuTitle: fmt title: The fmt command -description: Learn about the fmt command weight: 200 --- diff --git a/docs/sources/flow/reference/cli/run.md b/docs/sources/flow/reference/cli/run.md index 8b068b78ac3e..7eaf1285f916 100644 --- a/docs/sources/flow/reference/cli/run.md +++ b/docs/sources/flow/reference/cli/run.md @@ -3,12 +3,11 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/cli/run/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/cli/run/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/cli/run/ +- /docs/grafana-cloud/send-data/agent/flow/reference/cli/run/ canonical: https://grafana.com/docs/agent/latest/flow/reference/cli/run/ -description: The `run` command runs Grafana Agent in the foreground until an interrupt - is received. +description: Learn about the run command menuTitle: run title: The run command -description: Learn about the run command weight: 300 --- diff --git a/docs/sources/flow/reference/cli/tools.md b/docs/sources/flow/reference/cli/tools.md index ac888bda3fa6..5ee0409f084a 100644 --- a/docs/sources/flow/reference/cli/tools.md +++ b/docs/sources/flow/reference/cli/tools.md @@ -3,11 +3,11 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/cli/tools/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/cli/tools/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/cli/tools/ +- /docs/grafana-cloud/send-data/agent/flow/reference/cli/tools/ canonical: https://grafana.com/docs/agent/latest/flow/reference/cli/tools/ -description: Command line tools that read the WAL and provide statistical information. +description: Learn about the tools command menuTitle: tools title: The tools command -description: Learn about the tools command weight: 400 --- diff --git a/docs/sources/flow/reference/components/_index.md b/docs/sources/flow/reference/components/_index.md index 4acc33d412ec..74d21678c179 100644 --- a/docs/sources/flow/reference/components/_index.md +++ b/docs/sources/flow/reference/components/_index.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/ -title: Components reference description: Learn about the compenets in Grafana Agent +title: Components reference weight: 300 --- diff --git a/docs/sources/flow/reference/components/discovery.azure.md b/docs/sources/flow/reference/components/discovery.azure.md index 89e3df0d970e..5192299a1eeb 100644 --- a/docs/sources/flow/reference/components/discovery.azure.md +++ b/docs/sources/flow/reference/components/discovery.azure.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.azure/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.azure/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.azure/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.azure/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.azure/ -title: discovery.azure description: Learn about discovery.azure +title: discovery.azure --- # discovery.azure diff --git a/docs/sources/flow/reference/components/discovery.consul.md b/docs/sources/flow/reference/components/discovery.consul.md index 583b5497b550..884fa1fe602f 100644 --- a/docs/sources/flow/reference/components/discovery.consul.md +++ b/docs/sources/flow/reference/components/discovery.consul.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.consul/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.consul/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.consul/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.consul/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.consul/ -title: discovery.consul description: Learn about discovery.consul +title: discovery.consul --- # discovery.consul diff --git a/docs/sources/flow/reference/components/discovery.consulagent.md b/docs/sources/flow/reference/components/discovery.consulagent.md index 2fd4209a1979..6ff793d1933e 100644 --- a/docs/sources/flow/reference/components/discovery.consulagent.md +++ b/docs/sources/flow/reference/components/discovery.consulagent.md @@ -1,7 +1,10 @@ --- +aliases: +- /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.consulagent/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.consulagent/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.consulagent/ -title: discovery.consulagent description: Learn about discovery.consulagent +title: discovery.consulagent --- # discovery.consulagent diff --git a/docs/sources/flow/reference/components/discovery.digitalocean.md b/docs/sources/flow/reference/components/discovery.digitalocean.md index b49c570e32d7..18b42714b421 100644 --- a/docs/sources/flow/reference/components/discovery.digitalocean.md +++ b/docs/sources/flow/reference/components/discovery.digitalocean.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.digitalocean/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.digitalocean/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.digitalocean/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.digitalocean/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.digitalocean/ -title: discovery.digitalocean description: Learn about discovery.digitalocean +title: discovery.digitalocean --- # discovery.digitalocean diff --git a/docs/sources/flow/reference/components/discovery.dns.md b/docs/sources/flow/reference/components/discovery.dns.md index 43497f6d3970..3a2615d5df29 100644 --- a/docs/sources/flow/reference/components/discovery.dns.md +++ b/docs/sources/flow/reference/components/discovery.dns.md @@ -1,12 +1,13 @@ --- aliases: -- /docs/agent/latest/flow/reference/components/discovery.dns +- /docs/agent/latest/flow/reference/components/discovery.dns/ - /docs/grafana-cloud/agent/flow/reference/components/discovery.dns/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.dns/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.dns/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.dns/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.dns/ -title: discovery.dns description: Learn about discovery.dns +title: discovery.dns --- # discovery.dns diff --git a/docs/sources/flow/reference/components/discovery.docker.md b/docs/sources/flow/reference/components/discovery.docker.md index 0501f64a81c1..076f00f75b21 100644 --- a/docs/sources/flow/reference/components/discovery.docker.md +++ b/docs/sources/flow/reference/components/discovery.docker.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.docker/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.docker/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.docker/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.docker/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.docker/ -title: discovery.docker description: Learn about discovery.docker +title: discovery.docker --- # discovery.docker diff --git a/docs/sources/flow/reference/components/discovery.dockerswarm.md b/docs/sources/flow/reference/components/discovery.dockerswarm.md index fbaa15c18a71..bf4eef2074e8 100644 --- a/docs/sources/flow/reference/components/discovery.dockerswarm.md +++ b/docs/sources/flow/reference/components/discovery.dockerswarm.md @@ -1,11 +1,12 @@ --- aliases: - - /docs/grafana-cloud/agent/flow/reference/components/discovery.dockerswarm/ - - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.dockerswarm/ - - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.dockerswarm/ +- /docs/grafana-cloud/agent/flow/reference/components/discovery.dockerswarm/ +- /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.dockerswarm/ +- /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.dockerswarm/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.dockerswarm/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.dockerswarm/ -title: discovery.dockerswarm description: Learn about discovery.dockerswarm +title: discovery.dockerswarm --- # discovery.dockerswarm diff --git a/docs/sources/flow/reference/components/discovery.ec2.md b/docs/sources/flow/reference/components/discovery.ec2.md index fd926e8c4a40..63a4cfc802f4 100644 --- a/docs/sources/flow/reference/components/discovery.ec2.md +++ b/docs/sources/flow/reference/components/discovery.ec2.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.ec2/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.ec2/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.ec2/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.ec2/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.ec2/ -title: discovery.ec2 description: Learn about discovery.ec2 +title: discovery.ec2 --- # discovery.ec2 diff --git a/docs/sources/flow/reference/components/discovery.eureka.md b/docs/sources/flow/reference/components/discovery.eureka.md index d1971de54442..b2f7e73ad85c 100644 --- a/docs/sources/flow/reference/components/discovery.eureka.md +++ b/docs/sources/flow/reference/components/discovery.eureka.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.eureka/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.eureka/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.eureka/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.eureka/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.eureka/ -title: discovery.eureka description: Learn about discovery.eureka +title: discovery.eureka --- # discovery.eureka diff --git a/docs/sources/flow/reference/components/discovery.file.md b/docs/sources/flow/reference/components/discovery.file.md index 168e529a468a..402406ee32fd 100644 --- a/docs/sources/flow/reference/components/discovery.file.md +++ b/docs/sources/flow/reference/components/discovery.file.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.file/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.file/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.file/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.file/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.file/ -title: discovery.file description: Learn about discovery.file +title: discovery.file --- # discovery.file diff --git a/docs/sources/flow/reference/components/discovery.gce.md b/docs/sources/flow/reference/components/discovery.gce.md index c15222c4763e..b7ca49aaf0e3 100644 --- a/docs/sources/flow/reference/components/discovery.gce.md +++ b/docs/sources/flow/reference/components/discovery.gce.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.gce/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.gce/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.gce/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.gce/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.gce/ -title: discovery.gce description: Learn about discovery.gce +title: discovery.gce --- # discovery.gce diff --git a/docs/sources/flow/reference/components/discovery.hetzner.md b/docs/sources/flow/reference/components/discovery.hetzner.md index 940589dbe576..1cf7f5c6ff72 100644 --- a/docs/sources/flow/reference/components/discovery.hetzner.md +++ b/docs/sources/flow/reference/components/discovery.hetzner.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.hetzner/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.hetzner/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.hetzner/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.hetzner/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.hetzner/ -title: discovery.hetzner description: Learn about discovery.hetzner +title: discovery.hetzner --- # discovery.hetzner diff --git a/docs/sources/flow/reference/components/discovery.http.md b/docs/sources/flow/reference/components/discovery.http.md index 6b2ed6a19d28..c8fd0aa348f4 100644 --- a/docs/sources/flow/reference/components/discovery.http.md +++ b/docs/sources/flow/reference/components/discovery.http.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.http/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.http/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.http/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.http/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.http/ -title: discovery.http description: Learn about discovery.http +title: discovery.http --- # discovery.http diff --git a/docs/sources/flow/reference/components/discovery.ionos.md b/docs/sources/flow/reference/components/discovery.ionos.md index 23f774a02bbb..0017b5ea95e8 100644 --- a/docs/sources/flow/reference/components/discovery.ionos.md +++ b/docs/sources/flow/reference/components/discovery.ionos.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.ionos/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.ionos/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.ionos/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.ionos/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.ionos/ -title: discovery.ionos description: Learn about discovery.ionos +title: discovery.ionos --- # discovery.ionos diff --git a/docs/sources/flow/reference/components/discovery.kubelet.md b/docs/sources/flow/reference/components/discovery.kubelet.md index 158e71aa7c7e..a99fdffa9739 100644 --- a/docs/sources/flow/reference/components/discovery.kubelet.md +++ b/docs/sources/flow/reference/components/discovery.kubelet.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.kubelet/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.kubelet/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.kubelet/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.kubelet/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.kubelet/ +description: Learn about discovery.kubelet labels: stage: beta title: discovery.kubelet -description: Learn about discovery.kubelet --- # discovery.kubelet diff --git a/docs/sources/flow/reference/components/discovery.kubernetes.md b/docs/sources/flow/reference/components/discovery.kubernetes.md index da691c9f17b8..5b8cd870af6e 100644 --- a/docs/sources/flow/reference/components/discovery.kubernetes.md +++ b/docs/sources/flow/reference/components/discovery.kubernetes.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.kubernetes/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.kubernetes/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.kubernetes/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.kubernetes/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.kubernetes/ -title: discovery.kubernetes description: Learn about discovery.kubernetes +title: discovery.kubernetes --- # discovery.kubernetes diff --git a/docs/sources/flow/reference/components/discovery.kuma.md b/docs/sources/flow/reference/components/discovery.kuma.md index 682edaca51f3..6e799a6147a8 100644 --- a/docs/sources/flow/reference/components/discovery.kuma.md +++ b/docs/sources/flow/reference/components/discovery.kuma.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.kuma/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.kuma/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.kuma/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.kuma/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.kuma/ -title: discovery.kuma description: Learn about discovery.kuma +title: discovery.kuma --- # discovery.kuma diff --git a/docs/sources/flow/reference/components/discovery.lightsail.md b/docs/sources/flow/reference/components/discovery.lightsail.md index 3b1c98fa9ce3..a2b47841217d 100644 --- a/docs/sources/flow/reference/components/discovery.lightsail.md +++ b/docs/sources/flow/reference/components/discovery.lightsail.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.lightsail/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.lightsail/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.lightsail/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.lightsail/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.lightsail/ -title: discovery.lightsail description: Learn about discovery.lightsail +title: discovery.lightsail --- # discovery.lightsail diff --git a/docs/sources/flow/reference/components/discovery.linode.md b/docs/sources/flow/reference/components/discovery.linode.md index 92433a6cccf6..5bad40f86174 100644 --- a/docs/sources/flow/reference/components/discovery.linode.md +++ b/docs/sources/flow/reference/components/discovery.linode.md @@ -1,7 +1,10 @@ --- +aliases: +- /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.linode/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.linode/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.linode/ -title: discovery.linode description: Learn about discovery.linode +title: discovery.linode --- # discovery.linode diff --git a/docs/sources/flow/reference/components/discovery.marathon.md b/docs/sources/flow/reference/components/discovery.marathon.md index 03588dbe2d3a..194e8ca24107 100644 --- a/docs/sources/flow/reference/components/discovery.marathon.md +++ b/docs/sources/flow/reference/components/discovery.marathon.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.marathon/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.marathon/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.marathon/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.marathon/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.marathon/ -title: discovery.marathon description: Learn about discovery.marathon +title: discovery.marathon --- # discovery.marathon diff --git a/docs/sources/flow/reference/components/discovery.nerve.md b/docs/sources/flow/reference/components/discovery.nerve.md index 2f39e6feeac1..e9cd8afcbd60 100644 --- a/docs/sources/flow/reference/components/discovery.nerve.md +++ b/docs/sources/flow/reference/components/discovery.nerve.md @@ -1,7 +1,10 @@ --- +aliases: +- /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.nerve/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.nerve/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.nerve/ -title: discovery.nerve description: Learn about discovery.nerve +title: discovery.nerve --- # discovery.nerve diff --git a/docs/sources/flow/reference/components/discovery.nomad.md b/docs/sources/flow/reference/components/discovery.nomad.md index 4797465ae9fb..7df1466081fb 100644 --- a/docs/sources/flow/reference/components/discovery.nomad.md +++ b/docs/sources/flow/reference/components/discovery.nomad.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.nomad/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.nomad/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.nomad/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.nomad/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.nomad/ -title: discovery.nomad description: Learn about discovery.nomad +title: discovery.nomad --- # discovery.nomad diff --git a/docs/sources/flow/reference/components/discovery.openstack.md b/docs/sources/flow/reference/components/discovery.openstack.md index fea582d7f5cd..984fbf2fa4b4 100644 --- a/docs/sources/flow/reference/components/discovery.openstack.md +++ b/docs/sources/flow/reference/components/discovery.openstack.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.openstack/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.openstack/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.openstack/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.openstack/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.openstack/ -title: discovery.openstack description: Learn about discovery.openstack +title: discovery.openstack --- # discovery.openstack diff --git a/docs/sources/flow/reference/components/discovery.puppetdb.md b/docs/sources/flow/reference/components/discovery.puppetdb.md index fd910de40590..3886b7d79726 100644 --- a/docs/sources/flow/reference/components/discovery.puppetdb.md +++ b/docs/sources/flow/reference/components/discovery.puppetdb.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.puppetdb/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.puppetdb/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.puppetdb/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.puppetdb/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.puppetdb/ -title: discovery.puppetdb description: Learn about discovery.puppetdb +title: discovery.puppetdb --- # discovery.puppetdb diff --git a/docs/sources/flow/reference/components/discovery.relabel.md b/docs/sources/flow/reference/components/discovery.relabel.md index 7e7b42b5381c..71b71fea5ef5 100644 --- a/docs/sources/flow/reference/components/discovery.relabel.md +++ b/docs/sources/flow/reference/components/discovery.relabel.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.relabel/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.relabel/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.relabel/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.relabel/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.relabel/ -title: discovery.relabel description: Learn about discovery.relabel +title: discovery.relabel --- # discovery.relabel diff --git a/docs/sources/flow/reference/components/discovery.scaleway.md b/docs/sources/flow/reference/components/discovery.scaleway.md index 699658c51007..59263435ab1f 100644 --- a/docs/sources/flow/reference/components/discovery.scaleway.md +++ b/docs/sources/flow/reference/components/discovery.scaleway.md @@ -1,7 +1,10 @@ --- +aliases: +- /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.scaleway/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.scaleway/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.scaleway/ -title: discovery.scaleway description: Learn about discovery.scaleway +title: discovery.scaleway --- # discovery.scaleway diff --git a/docs/sources/flow/reference/components/discovery.serverset.md b/docs/sources/flow/reference/components/discovery.serverset.md index 9b56697fdcf6..c0ab1f130b6d 100644 --- a/docs/sources/flow/reference/components/discovery.serverset.md +++ b/docs/sources/flow/reference/components/discovery.serverset.md @@ -1,7 +1,10 @@ --- +aliases: +- /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.serverset/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.serverset/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.serverset/ -title: discovery.serverset description: Learn about discovery.serverset +title: discovery.serverset --- # discovery.serverset diff --git a/docs/sources/flow/reference/components/discovery.triton.md b/docs/sources/flow/reference/components/discovery.triton.md index 4a6817968ea0..1b449010aef5 100644 --- a/docs/sources/flow/reference/components/discovery.triton.md +++ b/docs/sources/flow/reference/components/discovery.triton.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.triton/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.triton/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.triton/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.triton/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.triton/ -title: discovery.triton description: Learn about discovery.triton +title: discovery.triton --- # discovery.triton diff --git a/docs/sources/flow/reference/components/discovery.uyuni.md b/docs/sources/flow/reference/components/discovery.uyuni.md index 6be45ab5f7e3..5f6d415b472e 100644 --- a/docs/sources/flow/reference/components/discovery.uyuni.md +++ b/docs/sources/flow/reference/components/discovery.uyuni.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/discovery.uyuni/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.uyuni/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/discovery.uyuni/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.uyuni/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/discovery.uyuni/ -title: discovery.uyuni description: Learn about discovery.uyuni +title: discovery.uyuni --- # discovery.uyuni diff --git a/docs/sources/flow/reference/components/faro.receiver.md b/docs/sources/flow/reference/components/faro.receiver.md index 2bc7c8e38ffe..99d23c2b0842 100644 --- a/docs/sources/flow/reference/components/faro.receiver.md +++ b/docs/sources/flow/reference/components/faro.receiver.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/faro.receiver/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/faro.receiver/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/faro.receiver/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/faro.receiver/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/faro.receiver/ -title: faro.receiver description: Learn about the faro.receiver +title: faro.receiver --- # faro.receiver diff --git a/docs/sources/flow/reference/components/local.file.md b/docs/sources/flow/reference/components/local.file.md index 5494f4104e6a..0199a088a71c 100644 --- a/docs/sources/flow/reference/components/local.file.md +++ b/docs/sources/flow/reference/components/local.file.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/local.file/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/local.file/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/local.file/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/local.file/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/local.file/ -title: local.file description: Learn about local.file +title: local.file --- # local.file diff --git a/docs/sources/flow/reference/components/local.file_match.md b/docs/sources/flow/reference/components/local.file_match.md index 0ab8a05e988f..72be1310a749 100644 --- a/docs/sources/flow/reference/components/local.file_match.md +++ b/docs/sources/flow/reference/components/local.file_match.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/local.file_match/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/local.file_match/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/local.file_match/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/local.file_match/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/local.file_match/ -title: local.file_match description: Learn about local.file_match +title: local.file_match --- # local.file_match diff --git a/docs/sources/flow/reference/components/loki.echo.md b/docs/sources/flow/reference/components/loki.echo.md index 205af6899d7c..4499bf3efde7 100644 --- a/docs/sources/flow/reference/components/loki.echo.md +++ b/docs/sources/flow/reference/components/loki.echo.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/loki.echo/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.echo/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.echo/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.echo/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.echo/ +description: Learn about loki.echo labels: stage: beta title: loki.echo -description: Learn about loki.echo --- # loki.echo diff --git a/docs/sources/flow/reference/components/loki.process.md b/docs/sources/flow/reference/components/loki.process.md index f21104263026..0387bb3c0af8 100644 --- a/docs/sources/flow/reference/components/loki.process.md +++ b/docs/sources/flow/reference/components/loki.process.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/loki.process/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.process/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.process/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.process/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.process/ -title: loki.process description: Learn about loki.process +title: loki.process --- # loki.process diff --git a/docs/sources/flow/reference/components/loki.relabel.md b/docs/sources/flow/reference/components/loki.relabel.md index 4ce55943284e..14425715d3b2 100644 --- a/docs/sources/flow/reference/components/loki.relabel.md +++ b/docs/sources/flow/reference/components/loki.relabel.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/loki.relabel/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.relabel/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.relabel/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.relabel/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.relabel/ -title: loki.relabel description: Learn about loki.relabel +title: loki.relabel --- # loki.relabel diff --git a/docs/sources/flow/reference/components/loki.source.api.md b/docs/sources/flow/reference/components/loki.source.api.md index 8fddd8a3cdb1..966589bd64a1 100644 --- a/docs/sources/flow/reference/components/loki.source.api.md +++ b/docs/sources/flow/reference/components/loki.source.api.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/loki.source.api/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.source.api/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.source.api/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.source.api/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.source.api/ -title: loki.source.api description: Learn about loki.source.api +title: loki.source.api --- # loki.source.api diff --git a/docs/sources/flow/reference/components/loki.source.awsfirehose.md b/docs/sources/flow/reference/components/loki.source.awsfirehose.md index d0e2a9f175db..b080adcaced9 100644 --- a/docs/sources/flow/reference/components/loki.source.awsfirehose.md +++ b/docs/sources/flow/reference/components/loki.source.awsfirehose.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/loki.source.awsfirehose/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.source.awsfirehose/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.source.awsfirehose/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.source.awsfirehose/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.source.awsfirehose/ -title: loki.source.awsfirehose description: Learn about loki.source.awsfirehose +title: loki.source.awsfirehose --- # loki.source.awsfirehose diff --git a/docs/sources/flow/reference/components/loki.source.azure_event_hubs.md b/docs/sources/flow/reference/components/loki.source.azure_event_hubs.md index 67755dc05a51..a90320e069ef 100644 --- a/docs/sources/flow/reference/components/loki.source.azure_event_hubs.md +++ b/docs/sources/flow/reference/components/loki.source.azure_event_hubs.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/loki.source.azure_event_hubs/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.source.azure_event_hubs/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.source.azure_event_hubs/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.source.azure_event_hubs/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.source.azure_event_hubs/ -title: loki.source.azure_event_hubs description: Learn about loki.source.azure_event_hubs +title: loki.source.azure_event_hubs --- # loki.source.azure_event_hubs diff --git a/docs/sources/flow/reference/components/loki.source.cloudflare.md b/docs/sources/flow/reference/components/loki.source.cloudflare.md index a24508a7b236..33d1bf0015a5 100644 --- a/docs/sources/flow/reference/components/loki.source.cloudflare.md +++ b/docs/sources/flow/reference/components/loki.source.cloudflare.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/loki.source.cloudflare/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.source.cloudflare/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.source.cloudflare/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.source.cloudflare/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.source.cloudflare/ -title: loki.source.cloudflare description: Learn about loki.source.cloudflare +title: loki.source.cloudflare --- # loki.source.cloudflare diff --git a/docs/sources/flow/reference/components/loki.source.docker.md b/docs/sources/flow/reference/components/loki.source.docker.md index 82ffff474b44..0bb11ddecb17 100644 --- a/docs/sources/flow/reference/components/loki.source.docker.md +++ b/docs/sources/flow/reference/components/loki.source.docker.md @@ -1,12 +1,13 @@ --- aliases: -- /docs/agent/latest/flow/reference/components/loki.source.docker +- /docs/agent/latest/flow/reference/components/loki.source.docker/ - /docs/grafana-cloud/agent/flow/reference/components/loki.source.docker/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.source.docker/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.source.docker/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.source.docker/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.source.docker/ -title: loki.source.docker description: Learn about loki.source.docker +title: loki.source.docker --- # loki.source.docker diff --git a/docs/sources/flow/reference/components/loki.source.file.md b/docs/sources/flow/reference/components/loki.source.file.md index 812e5c92c7fc..2e9c8d9f333b 100644 --- a/docs/sources/flow/reference/components/loki.source.file.md +++ b/docs/sources/flow/reference/components/loki.source.file.md @@ -1,11 +1,12 @@ --- aliases: - - /docs/grafana-cloud/agent/flow/reference/components/loki.source.file/ - - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.source.file/ - - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.source.file/ +- /docs/grafana-cloud/agent/flow/reference/components/loki.source.file/ +- /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.source.file/ +- /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.source.file/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.source.file/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.source.file/ -title: loki.source.file description: Learn about loki.source.file +title: loki.source.file --- # loki.source.file diff --git a/docs/sources/flow/reference/components/loki.source.gcplog.md b/docs/sources/flow/reference/components/loki.source.gcplog.md index c29e1e7c340a..3379a43c32a9 100644 --- a/docs/sources/flow/reference/components/loki.source.gcplog.md +++ b/docs/sources/flow/reference/components/loki.source.gcplog.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/loki.source.gcplog/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.source.gcplog/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.source.gcplog/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.source.gcplog/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.source.gcplog/ -title: loki.source.gcplog description: Learn about loki.source.gcplog +title: loki.source.gcplog --- # loki.source.gcplog diff --git a/docs/sources/flow/reference/components/loki.source.gelf.md b/docs/sources/flow/reference/components/loki.source.gelf.md index 0ef04bcc084f..e8544fe0248f 100644 --- a/docs/sources/flow/reference/components/loki.source.gelf.md +++ b/docs/sources/flow/reference/components/loki.source.gelf.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/loki.source.gelf/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.source.gelf/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.source.gelf/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.source.gelf/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.source.gelf/ -title: loki.source.gelf description: Learn about loki.source.gelf +title: loki.source.gelf --- # loki.source.gelf diff --git a/docs/sources/flow/reference/components/loki.source.heroku.md b/docs/sources/flow/reference/components/loki.source.heroku.md index 6fe1065afdaf..f98b00312062 100644 --- a/docs/sources/flow/reference/components/loki.source.heroku.md +++ b/docs/sources/flow/reference/components/loki.source.heroku.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/loki.source.heroku/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.source.heroku/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.source.heroku/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.source.heroku/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.source.heroku/ -title: loki.source.heroku description: Learn about loki.source.heroku +title: loki.source.heroku --- # loki.source.heroku diff --git a/docs/sources/flow/reference/components/loki.source.journal.md b/docs/sources/flow/reference/components/loki.source.journal.md index 4b8c6941b130..26a1922b7aeb 100644 --- a/docs/sources/flow/reference/components/loki.source.journal.md +++ b/docs/sources/flow/reference/components/loki.source.journal.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/loki.source.journal/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.source.journal/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.source.journal/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.source.journal/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.source.journal/ -title: loki.source.journal description: Learn about loki.source.journal +title: loki.source.journal --- # loki.source.journal diff --git a/docs/sources/flow/reference/components/loki.source.kafka.md b/docs/sources/flow/reference/components/loki.source.kafka.md index a93e870cdabd..4110177d7d09 100644 --- a/docs/sources/flow/reference/components/loki.source.kafka.md +++ b/docs/sources/flow/reference/components/loki.source.kafka.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/loki.source.kafka/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.source.kafka/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.source.kafka/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.source.kafka/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.source.kafka/ -title: loki.source.kafka description: Learn about loki.source.kafka +title: loki.source.kafka --- # loki.source.kafka diff --git a/docs/sources/flow/reference/components/loki.source.kubernetes.md b/docs/sources/flow/reference/components/loki.source.kubernetes.md index 48db37ab6e70..cde01d3172bc 100644 --- a/docs/sources/flow/reference/components/loki.source.kubernetes.md +++ b/docs/sources/flow/reference/components/loki.source.kubernetes.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/loki.source.kubernetes/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.source.kubernetes/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.source.kubernetes/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.source.kubernetes/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.source.kubernetes/ +description: Learn about loki.source.kubernetes labels: stage: experimental title: loki.source.kubernetes -description: Learn about loki.source.kubernetes --- # loki.source.kubernetes diff --git a/docs/sources/flow/reference/components/loki.source.kubernetes_events.md b/docs/sources/flow/reference/components/loki.source.kubernetes_events.md index 68168544d994..9e7df1f037d9 100644 --- a/docs/sources/flow/reference/components/loki.source.kubernetes_events.md +++ b/docs/sources/flow/reference/components/loki.source.kubernetes_events.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/loki.source.kubernetes_events/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.source.kubernetes_events/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.source.kubernetes_events/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.source.kubernetes_events/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.source.kubernetes_events/ -title: loki.source.kubernetes_events description: Learn about loki.source.kubernetes_events +title: loki.source.kubernetes_events --- # loki.source.kubernetes_events diff --git a/docs/sources/flow/reference/components/loki.source.podlogs.md b/docs/sources/flow/reference/components/loki.source.podlogs.md index f5f1b00fbd73..9fd5ad109dcd 100644 --- a/docs/sources/flow/reference/components/loki.source.podlogs.md +++ b/docs/sources/flow/reference/components/loki.source.podlogs.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/loki.source.podlogs/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.source.podlogs/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.source.podlogs/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.source.podlogs/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.source.podlogs/ +description: Learn about loki.source.podlogs labels: stage: experimental title: loki.source.podlogs -description: Learn about loki.source.podlogs --- # loki.source.podlogs diff --git a/docs/sources/flow/reference/components/loki.source.syslog.md b/docs/sources/flow/reference/components/loki.source.syslog.md index ebb70010744b..3b91c152b8bc 100644 --- a/docs/sources/flow/reference/components/loki.source.syslog.md +++ b/docs/sources/flow/reference/components/loki.source.syslog.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/loki.source.syslog/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.source.syslog/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.source.syslog/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.source.syslog/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.source.syslog/ -title: loki.source.syslog description: Learn about loki.source.syslog +title: loki.source.syslog --- # loki.source.syslog diff --git a/docs/sources/flow/reference/components/loki.source.windowsevent.md b/docs/sources/flow/reference/components/loki.source.windowsevent.md index bf2e0e2c1621..4c8faf4059f2 100644 --- a/docs/sources/flow/reference/components/loki.source.windowsevent.md +++ b/docs/sources/flow/reference/components/loki.source.windowsevent.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/loki.source.windowsevent/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.source.windowsevent/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.source.windowsevent/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.source.windowsevent/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.source.windowsevent/ -title: loki.source.windowsevent description: Learn about loki.windowsevent +title: loki.source.windowsevent --- # loki.source.windowsevent diff --git a/docs/sources/flow/reference/components/loki.write.md b/docs/sources/flow/reference/components/loki.write.md index 7246a66f6897..4dd21097b720 100644 --- a/docs/sources/flow/reference/components/loki.write.md +++ b/docs/sources/flow/reference/components/loki.write.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/loki.write/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.write/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/loki.write/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.write/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/loki.write/ -title: loki.write description: Learn about loki.write +title: loki.write --- # loki.write diff --git a/docs/sources/flow/reference/components/mimir.rules.kubernetes.md b/docs/sources/flow/reference/components/mimir.rules.kubernetes.md index b87a8dc2e589..88bc56acc751 100644 --- a/docs/sources/flow/reference/components/mimir.rules.kubernetes.md +++ b/docs/sources/flow/reference/components/mimir.rules.kubernetes.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/mimir.rules.kubernetes/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/mimir.rules.kubernetes/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/mimir.rules.kubernetes/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/mimir.rules.kubernetes/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/mimir.rules.kubernetes/ +description: Learn about mimir.rules.kubernetes labels: stage: beta title: mimir.rules.kubernetes -description: Learn about mimir.rules.kubernetes --- # mimir.rules.kubernetes diff --git a/docs/sources/flow/reference/components/module.file.md b/docs/sources/flow/reference/components/module.file.md index 41ea97532d1d..7e976cb5d861 100644 --- a/docs/sources/flow/reference/components/module.file.md +++ b/docs/sources/flow/reference/components/module.file.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/module.file/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/module.file/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/module.file/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/module.file/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/module.file/ +description: Learn about module.file labels: stage: beta title: module.file -description: Learn about module.file --- # module.file diff --git a/docs/sources/flow/reference/components/module.git.md b/docs/sources/flow/reference/components/module.git.md index 6f0867f5fdcc..21e9ad885486 100644 --- a/docs/sources/flow/reference/components/module.git.md +++ b/docs/sources/flow/reference/components/module.git.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/module.git/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/module.git/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/module.git/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/module.git/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/module.git/ +description: Learn about module.git labels: stage: beta title: module.git -description: Learn about module.git --- # module.git diff --git a/docs/sources/flow/reference/components/module.http.md b/docs/sources/flow/reference/components/module.http.md index d93d1c7d3e97..959fdb48418f 100644 --- a/docs/sources/flow/reference/components/module.http.md +++ b/docs/sources/flow/reference/components/module.http.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/module.http/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/module.http/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/module.http/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/module.http/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/module.http/ +description: Learn about module.http labels: stage: beta title: module.http -description: Learn about module.http --- # module.http diff --git a/docs/sources/flow/reference/components/module.string.md b/docs/sources/flow/reference/components/module.string.md index 7b9284e2f4c1..497c320ceae8 100644 --- a/docs/sources/flow/reference/components/module.string.md +++ b/docs/sources/flow/reference/components/module.string.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/module.string/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/module.string/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/module.string/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/module.string/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/module.string/ +description: Learn about module.string labels: stage: beta title: module.string -description: Learn about module.string --- # module.string diff --git a/docs/sources/flow/reference/components/otelcol.auth.basic.md b/docs/sources/flow/reference/components/otelcol.auth.basic.md index 94906d4f87dc..885eb53f09fa 100644 --- a/docs/sources/flow/reference/components/otelcol.auth.basic.md +++ b/docs/sources/flow/reference/components/otelcol.auth.basic.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.auth.basic/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.auth.basic/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.auth.basic/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.auth.basic/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.auth.basic/ -title: otelcol.auth.basic description: Learn about otelcol.auth.basic +title: otelcol.auth.basic --- # otelcol.auth.basic diff --git a/docs/sources/flow/reference/components/otelcol.auth.bearer.md b/docs/sources/flow/reference/components/otelcol.auth.bearer.md index 9f3ba25c0c6a..718789603b49 100644 --- a/docs/sources/flow/reference/components/otelcol.auth.bearer.md +++ b/docs/sources/flow/reference/components/otelcol.auth.bearer.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.auth.bearer/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.auth.bearer/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.auth.bearer/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.auth.bearer/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.auth.bearer/ -title: otelcol.auth.bearer description: Learn about otelcol.auth.bearer +title: otelcol.auth.bearer --- # otelcol.auth.bearer diff --git a/docs/sources/flow/reference/components/otelcol.auth.headers.md b/docs/sources/flow/reference/components/otelcol.auth.headers.md index b07b9a79373e..dd2fdf647eae 100644 --- a/docs/sources/flow/reference/components/otelcol.auth.headers.md +++ b/docs/sources/flow/reference/components/otelcol.auth.headers.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.auth.headers/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.auth.headers/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.auth.headers/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.auth.headers/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.auth.headers/ -title: otelcol.auth.headers description: Learn about otelcol.auth.headers +title: otelcol.auth.headers --- # otelcol.auth.headers diff --git a/docs/sources/flow/reference/components/otelcol.auth.oauth2.md b/docs/sources/flow/reference/components/otelcol.auth.oauth2.md index b4f0cdd686e9..3ef5bc26880a 100644 --- a/docs/sources/flow/reference/components/otelcol.auth.oauth2.md +++ b/docs/sources/flow/reference/components/otelcol.auth.oauth2.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.auth.oauth2/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.auth.oauth2/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.auth.oauth2/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.auth.oauth2/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.auth.oauth2/ -title: otelcol.auth.oauth2 description: Learn about otelcol.auth.oauth2 +title: otelcol.auth.oauth2 --- # otelcol.auth.oauth2 diff --git a/docs/sources/flow/reference/components/otelcol.auth.sigv4.md b/docs/sources/flow/reference/components/otelcol.auth.sigv4.md index 1c21d0c5320f..e4fc91df2832 100644 --- a/docs/sources/flow/reference/components/otelcol.auth.sigv4.md +++ b/docs/sources/flow/reference/components/otelcol.auth.sigv4.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.auth.sigv4/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.auth.sigv4/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.auth.sigv4/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.auth.sigv4/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.auth.sigv4/ -title: otelcol.auth.sigv4 description: Learn about otelcol.auth.sigv4 +title: otelcol.auth.sigv4 --- # otelcol.auth.sigv4 diff --git a/docs/sources/flow/reference/components/otelcol.connector.servicegraph.md b/docs/sources/flow/reference/components/otelcol.connector.servicegraph.md index 7c87977142aa..6b8f71dbc648 100644 --- a/docs/sources/flow/reference/components/otelcol.connector.servicegraph.md +++ b/docs/sources/flow/reference/components/otelcol.connector.servicegraph.md @@ -1,9 +1,12 @@ --- +aliases: +- /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.connector.servicegraph/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.connector.servicegraph/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.connector.servicegraph/ +description: Learn about otelcol.connector.servicegraph labels: stage: experimental title: otelcol.connector.servicegraph -description: Learn about otelcol.connector.servicegraph --- # otelcol.connector.servicegraph diff --git a/docs/sources/flow/reference/components/otelcol.connector.spanlogs.md b/docs/sources/flow/reference/components/otelcol.connector.spanlogs.md index 91e5332b0a98..99c28fc3b15f 100644 --- a/docs/sources/flow/reference/components/otelcol.connector.spanlogs.md +++ b/docs/sources/flow/reference/components/otelcol.connector.spanlogs.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.connector.spanlogs/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.connector.spanlogs/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.connector.spanlogs/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.connector.spanlogs/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.connector.spanlogs/ -title: otelcol.connector.spanlogs description: Learn about otelcol.connector.spanlogs +title: otelcol.connector.spanlogs --- # otelcol.connector.spanlogs diff --git a/docs/sources/flow/reference/components/otelcol.connector.spanmetrics.md b/docs/sources/flow/reference/components/otelcol.connector.spanmetrics.md index 9f210c14734e..029adcf45f60 100644 --- a/docs/sources/flow/reference/components/otelcol.connector.spanmetrics.md +++ b/docs/sources/flow/reference/components/otelcol.connector.spanmetrics.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.connector.spanmetrics/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.connector.spanmetrics/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.connector.spanmetrics/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.connector.spanmetrics/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.connector.spanmetrics/ +description: Learn about otelcol.connector.spanmetrics labels: stage: experimental title: otelcol.connector.spanmetrics -description: Learn about otelcol.connector.spanmetrics --- # otelcol.connector.spanmetrics diff --git a/docs/sources/flow/reference/components/otelcol.exporter.loadbalancing.md b/docs/sources/flow/reference/components/otelcol.exporter.loadbalancing.md index 9b9073dc6501..5e42e1d318cf 100644 --- a/docs/sources/flow/reference/components/otelcol.exporter.loadbalancing.md +++ b/docs/sources/flow/reference/components/otelcol.exporter.loadbalancing.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.exporter.loadbalancing/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.exporter.loadbalancing/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.exporter.loadbalancing/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.exporter.loadbalancing/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.exporter.loadbalancing/ +description: Learn about otelcol.exporter.loadbalancing labels: stage: beta title: otelcol.exporter.loadbalancing -description: Learn about otelcol.exporter.loadbalancing --- # otelcol.exporter.loadbalancing diff --git a/docs/sources/flow/reference/components/otelcol.exporter.logging.md b/docs/sources/flow/reference/components/otelcol.exporter.logging.md index e99efa07eede..fe0c7886face 100644 --- a/docs/sources/flow/reference/components/otelcol.exporter.logging.md +++ b/docs/sources/flow/reference/components/otelcol.exporter.logging.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.exporter.logging/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.exporter.logging/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.exporter.logging/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.exporter.logging/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.exporter.logging/ -title: otelcol.exporter.logging description: Learn about otelcol.exporter.logging +title: otelcol.exporter.logging --- # otelcol.exporter.logging diff --git a/docs/sources/flow/reference/components/otelcol.exporter.loki.md b/docs/sources/flow/reference/components/otelcol.exporter.loki.md index d9526fba561f..53d765e520ff 100644 --- a/docs/sources/flow/reference/components/otelcol.exporter.loki.md +++ b/docs/sources/flow/reference/components/otelcol.exporter.loki.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.exporter.loki/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.exporter.loki/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.exporter.loki/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.exporter.loki/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.exporter.loki/ -title: otelcol.exporter.loki description: Learn about otelcol.exporter.loki +title: otelcol.exporter.loki --- # otelcol.exporter.loki diff --git a/docs/sources/flow/reference/components/otelcol.exporter.otlp.md b/docs/sources/flow/reference/components/otelcol.exporter.otlp.md index 348b73ee5fb1..4b244627de03 100644 --- a/docs/sources/flow/reference/components/otelcol.exporter.otlp.md +++ b/docs/sources/flow/reference/components/otelcol.exporter.otlp.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.exporter.otlp/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.exporter.otlp/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.exporter.otlp/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.exporter.otlp/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.exporter.otlp/ -title: otelcol.exporter.otlp description: Learn about otelcol.exporter.otlp +title: otelcol.exporter.otlp --- # otelcol.exporter.otlp diff --git a/docs/sources/flow/reference/components/otelcol.exporter.otlphttp.md b/docs/sources/flow/reference/components/otelcol.exporter.otlphttp.md index 8782d6b30bea..c8242228f8b5 100644 --- a/docs/sources/flow/reference/components/otelcol.exporter.otlphttp.md +++ b/docs/sources/flow/reference/components/otelcol.exporter.otlphttp.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.exporter.otlphttp/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.exporter.otlphttp/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.exporter.otlphttp/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.exporter.otlphttp/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.exporter.otlphttp/ -title: otelcol.exporter.otlphttp description: Learn about otelcol.exporter.otlphttp +title: otelcol.exporter.otlphttp --- # otelcol.exporter.otlphttp diff --git a/docs/sources/flow/reference/components/otelcol.exporter.prometheus.md b/docs/sources/flow/reference/components/otelcol.exporter.prometheus.md index e3b3c08416a8..8c8f81d133d1 100644 --- a/docs/sources/flow/reference/components/otelcol.exporter.prometheus.md +++ b/docs/sources/flow/reference/components/otelcol.exporter.prometheus.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.exporter.prometheus/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.exporter.prometheus/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.exporter.prometheus/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.exporter.prometheus/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.exporter.prometheus/ -title: otelcol.exporter.prometheus description: Learn about otelcol.exporter.prometheus +title: otelcol.exporter.prometheus --- # otelcol.exporter.prometheus diff --git a/docs/sources/flow/reference/components/otelcol.extension.jaeger_remote_sampling.md b/docs/sources/flow/reference/components/otelcol.extension.jaeger_remote_sampling.md index 9ef641fee047..650407ff0a0b 100644 --- a/docs/sources/flow/reference/components/otelcol.extension.jaeger_remote_sampling.md +++ b/docs/sources/flow/reference/components/otelcol.extension.jaeger_remote_sampling.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.extension.jaeger_remote_sampling/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.extension.jaeger_remote_sampling/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.extension.jaeger_remote_sampling/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.extension.jaeger_remote_sampling/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.extension.jaeger_remote_sampling/ +description: Learn about otelcol.extension.jaeger_remote_sampling label: stage: experimental title: otelcol.extension.jaeger_remote_sampling -description: Learn about otelcol.extension.jaeger_remote_sampling --- # otelcol.extension.jaeger_remote_sampling diff --git a/docs/sources/flow/reference/components/otelcol.processor.attributes.md b/docs/sources/flow/reference/components/otelcol.processor.attributes.md index 39af8475dd3f..4125de260d9c 100644 --- a/docs/sources/flow/reference/components/otelcol.processor.attributes.md +++ b/docs/sources/flow/reference/components/otelcol.processor.attributes.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.processor.attributes/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.processor.attributes/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.processor.attributes/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.processor.attributes/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.processor.attributes/ -title: otelcol.processor.attributes description: Learn about otelcol.processor.attributes +title: otelcol.processor.attributes --- # otelcol.processor.attributes diff --git a/docs/sources/flow/reference/components/otelcol.processor.batch.md b/docs/sources/flow/reference/components/otelcol.processor.batch.md index 5216d88259fb..a6618da0d672 100644 --- a/docs/sources/flow/reference/components/otelcol.processor.batch.md +++ b/docs/sources/flow/reference/components/otelcol.processor.batch.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.processor.batch/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.processor.batch/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.processor.batch/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.processor.batch/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.processor.batch/ -title: otelcol.processor.batch description: Learn about otelcol.processor.batch +title: otelcol.processor.batch --- # otelcol.processor.batch diff --git a/docs/sources/flow/reference/components/otelcol.processor.discovery.md b/docs/sources/flow/reference/components/otelcol.processor.discovery.md index 14d36d9e13b3..cbeb805c862b 100644 --- a/docs/sources/flow/reference/components/otelcol.processor.discovery.md +++ b/docs/sources/flow/reference/components/otelcol.processor.discovery.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.processor.discovery/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.processor.discovery/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.processor.discovery/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.processor.discovery/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.processor.discovery/ -title: otelcol.processor.discovery description: Learn about otelcol.processor.discovery +title: otelcol.processor.discovery --- # otelcol.processor.discovery diff --git a/docs/sources/flow/reference/components/otelcol.processor.filter.md b/docs/sources/flow/reference/components/otelcol.processor.filter.md index d941665b2d38..e5220c60e59b 100644 --- a/docs/sources/flow/reference/components/otelcol.processor.filter.md +++ b/docs/sources/flow/reference/components/otelcol.processor.filter.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.processor.filter/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.processor.filter/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.processor.filter/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.processor.filter/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.processor.filter/ +description: Learn about otelcol.processor.filter labels: stage: experimental title: otelcol.processor.filter -description: Learn about otelcol.processor.filter --- # otelcol.processor.filter diff --git a/docs/sources/flow/reference/components/otelcol.processor.k8sattributes.md b/docs/sources/flow/reference/components/otelcol.processor.k8sattributes.md index dd06860a4efc..7b323ddaeeea 100644 --- a/docs/sources/flow/reference/components/otelcol.processor.k8sattributes.md +++ b/docs/sources/flow/reference/components/otelcol.processor.k8sattributes.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.processor.k8sattributes/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.processor.k8sattributes/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.processor.k8sattributes/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.processor.k8sattributes/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.processor.k8sattributes/ -title: otelcol.processor.k8sattributes description: Learn about otelcol.processor.k8sattributes +title: otelcol.processor.k8sattributes --- # otelcol.processor.k8sattributes diff --git a/docs/sources/flow/reference/components/otelcol.processor.memory_limiter.md b/docs/sources/flow/reference/components/otelcol.processor.memory_limiter.md index 08ab82396c32..ec22aba18ec4 100644 --- a/docs/sources/flow/reference/components/otelcol.processor.memory_limiter.md +++ b/docs/sources/flow/reference/components/otelcol.processor.memory_limiter.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.processor.memory_limiter/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.processor.memory_limiter/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.processor.memory_limiter/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.processor.memory_limiter/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.processor.memory_limiter/ -title: otelcol.processor.memory_limiter description: Learn about otelcol.processor.memory_limiter +title: otelcol.processor.memory_limiter --- # otelcol.processor.memory_limiter diff --git a/docs/sources/flow/reference/components/otelcol.processor.probabilistic_sampler.md b/docs/sources/flow/reference/components/otelcol.processor.probabilistic_sampler.md index 32bbd8bd15a9..a6e23edf86bb 100644 --- a/docs/sources/flow/reference/components/otelcol.processor.probabilistic_sampler.md +++ b/docs/sources/flow/reference/components/otelcol.processor.probabilistic_sampler.md @@ -1,9 +1,12 @@ --- +aliases: +- /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.processor.probabilistic_sampler/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.processor.probabilistic_sampler/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.processor.probabilistic_sampler/ +description: Learn about telcol.processor.probabilistic_sampler labels: stage: experimental title: otelcol.processor.probabilistic_sampler -description: Learn about telcol.processor.probabilistic_sampler --- # otelcol.processor.probabilistic_sampler diff --git a/docs/sources/flow/reference/components/otelcol.processor.span.md b/docs/sources/flow/reference/components/otelcol.processor.span.md index 81ecdacf513e..2484054ab7e3 100644 --- a/docs/sources/flow/reference/components/otelcol.processor.span.md +++ b/docs/sources/flow/reference/components/otelcol.processor.span.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.processor.span/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.processor.span/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.processor.span/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.processor.span/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.processor.span/ +description: Learn about otelcol.processor.span labels: stage: experimental title: otelcol.processor.span -description: Learn about otelcol.processor.span --- # otelcol.processor.span diff --git a/docs/sources/flow/reference/components/otelcol.processor.tail_sampling.md b/docs/sources/flow/reference/components/otelcol.processor.tail_sampling.md index 97e6072b9731..990c49b322b1 100644 --- a/docs/sources/flow/reference/components/otelcol.processor.tail_sampling.md +++ b/docs/sources/flow/reference/components/otelcol.processor.tail_sampling.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.processor.tail_sampling/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.processor.tail_sampling/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.processor.tail_sampling/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.processor.tail_sampling/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.processor.tail_sampling/ +description: Learn about otelcol.processor.tail_sampling labels: stage: beta title: otelcol.processor.tail_sampling -description: Learn about otelcol.processor.tail_sampling --- # otelcol.processor.tail_sampling diff --git a/docs/sources/flow/reference/components/otelcol.processor.transform.md b/docs/sources/flow/reference/components/otelcol.processor.transform.md index 04be52e99eaf..21704f6715d2 100644 --- a/docs/sources/flow/reference/components/otelcol.processor.transform.md +++ b/docs/sources/flow/reference/components/otelcol.processor.transform.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.processor.transform/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.processor.transform/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.processor.transform/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.processor.transform/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.processor.transform/ +description: Learn about otelcol.processor.transform labels: stage: experimental title: otelcol.processor.transform -description: Learn about otelcol.processor.transform --- # otelcol.processor.transform diff --git a/docs/sources/flow/reference/components/otelcol.receiver.jaeger.md b/docs/sources/flow/reference/components/otelcol.receiver.jaeger.md index 6dd59b2a5d93..ce87557ffb9f 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.jaeger.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.jaeger.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.receiver.jaeger/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.receiver.jaeger/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.receiver.jaeger/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.receiver.jaeger/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.receiver.jaeger/ -title: otelcol.receiver.jaeger description: Learn about otelcol.receiver.jaeger +title: otelcol.receiver.jaeger --- # otelcol.receiver.jaeger diff --git a/docs/sources/flow/reference/components/otelcol.receiver.kafka.md b/docs/sources/flow/reference/components/otelcol.receiver.kafka.md index 4c332641a990..7e167e478645 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.kafka.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.kafka.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.receiver.kafka/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.receiver.kafka/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.receiver.kafka/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.receiver.kafka/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.receiver.kafka/ -title: otelcol.receiver.kafka description: Learn about otelcol.receiver.kafka +title: otelcol.receiver.kafka --- # otelcol.receiver.kafka diff --git a/docs/sources/flow/reference/components/otelcol.receiver.loki.md b/docs/sources/flow/reference/components/otelcol.receiver.loki.md index 1a3a1b234eb6..91344de46276 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.loki.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.loki.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.receiver.loki/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.receiver.loki/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.receiver.loki/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.receiver.loki/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.receiver.loki/ +description: Learn about otelcol.receiver.loki labels: stage: beta title: otelcol.receiver.loki -description: Learn about otelcol.receiver.loki --- # otelcol.receiver.loki diff --git a/docs/sources/flow/reference/components/otelcol.receiver.opencensus.md b/docs/sources/flow/reference/components/otelcol.receiver.opencensus.md index 6da48c06fc53..457feaf34cfd 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.opencensus.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.opencensus.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.receiver.opencensus/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.receiver.opencensus/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.receiver.opencensus/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.receiver.opencensus/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.receiver.opencensus/ -title: otelcol.receiver.opencensus description: Learn about otelcol.receiver.opencensus +title: otelcol.receiver.opencensus --- # otelcol.receiver.opencensus diff --git a/docs/sources/flow/reference/components/otelcol.receiver.otlp.md b/docs/sources/flow/reference/components/otelcol.receiver.otlp.md index 60f1f1748f9c..c995dca6d57e 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.otlp.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.otlp.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.receiver.otlp/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.receiver.otlp/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.receiver.otlp/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.receiver.otlp/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.receiver.otlp/ -title: otelcol.receiver.otlp description: Learn about otelcol.receiver.otlp +title: otelcol.receiver.otlp --- # otelcol.receiver.otlp diff --git a/docs/sources/flow/reference/components/otelcol.receiver.prometheus.md b/docs/sources/flow/reference/components/otelcol.receiver.prometheus.md index 61c16282551b..25bf3e9f4497 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.prometheus.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.prometheus.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.receiver.prometheus/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.receiver.prometheus/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.receiver.prometheus/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.receiver.prometheus/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.receiver.prometheus/ +description: Learn about otelcol.receiver.prometheus labels: stage: beta title: otelcol.receiver.prometheus -description: Learn about otelcol.receiver.prometheus --- # otelcol.receiver.prometheus diff --git a/docs/sources/flow/reference/components/otelcol.receiver.zipkin.md b/docs/sources/flow/reference/components/otelcol.receiver.zipkin.md index aa361f7a5233..1927861df7ad 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.zipkin.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.zipkin.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/otelcol.receiver.zipkin/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.receiver.zipkin/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.receiver.zipkin/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.receiver.zipkin/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.receiver.zipkin/ -title: otelcol.receiver.zipkin description: Learn about otelcol.receiver.zipkin +title: otelcol.receiver.zipkin --- # otelcol.receiver.zipkin diff --git a/docs/sources/flow/reference/components/prometheus.exporter.agent.md b/docs/sources/flow/reference/components/prometheus.exporter.agent.md index 92ac0b31a860..e9a5c3061e95 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.agent.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.agent.md @@ -1,7 +1,10 @@ --- +aliases: +- /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.agent/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.agent/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.agent/ -title: prometheus.exporter.agent description: Learn about prometheus.exporter.agen +title: prometheus.exporter.agent --- # prometheus.exporter.agent diff --git a/docs/sources/flow/reference/components/prometheus.exporter.apache.md b/docs/sources/flow/reference/components/prometheus.exporter.apache.md index f38021fab6be..5f060b9dc70d 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.apache.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.apache.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.apache/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.apache/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.apache/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.apache/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.apache/ -title: prometheus.exporter.apache description: Learn about prometheus.exporter.apache +title: prometheus.exporter.apache --- # prometheus.exporter.apache diff --git a/docs/sources/flow/reference/components/prometheus.exporter.azure.md b/docs/sources/flow/reference/components/prometheus.exporter.azure.md index 448575287351..7abc09666344 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.azure.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.azure.md @@ -1,11 +1,12 @@ --- aliases: - - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.azure/ - - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.azure/ - - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.azure/ +- /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.azure/ +- /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.azure/ +- /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.azure/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.azure/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.azure/ -title: prometheus.exporter.azure description: Learn about prometheus.exporter.azure +title: prometheus.exporter.azure --- # prometheus.exporter.azure diff --git a/docs/sources/flow/reference/components/prometheus.exporter.blackbox.md b/docs/sources/flow/reference/components/prometheus.exporter.blackbox.md index 40cd6db39e0a..2b4faacbfbc6 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.blackbox.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.blackbox.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.blackbox/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.blackbox/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.blackbox/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.blackbox/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.blackbox/ -title: prometheus.exporter.blackbox description: Learn about prometheus.exporter.blackbox +title: prometheus.exporter.blackbox --- # prometheus.exporter.blackbox diff --git a/docs/sources/flow/reference/components/prometheus.exporter.cadvisor.md b/docs/sources/flow/reference/components/prometheus.exporter.cadvisor.md index 1f4f960d56b0..567783c38702 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.cadvisor.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.cadvisor.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.cadvisor/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.cadvisor/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.cadvisor/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.cadvisor/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.cadvisor/ -title: prometheus.exporter.cadvisor description: Learn about the prometheus.exporter.cadvisor +title: prometheus.exporter.cadvisor --- # prometheus.exporter.cadvisor diff --git a/docs/sources/flow/reference/components/prometheus.exporter.cloudwatch.md b/docs/sources/flow/reference/components/prometheus.exporter.cloudwatch.md index 2748ee521adc..6fc15b290106 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.cloudwatch.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.cloudwatch.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.cloudwatch/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.cloudwatch/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.cloudwatch/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.cloudwatch/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.cloudwatch/ -title: prometheus.exporter.cloudwatch description: Learn about prometheus.exporter.cloudwatch +title: prometheus.exporter.cloudwatch --- # prometheus.exporter.cloudwatch diff --git a/docs/sources/flow/reference/components/prometheus.exporter.consul.md b/docs/sources/flow/reference/components/prometheus.exporter.consul.md index d69385db0439..f8344b3a1b69 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.consul.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.consul.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.consul/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.consul/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.consul/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.consul/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.consul/ -title: prometheus.exporter.consul description: Learn about prometheus.exporter.consul +title: prometheus.exporter.consul --- # prometheus.exporter.consul diff --git a/docs/sources/flow/reference/components/prometheus.exporter.dnsmasq.md b/docs/sources/flow/reference/components/prometheus.exporter.dnsmasq.md index 60df052a07bb..ef2cde17f49b 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.dnsmasq.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.dnsmasq.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.dnsmasq/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.dnsmasq/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.dnsmasq/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.dnsmasq/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.dnsmasq/ -title: prometheus.exporter.dnsmasq description: Learn about prometheus.exporter.dnsmasq +title: prometheus.exporter.dnsmasq --- # prometheus.exporter.dnsmasq diff --git a/docs/sources/flow/reference/components/prometheus.exporter.elasticsearch.md b/docs/sources/flow/reference/components/prometheus.exporter.elasticsearch.md index 792d57995928..4b17ab0602bc 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.elasticsearch.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.elasticsearch.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.elasticsearch/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.elasticsearch/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.elasticsearch/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.elasticsearch/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.elasticsearch/ -title: prometheus.exporter.elasticsearch description: Learn about prometheus.exporter.elasticsearch +title: prometheus.exporter.elasticsearch --- # prometheus.exporter.elasticsearch diff --git a/docs/sources/flow/reference/components/prometheus.exporter.gcp.md b/docs/sources/flow/reference/components/prometheus.exporter.gcp.md index 9140ae58919c..1d76b646f518 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.gcp.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.gcp.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.gcp/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.gcp/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.gcp/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.gcp/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.gcp/ -title: prometheus.exporter.gcp description: Learn about prometheus.exporter.gcp +title: prometheus.exporter.gcp --- # prometheus.exporter.gcp diff --git a/docs/sources/flow/reference/components/prometheus.exporter.github.md b/docs/sources/flow/reference/components/prometheus.exporter.github.md index aab5f2ceb7dd..d0cf3620a251 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.github.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.github.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.github/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.github/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.github/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.github/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.github/ -title: prometheus.exporter.github description: Learn about prometheus.exporter.github +title: prometheus.exporter.github --- # prometheus.exporter.github diff --git a/docs/sources/flow/reference/components/prometheus.exporter.kafka.md b/docs/sources/flow/reference/components/prometheus.exporter.kafka.md index 901d0f9c2636..345ee443dda4 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.kafka.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.kafka.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.kafka/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.kafka/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.kafka/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.kafka/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.kafka/ -title: prometheus.exporter.kafka description: Learn about prometheus.exporter.kafka +title: prometheus.exporter.kafka --- # prometheus.exporter.kafka diff --git a/docs/sources/flow/reference/components/prometheus.exporter.memcached.md b/docs/sources/flow/reference/components/prometheus.exporter.memcached.md index fceb216a4d6a..92330cb70893 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.memcached.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.memcached.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.memcached/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.memcached/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.memcached/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.memcached/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.memcached/ -title: prometheus.exporter.memcached description: Learn about prometheus.exporter.memcached +title: prometheus.exporter.memcached --- # prometheus.exporter.memcached diff --git a/docs/sources/flow/reference/components/prometheus.exporter.mongodb.md b/docs/sources/flow/reference/components/prometheus.exporter.mongodb.md index babc512a2ca2..bd3b03ed04f4 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.mongodb.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.mongodb.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.mongodb/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.mongodb/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.mongodb/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.mongodb/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.mongodb/ -title: prometheus.exporter.mongodb description: Learn about prometheus.exporter.mongodb +title: prometheus.exporter.mongodb --- # prometheus.exporter.mongodb diff --git a/docs/sources/flow/reference/components/prometheus.exporter.mssql.md b/docs/sources/flow/reference/components/prometheus.exporter.mssql.md index 66384a1aace1..84786ee074a0 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.mssql.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.mssql.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.mssql/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.mssql/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.mssql/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.mssql/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.mssql/ -title: prometheus.exporter.mssql description: Learn about prometheus.exporter.mssql +title: prometheus.exporter.mssql --- # prometheus.exporter.mssql diff --git a/docs/sources/flow/reference/components/prometheus.exporter.mysql.md b/docs/sources/flow/reference/components/prometheus.exporter.mysql.md index a3b2569879a8..1d3ef28d816b 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.mysql.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.mysql.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.mysql/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.mysql/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.mysql/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.mysql/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.mysql/ -title: prometheus.exporter.mysql description: Learn about prometheus.exporter.mysql +title: prometheus.exporter.mysql --- # prometheus.exporter.mysql diff --git a/docs/sources/flow/reference/components/prometheus.exporter.oracledb.md b/docs/sources/flow/reference/components/prometheus.exporter.oracledb.md index 06437927d7a3..c1449d56076c 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.oracledb.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.oracledb.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.oracledb/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.oracledb/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.oracledb/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.oracledb/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.oracledb/ -title: prometheus.exporter.oracledb description: Learn about prometheus.exporter.oracledb +title: prometheus.exporter.oracledb --- # prometheus.exporter.oracledb diff --git a/docs/sources/flow/reference/components/prometheus.exporter.postgres.md b/docs/sources/flow/reference/components/prometheus.exporter.postgres.md index c219c2a62d62..f76f7bacf86d 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.postgres.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.postgres.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.postgres/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.postgres/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.postgres/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.postgres/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.postgres/ +description: Learn about prometheus.exporter.postgres labels: stage: beta title: prometheus.exporter.postgres -description: Learn about prometheus.exporter.postgres --- # prometheus.exporter.postgres diff --git a/docs/sources/flow/reference/components/prometheus.exporter.process.md b/docs/sources/flow/reference/components/prometheus.exporter.process.md index 730071fc471d..284bcd204cda 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.process.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.process.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.process/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.process/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.process/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.process/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.process/ -title: prometheus.exporter.process description: Learn about prometheus.exporter.process +title: prometheus.exporter.process --- # prometheus.exporter.process diff --git a/docs/sources/flow/reference/components/prometheus.exporter.redis.md b/docs/sources/flow/reference/components/prometheus.exporter.redis.md index 7c310c801e6d..acc5ade5b32a 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.redis.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.redis.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.redis/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.redis/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.redis/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.redis/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.redis/ -title: prometheus.exporter.redis description: Learn about prometheus.exporter.redis +title: prometheus.exporter.redis --- # prometheus.exporter.redis diff --git a/docs/sources/flow/reference/components/prometheus.exporter.snmp.md b/docs/sources/flow/reference/components/prometheus.exporter.snmp.md index 448f51ff2aa3..47a0444110d9 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.snmp.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.snmp.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.snmp/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.snmp/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.snmp/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.snmp/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.snmp/ -title: prometheus.exporter.snmp description: Learn about prometheus.exporter.snmp +title: prometheus.exporter.snmp --- # prometheus.exporter.snmp diff --git a/docs/sources/flow/reference/components/prometheus.exporter.snowflake.md b/docs/sources/flow/reference/components/prometheus.exporter.snowflake.md index 5e06636dc43d..e290817292a4 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.snowflake.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.snowflake.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.snowflake/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.snowflake/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.snowflake/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.snowflake/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.snowflake/ -title: prometheus.exporter.snowflake description: Learn about prometheus.exporter.snowflake +title: prometheus.exporter.snowflake --- # prometheus.exporter.snowflake diff --git a/docs/sources/flow/reference/components/prometheus.exporter.squid.md b/docs/sources/flow/reference/components/prometheus.exporter.squid.md index 606b824dc8b7..b23dc1d0317e 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.squid.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.squid.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.squid/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.squid/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.squid/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.squid/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.squid/ -title: prometheus.exporter.squid description: Learn about prometheus.exporter.squid +title: prometheus.exporter.squid --- # prometheus.exporter.squid diff --git a/docs/sources/flow/reference/components/prometheus.exporter.statsd.md b/docs/sources/flow/reference/components/prometheus.exporter.statsd.md index f9258522de96..68c9fc78bf95 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.statsd.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.statsd.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.statsd/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.statsd/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.statsd/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.statsd/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.statsd/ -title: prometheus.exporter.statsd description: Learn about prometheus.exporter.statsd +title: prometheus.exporter.statsd --- # prometheus.exporter.statsd diff --git a/docs/sources/flow/reference/components/prometheus.exporter.unix.md b/docs/sources/flow/reference/components/prometheus.exporter.unix.md index 95f3ce6f9993..09c4c262914c 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.unix.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.unix.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.unix/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.unix/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.unix/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.unix/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.unix/ -title: prometheus.exporter.unix description: Learn about prometheus.exporter.unix +title: prometheus.exporter.unix --- # prometheus.exporter.unix diff --git a/docs/sources/flow/reference/components/prometheus.exporter.vsphere.md b/docs/sources/flow/reference/components/prometheus.exporter.vsphere.md index 9939defbcd57..166226a27717 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.vsphere.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.vsphere.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.vsphere/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.vsphere/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.vsphere/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.vsphere/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.vsphere/ -title: prometheus.exporter.vsphere description: Learn about prometheus.exporter.vsphere +title: prometheus.exporter.vsphere --- # prometheus.exporter.vsphere diff --git a/docs/sources/flow/reference/components/prometheus.exporter.windows.md b/docs/sources/flow/reference/components/prometheus.exporter.windows.md index 98bd096a3329..f06aba58eaa2 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.windows.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.windows.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.exporter.windows/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.windows/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.windows/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.windows/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.windows/ -title: prometheus.exporter.windows description: Learn about prometheus.exporter.windows +title: prometheus.exporter.windows --- # prometheus.exporter.windows diff --git a/docs/sources/flow/reference/components/prometheus.operator.podmonitors.md b/docs/sources/flow/reference/components/prometheus.operator.podmonitors.md index 89a1fcb81df5..2bdf486982fd 100644 --- a/docs/sources/flow/reference/components/prometheus.operator.podmonitors.md +++ b/docs/sources/flow/reference/components/prometheus.operator.podmonitors.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.operator.podmonitors/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.operator.podmonitors/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.operator.podmonitors/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.operator.podmonitors/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.operator.podmonitors/ +description: Learn about prometheus.operator.podmonitors labels: stage: beta title: prometheus.operator.podmonitors -description: Learn about prometheus.operator.podmonitors --- # prometheus.operator.podmonitors diff --git a/docs/sources/flow/reference/components/prometheus.operator.probes.md b/docs/sources/flow/reference/components/prometheus.operator.probes.md index d27e43f49f11..693ae045d0f7 100644 --- a/docs/sources/flow/reference/components/prometheus.operator.probes.md +++ b/docs/sources/flow/reference/components/prometheus.operator.probes.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.operator.probes/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.operator.probes/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.operator.probes/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.operator.probes/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.operator.probes/ +description: Learn about prometheus.operator.probes labels: stage: beta title: prometheus.operator.probes -description: Learn about prometheus.operator.probes --- # prometheus.operator.probes diff --git a/docs/sources/flow/reference/components/prometheus.operator.servicemonitors.md b/docs/sources/flow/reference/components/prometheus.operator.servicemonitors.md index 2870418b0c54..362abb38d90f 100644 --- a/docs/sources/flow/reference/components/prometheus.operator.servicemonitors.md +++ b/docs/sources/flow/reference/components/prometheus.operator.servicemonitors.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.operator.servicemonitors/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.operator.servicemonitors/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.operator.servicemonitors/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.operator.servicemonitors/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.operator.servicemonitors/ +description: Learn about prometheus.operator.servicemonitors labels: stage: beta title: prometheus.operator.servicemonitors -description: Learn about prometheus.operator.servicemonitors --- # prometheus.operator.servicemonitors diff --git a/docs/sources/flow/reference/components/prometheus.receive_http.md b/docs/sources/flow/reference/components/prometheus.receive_http.md index 863c5db1821f..54583a453ed5 100644 --- a/docs/sources/flow/reference/components/prometheus.receive_http.md +++ b/docs/sources/flow/reference/components/prometheus.receive_http.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.receive_http/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.receive_http/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.receive_http/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.receive_http/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.receive_http/ -title: prometheus.receive_http description: Learn about prometheus.receive_http +title: prometheus.receive_http --- # prometheus.receive_http diff --git a/docs/sources/flow/reference/components/prometheus.relabel.md b/docs/sources/flow/reference/components/prometheus.relabel.md index 23fb71455a41..9eb0362f82df 100644 --- a/docs/sources/flow/reference/components/prometheus.relabel.md +++ b/docs/sources/flow/reference/components/prometheus.relabel.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.relabel/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.relabel/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.relabel/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.relabel/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.relabel/ -title: prometheus.relabel description: Learn about prometheus.relabel +title: prometheus.relabel --- # prometheus.relabel diff --git a/docs/sources/flow/reference/components/prometheus.remote_write.md b/docs/sources/flow/reference/components/prometheus.remote_write.md index e2ebd4b9cf29..7ce3250a351e 100644 --- a/docs/sources/flow/reference/components/prometheus.remote_write.md +++ b/docs/sources/flow/reference/components/prometheus.remote_write.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.remote_write/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.remote_write/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.remote_write/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.remote_write/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.remote_write/ -title: prometheus.remote_write description: Learn about prometheus.remote_write +title: prometheus.remote_write --- # prometheus.remote_write diff --git a/docs/sources/flow/reference/components/prometheus.scrape.md b/docs/sources/flow/reference/components/prometheus.scrape.md index 25159245bf2d..d51bfa30f963 100644 --- a/docs/sources/flow/reference/components/prometheus.scrape.md +++ b/docs/sources/flow/reference/components/prometheus.scrape.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/prometheus.scrape/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.scrape/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.scrape/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.scrape/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.scrape/ -title: prometheus.scrape description: Learn about prometheus.scrape +title: prometheus.scrape --- # prometheus.scrape diff --git a/docs/sources/flow/reference/components/pyroscope.ebpf.md b/docs/sources/flow/reference/components/pyroscope.ebpf.md index 08dde0a41826..cb3d436cecf7 100644 --- a/docs/sources/flow/reference/components/pyroscope.ebpf.md +++ b/docs/sources/flow/reference/components/pyroscope.ebpf.md @@ -1,13 +1,14 @@ --- aliases: - - /docs/grafana-cloud/agent/flow/reference/components/pyroscope.ebpf/ - - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/pyroscope.ebpf/ - - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/pyroscope.ebpf/ +- /docs/grafana-cloud/agent/flow/reference/components/pyroscope.ebpf/ +- /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/pyroscope.ebpf/ +- /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/pyroscope.ebpf/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/pyroscope.ebpf/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/pyroscope.ebpf/ +description: Learn about pyroscope.ebpf labels: stage: beta title: pyroscope.ebpf -description: Learn about pyroscope.ebpf --- # pyroscope.ebpf diff --git a/docs/sources/flow/reference/components/pyroscope.scrape.md b/docs/sources/flow/reference/components/pyroscope.scrape.md index 37a90ef89cc8..1d7e514b6732 100644 --- a/docs/sources/flow/reference/components/pyroscope.scrape.md +++ b/docs/sources/flow/reference/components/pyroscope.scrape.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/pyroscope.scrape/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/pyroscope.scrape/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/pyroscope.scrape/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/pyroscope.scrape/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/pyroscope.scrape/ +description: Learn about pyroscope.scrape labels: stage: beta title: pyroscope.scrape -description: Learn about pyroscope.scrape --- # pyroscope.scrape diff --git a/docs/sources/flow/reference/components/pyroscope.write.md b/docs/sources/flow/reference/components/pyroscope.write.md index 4f45edf1beb6..45ce439e338e 100644 --- a/docs/sources/flow/reference/components/pyroscope.write.md +++ b/docs/sources/flow/reference/components/pyroscope.write.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/pyroscope.write/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/pyroscope.write/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/pyroscope.write/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/pyroscope.write/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/pyroscope.write/ +description: Learn about pyroscope.write labels: stage: beta title: pyroscope.write -description: Learn about pyroscope.write --- # pyroscope.write diff --git a/docs/sources/flow/reference/components/remote.http.md b/docs/sources/flow/reference/components/remote.http.md index a7089d88fefc..ebf805728bbd 100644 --- a/docs/sources/flow/reference/components/remote.http.md +++ b/docs/sources/flow/reference/components/remote.http.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/remote.http/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/remote.http/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/remote.http/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/remote.http/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/remote.http/ -title: remote.http description: Learn about remote.http +title: remote.http --- # remote.http diff --git a/docs/sources/flow/reference/components/remote.kubernetes.configmap.md b/docs/sources/flow/reference/components/remote.kubernetes.configmap.md index d958c5141139..aba9af2b33f3 100644 --- a/docs/sources/flow/reference/components/remote.kubernetes.configmap.md +++ b/docs/sources/flow/reference/components/remote.kubernetes.configmap.md @@ -1,7 +1,10 @@ --- +aliases: +- /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/remote.kubernetes.configmap/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/remote.kubernetes.configmap/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/remote.kubernetes.configmap/ -title: remote.kubernetes.configmap description: Learn about remote.kubernetes.configmap +title: remote.kubernetes.configmap --- # remote.kubernetes.configmap diff --git a/docs/sources/flow/reference/components/remote.kubernetes.secret.md b/docs/sources/flow/reference/components/remote.kubernetes.secret.md index f72eab8fde72..d3996715c772 100644 --- a/docs/sources/flow/reference/components/remote.kubernetes.secret.md +++ b/docs/sources/flow/reference/components/remote.kubernetes.secret.md @@ -1,7 +1,10 @@ --- +aliases: +- /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/remote.kubernetes.secret/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/remote.kubernetes.secret/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/remote.kubernetes.secret/ -title: remote.kubernetes.secret description: Learn about remote.kubernetes.secret +title: remote.kubernetes.secret --- # remote.kubernetes.secret diff --git a/docs/sources/flow/reference/components/remote.s3.md b/docs/sources/flow/reference/components/remote.s3.md index 897e78f112b5..7e927e11b51f 100644 --- a/docs/sources/flow/reference/components/remote.s3.md +++ b/docs/sources/flow/reference/components/remote.s3.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/components/remote.s3/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/remote.s3/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/remote.s3/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/remote.s3/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/remote.s3/ -title: remote.s3 description: Learn about remote.s3 +title: remote.s3 --- # remote.s3 diff --git a/docs/sources/flow/reference/components/remote.vault.md b/docs/sources/flow/reference/components/remote.vault.md index 17bae832a81f..a4491bd25c66 100644 --- a/docs/sources/flow/reference/components/remote.vault.md +++ b/docs/sources/flow/reference/components/remote.vault.md @@ -1,12 +1,13 @@ --- aliases: -- /docs/agent/latest/flow/reference/components/remote.vault +- /docs/agent/latest/flow/reference/components/remote.vault/ - /docs/grafana-cloud/agent/flow/reference/components/remote.vault/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/remote.vault/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/remote.vault/ +- /docs/grafana-cloud/send-data/agent/flow/reference/components/remote.vault/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/remote.vault/ -title: remote.vault description: Learn about remote.vault +title: remote.vault --- # remote.vault diff --git a/docs/sources/flow/reference/config-blocks/_index.md b/docs/sources/flow/reference/config-blocks/_index.md index e7e24b9a461c..e757c4ccebe6 100644 --- a/docs/sources/flow/reference/config-blocks/_index.md +++ b/docs/sources/flow/reference/config-blocks/_index.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/config-blocks/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/config-blocks/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/config-blocks/ +- /docs/grafana-cloud/send-data/agent/flow/reference/config-blocks/ canonical: https://grafana.com/docs/agent/latest/flow/reference/config-blocks/ -title: Configuration blocks description: Learn about configuration blocks +title: Configuration blocks weight: 200 --- diff --git a/docs/sources/flow/reference/config-blocks/argument.md b/docs/sources/flow/reference/config-blocks/argument.md index 08241ec88732..33817d148e2f 100644 --- a/docs/sources/flow/reference/config-blocks/argument.md +++ b/docs/sources/flow/reference/config-blocks/argument.md @@ -3,10 +3,11 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/config-blocks/argument/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/config-blocks/argument/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/config-blocks/argument/ +- /docs/grafana-cloud/send-data/agent/flow/reference/config-blocks/argument/ canonical: https://grafana.com/docs/agent/latest/flow/reference/config-blocks/argument/ -title: argument block -menuTitle: argument description: Learn about the argument configuration block +menuTitle: argument +title: argument block --- # argument block diff --git a/docs/sources/flow/reference/config-blocks/export.md b/docs/sources/flow/reference/config-blocks/export.md index 1a376ee050f1..3c0a019d865b 100644 --- a/docs/sources/flow/reference/config-blocks/export.md +++ b/docs/sources/flow/reference/config-blocks/export.md @@ -3,10 +3,11 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/config-blocks/export/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/config-blocks/export/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/config-blocks/export/ +- /docs/grafana-cloud/send-data/agent/flow/reference/config-blocks/export/ canonical: https://grafana.com/docs/agent/latest/flow/reference/config-blocks/export/ -title: export block -menuTitle: export description: Learn about the export configuration block +menuTitle: export +title: export block --- # export block diff --git a/docs/sources/flow/reference/config-blocks/http.md b/docs/sources/flow/reference/config-blocks/http.md index 98ac938b6395..9f56dc9fc5bd 100644 --- a/docs/sources/flow/reference/config-blocks/http.md +++ b/docs/sources/flow/reference/config-blocks/http.md @@ -3,10 +3,11 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/config-blocks/http/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/config-blocks/http/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/config-blocks/http/ +- /docs/grafana-cloud/send-data/agent/flow/reference/config-blocks/http/ canonical: https://grafana.com/docs/agent/latest/flow/reference/config-blocks/http/ -title: http block -menuTitle: http description: Learn about the http configuration block +menuTitle: http +title: http block --- # http block diff --git a/docs/sources/flow/reference/config-blocks/logging.md b/docs/sources/flow/reference/config-blocks/logging.md index 55012461626b..d8e526094774 100644 --- a/docs/sources/flow/reference/config-blocks/logging.md +++ b/docs/sources/flow/reference/config-blocks/logging.md @@ -3,10 +3,11 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/config-blocks/logging/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/config-blocks/logging/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/config-blocks/logging/ +- /docs/grafana-cloud/send-data/agent/flow/reference/config-blocks/logging/ canonical: https://grafana.com/docs/agent/latest/flow/reference/config-blocks/logging/ -title: logging block -menuTitle: logging description: Learn about the logging configuration block +menuTitle: logging +title: logging block --- # logging block diff --git a/docs/sources/flow/reference/config-blocks/tracing.md b/docs/sources/flow/reference/config-blocks/tracing.md index 269e4969ae6a..b24d34ecbbfc 100644 --- a/docs/sources/flow/reference/config-blocks/tracing.md +++ b/docs/sources/flow/reference/config-blocks/tracing.md @@ -3,10 +3,11 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/config-blocks/tracing/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/config-blocks/tracing/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/config-blocks/tracing/ +- /docs/grafana-cloud/send-data/agent/flow/reference/config-blocks/tracing/ canonical: https://grafana.com/docs/agent/latest/flow/reference/config-blocks/tracing/ -title: tracing block -menuTitle: tracing description: Learn about the tracing configuration block +menuTitle: tracing +title: tracing block --- # tracing block diff --git a/docs/sources/flow/reference/stdlib/_index.md b/docs/sources/flow/reference/stdlib/_index.md index f08d4fc47d01..8f42f4bc28d4 100644 --- a/docs/sources/flow/reference/stdlib/_index.md +++ b/docs/sources/flow/reference/stdlib/_index.md @@ -3,10 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/stdlib/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/stdlib/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/stdlib/ +- /docs/grafana-cloud/send-data/agent/flow/reference/stdlib/ - standard-library/ canonical: https://grafana.com/docs/agent/latest/flow/reference/stdlib/ +description: The standard library is a list of functions used in expressions when + assigning values to attributes title: Standard library -description: The standard library is a list of functions used in expressions when assigning values to attributes weight: 400 --- diff --git a/docs/sources/flow/reference/stdlib/coalesce.md b/docs/sources/flow/reference/stdlib/coalesce.md index 61c84e688efa..73f5cd444821 100644 --- a/docs/sources/flow/reference/stdlib/coalesce.md +++ b/docs/sources/flow/reference/stdlib/coalesce.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/stdlib/coalesce/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/stdlib/coalesce/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/stdlib/coalesce/ +- /docs/grafana-cloud/send-data/agent/flow/reference/stdlib/coalesce/ canonical: https://grafana.com/docs/agent/latest/flow/reference/stdlib/coalesce/ -title: coalesce description: Learn about coalesce +title: coalesce --- # coalesce diff --git a/docs/sources/flow/reference/stdlib/concat.md b/docs/sources/flow/reference/stdlib/concat.md index bbab029b0db4..36e7eba906a6 100644 --- a/docs/sources/flow/reference/stdlib/concat.md +++ b/docs/sources/flow/reference/stdlib/concat.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/stdlib/concat/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/stdlib/concat/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/stdlib/concat/ +- /docs/grafana-cloud/send-data/agent/flow/reference/stdlib/concat/ canonical: https://grafana.com/docs/agent/latest/flow/reference/stdlib/concat/ -title: concat description: Learn about concat +title: concat --- # concat diff --git a/docs/sources/flow/reference/stdlib/constants.md b/docs/sources/flow/reference/stdlib/constants.md index 4b1766ace290..44753d08d26d 100644 --- a/docs/sources/flow/reference/stdlib/constants.md +++ b/docs/sources/flow/reference/stdlib/constants.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/stdlib/constants/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/stdlib/constants/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/stdlib/constants/ +- /docs/grafana-cloud/send-data/agent/flow/reference/stdlib/constants/ canonical: https://grafana.com/docs/agent/latest/flow/reference/stdlib/constants/ -title: constants description: Learn about constants +title: constants --- # constants diff --git a/docs/sources/flow/reference/stdlib/env.md b/docs/sources/flow/reference/stdlib/env.md index b3b0723351bb..fd4d91fcefbb 100644 --- a/docs/sources/flow/reference/stdlib/env.md +++ b/docs/sources/flow/reference/stdlib/env.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/stdlib/env/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/stdlib/env/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/stdlib/env/ +- /docs/grafana-cloud/send-data/agent/flow/reference/stdlib/env/ canonical: https://grafana.com/docs/agent/latest/flow/reference/stdlib/env/ -title: env description: Learn about env +title: env --- # env diff --git a/docs/sources/flow/reference/stdlib/format.md b/docs/sources/flow/reference/stdlib/format.md index 1309796cdeac..fb725b136a1c 100644 --- a/docs/sources/flow/reference/stdlib/format.md +++ b/docs/sources/flow/reference/stdlib/format.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/stdlib/format/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/stdlib/format/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/stdlib/format/ +- /docs/grafana-cloud/send-data/agent/flow/reference/stdlib/format/ canonical: https://grafana.com/docs/agent/latest/flow/reference/stdlib/format/ -title: format description: Learn about format +title: format --- # format diff --git a/docs/sources/flow/reference/stdlib/join.md b/docs/sources/flow/reference/stdlib/join.md index 8fd2d578c692..3203585c81c1 100644 --- a/docs/sources/flow/reference/stdlib/join.md +++ b/docs/sources/flow/reference/stdlib/join.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/stdlib/join/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/stdlib/join/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/stdlib/join/ +- /docs/grafana-cloud/send-data/agent/flow/reference/stdlib/join/ canonical: https://grafana.com/docs/agent/latest/flow/reference/stdlib/join/ -title: join description: Learn about join +title: join --- # join diff --git a/docs/sources/flow/reference/stdlib/json_decode.md b/docs/sources/flow/reference/stdlib/json_decode.md index c82b2acdc09c..d56fc45dabab 100644 --- a/docs/sources/flow/reference/stdlib/json_decode.md +++ b/docs/sources/flow/reference/stdlib/json_decode.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/stdlib/json_decode/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/stdlib/json_decode/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/stdlib/json_decode/ +- /docs/grafana-cloud/send-data/agent/flow/reference/stdlib/json_decode/ canonical: https://grafana.com/docs/agent/latest/flow/reference/stdlib/json_decode/ -title: json_decode description: Learn about json_decode +title: json_decode --- # json_decode diff --git a/docs/sources/flow/reference/stdlib/json_path.md b/docs/sources/flow/reference/stdlib/json_path.md index 386f27b061be..91058e6e31fe 100644 --- a/docs/sources/flow/reference/stdlib/json_path.md +++ b/docs/sources/flow/reference/stdlib/json_path.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/stdlib/json_path/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/stdlib/json_path/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/stdlib/json_path/ +- /docs/grafana-cloud/send-data/agent/flow/reference/stdlib/json_path/ canonical: https://grafana.com/docs/agent/latest/flow/reference/stdlib/json_path/ -title: json_path description: Learn about json_path +title: json_path --- # json_path diff --git a/docs/sources/flow/reference/stdlib/nonsensitive.md b/docs/sources/flow/reference/stdlib/nonsensitive.md index c8f6b6bca14b..2763ac952ace 100644 --- a/docs/sources/flow/reference/stdlib/nonsensitive.md +++ b/docs/sources/flow/reference/stdlib/nonsensitive.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/stdlib/nonsensitive/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/stdlib/nonsensitive/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/stdlib/nonsensitive/ +- /docs/grafana-cloud/send-data/agent/flow/reference/stdlib/nonsensitive/ canonical: https://grafana.com/docs/agent/latest/flow/reference/stdlib/nonsensitive/ -title: nonsensitive description: Learn about nonsensitive +title: nonsensitive --- # nonsensitive diff --git a/docs/sources/flow/reference/stdlib/replace.md b/docs/sources/flow/reference/stdlib/replace.md index dde0057d7840..2c1eb383f390 100644 --- a/docs/sources/flow/reference/stdlib/replace.md +++ b/docs/sources/flow/reference/stdlib/replace.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/stdlib/replace/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/stdlib/replace/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/stdlib/replace/ +- /docs/grafana-cloud/send-data/agent/flow/reference/stdlib/replace/ canonical: https://grafana.com/docs/agent/latest/flow/reference/stdlib/replace/ -title: replace description: Learn about replace +title: replace --- # replace diff --git a/docs/sources/flow/reference/stdlib/split.md b/docs/sources/flow/reference/stdlib/split.md index 15a5f304f4d1..3087ca153669 100644 --- a/docs/sources/flow/reference/stdlib/split.md +++ b/docs/sources/flow/reference/stdlib/split.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/stdlib/split/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/stdlib/split/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/stdlib/split/ +- /docs/grafana-cloud/send-data/agent/flow/reference/stdlib/split/ canonical: https://grafana.com/docs/agent/latest/flow/reference/stdlib/split/ -title: split description: Learn about split +title: split --- # split diff --git a/docs/sources/flow/reference/stdlib/to_lower.md b/docs/sources/flow/reference/stdlib/to_lower.md index d344850bd52e..8c252fb354a8 100644 --- a/docs/sources/flow/reference/stdlib/to_lower.md +++ b/docs/sources/flow/reference/stdlib/to_lower.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/stdlib/to_lower/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/stdlib/to_lower/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/stdlib/to_lower/ +- /docs/grafana-cloud/send-data/agent/flow/reference/stdlib/to_lower/ canonical: https://grafana.com/docs/agent/latest/flow/reference/stdlib/to_lower/ -title: to_lower description: Learn about to_lower +title: to_lower --- # to_lower diff --git a/docs/sources/flow/reference/stdlib/to_upper.md b/docs/sources/flow/reference/stdlib/to_upper.md index 439cd64d8f48..aef26d5ff669 100644 --- a/docs/sources/flow/reference/stdlib/to_upper.md +++ b/docs/sources/flow/reference/stdlib/to_upper.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/stdlib/to_upper/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/stdlib/to_upper/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/stdlib/to_upper/ +- /docs/grafana-cloud/send-data/agent/flow/reference/stdlib/to_upper/ canonical: https://grafana.com/docs/agent/latest/flow/reference/stdlib/to_upper/ -title: to_upper description: Learn about to_upper +title: to_upper --- # to_upper diff --git a/docs/sources/flow/reference/stdlib/trim.md b/docs/sources/flow/reference/stdlib/trim.md index 603078715ef6..5023d1f21328 100644 --- a/docs/sources/flow/reference/stdlib/trim.md +++ b/docs/sources/flow/reference/stdlib/trim.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/stdlib/trim/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/stdlib/trim/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/stdlib/trim/ +- /docs/grafana-cloud/send-data/agent/flow/reference/stdlib/trim/ canonical: https://grafana.com/docs/agent/latest/flow/reference/stdlib/trim/ -title: trim description: Learn about trim +title: trim --- # trim diff --git a/docs/sources/flow/reference/stdlib/trim_prefix.md b/docs/sources/flow/reference/stdlib/trim_prefix.md index 9179274e28a2..33d716f133e4 100644 --- a/docs/sources/flow/reference/stdlib/trim_prefix.md +++ b/docs/sources/flow/reference/stdlib/trim_prefix.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/stdlib/trim_prefix/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/stdlib/trim_prefix/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/stdlib/trim_prefix/ +- /docs/grafana-cloud/send-data/agent/flow/reference/stdlib/trim_prefix/ canonical: https://grafana.com/docs/agent/latest/flow/reference/stdlib/trim_prefix/ -title: trim_prefix description: Learn about trim_prefix +title: trim_prefix --- # trim_prefix diff --git a/docs/sources/flow/reference/stdlib/trim_space.md b/docs/sources/flow/reference/stdlib/trim_space.md index 7ce358064f29..5e13e0ba0df3 100644 --- a/docs/sources/flow/reference/stdlib/trim_space.md +++ b/docs/sources/flow/reference/stdlib/trim_space.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/stdlib/trim_space/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/stdlib/trim_space/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/stdlib/trim_space/ +- /docs/grafana-cloud/send-data/agent/flow/reference/stdlib/trim_space/ canonical: https://grafana.com/docs/agent/latest/flow/reference/stdlib/trim_space/ -title: trim_space description: Learn about trim_space +title: trim_space --- # trim_space diff --git a/docs/sources/flow/reference/stdlib/trim_suffix.md b/docs/sources/flow/reference/stdlib/trim_suffix.md index a24a5e6e4294..4741007ebe4b 100644 --- a/docs/sources/flow/reference/stdlib/trim_suffix.md +++ b/docs/sources/flow/reference/stdlib/trim_suffix.md @@ -4,9 +4,10 @@ aliases: - /docs/grafana-cloud/agent/flow/reference/stdlib/trim_suffix/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/stdlib/trim_suffix/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/stdlib/trim_suffix/ +- /docs/grafana-cloud/send-data/agent/flow/reference/stdlib/trim_suffix/ canonical: https://grafana.com/docs/agent/latest/flow/reference/stdlib/trim_suffix/ -title: trim_suffix description: Learn about trim_suffix +title: trim_suffix --- # trim_suffix diff --git a/docs/sources/flow/release-notes.md b/docs/sources/flow/release-notes.md index f45b5d3291f7..7c5b5aaeb7a9 100644 --- a/docs/sources/flow/release-notes.md +++ b/docs/sources/flow/release-notes.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/flow/release-notes/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/release-notes/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/release-notes/ +- /docs/grafana-cloud/send-data/agent/flow/release-notes/ canonical: https://grafana.com/docs/agent/latest/flow/release-notes/ description: Release notes for Grafana Agent flow mode menuTitle: Release notes diff --git a/docs/sources/flow/setup/_index.md b/docs/sources/flow/setup/_index.md index 48afb31b419b..fe38e62eb99a 100644 --- a/docs/sources/flow/setup/_index.md +++ b/docs/sources/flow/setup/_index.md @@ -3,6 +3,7 @@ aliases: - /docs/grafana-cloud/agent/flow/setup/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/setup/ +- /docs/grafana-cloud/send-data/agent/flow/setup/ canonical: https://grafana.com/docs/agent/latest/flow/setup/ description: Learn how to install and configure Grafana Agent in flow mode menuTitle: Set up flow mode diff --git a/docs/sources/flow/setup/configure/_index.md b/docs/sources/flow/setup/configure/_index.md index 8a23c557f4e9..4af2c196da69 100644 --- a/docs/sources/flow/setup/configure/_index.md +++ b/docs/sources/flow/setup/configure/_index.md @@ -3,6 +3,7 @@ aliases: - /docs/grafana-cloud/agent/flow/setup/configure/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/configure/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/setup/configure/ +- /docs/grafana-cloud/send-data/agent/flow/setup/configure/ canonical: https://grafana.com/docs/agent/latest/flow/setup/configure/ description: Configure Grafana Agent in flow mode after it is installed menuTitle: Configure flow mode diff --git a/docs/sources/flow/setup/configure/configure-kubernetes.md b/docs/sources/flow/setup/configure/configure-kubernetes.md index 0b3c9be0eb17..6a492b1190d9 100644 --- a/docs/sources/flow/setup/configure/configure-kubernetes.md +++ b/docs/sources/flow/setup/configure/configure-kubernetes.md @@ -3,6 +3,7 @@ aliases: - /docs/grafana-cloud/agent/flow/setup/configure/configure-kubernetes/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/configure/configure-kubernetes/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/setup/configure/configure-kubernetes/ +- /docs/grafana-cloud/send-data/agent/flow/setup/configure/configure-kubernetes/ canonical: https://grafana.com/docs/agent/latest/flow/setup/configure/configure-kubernetes/ description: Learn how to configure Grafana Agent in flow mode on Kubernetes menuTitle: Kubernetes diff --git a/docs/sources/flow/setup/configure/configure-linux.md b/docs/sources/flow/setup/configure/configure-linux.md index ad8f02135d32..feac6218e59e 100644 --- a/docs/sources/flow/setup/configure/configure-linux.md +++ b/docs/sources/flow/setup/configure/configure-linux.md @@ -3,6 +3,7 @@ aliases: - /docs/grafana-cloud/agent/flow/setup/configure/configure-linux/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/configure/configure-linux/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/setup/configure/configure-linux/ +- /docs/grafana-cloud/send-data/agent/flow/setup/configure/configure-linux/ canonical: https://grafana.com/docs/agent/latest/flow/setup/configure/configure-linux/ description: Learn how to configure Grafana Agent in flow mode on Linux menuTitle: Linux diff --git a/docs/sources/flow/setup/configure/configure-macos.md b/docs/sources/flow/setup/configure/configure-macos.md index ee9bf74dbf79..4a2f302a6cc7 100644 --- a/docs/sources/flow/setup/configure/configure-macos.md +++ b/docs/sources/flow/setup/configure/configure-macos.md @@ -3,6 +3,7 @@ aliases: - /docs/grafana-cloud/agent/flow/setup/configure/configure-macos/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/configure/configure-macos/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/setup/configure/configure-macos/ +- /docs/grafana-cloud/send-data/agent/flow/setup/configure/configure-macos/ canonical: https://grafana.com/docs/agent/latest/flow/setup/configure/configure-macos/ description: Learn how to configure Grafana Agent in flow mode on macOS menuTitle: macOS diff --git a/docs/sources/flow/setup/configure/configure-windows.md b/docs/sources/flow/setup/configure/configure-windows.md index ca73255c3483..c2d67e4aec8e 100644 --- a/docs/sources/flow/setup/configure/configure-windows.md +++ b/docs/sources/flow/setup/configure/configure-windows.md @@ -3,6 +3,7 @@ aliases: - /docs/grafana-cloud/agent/flow/setup/configure/configure-windows/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/configure/configure-windows/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/setup/configure/configure-windows/ +- /docs/grafana-cloud/send-data/agent/flow/setup/configure/configure-windows/ canonical: https://grafana.com/docs/agent/latest/flow/setup/configure/configure-windows/ description: Learn how to configure Grafana Agent in flow mode on Windows menuTitle: Windows diff --git a/docs/sources/flow/setup/deploy-agent.md b/docs/sources/flow/setup/deploy-agent.md index fb372d8d14b0..c55c707b3f8a 100644 --- a/docs/sources/flow/setup/deploy-agent.md +++ b/docs/sources/flow/setup/deploy-agent.md @@ -3,6 +3,7 @@ aliases: - /docs/grafana-cloud/agent/flow/setup/deploy-agent/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/deploy-agent/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/setup/deploy-agent/ +- /docs/grafana-cloud/send-data/agent/flow/setup/deploy-agent/ canonical: https://grafana.com/docs/agent/latest/flow/setup/start-agent/ description: Learn about possible deployment topologies for Grafana Agent menuTitle: Deploy Grafana Agent diff --git a/docs/sources/flow/setup/install/_index.md b/docs/sources/flow/setup/install/_index.md index b711666e84cc..34f4b2b521d8 100644 --- a/docs/sources/flow/setup/install/_index.md +++ b/docs/sources/flow/setup/install/_index.md @@ -3,11 +3,12 @@ aliases: - /docs/grafana-cloud/agent/flow/setup/install/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/install/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/setup/install/ +- /docs/grafana-cloud/send-data/agent/flow/setup/install/ - /docs/sources/flow/install/ canonical: https://grafana.com/docs/agent/latest/flow/setup/install/ +description: Learn how to install Grafana Agent in flow mode menuTitle: Install flow mode title: Install Grafana Agent in flow mode -description: Learn how to install Grafana Agent in flow mode weight: 50 --- diff --git a/docs/sources/flow/setup/install/binary.md b/docs/sources/flow/setup/install/binary.md index f8fb920e9a93..45874e5460ce 100644 --- a/docs/sources/flow/setup/install/binary.md +++ b/docs/sources/flow/setup/install/binary.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/flow/setup/install/binary/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/install/binary/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/setup/install/binary/ +- /docs/grafana-cloud/send-data/agent/flow/setup/install/binary/ canonical: https://grafana.com/docs/agent/latest/flow/setup/install/binary/ description: Learn how to install Grafana Agent in flow mode as a standalone binary menuTitle: Standalone diff --git a/docs/sources/flow/setup/install/docker.md b/docs/sources/flow/setup/install/docker.md index 7497c104c9d8..cdc5d8ceb9b2 100644 --- a/docs/sources/flow/setup/install/docker.md +++ b/docs/sources/flow/setup/install/docker.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/flow/setup/install/docker/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/install/docker/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/setup/install/docker/ +- /docs/grafana-cloud/send-data/agent/flow/setup/install/docker/ canonical: https://grafana.com/docs/agent/latest/flow/setup/install/docker/ description: Learn how to install Grafana Agent in flow mode on Docker menuTitle: Docker diff --git a/docs/sources/flow/setup/install/kubernetes.md b/docs/sources/flow/setup/install/kubernetes.md index bf2307dd5bfd..fb46ed722595 100644 --- a/docs/sources/flow/setup/install/kubernetes.md +++ b/docs/sources/flow/setup/install/kubernetes.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/flow/setup/install/kubernetes/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/install/kubernetes/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/setup/install/kubernetes/ +- /docs/grafana-cloud/send-data/agent/flow/setup/install/kubernetes/ canonical: https://grafana.com/docs/agent/latest/flow/setup/install/kubernetes/ description: Learn how to deploy Grafana Agent in flow mode on Kubernetes menuTitle: Kubernetes diff --git a/docs/sources/flow/setup/install/linux.md b/docs/sources/flow/setup/install/linux.md index 0c7feaa0940a..8a8788e4d054 100644 --- a/docs/sources/flow/setup/install/linux.md +++ b/docs/sources/flow/setup/install/linux.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/flow/setup/install/linux/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/install/linux/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/setup/install/linux/ +- /docs/grafana-cloud/send-data/agent/flow/setup/install/linux/ canonical: https://grafana.com/docs/agent/latest/flow/setup/install/linux/ description: Learn how to install Grafana Agent in flow mode on Linux menuTitle: Linux diff --git a/docs/sources/flow/setup/install/macos.md b/docs/sources/flow/setup/install/macos.md index 8527a7ee0841..9f692274ecab 100644 --- a/docs/sources/flow/setup/install/macos.md +++ b/docs/sources/flow/setup/install/macos.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/flow/setup/install/macos/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/install/macos/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/setup/install/macos/ +- /docs/grafana-cloud/send-data/agent/flow/setup/install/macos/ canonical: https://grafana.com/docs/agent/latest/flow/setup/install/macos/ description: Learn how to install Grafana Agent in flow mode on macOS menuTitle: macOS diff --git a/docs/sources/flow/setup/install/windows.md b/docs/sources/flow/setup/install/windows.md index 7bbcd2241755..36eaced3b3d0 100644 --- a/docs/sources/flow/setup/install/windows.md +++ b/docs/sources/flow/setup/install/windows.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/flow/setup/install/windows/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/install/windows/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/setup/install/windows/ +- /docs/grafana-cloud/send-data/agent/flow/setup/install/windows/ canonical: https://grafana.com/docs/agent/latest/flow/setup/install/windows/ description: Learn how to install Grafana Agent in flow mode on Windows menuTitle: Windows diff --git a/docs/sources/flow/setup/start-agent.md b/docs/sources/flow/setup/start-agent.md index b76f728732a9..5295fe859053 100644 --- a/docs/sources/flow/setup/start-agent.md +++ b/docs/sources/flow/setup/start-agent.md @@ -3,6 +3,7 @@ aliases: - /docs/grafana-cloud/agent/flow/setup/start-agent/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/start-agent/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/setup/start-agent/ +- /docs/grafana-cloud/send-data/agent/flow/setup/start-agent/ canonical: https://grafana.com/docs/agent/latest/flow/setup/start-agent/ description: Learn how to start, restart, and stop Grafana Agent after it is installed menuTitle: Start flow mode diff --git a/docs/sources/flow/tutorials/_index.md b/docs/sources/flow/tutorials/_index.md index 975dcf9d0edb..0d6149f11721 100644 --- a/docs/sources/flow/tutorials/_index.md +++ b/docs/sources/flow/tutorials/_index.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/flow/tutorials/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/tutorials/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/tutorials/ +- /docs/grafana-cloud/send-data/agent/flow/tutorials/ canonical: https://grafana.com/docs/agent/latest/flow/tutorials/ -title: Tutorials description: Learn how to use Grafana Agent Flow +title: Tutorials weight: 300 --- diff --git a/docs/sources/flow/tutorials/chaining.md b/docs/sources/flow/tutorials/chaining.md index 4ce77e56dce0..67d82a151c7f 100644 --- a/docs/sources/flow/tutorials/chaining.md +++ b/docs/sources/flow/tutorials/chaining.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/flow/tutorials/chaining/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/tutorials/chaining/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/tutorials/chaining/ +- /docs/grafana-cloud/send-data/agent/flow/tutorials/chaining/ canonical: https://grafana.com/docs/agent/latest/flow/tutorials/chaining/ description: Learn how to chain Prometheus components menuTitle: Chain Prometheus components diff --git a/docs/sources/flow/tutorials/collecting-prometheus-metrics.md b/docs/sources/flow/tutorials/collecting-prometheus-metrics.md index b9e5d221e55e..acac5f42597a 100644 --- a/docs/sources/flow/tutorials/collecting-prometheus-metrics.md +++ b/docs/sources/flow/tutorials/collecting-prometheus-metrics.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/flow/tutorials/collecting-prometheus-metrics/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/tutorials/collecting-prometheus-metrics/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/tutorials/collecting-prometheus-metrics/ +- /docs/grafana-cloud/send-data/agent/flow/tutorials/collecting-prometheus-metrics/ canonical: https://grafana.com/docs/agent/latest/flow/tutorials/collecting-prometheus-metrics/ description: Learn how to collect Prometheus metrics menuTitle: Collect Prometheus metrics diff --git a/docs/sources/flow/tutorials/filtering-metrics.md b/docs/sources/flow/tutorials/filtering-metrics.md index 0b6ed3afaff2..84e198c0f65c 100644 --- a/docs/sources/flow/tutorials/filtering-metrics.md +++ b/docs/sources/flow/tutorials/filtering-metrics.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/flow/tutorials/filtering-metrics/ - /docs/grafana-cloud/monitor-infrastructure/agent/flow/tutorials/filtering-metrics/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/tutorials/filtering-metrics/ +- /docs/grafana-cloud/send-data/agent/flow/tutorials/filtering-metrics/ canonical: https://grafana.com/docs/agent/latest/flow/tutorials/filtering-metrics/ description: Learn how to filter Prometheus metrics menuTitle: Filter Prometheus metrics diff --git a/docs/sources/operator/_index.md b/docs/sources/operator/_index.md index ff7787d8973c..1c9aef3aca53 100644 --- a/docs/sources/operator/_index.md +++ b/docs/sources/operator/_index.md @@ -3,10 +3,11 @@ aliases: - /docs/grafana-cloud/agent/operator/ - /docs/grafana-cloud/monitor-infrastructure/agent/operator/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/operator/ +- /docs/grafana-cloud/send-data/agent/operator/ canonical: https://grafana.com/docs/agent/latest/operator/ -title: Static mode Kubernetes operator (Beta) -menuTitle: Static mode Kubernetes operator description: Learn about the static mode Kubernetes operator +menuTitle: Static mode Kubernetes operator +title: Static mode Kubernetes operator (Beta) weight: 300 --- diff --git a/docs/sources/operator/add-custom-scrape-jobs.md b/docs/sources/operator/add-custom-scrape-jobs.md index 6cab5795cb99..6f4fb9cc02df 100644 --- a/docs/sources/operator/add-custom-scrape-jobs.md +++ b/docs/sources/operator/add-custom-scrape-jobs.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/operator/add-custom-scrape-jobs/ - /docs/grafana-cloud/monitor-infrastructure/agent/operator/add-custom-scrape-jobs/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/operator/add-custom-scrape-jobs/ +- /docs/grafana-cloud/send-data/agent/operator/add-custom-scrape-jobs/ canonical: https://grafana.com/docs/agent/latest/operator/add-custom-scrape-jobs/ -title: Add custom scrape jobs description: Learn how to add custom scrape jobs +title: Add custom scrape jobs weight: 400 --- diff --git a/docs/sources/operator/api.md b/docs/sources/operator/api.md index ca382ebf8c32..f79995f095d2 100644 --- a/docs/sources/operator/api.md +++ b/docs/sources/operator/api.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/operator/api/ - /docs/grafana-cloud/monitor-infrastructure/agent/operator/api/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/operator/api/ +- /docs/grafana-cloud/send-data/agent/operator/api/ canonical: https://grafana.com/docs/agent/latest/operator/api/ title: Custom Resource Definition Reference description: Learn about the Grafana Agent API diff --git a/docs/sources/operator/architecture.md b/docs/sources/operator/architecture.md index 63be5c36b2cf..a76903ff3422 100644 --- a/docs/sources/operator/architecture.md +++ b/docs/sources/operator/architecture.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/operator/architecture/ - /docs/grafana-cloud/monitor-infrastructure/agent/operator/architecture/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/operator/architecture/ +- /docs/grafana-cloud/send-data/agent/operator/architecture/ canonical: https://grafana.com/docs/agent/latest/operator/architecture/ -title: Architecture description: Learn about Grafana Agent architecture +title: Architecture weight: 300 --- diff --git a/docs/sources/operator/deploy-agent-operator-resources.md b/docs/sources/operator/deploy-agent-operator-resources.md index 09132e0d448c..2823f58cb996 100644 --- a/docs/sources/operator/deploy-agent-operator-resources.md +++ b/docs/sources/operator/deploy-agent-operator-resources.md @@ -3,10 +3,11 @@ aliases: - /docs/grafana-cloud/agent/operator/deploy-agent-operator-resources/ - /docs/grafana-cloud/monitor-infrastructure/agent/operator/deploy-agent-operator-resources/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/operator/deploy-agent-operator-resources/ +- /docs/grafana-cloud/send-data/agent/operator/deploy-agent-operator-resources/ - custom-resource-quickstart/ canonical: https://grafana.com/docs/agent/latest/operator/deploy-agent-operator-resources/ -title: Deploy Operator resources description: Learn how to deploy Operator resources +title: Deploy Operator resources weight: 120 --- # Deploy Operator resources diff --git a/docs/sources/operator/getting-started.md b/docs/sources/operator/getting-started.md index e78a79bb1f62..c59acf233391 100644 --- a/docs/sources/operator/getting-started.md +++ b/docs/sources/operator/getting-started.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/operator/getting-started/ - /docs/grafana-cloud/monitor-infrastructure/agent/operator/getting-started/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/operator/getting-started/ +- /docs/grafana-cloud/send-data/agent/operator/getting-started/ canonical: https://grafana.com/docs/agent/latest/operator/getting-started/ -title: Install the Operator description: Learn how to install the Operator +title: Install the Operator weight: 110 --- diff --git a/docs/sources/operator/helm-getting-started.md b/docs/sources/operator/helm-getting-started.md index 56317949a5ed..bc2f516e10fa 100644 --- a/docs/sources/operator/helm-getting-started.md +++ b/docs/sources/operator/helm-getting-started.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/operator/helm-getting-started/ - /docs/grafana-cloud/monitor-infrastructure/agent/operator/helm-getting-started/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/operator/helm-getting-started/ +- /docs/grafana-cloud/send-data/agent/operator/helm-getting-started/ canonical: https://grafana.com/docs/agent/latest/operator/helm-getting-started/ -title: Install the Operator with Helm description: Learn how to install the Operator with Helm charts +title: Install the Operator with Helm weight: 100 --- # Install the Operator with Helm diff --git a/docs/sources/operator/operator-integrations.md b/docs/sources/operator/operator-integrations.md index 1bd180869536..fc49836f8157 100644 --- a/docs/sources/operator/operator-integrations.md +++ b/docs/sources/operator/operator-integrations.md @@ -3,9 +3,10 @@ aliases: - /docs/grafana-cloud/agent/operator/operator-integrations/ - /docs/grafana-cloud/monitor-infrastructure/agent/operator/operator-integrations/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/operator/operator-integrations/ +- /docs/grafana-cloud/send-data/agent/operator/operator-integrations/ canonical: https://grafana.com/docs/agent/latest/operator/operator-integrations/ -title: Set up integrations description: Learn how to set up integrations +title: Set up integrations weight: 350 --- # Set up integrations diff --git a/docs/sources/operator/release-notes.md b/docs/sources/operator/release-notes.md index 28eac0947108..ada223145603 100644 --- a/docs/sources/operator/release-notes.md +++ b/docs/sources/operator/release-notes.md @@ -4,12 +4,11 @@ aliases: - /docs/grafana-cloud/agent/operator/release-notes/ - /docs/grafana-cloud/monitor-infrastructure/agent/operator/release-notes/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/operator/release-notes/ +- /docs/grafana-cloud/send-data/agent/operator/release-notes/ canonical: https://grafana.com/docs/agent/latest/operator/release-notes/ -description: Release notes for Grafana Agent static mode Kubernetes operator +description: Release notes for Grafana Agent Operator menuTitle: Release notes title: Release notes for Grafana Agent Operator -description: Release notes for Grafana Agent Operator - weight: 999 --- diff --git a/docs/sources/shared/deploy-agent.md b/docs/sources/shared/deploy-agent.md index ccb4b0e8d6b8..1799ea174579 100644 --- a/docs/sources/shared/deploy-agent.md +++ b/docs/sources/shared/deploy-agent.md @@ -4,10 +4,11 @@ aliases: - /docs/grafana-cloud/agent/shared/deploy-agent/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/deploy-agent/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/deploy-agent/ +- /docs/grafana-cloud/send-data/agent/shared/deploy-agent/ canonical: https://grafana.com/docs/agent/latest/shared/deploy-agent/ description: Shared content, deployment topologies for Grafana Agent -title: Deploy Grafana Agent headless: true +title: Deploy Grafana Agent --- # Deploy Grafana Agent diff --git a/docs/sources/shared/flow/reference/components/authorization-block.md b/docs/sources/shared/flow/reference/components/authorization-block.md index 8dfe8d1e3eaa..190cd11f8bb9 100644 --- a/docs/sources/shared/flow/reference/components/authorization-block.md +++ b/docs/sources/shared/flow/reference/components/authorization-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/authorization-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/authorization-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/authorization-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/authorization-block/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/authorization-block/ description: Shared content, authorization block headless: true diff --git a/docs/sources/shared/flow/reference/components/azuread-block.md b/docs/sources/shared/flow/reference/components/azuread-block.md index b1ecc1e03c3a..ebdf436d02fe 100644 --- a/docs/sources/shared/flow/reference/components/azuread-block.md +++ b/docs/sources/shared/flow/reference/components/azuread-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/azuread-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/azuread-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/azuread-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/azuread-block/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/azuread-block/ description: Shared content, azuread block headless: true diff --git a/docs/sources/shared/flow/reference/components/basic-auth-block.md b/docs/sources/shared/flow/reference/components/basic-auth-block.md index 6d397a35669a..06c81f660e3c 100644 --- a/docs/sources/shared/flow/reference/components/basic-auth-block.md +++ b/docs/sources/shared/flow/reference/components/basic-auth-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/basic-auth-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/basic-auth-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/basic-auth-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/basic-auth-block/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/basic-auth-block/ description: Shared content, basic auth block headless: true diff --git a/docs/sources/shared/flow/reference/components/exporter-component-exports.md b/docs/sources/shared/flow/reference/components/exporter-component-exports.md index 84386a7f84ff..beb717a13fae 100644 --- a/docs/sources/shared/flow/reference/components/exporter-component-exports.md +++ b/docs/sources/shared/flow/reference/components/exporter-component-exports.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/exporter-component-exports/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/exporter-component-exports/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/exporter-component-exports/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/exporter-component-exports/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/exporter-component-exports/ description: Shared content, exporter component exports headless: true diff --git a/docs/sources/shared/flow/reference/components/extract-field-block.md b/docs/sources/shared/flow/reference/components/extract-field-block.md index ec38ee16cd6e..5036097d155f 100644 --- a/docs/sources/shared/flow/reference/components/extract-field-block.md +++ b/docs/sources/shared/flow/reference/components/extract-field-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/extract-field-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/extract-field-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/extract-field-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/extract-field-block/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/extract-field-block/ description: Shared content, extract field block headless: true diff --git a/docs/sources/shared/flow/reference/components/field-filter-block.md b/docs/sources/shared/flow/reference/components/field-filter-block.md index 9eada1aba9a6..bf9d787f2d97 100644 --- a/docs/sources/shared/flow/reference/components/field-filter-block.md +++ b/docs/sources/shared/flow/reference/components/field-filter-block.md @@ -2,8 +2,10 @@ aliases: - /docs/agent/shared/flow/reference/components/filter-field-block/ - /docs/grafana-cloud/agent/shared/flow/reference/components/filter-field-block/ +- /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/field-filter-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/filter-field-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/filter-field-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/field-filter-block/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/filter-field-block/ description: Shared content, filter field block headless: true diff --git a/docs/sources/shared/flow/reference/components/http-client-config-block.md b/docs/sources/shared/flow/reference/components/http-client-config-block.md index c4c1a55777ad..9519d0d8d67f 100644 --- a/docs/sources/shared/flow/reference/components/http-client-config-block.md +++ b/docs/sources/shared/flow/reference/components/http-client-config-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/http-client-config-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/http-client-config-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/http-client-config-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/http-client-config-block/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/http-client-config-block/ description: Shared content, http client config block headless: true diff --git a/docs/sources/shared/flow/reference/components/local-file-arguments-text.md b/docs/sources/shared/flow/reference/components/local-file-arguments-text.md index ef3525a46ee9..60bd864aa1d9 100644 --- a/docs/sources/shared/flow/reference/components/local-file-arguments-text.md +++ b/docs/sources/shared/flow/reference/components/local-file-arguments-text.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/local-file-arguments-text/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/local-file-arguments-text/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/local-file-arguments-text/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/local-file-arguments-text/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/local-file-arguments-text/ description: Shared content, local file arguments text headless: true diff --git a/docs/sources/shared/flow/reference/components/loki-server-grpc.md b/docs/sources/shared/flow/reference/components/loki-server-grpc.md index 25428a8ed8d2..e625eb659a01 100644 --- a/docs/sources/shared/flow/reference/components/loki-server-grpc.md +++ b/docs/sources/shared/flow/reference/components/loki-server-grpc.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/loki-server-grpc/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/loki-server-grpc/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/loki-server-grpc/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/loki-server-grpc/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/loki-server-grpc/ description: Shared content, loki server grpc headless: true diff --git a/docs/sources/shared/flow/reference/components/loki-server-http.md b/docs/sources/shared/flow/reference/components/loki-server-http.md index ba1444392cf2..3a424c57063a 100644 --- a/docs/sources/shared/flow/reference/components/loki-server-http.md +++ b/docs/sources/shared/flow/reference/components/loki-server-http.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/loki-server-http/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/loki-server-http/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/loki-server-http/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/loki-server-http/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/loki-server-http/ description: Shared content, loki server http headless: true diff --git a/docs/sources/shared/flow/reference/components/managed_identity-block.md b/docs/sources/shared/flow/reference/components/managed_identity-block.md index bf4dd4aa6831..8422df1ae949 100644 --- a/docs/sources/shared/flow/reference/components/managed_identity-block.md +++ b/docs/sources/shared/flow/reference/components/managed_identity-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/managed_identity-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/managed_identity-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/managed_identity-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/managed_identity-block/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/managed_identity-block/ description: Shared content, managed_identity block headless: true diff --git a/docs/sources/shared/flow/reference/components/match-properties-block.md b/docs/sources/shared/flow/reference/components/match-properties-block.md index 840a2babb288..16003a6e9122 100644 --- a/docs/sources/shared/flow/reference/components/match-properties-block.md +++ b/docs/sources/shared/flow/reference/components/match-properties-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/match-properties-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/match-properties-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/match-properties-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/match-properties-block/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/match-properties-block/ description: Shared content, match properties block headless: true diff --git a/docs/sources/shared/flow/reference/components/oauth2-block.md b/docs/sources/shared/flow/reference/components/oauth2-block.md index 0abbc04afa7a..c08b8ebe65b7 100644 --- a/docs/sources/shared/flow/reference/components/oauth2-block.md +++ b/docs/sources/shared/flow/reference/components/oauth2-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/oauth2-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/oauth2-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/oauth2-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/oauth2-block/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/oauth2-block/ description: Shared content, oauth2 block headless: true diff --git a/docs/sources/shared/flow/reference/components/otelcol-compression-field.md b/docs/sources/shared/flow/reference/components/otelcol-compression-field.md index 4219ad3039d4..3a267705b6a7 100644 --- a/docs/sources/shared/flow/reference/components/otelcol-compression-field.md +++ b/docs/sources/shared/flow/reference/components/otelcol-compression-field.md @@ -1,9 +1,10 @@ --- aliases: -- /docs/agent/shared/flow/reference/components/otelcol-compression-field +- /docs/agent/shared/flow/reference/components/otelcol-compression-field/ - /docs/grafana-cloud/agent/shared/flow/reference/components/otelcol-compression-field/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/otelcol-compression-field/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/otelcol-compression-field/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/otelcol-compression-field/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/otelcol-compression-field/ description: Shared content, otelcol compression field headless: true diff --git a/docs/sources/shared/flow/reference/components/otelcol-debug-metrics-block.md b/docs/sources/shared/flow/reference/components/otelcol-debug-metrics-block.md index cca8f1881f1b..566abf806cc3 100644 --- a/docs/sources/shared/flow/reference/components/otelcol-debug-metrics-block.md +++ b/docs/sources/shared/flow/reference/components/otelcol-debug-metrics-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/otelcol-debug-metrics-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/otelcol-debug-metrics-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/otelcol-debug-metrics-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/otelcol-debug-metrics-block/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/otelcol-debug-metrics-block/ description: Shared content, otelcol debug metrics block headless: true diff --git a/docs/sources/shared/flow/reference/components/otelcol-filter-attribute-block.md b/docs/sources/shared/flow/reference/components/otelcol-filter-attribute-block.md index 6f58b788463a..ed05d4fb6d48 100644 --- a/docs/sources/shared/flow/reference/components/otelcol-filter-attribute-block.md +++ b/docs/sources/shared/flow/reference/components/otelcol-filter-attribute-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/otelcol-filter-attribute-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/otelcol-filter-attribute-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/otelcol-filter-attribute-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/otelcol-filter-attribute-block/ description: Shared content, otelcol filter attribute block headless: true --- diff --git a/docs/sources/shared/flow/reference/components/otelcol-filter-library-block.md b/docs/sources/shared/flow/reference/components/otelcol-filter-library-block.md index 2a76c4285b51..fafc9fd3d67b 100644 --- a/docs/sources/shared/flow/reference/components/otelcol-filter-library-block.md +++ b/docs/sources/shared/flow/reference/components/otelcol-filter-library-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/otelcol-filter-library-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/otelcol-filter-library-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/otelcol-filter-library-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/otelcol-filter-library-block/ description: Shared content, otelcol filter library block headless: true --- diff --git a/docs/sources/shared/flow/reference/components/otelcol-filter-log-severity-block.md b/docs/sources/shared/flow/reference/components/otelcol-filter-log-severity-block.md index a0e0c30b22ca..15b17450f7f6 100644 --- a/docs/sources/shared/flow/reference/components/otelcol-filter-log-severity-block.md +++ b/docs/sources/shared/flow/reference/components/otelcol-filter-log-severity-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/otelcol-filter-log-severity-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/otelcol-filter-log-severity-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/otelcol-filter-log-severity-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/otelcol-filter-log-severity-block/ description: Shared content, otelcol filter log severity block headless: true --- diff --git a/docs/sources/shared/flow/reference/components/otelcol-filter-regexp-block.md b/docs/sources/shared/flow/reference/components/otelcol-filter-regexp-block.md index cde6340dc38d..649b41554877 100644 --- a/docs/sources/shared/flow/reference/components/otelcol-filter-regexp-block.md +++ b/docs/sources/shared/flow/reference/components/otelcol-filter-regexp-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/otelcol-filter-regexp-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/otelcol-filter-regexp-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/otelcol-filter-regexp-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/otelcol-filter-regexp-block/ description: Shared content, otelcol filter regexp block headless: true --- diff --git a/docs/sources/shared/flow/reference/components/otelcol-filter-resource-block.md b/docs/sources/shared/flow/reference/components/otelcol-filter-resource-block.md index a335e4186920..0242f5914e40 100644 --- a/docs/sources/shared/flow/reference/components/otelcol-filter-resource-block.md +++ b/docs/sources/shared/flow/reference/components/otelcol-filter-resource-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/otelcol-filter-resource-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/otelcol-filter-resource-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/otelcol-filter-resource-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/otelcol-filter-resource-block/ description: Shared content, otelcol filter resource block headless: true --- diff --git a/docs/sources/shared/flow/reference/components/otelcol-grpc-authority.md b/docs/sources/shared/flow/reference/components/otelcol-grpc-authority.md index ec6833b7246f..f0616490eef5 100644 --- a/docs/sources/shared/flow/reference/components/otelcol-grpc-authority.md +++ b/docs/sources/shared/flow/reference/components/otelcol-grpc-authority.md @@ -1,9 +1,10 @@ --- aliases: -- /docs/agent/shared/flow/reference/components/otelcol-grpc-authority +- /docs/agent/shared/flow/reference/components/otelcol-grpc-authority/ - /docs/grafana-cloud/agent/shared/flow/reference/components/otelcol-grpc-authority/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/otelcol-grpc-authority/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/otelcol-grpc-authority/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/otelcol-grpc-authority/ description: Shared content, otelcol grpc authority headless: true --- diff --git a/docs/sources/shared/flow/reference/components/otelcol-grpc-balancer-name.md b/docs/sources/shared/flow/reference/components/otelcol-grpc-balancer-name.md index 1da59d503705..a735acdf4534 100644 --- a/docs/sources/shared/flow/reference/components/otelcol-grpc-balancer-name.md +++ b/docs/sources/shared/flow/reference/components/otelcol-grpc-balancer-name.md @@ -1,9 +1,10 @@ --- aliases: -- /docs/agent/shared/flow/reference/components/otelcol-grpc-balancer-name +- /docs/agent/shared/flow/reference/components/otelcol-grpc-balancer-name/ - /docs/grafana-cloud/agent/shared/flow/reference/components/otelcol-grpc-balancer-name/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/otelcol-grpc-balancer-name/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/otelcol-grpc-balancer-name/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/otelcol-grpc-balancer-name/ description: Shared content, otelcol grpc balancer name headless: true --- diff --git a/docs/sources/shared/flow/reference/components/otelcol-queue-block.md b/docs/sources/shared/flow/reference/components/otelcol-queue-block.md index 4066d65d3cc8..ec26580ae2e3 100644 --- a/docs/sources/shared/flow/reference/components/otelcol-queue-block.md +++ b/docs/sources/shared/flow/reference/components/otelcol-queue-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/otelcol-queue-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/otelcol-queue-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/otelcol-queue-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/otelcol-queue-block/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/otelcol-queue-block/ description: Shared content, otelcol queue block headless: true diff --git a/docs/sources/shared/flow/reference/components/otelcol-retry-block.md b/docs/sources/shared/flow/reference/components/otelcol-retry-block.md index 574d0eed4703..70dce88aa63e 100644 --- a/docs/sources/shared/flow/reference/components/otelcol-retry-block.md +++ b/docs/sources/shared/flow/reference/components/otelcol-retry-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/otelcol-retry-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/otelcol-retry-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/otelcol-retry-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/otelcol-retry-block/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/otelcol-retry-block/ description: Shared content, otelcol retry block headless: true diff --git a/docs/sources/shared/flow/reference/components/otelcol-tls-config-block.md b/docs/sources/shared/flow/reference/components/otelcol-tls-config-block.md index c7723bfb72ba..0e35f4f8fd8c 100644 --- a/docs/sources/shared/flow/reference/components/otelcol-tls-config-block.md +++ b/docs/sources/shared/flow/reference/components/otelcol-tls-config-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/otelcol-tls-config-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/otelcol-tls-config-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/otelcol-tls-config-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/otelcol-tls-config-block/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/otelcol-tls-config-block/ description: Shared content, otelcol tls config block headless: true diff --git a/docs/sources/shared/flow/reference/components/output-block-logs.md b/docs/sources/shared/flow/reference/components/output-block-logs.md index 04194ac8f9d8..2967d6be3d5d 100644 --- a/docs/sources/shared/flow/reference/components/output-block-logs.md +++ b/docs/sources/shared/flow/reference/components/output-block-logs.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/output-block-logs/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/output-block-logs/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/output-block-logs/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/output-block-logs/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/output-block-logs/ description: Shared content, output block logs headless: true diff --git a/docs/sources/shared/flow/reference/components/output-block-metrics.md b/docs/sources/shared/flow/reference/components/output-block-metrics.md index 43e44c5ab8d6..6adc39be1e12 100644 --- a/docs/sources/shared/flow/reference/components/output-block-metrics.md +++ b/docs/sources/shared/flow/reference/components/output-block-metrics.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/output-block-metrics/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/output-block-metrics/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/output-block-metrics/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/output-block-metrics/ description: Shared content, output block metrics headless: true --- diff --git a/docs/sources/shared/flow/reference/components/output-block-traces.md b/docs/sources/shared/flow/reference/components/output-block-traces.md index 600a30ce8514..18635a1be997 100644 --- a/docs/sources/shared/flow/reference/components/output-block-traces.md +++ b/docs/sources/shared/flow/reference/components/output-block-traces.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/output-block-traces/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/output-block-traces/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/output-block-traces/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/output-block-traces/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/output-block-traces/ description: Shared content, output block traces headless: true diff --git a/docs/sources/shared/flow/reference/components/output-block.md b/docs/sources/shared/flow/reference/components/output-block.md index 66451237ea1c..382de1c8e4b8 100644 --- a/docs/sources/shared/flow/reference/components/output-block.md +++ b/docs/sources/shared/flow/reference/components/output-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/output-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/output-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/output-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/output-block/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/output-block/ description: Shared content, output block headless: true diff --git a/docs/sources/shared/flow/reference/components/prom-operator-scrape.md b/docs/sources/shared/flow/reference/components/prom-operator-scrape.md index 63a69f3a57c6..0a32c9a58796 100644 --- a/docs/sources/shared/flow/reference/components/prom-operator-scrape.md +++ b/docs/sources/shared/flow/reference/components/prom-operator-scrape.md @@ -1,6 +1,8 @@ --- aliases: - /docs/agent/shared/flow/reference/components/prom-operator-scrape/ +- /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/prom-operator-scrape/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/prom-operator-scrape/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/prom-operator-scrape/ description: Shared content, prom operator scrape headless: true diff --git a/docs/sources/shared/flow/reference/components/rule-block-logs.md b/docs/sources/shared/flow/reference/components/rule-block-logs.md index 015b8963d06f..f585dd057e87 100644 --- a/docs/sources/shared/flow/reference/components/rule-block-logs.md +++ b/docs/sources/shared/flow/reference/components/rule-block-logs.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/rule-block-logs/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/rule-block-logs/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/rule-block-logs/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/rule-block-logs/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/rule-block-logs/ description: Shared content, rule block logs headless: true diff --git a/docs/sources/shared/flow/reference/components/rule-block.md b/docs/sources/shared/flow/reference/components/rule-block.md index 6824ec9fdcf7..49b4f9ce9260 100644 --- a/docs/sources/shared/flow/reference/components/rule-block.md +++ b/docs/sources/shared/flow/reference/components/rule-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/rule-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/rule-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/rule-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/rule-block/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/rule-block/ description: Shared content, rule block headless: true diff --git a/docs/sources/shared/flow/reference/components/sigv4-block.md b/docs/sources/shared/flow/reference/components/sigv4-block.md index 65a67da4e3a5..0acbc40cb67f 100644 --- a/docs/sources/shared/flow/reference/components/sigv4-block.md +++ b/docs/sources/shared/flow/reference/components/sigv4-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/sigv4-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/sigv4-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/sigv4-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/sigv4-block/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/sigv4-block/ description: Shared content, sigv4 block headless: true diff --git a/docs/sources/shared/flow/reference/components/tls-config-block.md b/docs/sources/shared/flow/reference/components/tls-config-block.md index 046e7f1142f0..033c64ebacf2 100644 --- a/docs/sources/shared/flow/reference/components/tls-config-block.md +++ b/docs/sources/shared/flow/reference/components/tls-config-block.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/reference/components/tls-config-block/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/reference/components/tls-config-block/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/reference/components/tls-config-block/ +- /docs/grafana-cloud/send-data/agent/shared/flow/reference/components/tls-config-block/ canonical: https://grafana.com/docs/agent/latest/shared/flow/reference/components/tls-config-block/ description: Shared content, tls config block headless: true diff --git a/docs/sources/shared/flow/stability/beta.md b/docs/sources/shared/flow/stability/beta.md index 8954ed5ebec4..c337059f006a 100644 --- a/docs/sources/shared/flow/stability/beta.md +++ b/docs/sources/shared/flow/stability/beta.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/stability/beta/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/stability/beta/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/stability/beta/ +- /docs/grafana-cloud/send-data/agent/shared/flow/stability/beta/ canonical: https://grafana.com/docs/agent/latest/shared/flow/stability/beta/ description: Shared content, beta headless: true diff --git a/docs/sources/shared/flow/stability/experimental.md b/docs/sources/shared/flow/stability/experimental.md index 1514e75648b1..95d0136400d0 100644 --- a/docs/sources/shared/flow/stability/experimental.md +++ b/docs/sources/shared/flow/stability/experimental.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/flow/stability/experimental/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/flow/stability/experimental/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/flow/stability/experimental/ +- /docs/grafana-cloud/send-data/agent/shared/flow/stability/experimental/ canonical: https://grafana.com/docs/agent/latest/shared/flow/stability/experimental/ description: Shared content, experimental headless: true diff --git a/docs/sources/shared/index.md b/docs/sources/shared/index.md index c783480960b2..8b1094f12e89 100644 --- a/docs/sources/shared/index.md +++ b/docs/sources/shared/index.md @@ -1,6 +1,9 @@ --- +aliases: +- /docs/grafana-cloud/monitor-infrastructure/agent/shared/ +- /docs/grafana-cloud/send-data/agent/shared/ canonical: https://grafana.com/docs/agent/latest/shared/ -headless: true description: Shared content +headless: true --- diff --git a/docs/sources/shared/wal-data-retention.md b/docs/sources/shared/wal-data-retention.md index cb5c1f5a0e7a..5be67691ec59 100644 --- a/docs/sources/shared/wal-data-retention.md +++ b/docs/sources/shared/wal-data-retention.md @@ -4,6 +4,7 @@ aliases: - /docs/grafana-cloud/agent/shared/wal-data-retention/ - /docs/grafana-cloud/monitor-infrastructure/agent/shared/wal-data-retention/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/shared/wal-data-retention/ +- /docs/grafana-cloud/send-data/agent/shared/wal-data-retention/ canonical: https://grafana.com/docs/agent/latest/shared/wal-data-retention/ description: Shared content, information about data retention in the WAL headless: true diff --git a/docs/sources/stability.md b/docs/sources/stability.md index 8660bce69f4c..c21d549aebdc 100644 --- a/docs/sources/stability.md +++ b/docs/sources/stability.md @@ -1,7 +1,11 @@ --- +aliases: +- /docs/grafana-cloud/monitor-infrastructure/agent/stability/ +- /docs/grafana-cloud/send-data/agent/stability/ canonical: https://grafana.com/docs/agent/latest/stability/ +description: Grafana Agent features fall into one of three stability categories, experimental, + beta, or stable title: Stability -description: Grafana Agent features fall into one of three stability categories, experimental, beta, or stable weight: 600 --- diff --git a/docs/sources/static/_index.md b/docs/sources/static/_index.md index 61cbc5d74d2a..20e959ec11b5 100644 --- a/docs/sources/static/_index.md +++ b/docs/sources/static/_index.md @@ -1,7 +1,10 @@ --- +aliases: +- /docs/grafana-cloud/monitor-infrastructure/agent/static/ +- /docs/grafana-cloud/send-data/agent/static/ canonical: https://grafana.com/docs/agent/latest/static/ -title: Static mode description: Learn about Grafana Agent in static mode +title: Static mode weight: 200 --- diff --git a/docs/sources/static/api/_index.md b/docs/sources/static/api/_index.md index 266c94b2457b..959de9238dc6 100644 --- a/docs/sources/static/api/_index.md +++ b/docs/sources/static/api/_index.md @@ -1,10 +1,12 @@ --- aliases: - ../api/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/api/ +- /docs/grafana-cloud/send-data/agent/static/api/ canonical: https://grafana.com/docs/agent/latest/static/api/ -title: Static mode APIs (Stable) -menuTitle: Static mode API description: Learn about the Grafana Agent static mode API +menuTitle: Static mode API +title: Static mode APIs (Stable) weight: 400 --- diff --git a/docs/sources/static/configuration/_index.md b/docs/sources/static/configuration/_index.md index 3928d620bbc3..7cd30818dd8f 100644 --- a/docs/sources/static/configuration/_index.md +++ b/docs/sources/static/configuration/_index.md @@ -1,9 +1,11 @@ --- aliases: - ../configuration/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/ +- /docs/grafana-cloud/send-data/agent/static/configuration/ canonical: https://grafana.com/docs/agent/latest/static/configuration/ -title: Configure static mode description: Learn how to configure Grafana Agent in static mode +title: Configure static mode weight: 300 --- diff --git a/docs/sources/static/configuration/agent-management.md b/docs/sources/static/configuration/agent-management.md index a0cb3cb93b20..0feb5c78def1 100644 --- a/docs/sources/static/configuration/agent-management.md +++ b/docs/sources/static/configuration/agent-management.md @@ -1,8 +1,11 @@ --- +aliases: +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/agent-management/ +- /docs/grafana-cloud/send-data/agent/static/configuration/agent-management/ canonical: https://grafana.com/docs/agent/latest/static/configuration/agent-management/ +description: Learn about Agent Management menuTitle: Agent Management title: Agent Management - Experimental -description: Learn about Agent Management weight: 700 --- diff --git a/docs/sources/static/configuration/create-config-file.md b/docs/sources/static/configuration/create-config-file.md index 25e774a64d69..c019bd545516 100644 --- a/docs/sources/static/configuration/create-config-file.md +++ b/docs/sources/static/configuration/create-config-file.md @@ -1,10 +1,12 @@ --- aliases: -- ../../set-up/create-config-file/ - ../../configuration/create-config-file/ +- ../../set-up/create-config-file/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/create-config-file/ +- /docs/grafana-cloud/send-data/agent/static/configuration/create-config-file/ canonical: https://grafana.com/docs/agent/latest/static/configuration/create-config-file/ -title: Create a configuration file description: Learn how to create a configuration file +title: Create a configuration file weight: 50 --- diff --git a/docs/sources/static/configuration/flags.md b/docs/sources/static/configuration/flags.md index 8d54ade73e73..c88e1173af6e 100644 --- a/docs/sources/static/configuration/flags.md +++ b/docs/sources/static/configuration/flags.md @@ -1,9 +1,11 @@ --- aliases: - ../../configuration/flags/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/flags/ +- /docs/grafana-cloud/send-data/agent/static/configuration/flags/ canonical: https://grafana.com/docs/agent/latest/static/configuration/flags/ -title: Command-line flags description: Learn about command-line flags +title: Command-line flags weight: 100 --- diff --git a/docs/sources/static/configuration/integrations/_index.md b/docs/sources/static/configuration/integrations/_index.md index ee65737d4a10..f0053c2749c2 100644 --- a/docs/sources/static/configuration/integrations/_index.md +++ b/docs/sources/static/configuration/integrations/_index.md @@ -1,9 +1,11 @@ --- aliases: - ../../configuration/integrations/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/ -title: integrations_config description: Learn about integrations_config +title: integrations_config weight: 500 --- diff --git a/docs/sources/static/configuration/integrations/apache-exporter-config.md b/docs/sources/static/configuration/integrations/apache-exporter-config.md index 16260951423e..3edce2f27538 100644 --- a/docs/sources/static/configuration/integrations/apache-exporter-config.md +++ b/docs/sources/static/configuration/integrations/apache-exporter-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/apache-exporter-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/apache-exporter-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/apache-exporter-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/apache-exporter-config/ -title: apache_http_config description: Learn about apache_http_config +title: apache_http_config --- # apache_http_config diff --git a/docs/sources/static/configuration/integrations/azure-exporter-config.md b/docs/sources/static/configuration/integrations/azure-exporter-config.md index d7c12597af59..981b0a523142 100644 --- a/docs/sources/static/configuration/integrations/azure-exporter-config.md +++ b/docs/sources/static/configuration/integrations/azure-exporter-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/azure-exporter-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/azure-exporter-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/azure-exporter-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/azure-exporter-config/ -title: azure_exporter_config description: Learn about azure_exporter_config +title: azure_exporter_config --- # azure_exporter_config diff --git a/docs/sources/static/configuration/integrations/blackbox-config.md b/docs/sources/static/configuration/integrations/blackbox-config.md index 755416ab565a..77a592ddb089 100644 --- a/docs/sources/static/configuration/integrations/blackbox-config.md +++ b/docs/sources/static/configuration/integrations/blackbox-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/blackbox-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/blackbox-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/blackbox-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/blackbox-config/ -title: blackbox_config description: Learn about blackbox_config +title: blackbox_config --- # blackbox_config diff --git a/docs/sources/static/configuration/integrations/cadvisor-config.md b/docs/sources/static/configuration/integrations/cadvisor-config.md index 4db214853cd5..16dedf0a5205 100644 --- a/docs/sources/static/configuration/integrations/cadvisor-config.md +++ b/docs/sources/static/configuration/integrations/cadvisor-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/cadvisor-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/cadvisor-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/cadvisor-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/cadvisor-config/ -title: cadvisor_config description: Learn about cadvisor_config +title: cadvisor_config --- # cadvisor_config diff --git a/docs/sources/static/configuration/integrations/cloudwatch-exporter-config.md b/docs/sources/static/configuration/integrations/cloudwatch-exporter-config.md index c0e9f6cb314f..8015bde84bc9 100644 --- a/docs/sources/static/configuration/integrations/cloudwatch-exporter-config.md +++ b/docs/sources/static/configuration/integrations/cloudwatch-exporter-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/cloudwatch-exporter-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/cloudwatch-exporter-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/cloudwatch-exporter-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/cloudwatch-exporter-config/ -title: cloudwatch_exporter_config description: Learn about cloudwatch_exporter_config +title: cloudwatch_exporter_config --- # cloudwatch_exporter_config diff --git a/docs/sources/static/configuration/integrations/consul-exporter-config.md b/docs/sources/static/configuration/integrations/consul-exporter-config.md index 53cdff1abca8..469afc264f17 100644 --- a/docs/sources/static/configuration/integrations/consul-exporter-config.md +++ b/docs/sources/static/configuration/integrations/consul-exporter-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/consul-exporter-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/consul-exporter-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/consul-exporter-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/consul-exporter-config/ -title: consul_exporter_config description: Learn about consul_exporter_config +title: consul_exporter_config --- # consul_exporter_config diff --git a/docs/sources/static/configuration/integrations/dnsmasq-exporter-config.md b/docs/sources/static/configuration/integrations/dnsmasq-exporter-config.md index 87bc75860214..fe38a827bf45 100644 --- a/docs/sources/static/configuration/integrations/dnsmasq-exporter-config.md +++ b/docs/sources/static/configuration/integrations/dnsmasq-exporter-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/dnsmasq-exporter-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/dnsmasq-exporter-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/dnsmasq-exporter-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/dnsmasq-exporter-config/ -title: dnsmasq_exporter_config description: Learn about dnsmasq_exporter_config +title: dnsmasq_exporter_config --- # dnsmasq_exporter_config diff --git a/docs/sources/static/configuration/integrations/elasticsearch-exporter-config.md b/docs/sources/static/configuration/integrations/elasticsearch-exporter-config.md index 0d24066ccb28..22f26d4f15ad 100644 --- a/docs/sources/static/configuration/integrations/elasticsearch-exporter-config.md +++ b/docs/sources/static/configuration/integrations/elasticsearch-exporter-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/elasticsearch-exporter-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/elasticsearch-exporter-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/elasticsearch-exporter-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/elasticsearch-exporter-config/ -title: elasticsearch_exporter_config description: Learn about elasticsearch_exporter_config +title: elasticsearch_exporter_config --- # elasticsearch_exporter_config diff --git a/docs/sources/static/configuration/integrations/gcp-exporter-config.md b/docs/sources/static/configuration/integrations/gcp-exporter-config.md index 2ff5fc8fd10f..56ef46aa9378 100644 --- a/docs/sources/static/configuration/integrations/gcp-exporter-config.md +++ b/docs/sources/static/configuration/integrations/gcp-exporter-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/gcp-exporter-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/gcp-exporter-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/gcp-exporter-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/gcp-exporter-config/ -title: gcp_exporter_config description: Learn about gcp_exporter_config +title: gcp_exporter_config --- # gcp_exporter_config diff --git a/docs/sources/static/configuration/integrations/github-exporter-config.md b/docs/sources/static/configuration/integrations/github-exporter-config.md index 20f2027d78a0..c1bbbfe0d0c5 100644 --- a/docs/sources/static/configuration/integrations/github-exporter-config.md +++ b/docs/sources/static/configuration/integrations/github-exporter-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/github-exporter-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/github-exporter-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/github-exporter-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/github-exporter-config/ -title: github_exporter_config description: Learn about github_exporter_config +title: github_exporter_config --- # github_exporter_config diff --git a/docs/sources/static/configuration/integrations/integrations-next/_index.md b/docs/sources/static/configuration/integrations/integrations-next/_index.md index d9e069a1f42d..cfa54bfb9b8f 100644 --- a/docs/sources/static/configuration/integrations/integrations-next/_index.md +++ b/docs/sources/static/configuration/integrations/integrations-next/_index.md @@ -1,10 +1,12 @@ --- aliases: - ../../../configuration/integrations/integrations-next/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/integrations-next/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/integrations-next/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/integrations-next/ -title: Integrations next (Experimental) -menuTitle: Integrations next description: Learn about integrations next +menuTitle: Integrations next +title: Integrations next (Experimental) weight: 100 --- diff --git a/docs/sources/static/configuration/integrations/integrations-next/app-agent-receiver-config.md b/docs/sources/static/configuration/integrations/integrations-next/app-agent-receiver-config.md index 9a16464c5d66..7fe049a493e8 100644 --- a/docs/sources/static/configuration/integrations/integrations-next/app-agent-receiver-config.md +++ b/docs/sources/static/configuration/integrations/integrations-next/app-agent-receiver-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../../configuration/integrations/integrations-next/app-agent-receiver-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/integrations-next/app-agent-receiver-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/integrations-next/app-agent-receiver-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/integrations-next/app-agent-receiver-config/ -title: app_agent_receiver_config next description: Learn about app_agent_receiver_config next +title: app_agent_receiver_config next --- # app_agent_receiver_config next diff --git a/docs/sources/static/configuration/integrations/integrations-next/blackbox-config.md b/docs/sources/static/configuration/integrations/integrations-next/blackbox-config.md index 713dcb31fd9a..fa99cf452fd3 100644 --- a/docs/sources/static/configuration/integrations/integrations-next/blackbox-config.md +++ b/docs/sources/static/configuration/integrations/integrations-next/blackbox-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../../configuration/integrations/integrations-next/blackbox-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/integrations-next/blackbox-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/integrations-next/blackbox-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/integrations-next/blackbox-config/ -title: blackbox_config next description: Learn about blackbox_config next +title: blackbox_config next --- # blackbox_config next diff --git a/docs/sources/static/configuration/integrations/integrations-next/eventhandler-config.md b/docs/sources/static/configuration/integrations/integrations-next/eventhandler-config.md index f9d2e0780d03..0008f8c29d48 100644 --- a/docs/sources/static/configuration/integrations/integrations-next/eventhandler-config.md +++ b/docs/sources/static/configuration/integrations/integrations-next/eventhandler-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../../configuration/integrations/integrations-next/eventhandler-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/integrations-next/eventhandler-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/integrations-next/eventhandler-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/integrations-next/eventhandler-config/ -title: eventhandler_config next description: Learn about eventhandler_config next +title: eventhandler_config next --- # eventhandler_config next diff --git a/docs/sources/static/configuration/integrations/integrations-next/snmp-config.md b/docs/sources/static/configuration/integrations/integrations-next/snmp-config.md index c2eebabcaf7c..173711f7132f 100644 --- a/docs/sources/static/configuration/integrations/integrations-next/snmp-config.md +++ b/docs/sources/static/configuration/integrations/integrations-next/snmp-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../../configuration/integrations/integrations-next/snmp-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/integrations-next/snmp-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/integrations-next/snmp-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/integrations-next/snmp-config/ -title: snmp config next description: Learn about snmp config next +title: snmp config next --- # snmp config next diff --git a/docs/sources/static/configuration/integrations/integrations-next/vsphere-config.md b/docs/sources/static/configuration/integrations/integrations-next/vsphere-config.md index b09c691b3eb9..b63523fe484c 100644 --- a/docs/sources/static/configuration/integrations/integrations-next/vsphere-config.md +++ b/docs/sources/static/configuration/integrations/integrations-next/vsphere-config.md @@ -1,10 +1,12 @@ --- aliases: - ../../../../configuration/integrations/integrations-next/vsphere-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/integrations-next/vsphere-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/integrations-next/vsphere-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/integrations-next/vsphere-config/ -title: vsphere config (beta) next -menuTitle: vsphere_config next description: Learn about vsphere_config next +menuTitle: vsphere_config next +title: vsphere config (beta) next --- # vsphere config (beta) next diff --git a/docs/sources/static/configuration/integrations/kafka-exporter-config.md b/docs/sources/static/configuration/integrations/kafka-exporter-config.md index 147558f85df1..14c8e5e99075 100644 --- a/docs/sources/static/configuration/integrations/kafka-exporter-config.md +++ b/docs/sources/static/configuration/integrations/kafka-exporter-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/kafka-exporter-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/kafka-exporter-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/kafka-exporter-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/kafka-exporter-config/ -title: kafka_exporter_config description: Learn about kafka_exporter_config +title: kafka_exporter_config --- # kafka_exporter_config diff --git a/docs/sources/static/configuration/integrations/memcached-exporter-config.md b/docs/sources/static/configuration/integrations/memcached-exporter-config.md index 4793d2b8560f..a8fe548f7c50 100644 --- a/docs/sources/static/configuration/integrations/memcached-exporter-config.md +++ b/docs/sources/static/configuration/integrations/memcached-exporter-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/memcached-exporter-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/memcached-exporter-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/memcached-exporter-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/memcached-exporter-config/ -title: memcached_exporter_config description: Learn about memcached_exporter_config +title: memcached_exporter_config --- # memcached_exporter_config diff --git a/docs/sources/static/configuration/integrations/mongodb_exporter-config.md b/docs/sources/static/configuration/integrations/mongodb_exporter-config.md index 2c47057e8aa6..4ed4b14b2bbd 100644 --- a/docs/sources/static/configuration/integrations/mongodb_exporter-config.md +++ b/docs/sources/static/configuration/integrations/mongodb_exporter-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/mongodb_exporter-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/mongodb_exporter-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/mongodb_exporter-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/mongodb_exporter-config/ -title: mongodb_exporter_config description: Learn about mongodb_exporter_config +title: mongodb_exporter_config --- # mongodb_exporter_config diff --git a/docs/sources/static/configuration/integrations/mssql-config.md b/docs/sources/static/configuration/integrations/mssql-config.md index c3a95a73d21f..d79b360bfd10 100644 --- a/docs/sources/static/configuration/integrations/mssql-config.md +++ b/docs/sources/static/configuration/integrations/mssql-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/mssql-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/mssql-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/mssql-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/mssql-config/ -title: mssql_config description: Learn about mssql_config +title: mssql_config --- # mssql_config diff --git a/docs/sources/static/configuration/integrations/mysqld-exporter-config.md b/docs/sources/static/configuration/integrations/mysqld-exporter-config.md index 4b2b09078e3a..8f266787ade6 100644 --- a/docs/sources/static/configuration/integrations/mysqld-exporter-config.md +++ b/docs/sources/static/configuration/integrations/mysqld-exporter-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/mysqld-exporter-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/mysqld-exporter-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/mysqld-exporter-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/mysqld-exporter-config/ -title: mysqld_exporter_config description: Learn about mysqld_exporter_config +title: mysqld_exporter_config --- # mysqld_exporter_config diff --git a/docs/sources/static/configuration/integrations/node-exporter-config.md b/docs/sources/static/configuration/integrations/node-exporter-config.md index eb65fb51d91f..9919464056a6 100644 --- a/docs/sources/static/configuration/integrations/node-exporter-config.md +++ b/docs/sources/static/configuration/integrations/node-exporter-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/node-exporter-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/node-exporter-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/node-exporter-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/node-exporter-config/ -title: node_exporter_config description: Learn about node_exporter_config +title: node_exporter_config --- # node_exporter_config diff --git a/docs/sources/static/configuration/integrations/oracledb-config.md b/docs/sources/static/configuration/integrations/oracledb-config.md index ed13aa931ccb..2937c9f4d207 100644 --- a/docs/sources/static/configuration/integrations/oracledb-config.md +++ b/docs/sources/static/configuration/integrations/oracledb-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/oracledb-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/oracledb-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/oracledb-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/oracledb-config/ -title: oracledb_config description: Learn about oracledb_config +title: oracledb_config --- # oracledb_config diff --git a/docs/sources/static/configuration/integrations/postgres-exporter-config.md b/docs/sources/static/configuration/integrations/postgres-exporter-config.md index 00120e004378..1bd2354c9ec8 100644 --- a/docs/sources/static/configuration/integrations/postgres-exporter-config.md +++ b/docs/sources/static/configuration/integrations/postgres-exporter-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/postgres-exporter-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/postgres-exporter-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/postgres-exporter-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/postgres-exporter-config/ -title: postgres_exporter_config description: Learn about postgres_exporter_config +title: postgres_exporter_config --- # postgres_exporter_config diff --git a/docs/sources/static/configuration/integrations/process-exporter-config.md b/docs/sources/static/configuration/integrations/process-exporter-config.md index a0ba6235148d..c6e888df7714 100644 --- a/docs/sources/static/configuration/integrations/process-exporter-config.md +++ b/docs/sources/static/configuration/integrations/process-exporter-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/process-exporter-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/process-exporter-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/process-exporter-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/process-exporter-config/ -title: process_exporter_config description: Learn about process_exporter_config +title: process_exporter_config --- # process_exporter_config diff --git a/docs/sources/static/configuration/integrations/redis-exporter-config.md b/docs/sources/static/configuration/integrations/redis-exporter-config.md index cf098a2d9826..392fcb359cab 100644 --- a/docs/sources/static/configuration/integrations/redis-exporter-config.md +++ b/docs/sources/static/configuration/integrations/redis-exporter-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/redis-exporter-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/redis-exporter-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/redis-exporter-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/redis-exporter-config/ -title: redis_exporter_config description: Learn about redis_exporter_config +title: redis_exporter_config --- # redis_exporter_config diff --git a/docs/sources/static/configuration/integrations/snmp-config.md b/docs/sources/static/configuration/integrations/snmp-config.md index c85196c10f0d..893348006f92 100644 --- a/docs/sources/static/configuration/integrations/snmp-config.md +++ b/docs/sources/static/configuration/integrations/snmp-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/snmp-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/snmp-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/snmp-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/snmp-config/ -title: snmp config description: Learn about snmp config +title: snmp config --- # snmp config diff --git a/docs/sources/static/configuration/integrations/snowflake-config.md b/docs/sources/static/configuration/integrations/snowflake-config.md index 4c8df2f14136..c648445a2dd0 100644 --- a/docs/sources/static/configuration/integrations/snowflake-config.md +++ b/docs/sources/static/configuration/integrations/snowflake-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/snowflake-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/snowflake-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/snowflake-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/snowflake-config/ -title: snowflake_config description: Learn about snowflake_config +title: snowflake_config --- # snowflake_config diff --git a/docs/sources/static/configuration/integrations/squid-config.md b/docs/sources/static/configuration/integrations/squid-config.md index dd2073a250ee..6bfff685a3f3 100644 --- a/docs/sources/static/configuration/integrations/squid-config.md +++ b/docs/sources/static/configuration/integrations/squid-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/squid-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/squid-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/squid-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/squid-config/ -title: squid_config description: Learn about squid_config +title: squid_config --- # squid_config diff --git a/docs/sources/static/configuration/integrations/statsd-exporter-config.md b/docs/sources/static/configuration/integrations/statsd-exporter-config.md index c76850967c08..87c31458951a 100644 --- a/docs/sources/static/configuration/integrations/statsd-exporter-config.md +++ b/docs/sources/static/configuration/integrations/statsd-exporter-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/statsd-exporter-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/statsd-exporter-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/statsd-exporter-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/statsd-exporter-config/ -title: statsd_exporter_config description: Learn about statsd_exporter_config +title: statsd_exporter_config --- # statsd_exporter_config diff --git a/docs/sources/static/configuration/integrations/windows-exporter-config.md b/docs/sources/static/configuration/integrations/windows-exporter-config.md index 3cbd5a3f3df8..53c58b60fe0b 100644 --- a/docs/sources/static/configuration/integrations/windows-exporter-config.md +++ b/docs/sources/static/configuration/integrations/windows-exporter-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../../configuration/integrations/windows-exporter-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/windows-exporter-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/integrations/windows-exporter-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/integrations/windows-exporter-config/ -title: windows_exporter_config description: Learn about windows_exporter_config +title: windows_exporter_config --- # windows_exporter_config diff --git a/docs/sources/static/configuration/logs-config.md b/docs/sources/static/configuration/logs-config.md index 24e0b491bdb9..56d8d0677394 100644 --- a/docs/sources/static/configuration/logs-config.md +++ b/docs/sources/static/configuration/logs-config.md @@ -1,10 +1,12 @@ --- aliases: -- ../../configuration/loki-config/ - ../../configuration/logs-config/ +- ../../configuration/loki-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/logs-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/logs-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/logs-config/ -title: logs_config description: Learn about logs_config +title: logs_config weight: 300 --- diff --git a/docs/sources/static/configuration/metrics-config.md b/docs/sources/static/configuration/metrics-config.md index d5cb9a91f41e..7022d2330704 100644 --- a/docs/sources/static/configuration/metrics-config.md +++ b/docs/sources/static/configuration/metrics-config.md @@ -1,10 +1,12 @@ --- aliases: -- ../../configuration/prometheus-config/ - ../../configuration/metrics-config/ +- ../../configuration/prometheus-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/metrics-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/metrics-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/metrics-config/ -title: metrics_config description: Learn about metrics_config +title: metrics_config weight: 200 --- diff --git a/docs/sources/static/configuration/scraping-service.md b/docs/sources/static/configuration/scraping-service.md index de33199adf3f..dd6f5d3f4b9f 100644 --- a/docs/sources/static/configuration/scraping-service.md +++ b/docs/sources/static/configuration/scraping-service.md @@ -1,11 +1,13 @@ --- aliases: -- ../../scraping-service/ - ../../configuration/scraping-service/ +- ../../scraping-service/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/scraping-service/ +- /docs/grafana-cloud/send-data/agent/static/configuration/scraping-service/ canonical: https://grafana.com/docs/agent/latest/static/configuration/scraping-service/ -title: Scraping service (Beta) -menuTitle: Scraping service description: Learn about the scraping service +menuTitle: Scraping service +title: Scraping service (Beta) weight: 600 --- diff --git a/docs/sources/static/configuration/server-config.md b/docs/sources/static/configuration/server-config.md index 55d84b14d8fc..aaba5fee0c80 100644 --- a/docs/sources/static/configuration/server-config.md +++ b/docs/sources/static/configuration/server-config.md @@ -1,9 +1,11 @@ --- aliases: - ../../configuration/server-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/server-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/server-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/server-config/ -title: server_config description: Learn about server_config +title: server_config weight: 100 --- diff --git a/docs/sources/static/configuration/traces-config.md b/docs/sources/static/configuration/traces-config.md index 682ce51f5741..b8c822f28bf8 100644 --- a/docs/sources/static/configuration/traces-config.md +++ b/docs/sources/static/configuration/traces-config.md @@ -2,9 +2,11 @@ aliases: - ../../configuration/tempo-config/ - ../../configuration/traces-config/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/traces-config/ +- /docs/grafana-cloud/send-data/agent/static/configuration/traces-config/ canonical: https://grafana.com/docs/agent/latest/static/configuration/traces-config/ -title: traces_config description: Learn about traces_config +title: traces_config weight: 400 --- diff --git a/docs/sources/static/operation-guide/_index.md b/docs/sources/static/operation-guide/_index.md index a050ba9fc9ce..0b84a78c3ccc 100644 --- a/docs/sources/static/operation-guide/_index.md +++ b/docs/sources/static/operation-guide/_index.md @@ -1,9 +1,11 @@ --- aliases: - ../operation-guide/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/operation-guide/ +- /docs/grafana-cloud/send-data/agent/static/operation-guide/ canonical: https://grafana.com/docs/agent/latest/static/operation-guide/ -title: Operation guide description: Learn how to operate Grafana Agent +title: Operation guide weight: 700 --- diff --git a/docs/sources/static/release-notes.md b/docs/sources/static/release-notes.md index f22381e48442..f0ee38486ac0 100644 --- a/docs/sources/static/release-notes.md +++ b/docs/sources/static/release-notes.md @@ -1,11 +1,13 @@ --- -canonical: https://grafana.com/docs/agent/latest/static/release-notes/ -description: Release notes for Grafana Agent static mode -title: Release notes -menuTitle: Release notes aliases: - ../upgrade-guide/ - ./upgrade-guide/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/release-notes/ +- /docs/grafana-cloud/send-data/agent/static/release-notes/ +canonical: https://grafana.com/docs/agent/latest/static/release-notes/ +description: Release notes for Grafana Agent static mode +menuTitle: Release notes +title: Release notes weight: 999 --- diff --git a/docs/sources/static/set-up/_index.md b/docs/sources/static/set-up/_index.md index aa8756184f84..93fb9171bff6 100644 --- a/docs/sources/static/set-up/_index.md +++ b/docs/sources/static/set-up/_index.md @@ -1,11 +1,12 @@ --- aliases: -- ../set-up +- ../set-up/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/set-up/ +- /docs/grafana-cloud/send-data/agent/static/set-up/ canonical: https://grafana.com/docs/agent/latest/static/set-up/ -description: Install and configure Grafana Agent in static mode +description: Learn how to set up Grafana Agent in static mode menuTitle: Set up static mode title: Set up Grafana Agent in static mode -description: Learn how to set up Grafana Agent in static mode weight: 100 --- diff --git a/docs/sources/static/set-up/deploy-agent.md b/docs/sources/static/set-up/deploy-agent.md index 4d4bc23002e8..2c3bb315b4dd 100644 --- a/docs/sources/static/set-up/deploy-agent.md +++ b/docs/sources/static/set-up/deploy-agent.md @@ -1,9 +1,11 @@ --- +aliases: +- /docs/grafana-cloud/monitor-infrastructure/agent/static/set-up/deploy-agent/ +- /docs/grafana-cloud/send-data/agent/static/set-up/deploy-agent/ canonical: https://grafana.com/docs/agent/latest/static/set-up/deploy-agent/ -description: Learn how to plan for the Grafana Agent deployment +description: Learn how to deploy Grafana Agent in different topologies menuTitle: Deploy static mode title: Deploy Grafana Agent in static mode -description: Learn how to deploy Grafana Agent in different topologies weight: 300 --- diff --git a/docs/sources/static/set-up/install/_index.md b/docs/sources/static/set-up/install/_index.md index 1df90ef26319..ac6a8b51714d 100644 --- a/docs/sources/static/set-up/install/_index.md +++ b/docs/sources/static/set-up/install/_index.md @@ -1,11 +1,13 @@ --- aliases: -- ../set-up/ - ../ +- ../set-up/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/set-up/install/ +- /docs/grafana-cloud/send-data/agent/static/set-up/install/ canonical: https://grafana.com/docs/agent/latest/static/set-up/install/ +description: Learn how to install GRafana Agent in static mode menuTitle: Install static mode title: Install Grafana Agent in static mode -description: Learn how to install GRafana Agent in static mode weight: 100 --- diff --git a/docs/sources/static/set-up/install/install-agent-binary.md b/docs/sources/static/set-up/install/install-agent-binary.md index fb679436b9c1..b773e342fc3b 100644 --- a/docs/sources/static/set-up/install/install-agent-binary.md +++ b/docs/sources/static/set-up/install/install-agent-binary.md @@ -2,10 +2,12 @@ aliases: - ../../set-up/install-agent-binary/ - ../set-up/install-agent-binary/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/set-up/install/install-agent-binary/ +- /docs/grafana-cloud/send-data/agent/static/set-up/install/install-agent-binary/ canonical: https://grafana.com/docs/agent/latest/static/set-up/install/install-agent-binary/ +description: Learn how to install Grafana Agent in static mode as a standalone binary menuTitle: Standalone title: Install Grafana Agent in static mode as a standalone binary -description: Learn how to install Grafana Agent in static mode as a standalone binary weight: 700 --- diff --git a/docs/sources/static/set-up/install/install-agent-docker.md b/docs/sources/static/set-up/install/install-agent-docker.md index 7f32cc4e6d7f..16061b22d56a 100644 --- a/docs/sources/static/set-up/install/install-agent-docker.md +++ b/docs/sources/static/set-up/install/install-agent-docker.md @@ -2,10 +2,12 @@ aliases: - ../../set-up/install-agent-docker/ - ../set-up/install-agent-docker/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/set-up/install/install-agent-docker/ +- /docs/grafana-cloud/send-data/agent/static/set-up/install/install-agent-docker/ canonical: https://grafana.com/docs/agent/latest/static/set-up/install/install-agent-docker/ +description: Learn how to run Grafana Agent in static mode in a Docker container menuTitle: Docker title: Run Grafana Agent in static mode in a Docker container -description: Learn how to run Grafana Agent in static mode in a Docker container weight: 200 --- diff --git a/docs/sources/static/set-up/install/install-agent-kubernetes.md b/docs/sources/static/set-up/install/install-agent-kubernetes.md index f4b2d615a685..c8df4dd8fa33 100644 --- a/docs/sources/static/set-up/install/install-agent-kubernetes.md +++ b/docs/sources/static/set-up/install/install-agent-kubernetes.md @@ -1,8 +1,11 @@ --- +aliases: +- /docs/grafana-cloud/monitor-infrastructure/agent/static/set-up/install/install-agent-kubernetes/ +- /docs/grafana-cloud/send-data/agent/static/set-up/install/install-agent-kubernetes/ canonical: https://grafana.com/docs/agent/latest/static/set-up/install/install-agent-kubernetes/ +description: Learn how to deploy Grafana Agent in static mode on Kubernetes menuTitle: Kubernetes title: Deploy Grafana Agent in static mode on Kubernetes -description: Learn how to deploy Grafana Agent in static mode on Kubernetes weight: 300 --- diff --git a/docs/sources/static/set-up/install/install-agent-linux.md b/docs/sources/static/set-up/install/install-agent-linux.md index 63940fe92753..c2c784f17bfa 100644 --- a/docs/sources/static/set-up/install/install-agent-linux.md +++ b/docs/sources/static/set-up/install/install-agent-linux.md @@ -2,10 +2,12 @@ aliases: - ../../set-up/install-agent-linux/ - ../set-up/install-agent-linux/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/set-up/install/install-agent-linux/ +- /docs/grafana-cloud/send-data/agent/static/set-up/install/install-agent-linux/ canonical: https://grafana.com/docs/agent/latest/static/set-up/install/install-agent-linux/ +description: Learn how to install Grafana Agent in static mode on Linux menuTitle: Linux title: Install Grafana Agent in static mode on Linux -description: Learn how to install Grafana Agent in static mode on Linux weight: 400 --- diff --git a/docs/sources/static/set-up/install/install-agent-macos.md b/docs/sources/static/set-up/install/install-agent-macos.md index fc5f7ecd480b..fb79d5cd1cfc 100644 --- a/docs/sources/static/set-up/install/install-agent-macos.md +++ b/docs/sources/static/set-up/install/install-agent-macos.md @@ -2,10 +2,12 @@ aliases: - ../../set-up/install-agent-macos/ - ../set-up/install-agent-macos/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/set-up/install/install-agent-macos/ +- /docs/grafana-cloud/send-data/agent/static/set-up/install/install-agent-macos/ canonical: https://grafana.com/docs/agent/latest/static/set-up/install/install-agent-macos/ +description: Learn how to install Grafana Agent in static mode on macOS menuTitle: macOS title: Install Grafana Agent in static mode on macOS -description: Learn how to install Grafana Agent in static mode on macOS weight: 500 --- diff --git a/docs/sources/static/set-up/install/install-agent-on-windows.md b/docs/sources/static/set-up/install/install-agent-on-windows.md index 1df0abefc7a8..44e5e4dae0e7 100644 --- a/docs/sources/static/set-up/install/install-agent-on-windows.md +++ b/docs/sources/static/set-up/install/install-agent-on-windows.md @@ -2,10 +2,12 @@ aliases: - ../../set-up/install-agent-on-windows/ - ../set-up/install-agent-on-windows/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/set-up/install/install-agent-on-windows/ +- /docs/grafana-cloud/send-data/agent/static/set-up/install/install-agent-on-windows/ canonical: https://grafana.com/docs/agent/latest/static/set-up/install/install-agent-on-windows/ +description: Learn how to install Grafana Agent in static mode on Windows menuTitle: Windows title: Install Grafana Agent in static mode on Windows -description: Learn how to install Grafana Agent in static mode on Windows weight: 600 --- diff --git a/docs/sources/static/set-up/quick-starts.md b/docs/sources/static/set-up/quick-starts.md index 1c7990e3e1d5..848630ab5b5f 100644 --- a/docs/sources/static/set-up/quick-starts.md +++ b/docs/sources/static/set-up/quick-starts.md @@ -1,10 +1,12 @@ --- aliases: - ../../set-up/quick-starts/ +- /docs/grafana-cloud/monitor-infrastructure/agent/static/set-up/quick-starts/ +- /docs/grafana-cloud/send-data/agent/static/set-up/quick-starts/ canonical: https://grafana.com/docs/agent/latest/static/set-up/quick-starts/ +description: Learn how to get started with Grafana Agent in static mode menuTitle: Get started title: Grafana Agent quick starts -description: Learn how to get started with Grafana Agent in static mode weight: 300 --- diff --git a/docs/sources/static/set-up/start-agent.md b/docs/sources/static/set-up/start-agent.md index 52f6fa4df423..24f9582f928f 100644 --- a/docs/sources/static/set-up/start-agent.md +++ b/docs/sources/static/set-up/start-agent.md @@ -1,9 +1,11 @@ --- +aliases: +- /docs/grafana-cloud/monitor-infrastructure/agent/static/set-up/start-agent/ +- /docs/grafana-cloud/send-data/agent/static/set-up/start-agent/ canonical: https://grafana.com/docs/agent/latest/static/set-up/start-agent/ -description: Learn how to start, restart, and stop Grafana Agent after it is installed +description: Learn how to start, restart, and stop Grafana Agent in static mode menuTitle: Start static mode title: Start, restart, and stop Grafana Agent in static mode -description: Learn how to start, restart, and stop Grafana Agent in static mode weight: 200 --- diff --git a/tools/gen-crd-docs/template/pkg.tpl b/tools/gen-crd-docs/template/pkg.tpl index 61109728efcf..4050a2d5dad9 100644 --- a/tools/gen-crd-docs/template/pkg.tpl +++ b/tools/gen-crd-docs/template/pkg.tpl @@ -7,6 +7,7 @@ aliases: - /docs/grafana-cloud/agent/operator/api/ - /docs/grafana-cloud/monitor-infrastructure/agent/operator/api/ - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/operator/api/ +- /docs/grafana-cloud/send-data/agent/operator/api/ canonical: https://grafana.com/docs/agent/latest/operator/api/ title: Custom Resource Definition Reference description: Learn about the Grafana Agent API From 7bd7f0843f706a8fd06334c0503f1031c74a06d9 Mon Sep 17 00:00:00 2001 From: Paulin Todev Date: Wed, 8 Nov 2023 19:48:07 +0000 Subject: [PATCH 008/166] Clarify use of send_batch_max_size in otelcol.processor.batch (#5630) * Clarify use of send_batch_max_size Co-authored-by: Clayton Cornell <131809008+clayton-cornell@users.noreply.github.com> --- .../components/otelcol.processor.batch.md | 56 +++++++++++++++---- 1 file changed, 46 insertions(+), 10 deletions(-) diff --git a/docs/sources/flow/reference/components/otelcol.processor.batch.md b/docs/sources/flow/reference/components/otelcol.processor.batch.md index a6618da0d672..27749b092f9f 100644 --- a/docs/sources/flow/reference/components/otelcol.processor.batch.md +++ b/docs/sources/flow/reference/components/otelcol.processor.batch.md @@ -59,18 +59,30 @@ following events happens: * The duration specified by `timeout` elapses since the time the last batch was sent. -* The number of spans, log lines, or metric samples processed exceeds the - number specified by `send_batch_size`. - -Use `send_batch_max_size` to limit the amount of data contained in a single -batch. When set to `0`, batches can be any size. +* The number of spans, log lines, or metric samples processed is greater than + or equal to the number specified by `send_batch_size`. + +Logs, traces, and metrics are processed independently. +For example, if `send_batch_size` is set to `1000`: +* The processor may, at the same time, buffer 1,000 spans, + 1,000 log lines, and 1,000 metric samples before flushing them. +* If there are enough spans for a batch of spans (1,000 or more), but not enough for a + batch of metric samples (less than 1,000) then only the spans will be flushed. + +Use `send_batch_max_size` to limit the amount of data contained in a single batch: +* When set to `0`, batches can be any size. +* When set to a non-zero value, `send_batch_max_size` must be greater than or equal to `send_batch_size`. + Every batch will contain up to the `send_batch_max_size` number of spans, log lines, or metric samples. + The excess spans, log lines, or metric samples will not be lost - instead, they will be added to + the next batch. For example, assume `send_batch_size` is set to the default `8192` and there -are currently 8000 batched spans. If the batch processor receives 8000 more -spans at once, the total batch size would be 16,192 which would then be flushed -as a single batch. `send_batch_max_size` constrains how big a batch can get. -When set to a non-zero value, `send_batch_max_size` must be greater or equal to -`send_batch_size`. +are currently 8,000 batched spans. If the batch processor receives 8,000 more +spans at once, its behavior depends on how `send_batch_max_size` is configured: +* If `send_batch_max_size` is set to `0`, the total batch size would be 16,000 + which would then be flushed as a single batch. +* If `send_batch_max_size` is set to `10000`, then the total batch size will be + 10,000 and the remaining 6,000 spans will be flushed in a subsequent batch. `metadata_cardinality_limit` applies for the lifetime of the process. @@ -151,6 +163,30 @@ otelcol.exporter.otlp "production" { } ``` +### Batching with a timeout + +This example will buffer up to 10,000 spans, metric data points, or log records for up to 10 seconds. +Because `send_batch_max_size` is not set, the batch size may exceed 10,000. + +```river +otelcol.processor.batch "default" { + timeout = "10s" + send_batch_size = 10000 + + output { + metrics = [otelcol.exporter.otlp.production.input] + logs = [otelcol.exporter.otlp.production.input] + traces = [otelcol.exporter.otlp.production.input] + } +} + +otelcol.exporter.otlp "production" { + client { + endpoint = env("OTLP_SERVER_ENDPOINT") + } +} +``` + ### Batching based on metadata Batching by metadata enables support for multi-tenant OpenTelemetry pipelines From 877862e7f65c6db0475484a7cb3d87b61d90917b Mon Sep 17 00:00:00 2001 From: Tolya Korniltsev Date: Thu, 9 Nov 2023 14:37:58 +0700 Subject: [PATCH 009/166] pyroscope.ebpf update dependency to include python fixes (#5702) --- CHANGELOG.md | 2 ++ go.mod | 14 +++++++------- go.sum | 36 ++++++++++++++++++------------------ 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4533ecedec3b..04afa8db6148 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -97,6 +97,8 @@ Main (unreleased) - Added support for replaying not sent data for `loki.write` when WAL is enabled. (@thepalbi) +- Added support for unicode strings in `pyroscope.ebpf` python profiles. (@korniltsev) + ### Bugfixes - Fixed an issue where `loki.process` validation for stage `metric.counter` was diff --git a/go.mod b/go.mod index ebed4397a468..3f9215d560fe 100644 --- a/go.mod +++ b/go.mod @@ -59,7 +59,7 @@ require ( github.com/grafana/loki v1.6.2-0.20231004111112-07cbef92268a github.com/grafana/pyroscope-go/godeltaprof v0.1.3 github.com/grafana/pyroscope/api v0.2.0 - github.com/grafana/pyroscope/ebpf v0.3.0 + github.com/grafana/pyroscope/ebpf v0.3.2 github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db github.com/grafana/river v0.3.0 github.com/grafana/snowflake-prometheus-exporter v0.0.0-20221213150626-862cad8e9538 @@ -221,7 +221,7 @@ require ( golang.org/x/text v0.13.0 golang.org/x/time v0.3.0 google.golang.org/api v0.146.0 - google.golang.org/grpc v1.58.3 + google.golang.org/grpc v1.59.0 google.golang.org/protobuf v1.31.0 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 @@ -238,10 +238,10 @@ require ( ) require ( - cloud.google.com/go v0.110.7 // indirect + cloud.google.com/go v0.110.8 // indirect cloud.google.com/go/compute v1.23.0 // indirect cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68 // indirect - cloud.google.com/go/iam v1.1.1 // indirect + cloud.google.com/go/iam v1.1.2 // indirect contrib.go.opencensus.io/exporter/prometheus v0.4.2 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.2 // indirect @@ -595,9 +595,9 @@ require ( gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect gonum.org/v1/gonum v0.14.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230913181813-007df8e322eb // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 // indirect + google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect gopkg.in/fsnotify/fsnotify.v1 v1.4.7 // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/go.sum b/go.sum index f29e630b8772..ae7048887316 100644 --- a/go.sum +++ b/go.sum @@ -28,8 +28,8 @@ cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aD cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.110.7 h1:rJyC7nWRg2jWGZ4wSJ5nY65GTdYJkg0cd/uXb+ACI6o= -cloud.google.com/go v0.110.7/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go v0.110.8 h1:tyNdfIxjzaWctIiLYOTalaLKZ17SI44SKFW26QbOhME= +cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -42,10 +42,10 @@ cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68 h1:aRV cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68/go.mod h1:1a3eRNYX12fs5UABBIXS8HXVvQbX9hRB/RkEBPORpe8= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/iam v1.1.1 h1:lW7fzj15aVIXYHREOqjRBV9PsH0Z6u8Y46a1YGvQP4Y= -cloud.google.com/go/iam v1.1.1/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= -cloud.google.com/go/kms v1.15.0 h1:xYl5WEaSekKYN5gGRyhjvZKM22GVBBCzegGNVPy+aIs= -cloud.google.com/go/kms v1.15.0/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM= +cloud.google.com/go/iam v1.1.2 h1:gacbrBdWcoVmGLozRuStX45YKvJtzIjJdAolzUs1sm4= +cloud.google.com/go/iam v1.1.2/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= +cloud.google.com/go/kms v1.15.2 h1:lh6qra6oC4AyWe5fUUUBe/S27k12OHAleOOOw6KakdE= +cloud.google.com/go/kms v1.15.2/go.mod h1:3hopT4+7ooWRCjc2DxgnpESFxhIraaI2IpAVUEhbT/w= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -883,8 +883,8 @@ github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EO github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= -github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= +github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= +github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -1077,8 +1077,8 @@ github.com/grafana/pyroscope-go/godeltaprof v0.1.3 h1:eunWpv1B3Z7ZK9o4499EmQGlY+ github.com/grafana/pyroscope-go/godeltaprof v0.1.3/go.mod h1:1HSPtjU8vLG0jE9JrTdzjgFqdJ/VgN7fvxBNq3luJko= github.com/grafana/pyroscope/api v0.2.0 h1:TzOxL0s6SiaLEy944ZAKgHcx/JDRJXu4O8ObwkqR6p4= github.com/grafana/pyroscope/api v0.2.0/go.mod h1:nhH+xai9cYFgs6lMy/+L0pKj0d5yCMwji/QAiQFCP+U= -github.com/grafana/pyroscope/ebpf v0.3.0 h1:7J24qd5ul786ZNDpgN8oIDbuBEXX2L829BjNNm3KVYw= -github.com/grafana/pyroscope/ebpf v0.3.0/go.mod h1:f9gfqjtpxYs/1t7L2HskrR5kQMH64gclaCYdtZ1unKo= +github.com/grafana/pyroscope/ebpf v0.3.2 h1:o2Ib5Syot/GeYchPpr4bu091WML70g2L+D5LHWjZZT4= +github.com/grafana/pyroscope/ebpf v0.3.2/go.mod h1:n6KfoTGMietvw4+vhhU1X8WiBOVxn5p8YxDy9BORUvY= github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db h1:7aN5cccjIqCLTzedH7MZzRZt5/lsAHch6Z3L2ZGn5FA= github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= github.com/grafana/river v0.3.0 h1:6TsaR/vkkcppUM9I0muGbPIUedCtpPu6OWreE5+CE6g= @@ -3028,12 +3028,12 @@ google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEc google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20230913181813-007df8e322eb h1:XFBgcDwm7irdHTbz4Zk2h7Mh+eis4nfJEFQFYzJzuIA= -google.golang.org/genproto v0.0.0-20230913181813-007df8e322eb/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= -google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb h1:lK0oleSc7IQsUxO3U5TjL9DWlsxpEBemh+zpB7IqhWI= -google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 h1:N3bU/SQDCDyD6R528GJ/PwW9KjYcJA3dgyH+MovAkIM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:KSqppvjFjtoCI+KGd4PELB0qLNxdJHRGqRI09mB6pQA= +google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a h1:fwgW9j3vHirt4ObdHoYNwuO24BEZjSzbh+zPaNWoiY8= +google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:EMfReVxb80Dq1hhioy0sOsY9jCE46YDgHlJ7fWVUWRE= +google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97 h1:W18sezcAYs+3tDZX4F80yctqa12jcP1PUS2gQu1zTPU= +google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97/go.mod h1:iargEX0SFPm3xcfMI0d1domjg0ZF4Aa0p2awqyxhvF0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b h1:ZlWIi1wSK56/8hn4QcBp/j9M7Gt3U/3hZw3mC7vDICo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= google.golang.org/grpc v0.0.0-20180920234847-8997b5fa0873/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -3070,8 +3070,8 @@ google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnD google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= -google.golang.org/grpc v1.58.3 h1:BjnpXut1btbtgN/6sp+brB2Kbm2LjNXnidYujAVbSoQ= -google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From 4416b3072caca0385d7af65c11ad0420b1fa8d82 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 9 Nov 2023 08:54:34 +0000 Subject: [PATCH 010/166] Update `make docs` procedure (#5742) Co-authored-by: grafanabot --- docs/make-docs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/make-docs b/docs/make-docs index 751e22f4fd48..25176a37f051 100755 --- a/docs/make-docs +++ b/docs/make-docs @@ -6,6 +6,14 @@ # [Semantic versioning](https://semver.org/) is used to help the reader identify the significance of changes. # Changes are relevant to this script and the support docs.mk GNU Make interface. # + +# ## 5.1.2 (2023-11-08) +# +# ### Added +# +# - Hide manual_mount warning messages from non-debug output. +# Set the DEBUG environment variable to see all hidden messages. +# # ## 5.1.1 (2023-10-30) # # ### Added @@ -779,7 +787,8 @@ EOF -e '/website-proxy/ d' \ -e '/rm -rf dist*/ d' \ -e '/Press Ctrl+C to stop/ d' \ - -e '/make/ d' + -e '/make/ d' \ + -e '/WARNING: The manual_mount source directory/ d' fi ;; esac From 1caf600fbf7349ba7ae4b248d852896182029bb4 Mon Sep 17 00:00:00 2001 From: Mikhail Aksenov Date: Thu, 9 Nov 2023 16:20:04 +0100 Subject: [PATCH 011/166] docs: add a tenant example to prometheus.remote_write.md (#5737) * Add a tenant example to prometheus.remote_write.md This commit adds an example for pushing the metrics to a multi-tenant Mimir instance with non-default tenant. It could be useful for people who have less experience with multi-tenant Mimir, but would like to have a clear example how to use recommended way for ingestion there. * Update docs/sources/flow/reference/components/prometheus.remote_write.md Add a missing article. Co-authored-by: Clayton Cornell <131809008+clayton-cornell@users.noreply.github.com> * formatting + more generic Mimir url in the snippet * A minor nit Co-authored-by: Mischa Thompson --------- Co-authored-by: Clayton Cornell <131809008+clayton-cornell@users.noreply.github.com> Co-authored-by: Mischa Thompson --- .../components/prometheus.remote_write.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/sources/flow/reference/components/prometheus.remote_write.md b/docs/sources/flow/reference/components/prometheus.remote_write.md index 7ce3250a351e..ca8ab98051c2 100644 --- a/docs/sources/flow/reference/components/prometheus.remote_write.md +++ b/docs/sources/flow/reference/components/prometheus.remote_write.md @@ -362,6 +362,24 @@ prometheus.scrape "demo" { } ``` + +### Send metrics to a Mimir instance with a tenant specified + +You can create a `prometheus.remote_write` component that sends your metrics to a specific tenant within the Mimir instance. This is useful when your Mimir instance is using more than one tenant: + +```river +prometheus.remote_write "staging" { + // Send metrics to a Mimir instance + endpoint { + url = "http://mimir:9009/api/v1/push" + + headers = { + "X-Scope-OrgID" = "staging" + } + } +} +``` + ### Send metrics to a managed service You can create a `prometheus.remote_write` component that sends your metrics to a managed service, for example, Grafana Cloud. The Prometheus username and the Grafana Cloud API Key are injected in this example through environment variables. From d719e7dae7ac7abe9e83637060e79f82e45278e6 Mon Sep 17 00:00:00 2001 From: Paulin Todev Date: Thu, 9 Nov 2023 21:14:44 +0000 Subject: [PATCH 012/166] Remove note about "from_context" not working. (#5405) The underlying issue has been fixed, and this comment no longer applies. Co-authored-by: Clayton Cornell <131809008+clayton-cornell@users.noreply.github.com> --- .../flow/reference/components/otelcol.auth.headers.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/docs/sources/flow/reference/components/otelcol.auth.headers.md b/docs/sources/flow/reference/components/otelcol.auth.headers.md index dd2fdf647eae..bd93a9045e31 100644 --- a/docs/sources/flow/reference/components/otelcol.auth.headers.md +++ b/docs/sources/flow/reference/components/otelcol.auth.headers.md @@ -74,13 +74,6 @@ The `value` attribute sets the value of the header directly. Alternatively, `from_context` can be used to dynamically retrieve the header value from request metadata. -> **NOTE**: It is not possible to use `from_context` to get the header value if -> [the `otelcol.processor.batch` component][otelcol.processor.batch] is used to -> batch before data is sent to the component referencing -> `otelcol.auth.headers`. - -[otelcol.processor.batch]: {{< relref "./otelcol.processor.batch.md" >}} - ## Exported fields The following fields are exported and can be referenced by other components: From 70f8e9575f63883daacfb84cf33da0820c0f0c2a Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Fri, 10 Nov 2023 14:47:40 +0000 Subject: [PATCH 013/166] Fix logging issue (#5752) --- pkg/flow/logging/level/level.go | 10 +- pkg/flow/logging/logger_test.go | 178 ++++++++++++++++++++++++++++---- 2 files changed, 164 insertions(+), 24 deletions(-) diff --git a/pkg/flow/logging/level/level.go b/pkg/flow/logging/level/level.go index 01730c032667..bff1fa09c3c4 100644 --- a/pkg/flow/logging/level/level.go +++ b/pkg/flow/logging/level/level.go @@ -15,22 +15,22 @@ const ( // Error returns a logger that includes a Key/ErrorValue pair. func Error(logger log.Logger) log.Logger { - return toLevel(logger, "error", slog.LevelError) + return toLevel(logger, gokitlevel.ErrorValue(), slog.LevelError) } // Warn returns a logger that includes a Key/WarnValue pair. func Warn(logger log.Logger) log.Logger { - return toLevel(logger, "warn", slog.LevelWarn) + return toLevel(logger, gokitlevel.WarnValue(), slog.LevelWarn) } // Info returns a logger that includes a Key/InfoValue pair. func Info(logger log.Logger) log.Logger { - return toLevel(logger, "info", slog.LevelInfo) + return toLevel(logger, gokitlevel.InfoValue(), slog.LevelInfo) } // Debug returns a logger that includes a Key/DebugValue pair. func Debug(logger log.Logger) log.Logger { - return toLevel(logger, "debug", slog.LevelDebug) + return toLevel(logger, gokitlevel.DebugValue(), slog.LevelDebug) } func NewFilter(next log.Logger, options ...gokitlevel.Option) log.Logger { @@ -45,7 +45,7 @@ func AllowInfo() gokitlevel.Option { return gokitlevel.AllowInfo() } -func toLevel(logger log.Logger, level string, slogLevel slog.Level) log.Logger { +func toLevel(logger log.Logger, level gokitlevel.Value, slogLevel slog.Level) log.Logger { switch l := logger.(type) { case logging.EnabledAware: if !l.Enabled(context.Background(), slogLevel) { diff --git a/pkg/flow/logging/logger_test.go b/pkg/flow/logging/logger_test.go index c1ab066f9ec0..d199f1488747 100644 --- a/pkg/flow/logging/logger_test.go +++ b/pkg/flow/logging/logger_test.go @@ -1,12 +1,15 @@ package logging_test import ( + "bytes" "fmt" "io" "log/slog" + "strings" "testing" "time" + "github.com/go-kit/log" gokitlevel "github.com/go-kit/log/level" "github.com/grafana/agent/pkg/flow/logging" flowlevel "github.com/grafana/agent/pkg/flow/logging/level" @@ -18,21 +21,152 @@ $ go test -count=1 -benchmem ./pkg/flow/logging -run ^$ -bench BenchmarkLogging_ goos: darwin goarch: arm64 pkg: github.com/grafana/agent/pkg/flow/logging -BenchmarkLogging_NoLevel_Prints-8 797337 1492 ns/op 368 B/op 11 allocs/op -BenchmarkLogging_NoLevel_Drops-8 44667505 27.06 ns/op 8 B/op 0 allocs/op -BenchmarkLogging_GoKitLevel_Drops_Sprintf-8 3569900 336.1 ns/op 320 B/op 8 allocs/op -BenchmarkLogging_GoKitLevel_Drops-8 6698175 180.7 ns/op 472 B/op 5 allocs/op -BenchmarkLogging_GoKitLevel_Prints-8 705537 1688 ns/op 849 B/op 16 allocs/op -BenchmarkLogging_Slog_Drops-8 79589450 15.10 ns/op 8 B/op 0 allocs/op -BenchmarkLogging_Slog_Prints-8 1000000 1127 ns/op 32 B/op 2 allocs/op -BenchmarkLogging_FlowLevel_Drops-8 20856249 55.64 ns/op 168 B/op 2 allocs/op -BenchmarkLogging_FlowLevel_Prints-8 701811 1713 ns/op 849 B/op 16 allocs/op +BenchmarkLogging_NoLevel_Prints-8 722358 1524 ns/op 368 B/op 11 allocs/op +BenchmarkLogging_NoLevel_Drops-8 47103154 25.59 ns/op 8 B/op 0 allocs/op +BenchmarkLogging_GoKitLevel_Drops_Sprintf-8 3585387 332.1 ns/op 320 B/op 8 allocs/op +BenchmarkLogging_GoKitLevel_Drops-8 6705489 176.6 ns/op 472 B/op 5 allocs/op +BenchmarkLogging_GoKitLevel_Prints-8 678214 1669 ns/op 849 B/op 16 allocs/op +BenchmarkLogging_Slog_Drops-8 79687671 15.09 ns/op 8 B/op 0 allocs/op +BenchmarkLogging_Slog_Prints-8 1000000 1119 ns/op 32 B/op 2 allocs/op +BenchmarkLogging_FlowLevel_Drops-8 21693330 58.45 ns/op 168 B/op 2 allocs/op +BenchmarkLogging_FlowLevel_Prints-8 720554 1672 ns/op 833 B/op 15 allocs/op */ const testStr = "this is a test string" +func TestLevels(t *testing.T) { + type testCase struct { + name string + logger func(w io.Writer) (log.Logger, error) + message string + expected string + } + + var testCases = []testCase{ + { + name: "no level - prints", + logger: func(w io.Writer) (log.Logger, error) { return logging.New(w, debugLevel()) }, + message: "hello", + expected: "level=info msg=hello\n", + }, + { + name: "no level - drops", + logger: func(w io.Writer) (log.Logger, error) { return logging.New(w, warnLevel()) }, + message: "hello", + expected: "", + }, + { + name: "flow info level - drops", + logger: func(w io.Writer) (log.Logger, error) { + logger, err := logging.New(w, warnLevel()) + return flowlevel.Info(logger), err + }, + message: "hello", + expected: "", + }, + { + name: "flow debug level - prints", + logger: func(w io.Writer) (log.Logger, error) { + logger, err := logging.New(w, debugLevel()) + return flowlevel.Debug(logger), err + }, + message: "hello", + expected: "level=debug msg=hello\n", + }, + { + name: "flow info level - prints", + logger: func(w io.Writer) (log.Logger, error) { + logger, err := logging.New(w, infoLevel()) + return flowlevel.Info(logger), err + }, + message: "hello", + expected: "level=info msg=hello\n", + }, + { + name: "flow warn level - prints", + logger: func(w io.Writer) (log.Logger, error) { + logger, err := logging.New(w, debugLevel()) + return flowlevel.Warn(logger), err + }, + message: "hello", + expected: "level=warn msg=hello\n", + }, + { + name: "flow error level - prints", + logger: func(w io.Writer) (log.Logger, error) { + logger, err := logging.New(w, debugLevel()) + return flowlevel.Error(logger), err + }, + message: "hello", + expected: "level=error msg=hello\n", + }, + { + name: "gokit info level - drops", + logger: func(w io.Writer) (log.Logger, error) { + logger, err := logging.New(w, warnLevel()) + return gokitlevel.Info(logger), err + }, + message: "hello", + expected: "", + }, + { + name: "gokit debug level - prints", + logger: func(w io.Writer) (log.Logger, error) { + logger, err := logging.New(w, debugLevel()) + return gokitlevel.Debug(logger), err + }, + message: "hello", + expected: "level=debug msg=hello\n", + }, + { + name: "gokit info level - prints", + logger: func(w io.Writer) (log.Logger, error) { + logger, err := logging.New(w, infoLevel()) + return gokitlevel.Info(logger), err + }, + message: "hello", + expected: "level=info msg=hello\n", + }, + { + name: "gokit warn level - prints", + logger: func(w io.Writer) (log.Logger, error) { + logger, err := logging.New(w, debugLevel()) + return gokitlevel.Warn(logger), err + }, + message: "hello", + expected: "level=warn msg=hello\n", + }, + { + name: "gokit error level - prints", + logger: func(w io.Writer) (log.Logger, error) { + logger, err := logging.New(w, debugLevel()) + return gokitlevel.Error(logger), err + }, + message: "hello", + expected: "level=error msg=hello\n", + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + buffer := bytes.NewBuffer(nil) + logger, err := tc.logger(buffer) + require.NoError(t, err) + logger.Log("msg", tc.message) + + if tc.expected == "" { + require.Empty(t, buffer.String()) + } else { + require.Contains(t, buffer.String(), "ts=") + noTimestamp := strings.Join(strings.Split(buffer.String(), " ")[1:], " ") + require.Equal(t, tc.expected, noTimestamp) + } + }) + } +} + func BenchmarkLogging_NoLevel_Prints(b *testing.B) { - logger, err := logging.New(io.Discard, debugLevelOptions()) + logger, err := logging.New(io.Discard, infoLevel()) require.NoError(b, err) testErr := fmt.Errorf("test error") @@ -42,7 +176,7 @@ func BenchmarkLogging_NoLevel_Prints(b *testing.B) { } func BenchmarkLogging_NoLevel_Drops(b *testing.B) { - logger, err := logging.New(io.Discard, warnLevelOptions()) + logger, err := logging.New(io.Discard, warnLevel()) require.NoError(b, err) testErr := fmt.Errorf("test error") @@ -52,7 +186,7 @@ func BenchmarkLogging_NoLevel_Drops(b *testing.B) { } func BenchmarkLogging_GoKitLevel_Drops_Sprintf(b *testing.B) { - logger, err := logging.New(io.Discard, debugLevelOptions()) + logger, err := logging.New(io.Discard, infoLevel()) require.NoError(b, err) testErr := fmt.Errorf("test error") @@ -62,7 +196,7 @@ func BenchmarkLogging_GoKitLevel_Drops_Sprintf(b *testing.B) { } func BenchmarkLogging_GoKitLevel_Drops(b *testing.B) { - logger, err := logging.New(io.Discard, debugLevelOptions()) + logger, err := logging.New(io.Discard, infoLevel()) require.NoError(b, err) testErr := fmt.Errorf("test error") @@ -72,7 +206,7 @@ func BenchmarkLogging_GoKitLevel_Drops(b *testing.B) { } func BenchmarkLogging_GoKitLevel_Prints(b *testing.B) { - logger, err := logging.New(io.Discard, debugLevelOptions()) + logger, err := logging.New(io.Discard, infoLevel()) require.NoError(b, err) testErr := fmt.Errorf("test error") @@ -105,7 +239,7 @@ func BenchmarkLogging_Slog_Prints(b *testing.B) { } func BenchmarkLogging_FlowLevel_Drops(b *testing.B) { - logger, err := logging.New(io.Discard, debugLevelOptions()) + logger, err := logging.New(io.Discard, infoLevel()) require.NoError(b, err) testErr := fmt.Errorf("test error") @@ -115,7 +249,7 @@ func BenchmarkLogging_FlowLevel_Drops(b *testing.B) { } func BenchmarkLogging_FlowLevel_Prints(b *testing.B) { - logger, err := logging.New(io.Discard, debugLevelOptions()) + logger, err := logging.New(io.Discard, infoLevel()) require.NoError(b, err) testErr := fmt.Errorf("test error") @@ -124,15 +258,21 @@ func BenchmarkLogging_FlowLevel_Prints(b *testing.B) { } } -func debugLevelOptions() logging.Options { +func debugLevel() logging.Options { opts := logging.Options{} opts.SetToDefault() + opts.Level = logging.LevelDebug + return opts +} + +func infoLevel() logging.Options { + opts := debugLevel() opts.Level = logging.LevelInfo return opts } -func warnLevelOptions() logging.Options { - opts := debugLevelOptions() +func warnLevel() logging.Options { + opts := debugLevel() opts.Level = logging.LevelWarn return opts } From 867910b25c2c445a23514dac6f13c9ba1ec4cbac Mon Sep 17 00:00:00 2001 From: Francois Gouteroux Date: Fri, 10 Nov 2023 20:11:52 +0100 Subject: [PATCH 014/166] fix(agentctl): set exit code 1 on non-runnable command (#5717) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: François Gouteroux --- CHANGELOG.md | 2 ++ cmd/grafana-agentctl/main.go | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 04afa8db6148..a12e820ddf37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -101,6 +101,8 @@ Main (unreleased) ### Bugfixes +- Set exit code 1 on grafana-agentctl non-runnable command. (@fgouteroux) + - Fixed an issue where `loki.process` validation for stage `metric.counter` was allowing invalid combination of configuration options. (@thampiotr) diff --git a/cmd/grafana-agentctl/main.go b/cmd/grafana-agentctl/main.go index 6865a4bc412d..5219f85a0f2f 100644 --- a/cmd/grafana-agentctl/main.go +++ b/cmd/grafana-agentctl/main.go @@ -64,7 +64,9 @@ func main() { testLogs(), ) - _ = cmd.Execute() + if err := cmd.Execute(); err != nil { + os.Exit(1) + } } func configSyncCmd() *cobra.Command { From c2c40f8a27abe71e35eedf440ab25ae44bf8a9ff Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Mon, 13 Nov 2023 10:52:25 +0000 Subject: [PATCH 015/166] Make worker pool more resilient to slow tasks (#5751) * Make worker pool more resilient to slow tasks * CHANGELOG.md * fix invalid pointer --- CHANGELOG.md | 2 + pkg/flow/flow_updates_test.go | 4 +- pkg/flow/internal/worker/worker_pool.go | 201 ++++++++++++------- pkg/flow/internal/worker/worker_pool_test.go | 118 +++++++++-- pkg/flow/module_test.go | 2 +- 5 files changed, 236 insertions(+), 91 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a12e820ddf37..92b37f905438 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -99,6 +99,8 @@ Main (unreleased) - Added support for unicode strings in `pyroscope.ebpf` python profiles. (@korniltsev) +- Improved resilience of graph evaluation in presence of slow components. (@thampiotr) + ### Bugfixes - Set exit code 1 on grafana-agentctl non-runnable command. (@fgouteroux) diff --git a/pkg/flow/flow_updates_test.go b/pkg/flow/flow_updates_test.go index 90960f6eef8e..c2349928f06a 100644 --- a/pkg/flow/flow_updates_test.go +++ b/pkg/flow/flow_updates_test.go @@ -114,7 +114,7 @@ func TestController_Updates_WithQueueFull(t *testing.T) { ModuleRegistry: newModuleRegistry(), IsModule: false, // The small number of workers and small queue means that a lot of updates will need to be retried. - WorkerPool: worker.NewShardedWorkerPool(1, 1), + WorkerPool: worker.NewFixedWorkerPool(1, 1), }) // Use testUpdatesFile from graph_builder_test.go. @@ -376,6 +376,6 @@ func newTestController(t *testing.T) *Flow { ModuleRegistry: newModuleRegistry(), IsModule: false, // Make sure that we have consistent number of workers for tests to make them deterministic. - WorkerPool: worker.NewShardedWorkerPool(4, 100), + WorkerPool: worker.NewFixedWorkerPool(4, 100), }) } diff --git a/pkg/flow/internal/worker/worker_pool.go b/pkg/flow/internal/worker/worker_pool.go index b5ff904b2024..25a8eeebe536 100644 --- a/pkg/flow/internal/worker/worker_pool.go +++ b/pkg/flow/internal/worker/worker_pool.go @@ -2,8 +2,6 @@ package worker import ( "fmt" - "hash/fnv" - "math/rand" "runtime" "sync" ) @@ -12,102 +10,72 @@ type Pool interface { // Stop stops the worker pool. It does not wait to drain any internal queues, but it does wait for the currently // running tasks to complete. It must only be called once. Stop() - // Submit submits a function to be executed by the worker pool on a random worker. Error is returned if the pool - // is unable to accept extra work. - Submit(func()) error - // SubmitWithKey submits a function to be executed by the worker pool, ensuring that only one - // job with given key can be queued at the time. Adding a job with a key that is already queued is a no-op (even if - // the submitted function is different). Error is returned if the pool is unable to accept extra work - the caller - // can decide how to handle this situation. + // SubmitWithKey submits a function to be executed by the worker pool, ensuring that: + // * Only one job with given key can be waiting to be executed at the time. This is desired if we don't want to + // run the same task multiple times, e.g. if it's a component update that we only need to run once. + // * Only one job with given key can be running at the time. This is desired when we don't want to duplicate work, + // and we want to protect the pool from a slow task hogging all the workers. + // + // Note that it is possible to have two tasks with the same key in the pool at the same time: one waiting to be + // executed and another one running. This ensures that a request to re-run a task with the same key is not lost. + // + // Adding a job with a key that is already queued is a no-op (even if the submitted function is different). + // Error is returned if the pool is unable to accept extra work - the caller can decide how to handle this situation. SubmitWithKey(string, func()) error - // QueueSize returns the number of tasks currently queued. + // QueueSize returns the number of tasks currently queued or running. QueueSize() int } -// shardedWorkerPool is a Pool that distributes work across a fixed number of workers, using a hash of the key to -// determine which worker to use. This, to an extent, defends the pool from a slow task hogging all the workers. -type shardedWorkerPool struct { +// fixedWorkerPool is a Pool that distributes work across a fixed number of workers. It uses workQueue to ensure +// that SubmitWithKey guarantees are met. +type fixedWorkerPool struct { workersCount int - workQueues []chan func() + workQueue *workQueue quit chan struct{} allStopped sync.WaitGroup - - lock sync.Mutex - set map[string]struct{} } -var _ Pool = (*shardedWorkerPool)(nil) +var _ Pool = (*fixedWorkerPool)(nil) func NewDefaultWorkerPool() Pool { - return NewShardedWorkerPool(runtime.NumCPU(), 1024) + return NewFixedWorkerPool(runtime.NumCPU(), 1024) } -// NewShardedWorkerPool creates a new worker pool with the given number of workers and queue size for each worker. -// The queued tasks are sharded across the workers using a hash of the key. The pool is automatically started and -// ready to accept work. To prevent resource leak, Stop() must be called when the pool is no longer needed. -func NewShardedWorkerPool(workersCount int, queueSize int) Pool { +// NewFixedWorkerPool creates a new Pool with the given number of workers and given max queue size. +// The max queue size is the maximum number of tasks that can be queued OR running at the same time. +// The tasks can run on a random worker, but workQueue ensures only one task with given key is running at a time. +// The pool is automatically started and ready to accept work. To prevent resource leak, Stop() must be called when the +// pool is no longer needed. +func NewFixedWorkerPool(workersCount int, maxQueueSize int) Pool { if workersCount <= 0 { panic(fmt.Sprintf("workersCount must be positive, got %d", workersCount)) } - queues := make([]chan func(), workersCount) - for i := 0; i < workersCount; i++ { - queues[i] = make(chan func(), queueSize) - } - pool := &shardedWorkerPool{ + pool := &fixedWorkerPool{ workersCount: workersCount, - workQueues: queues, + workQueue: newWorkQueue(maxQueueSize), quit: make(chan struct{}), - set: make(map[string]struct{}), } pool.start() return pool } -func (w *shardedWorkerPool) Submit(f func()) error { - return w.SubmitWithKey(fmt.Sprintf("%d", rand.Int()), f) -} - -func (w *shardedWorkerPool) SubmitWithKey(key string, f func()) error { - wrapped := func() { - // NOTE: we intentionally remove from the queue before executing the function. This means that while a task is - // executing, another task with the same key can be added to the queue, potentially even by the task itself. - w.lock.Lock() - delete(w.set, key) - w.lock.Unlock() - - f() - } - queue := w.workQueues[w.workerFor(key)] - - w.lock.Lock() - defer w.lock.Unlock() - if _, exists := w.set[key]; exists { - return nil // only queue one job for given key - } - - select { - case queue <- wrapped: - w.set[key] = struct{}{} - return nil - default: - return fmt.Errorf("worker queue is full") - } +func (w *fixedWorkerPool) SubmitWithKey(key string, f func()) error { + _, err := w.workQueue.tryEnqueue(key, f) + return err } -func (w *shardedWorkerPool) QueueSize() int { - w.lock.Lock() - defer w.lock.Unlock() - return len(w.set) +// QueueSize returns the number of tasks in the queue - waiting or currently running. +func (w *fixedWorkerPool) QueueSize() int { + return w.workQueue.queueSize() } -func (w *shardedWorkerPool) Stop() { +func (w *fixedWorkerPool) Stop() { close(w.quit) w.allStopped.Wait() } -func (w *shardedWorkerPool) start() { +func (w *fixedWorkerPool) start() { for i := 0; i < w.workersCount; i++ { - queue := w.workQueues[i] w.allStopped.Add(1) go func() { defer w.allStopped.Done() @@ -115,7 +83,7 @@ func (w *shardedWorkerPool) start() { select { case <-w.quit: return - case f := <-queue: + case f := <-w.workQueue.tasksToRun: f() } } @@ -123,8 +91,99 @@ func (w *shardedWorkerPool) start() { } } -func (w *shardedWorkerPool) workerFor(s string) int { - h := fnv.New32a() - _, _ = h.Write([]byte(s)) - return int(h.Sum32()) % w.workersCount +type workQueue struct { + maxSize int + tasksToRun chan func() + + lock sync.Mutex + waitingOrder []string + waiting map[string]func() + running map[string]struct{} +} + +func newWorkQueue(maxSize int) *workQueue { + return &workQueue{ + maxSize: maxSize, + tasksToRun: make(chan func(), maxSize), + waiting: make(map[string]func()), + running: make(map[string]struct{}), + } +} + +func (w *workQueue) tryEnqueue(key string, f func()) (bool, error) { + w.lock.Lock() + defer w.lock.Unlock() + + // Don't enqueue if same task already waiting + if _, exists := w.waiting[key]; exists { + return false, nil + } + + // Don't exceed queue size + queueSize := len(w.waitingOrder) + len(w.running) + if queueSize >= w.maxSize { + return false, fmt.Errorf("worker queue is full") + } + + // Else enqueue + w.waitingOrder = append(w.waitingOrder, key) + w.waiting[key] = f + + // A task may have become runnable now, emit it + w.emitNextTask() + + return true, nil +} + +func (w *workQueue) taskDone(key string) { + w.lock.Lock() + defer w.lock.Unlock() + delete(w.running, key) + // A task may have become runnable now, emit it + w.emitNextTask() +} + +// emitNextTask emits the next eligible task to be run if there is one. It must be called whenever the queue state +// changes (e.g. a task is added or a task finishes). The lock must be held when calling this function. +func (w *workQueue) emitNextTask() { + var ( + task func() + key string + index int + found = false + ) + + // Find the first key in waitingOrder that is not yet running + for i, k := range w.waitingOrder { + if _, alreadyRunning := w.running[k]; !alreadyRunning { + found, key, index = true, k, i + break + } + } + + // Return if we didn't find any task ready to run + if !found { + return + } + + // Remove the task from waiting and add it to running set + w.waitingOrder = append(w.waitingOrder[:index], w.waitingOrder[index+1:]...) + task = w.waiting[key] + delete(w.waiting, key) + w.running[key] = struct{}{} + + // Wrap the actual task to make sure we mark it as done when it finishes + wrapped := func() { + defer w.taskDone(key) + task() + } + + // Emit the task to be run. There will always be space in this buffered channel, because we limit queue size. + w.tasksToRun <- wrapped +} + +func (w *workQueue) queueSize() int { + w.lock.Lock() + defer w.lock.Unlock() + return len(w.waitingOrder) + len(w.running) } diff --git a/pkg/flow/internal/worker/worker_pool_test.go b/pkg/flow/internal/worker/worker_pool_test.go index 27b5c24b7ebc..3a594cba2622 100644 --- a/pkg/flow/internal/worker/worker_pool_test.go +++ b/pkg/flow/internal/worker/worker_pool_test.go @@ -1,6 +1,7 @@ package worker import ( + "fmt" "testing" "time" @@ -13,7 +14,7 @@ func TestWorkerPool(t *testing.T) { t.Run("worker pool", func(t *testing.T) { t.Run("should start and stop cleanly", func(t *testing.T) { defer goleak.VerifyNone(t) - pool := NewShardedWorkerPool(4, 1) + pool := NewFixedWorkerPool(4, 1) require.Equal(t, 0, pool.QueueSize()) defer pool.Stop() }) @@ -22,28 +23,28 @@ func TestWorkerPool(t *testing.T) { defer goleak.VerifyNone(t) require.Panics(t, func() { - NewShardedWorkerPool(0, 0) + NewFixedWorkerPool(0, 0) }) require.Panics(t, func() { - NewShardedWorkerPool(-1, 0) + NewFixedWorkerPool(-1, 0) }) }) t.Run("should reject invalid buffer size", func(t *testing.T) { defer goleak.VerifyNone(t) require.Panics(t, func() { - NewShardedWorkerPool(1, -1) + NewFixedWorkerPool(1, -1) }) }) t.Run("should process a single task", func(t *testing.T) { defer goleak.VerifyNone(t) done := make(chan struct{}) - pool := NewShardedWorkerPool(4, 1) + pool := NewFixedWorkerPool(4, 1) defer pool.Stop() - err := pool.Submit(func() { + err := pool.SubmitWithKey("123", func() { done <- struct{}{} }) require.NoError(t, err) @@ -59,7 +60,7 @@ func TestWorkerPool(t *testing.T) { t.Run("should process a single task with key", func(t *testing.T) { defer goleak.VerifyNone(t) done := make(chan struct{}) - pool := NewShardedWorkerPool(4, 1) + pool := NewFixedWorkerPool(4, 1) defer pool.Stop() err := pool.SubmitWithKey("testKey", func() { @@ -77,7 +78,7 @@ func TestWorkerPool(t *testing.T) { t.Run("should not queue duplicated keys", func(t *testing.T) { defer goleak.VerifyNone(t) - pool := NewShardedWorkerPool(4, 10) + pool := NewFixedWorkerPool(4, 10) defer pool.Stop() tasksDone := atomic.Int32{} @@ -90,17 +91,18 @@ func TestWorkerPool(t *testing.T) { tasksDone.Inc() }) require.NoError(t, err) + defer func() { close(blockFirstTask) }() // Wait for the first task to be running already and blocking the worker <-firstTaskRunning - require.Equal(t, 0, pool.QueueSize()) + require.Equal(t, 1, pool.QueueSize()) // Second task will be queued err = pool.SubmitWithKey("k1", func() { tasksDone.Inc() }) require.NoError(t, err) - require.Equal(t, 1, pool.QueueSize()) + require.Equal(t, 2, pool.QueueSize()) // Third task will be skipped, as we already have k1 in the queue err = pool.SubmitWithKey("k1", func() { @@ -115,17 +117,17 @@ func TestWorkerPool(t *testing.T) { blockFirstTask <- struct{}{} require.Eventually(t, func() bool { return tasksDone.Load() == 2 - }, 3*time.Second, 5*time.Millisecond) + }, 3*time.Second, 1*time.Millisecond) require.Equal(t, 0, pool.QueueSize()) // No more tasks should be done, verify again with some delay - time.Sleep(100 * time.Millisecond) + time.Sleep(10 * time.Millisecond) require.Equal(t, int32(2), tasksDone.Load()) }) t.Run("should concurrently process for different keys", func(t *testing.T) { defer goleak.VerifyNone(t) - pool := NewShardedWorkerPool(4, 10) + pool := NewFixedWorkerPool(4, 10) defer pool.Stop() tasksDone := atomic.Int32{} @@ -138,6 +140,7 @@ func TestWorkerPool(t *testing.T) { tasksDone.Inc() }) require.NoError(t, err) + defer func() { close(blockFirstTask) }() // Wait for the first task to be running already and blocking the worker <-firstTaskRunning @@ -164,7 +167,7 @@ func TestWorkerPool(t *testing.T) { t.Run("should reject when queue is full", func(t *testing.T) { defer goleak.VerifyNone(t) // Pool with one worker and queue size of 1 - all work goes to one queue - pool := NewShardedWorkerPool(1, 1) + pool := NewFixedWorkerPool(1, 2) defer pool.Stop() tasksDone := atomic.Int32{} @@ -177,21 +180,102 @@ func TestWorkerPool(t *testing.T) { tasksDone.Inc() }) require.NoError(t, err) - defer func() { blockFirstTask <- struct{}{} }() + defer func() { close(blockFirstTask) }() // Wait for the first task to be running already and blocking the worker <-firstTaskRunning - require.Equal(t, 0, pool.QueueSize()) + require.Equal(t, 1, pool.QueueSize()) // Second task will be queued err = pool.SubmitWithKey("k2", func() { tasksDone.Inc() }) require.NoError(t, err) - require.Equal(t, 1, pool.QueueSize()) + require.Equal(t, 2, pool.QueueSize()) // Third task cannot be accepted, because the queue is full err = pool.SubmitWithKey("k3", func() { tasksDone.Inc() }) require.ErrorContains(t, err, "queue is full") + require.Equal(t, 2, pool.QueueSize()) + }) + + t.Run("should not block when one task is stuck", func(t *testing.T) { + defer goleak.VerifyNone(t) + tasksCount := 1000 + + // Queue size is sufficient to queue all tasks + pool := NewFixedWorkerPool(3, tasksCount+1) + defer pool.Stop() + tasksDone := atomic.Int32{} + + // First task will block + blockFirstTask := make(chan struct{}) + firstTaskRunning := make(chan struct{}) + err := pool.SubmitWithKey("k-blocking", func() { + firstTaskRunning <- struct{}{} + <-blockFirstTask + tasksDone.Inc() + }) + require.NoError(t, err) + defer func() { close(blockFirstTask) }() + + // Wait for the first task to be running already and blocking the worker + <-firstTaskRunning + require.Equal(t, 1, pool.QueueSize()) + + // Submit a lot of tasks with random keys - no task should be blocked by the above one. + for i := 0; i < tasksCount; i++ { + err = pool.SubmitWithKey(fmt.Sprintf("t%d", i), func() { tasksDone.Inc() }) + require.NoError(t, err) + } + + // Ensure all tasks are done + require.Eventually(t, func() bool { + return tasksDone.Load() == int32(tasksCount) + }, 3*time.Second, 1*time.Millisecond) + }) + + t.Run("should NOT run concurrently tasks with the same key", func(t *testing.T) { + defer goleak.VerifyNone(t) + tasksCount := 1000 + + // Queue size is sufficient to queue all tasks + pool := NewFixedWorkerPool(10, 10) + defer pool.Stop() + tasksDone := atomic.Int32{} + + // First task will block + blockFirstTask := make(chan struct{}) + firstTaskRunning := make(chan struct{}) + err := pool.SubmitWithKey("k1", func() { + firstTaskRunning <- struct{}{} + <-blockFirstTask + tasksDone.Inc() + }) + require.NoError(t, err) + defer func() { close(blockFirstTask) }() + + // Wait for the first task to be running already and blocking the worker + <-firstTaskRunning require.Equal(t, 1, pool.QueueSize()) + + // Enqueue one more task with the same key - it should be allowed + err = pool.SubmitWithKey("k1", func() { tasksDone.Inc() }) + require.NoError(t, err) + + // Submit a lot of tasks with same key - all should be a no-op, since this task is already in queue + for i := 0; i < tasksCount; i++ { + err = pool.SubmitWithKey("k1", func() { tasksDone.Inc() }) + require.NoError(t, err) + } + + require.Equal(t, int32(0), tasksDone.Load()) + + // Unblock the first task + blockFirstTask <- struct{}{} + + // The first task and the second one should be the only ones that complete + require.Eventually(t, func() bool { + return tasksDone.Load() == 2 + }, 3*time.Second, 1*time.Millisecond) }) }) } diff --git a/pkg/flow/module_test.go b/pkg/flow/module_test.go index 0a371bc99a63..4e4ddb9faaa8 100644 --- a/pkg/flow/module_test.go +++ b/pkg/flow/module_test.go @@ -250,7 +250,7 @@ func testModuleControllerOptions(t *testing.T) *moduleControllerOptions { DataPath: t.TempDir(), Reg: prometheus.NewRegistry(), ModuleRegistry: newModuleRegistry(), - WorkerPool: worker.NewShardedWorkerPool(1, 100), + WorkerPool: worker.NewFixedWorkerPool(1, 100), } } From 65d35ec855e0ad87f558eaa4cfff38c870fb7023 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Nov 2023 09:42:25 +0000 Subject: [PATCH 016/166] build(deps): bump aquasecurity/trivy-action from 0.13.0 to 0.14.0 (#5760) Bumps [aquasecurity/trivy-action](https://github.com/aquasecurity/trivy-action) from 0.13.0 to 0.14.0. - [Release notes](https://github.com/aquasecurity/trivy-action/releases) - [Commits](https://github.com/aquasecurity/trivy-action/compare/b77b85c0254bba6789e787844f0585cde1e56320...2b6a709cf9c4025c5438138008beaddbb02086f0) --- updated-dependencies: - dependency-name: aquasecurity/trivy-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/trivy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml index 2f4a44515099..4403f0515b02 100644 --- a/.github/workflows/trivy.yml +++ b/.github/workflows/trivy.yml @@ -26,7 +26,7 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@b77b85c0254bba6789e787844f0585cde1e56320 + uses: aquasecurity/trivy-action@2b6a709cf9c4025c5438138008beaddbb02086f0 with: image-ref: 'grafana/agent:main' format: 'template' From 97b6b8fcbd4a5ea5f0defd8763d0d8253266c74b Mon Sep 17 00:00:00 2001 From: George Krajcsovits Date: Tue, 14 Nov 2023 11:13:49 +0100 Subject: [PATCH 017/166] Fix wrong order of exemplars vs samples (#5750) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: György Krajcsovits --- CHANGELOG.md | 4 ++++ pkg/metrics/wal/wal.go | 16 ++++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 92b37f905438..5beddbba6d2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -139,6 +139,10 @@ Main (unreleased) - Updating configuration for `loki.write` no longer drops data. (@thepalbi) +- Fixed a bug in WAL where exemplars were recorded before the first native histogram samples for new series, + resulting in remote write sending the exemplar first and Prometheus failing to ingest it due to missing + series. (@krajorama) + v0.37.4 (2023-11-06) ----------------- diff --git a/pkg/metrics/wal/wal.go b/pkg/metrics/wal/wal.go index c3d74773755d..513a43df5da1 100644 --- a/pkg/metrics/wal/wal.go +++ b/pkg/metrics/wal/wal.go @@ -894,24 +894,28 @@ func (a *appender) log() error { buf = buf[:0] } - if len(a.pendingExamplars) > 0 { - buf = encoder.Exemplars(a.pendingExamplars, buf) + if len(a.pendingHistograms) > 0 { + buf = encoder.HistogramSamples(a.pendingHistograms, buf) if err := a.w.wal.Log(buf); err != nil { return err } buf = buf[:0] } - if len(a.pendingHistograms) > 0 { - buf = encoder.HistogramSamples(a.pendingHistograms, buf) + if len(a.pendingFloatHistograms) > 0 { + buf = encoder.FloatHistogramSamples(a.pendingFloatHistograms, buf) if err := a.w.wal.Log(buf); err != nil { return err } buf = buf[:0] } - if len(a.pendingFloatHistograms) > 0 { - buf = encoder.FloatHistogramSamples(a.pendingFloatHistograms, buf) + // Exemplars should be logged after samples (float/native histogram/etc), + // otherwise it might happen that we send the exemplars in a remote write + // batch before the samples, which in turn means the exemplar is rejected + // for missing series, since series are created due to samples. + if len(a.pendingExamplars) > 0 { + buf = encoder.Exemplars(a.pendingExamplars, buf) if err := a.w.wal.Log(buf); err != nil { return err } From 3f3138448f3a2038886228e61720c86f1f93866a Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Tue, 14 Nov 2023 11:58:36 +0000 Subject: [PATCH 018/166] Benchmark for the queue (#5765) * Benchmark for the queue * update test --- pkg/flow/internal/worker/worker_pool.go | 5 +- pkg/flow/internal/worker/worker_pool_test.go | 68 ++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/pkg/flow/internal/worker/worker_pool.go b/pkg/flow/internal/worker/worker_pool.go index 25a8eeebe536..bcd684475876 100644 --- a/pkg/flow/internal/worker/worker_pool.go +++ b/pkg/flow/internal/worker/worker_pool.go @@ -166,7 +166,10 @@ func (w *workQueue) emitNextTask() { return } - // Remove the task from waiting and add it to running set + // Remove the task from waiting and add it to running set. + // NOTE: Even though we remove an element from the middle of a collection, we use a slice instead of a linked list. + // This code is NOT identified as a performance hot spot and given that in large agents we observe max number of + // tasks queued to be ~10, the slice is actually faster because it does not allocate memory. See BenchmarkQueue. w.waitingOrder = append(w.waitingOrder[:index], w.waitingOrder[index+1:]...) task = w.waiting[key] delete(w.waiting, key) diff --git a/pkg/flow/internal/worker/worker_pool_test.go b/pkg/flow/internal/worker/worker_pool_test.go index 3a594cba2622..7b9b1b6a1e99 100644 --- a/pkg/flow/internal/worker/worker_pool_test.go +++ b/pkg/flow/internal/worker/worker_pool_test.go @@ -1,6 +1,7 @@ package worker import ( + "container/list" "fmt" "testing" "time" @@ -279,3 +280,70 @@ func TestWorkerPool(t *testing.T) { }) }) } + +func BenchmarkQueue(b *testing.B) { + /* The slice-based implementation is faster when queue size is less than 100 elements, as it doesn't allocate: + + BenchmarkQueue/slice_10_elements-8 179793877 7.119 ns/op 0 B/op 0 allocs/op + BenchmarkQueue/list_10_elements-8 48129548 24.75 ns/op 48 B/op 1 allocs/op + BenchmarkQueue/slice_50_elements-8 100000000 11.52 ns/op 0 B/op 0 allocs/op + BenchmarkQueue/list_50_elements-8 52150766 22.81 ns/op 48 B/op 1 allocs/op + BenchmarkQueue/slice_100_elements-8 57941505 20.71 ns/op 0 B/op 0 allocs/op + BenchmarkQueue/list_100_elements-8 51232423 22.95 ns/op 48 B/op 1 allocs/op + BenchmarkQueue/slice_500_elements-8 12610141 95.32 ns/op 0 B/op 0 allocs/op + BenchmarkQueue/list_500_elements-8 51342938 22.84 ns/op 48 B/op 1 allocs/op + BenchmarkQueue/slice_1000_elements-8 6416760 187.6 ns/op 0 B/op 0 allocs/op + BenchmarkQueue/list_1000_elements-8 51942148 22.92 ns/op 48 B/op 1 allocs/op + */ + + queueSizes := []int{10, 50, 100, 500, 1000} + for _, queueSize := range queueSizes { + elementsStr := fmt.Sprintf("%d elements", queueSize) + b.Run("slice "+elementsStr, func(b *testing.B) { + var slice []string + for i := 0; i < queueSize; i++ { + slice = append(slice, fmt.Sprintf("some.component.name.%d", i)) + } + + b.ResetTimer() + for i := 0; i < b.N; i++ { + // simulate what the `workQueue` does with its `waitingOrder` field. + + // add to queue + slice = append(slice, "some.component.name") + + // iterate to an arbitrary element + ind := 0 + for ; ind < 5; ind++ { + _ = slice[ind] + } + + // remove it from the queue + slice = append(slice[:ind], slice[ind+1:]...) + } + }) + + b.Run("list "+elementsStr, func(b *testing.B) { + l := list.New() + for i := 0; i < queueSize; i++ { + l.PushBack(fmt.Sprintf("some.component.name.%d", i)) + } + + b.ResetTimer() + for i := 0; i < b.N; i++ { + // simulate what the `workQueue` does with its `waitingOrder` field. + + // add to queue + l.PushBack("some.component.name") + + // iterate to an arbitrary element + toRemove := l.Front() + for j := 0; j < 5; j++ { + toRemove = toRemove.Next() + } + // remove it from the queue using copy + l.Remove(toRemove) + } + }) + } +} From 196f531da3483de00f6c2b517e53ca3640e490cb Mon Sep 17 00:00:00 2001 From: Robert Fratto Date: Tue, 14 Nov 2023 10:42:26 -0500 Subject: [PATCH 019/166] CODEOWNERS: remove core set of maintainers from CODEOWNERS (#5769) Previously, CODEOWNERS were introduced to split PRs across the following groups: * @grafana/grafana-agent-core-maintainers * @grafana/grafana-agent-signals-maintainers * @grafana/grafana-agent-operator-maintainers * @grafana/grafana-agent-infrastructure-maintainers However, membership of these groups is broad, with a lot of overlap. Furthermore, high PR volume meant that members of these groups had a high amount of notification noise, which makes it difficult to track what work an individual is actually responsible for. This commit removes these four groups from CODEOWNERS, and shifts PR tracking to GitHub project boards. This reduces the notification noise of group members, and group members to more selectively choose what PRs they want to get involved in. --- CODEOWNERS | 49 ++++++++----------------------------------------- 1 file changed, 8 insertions(+), 41 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index f836c3737ca6..4f1541f12dbd 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,25 +1,10 @@ -# The following groups are used to refer to a changing set of users: +# The CODEOWNERS file is used to define ownership of individuals or teams +# outside of the core set of Grafana Agent maintainers. # -# * @grafana/grafana-agent-core-maintainers: maintainers of type/core issues. -# * @grafana/grafana-agent-signals-maintainers: maintainers of type/signals issues. -# * @grafana/grafana-agent-operator-maintainers: maintainers of type/operator issues. -# * @grafana/grafana-agent-infrastructure-maintainers: maintainers of type/infrastructure issues. -# -# Other users may be listed explicitly if maintainership does not fall into one -# of the above groups. - -# The default owners for everything in the repo. Unless a later match takes -# precedence, these owners are requested for review whenever someone opens a -# pull request. -* @grafana/grafana-agent-core-maintainers - -# Some directories have shared ownership with the respective owners of the -# specific code for the PR being opened, so there's no CODEOWNERS. -/CHANGELOG.md -/component/all - -# Binaries: -/cmd/grafana-agent-operator/ @grafana/grafana-agent-operator-maintainers +# If a directory is not listed here, it is assumed to be owned by the +# @grafana/grafana-agent-maintainers; they are not explicitly listed as +# CODEOWNERS as a GitHub project board is used instead for PR tracking, which +# helps reduce notification noise of the members of that team. # `make docs` procedure and related workflows are owned by @jdbaldry. /.github/workflows/publish-technical-documentation-next.yml @jdbaldry @@ -30,25 +15,7 @@ /docs/variables.mk @jdbaldry # Documentation: -/docs/sources/ @clayton-cornell +/docs/sources/ @clayton-cornell # Components: -/component/discovery/ @grafana/grafana-agent-infrastructure-maintainers -/component/local/ @grafana/grafana-agent-infrastructure-maintainers -/component/loki/ @grafana/grafana-agent-signals-maintainers -/component/loki/source/podlogs/ @grafana/grafana-agent-infrastructure-maintainers -/component/mimir/rules/kubernetes/ @grafana/grafana-agent-infrastructure-maintainers -/component/otelcol/ @grafana/grafana-agent-signals-maintainers -/component/prometheus/ @grafana/grafana-agent-signals-maintainers -/component/prometheus/exporter/ @grafana/grafana-agent-infrastructure-maintainers -/component/prometheus/operator/ @grafana/grafana-agent-operator-maintainers -/component/pyroscope/ @grafana/grafana-agent-profiling-maintainers -/component/remote/ @grafana/grafana-agent-infrastructure-maintainers - -# Static mode packages: -/pkg/integrations/ @grafana/grafana-agent-infrastructure-maintainers -/pkg/logs/ @grafana/grafana-agent-signals-maintainers -/pkg/metrics/ @grafana/grafana-agent-signals-maintainers -/pkg/mimir/client/ @grafana/grafana-agent-infrastructure-maintainers -/pkg/operator/ @grafana/grafana-agent-operator-maintainers -/pkg/traces/ @grafana/grafana-agent-signals-maintainers +/component/pyroscope/ @grafana/grafana-agent-profiling-maintainers From 6301a32d2a556f0b18e3822cdefbcb8a9684c5e7 Mon Sep 17 00:00:00 2001 From: Robert Fratto Date: Tue, 14 Nov 2023 15:42:13 -0500 Subject: [PATCH 020/166] ci: use Apple silicon macOS runners (#5771) Use the new Apple silicon macOS runner when running macOS tests. While these new runners are twice as expensive as the normal macOS runners, it is expected to be cost-neutral thanks to the speed increase. For more information, see GitHub's announcement about the new runners: https://github.blog/2023-10-02-introducing-the-new-apple-silicon-powered-m1-macos-larger-runner-for-github-actions/ --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4963743342e1..229de6f55dbe 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,7 +12,7 @@ jobs: name: Test strategy: matrix: - platform: [macos-latest] + platform: [macos-latest-xlarge] runs-on: ${{ matrix.platform }} steps: - name: Checkout code @@ -20,7 +20,7 @@ jobs: - name: Set up Go 1.21 uses: actions/setup-go@v4 with: - go-version: "1.21.0" + go-version: "1.21" cache: true - name: Test run: make GO_TAGS="nodocker" test From 94447c5ae542b42bf13b4c8ab29a796f60c9040d Mon Sep 17 00:00:00 2001 From: Paulin Todev Date: Tue, 14 Nov 2023 20:58:12 +0000 Subject: [PATCH 021/166] Added Kubernetes service resolver to loadbalancing exporters. (#5678) * Added kubernetes service resolver to loadbalancing exporter. * Mention the need to k8s roles * Change config attribute from "k8s" to "kubernetes" --------- Co-authored-by: Clayton Cornell <131809008+clayton-cornell@users.noreply.github.com> --- CHANGELOG.md | 3 + .../exporter/loadbalancing/loadbalancing.go | 33 ++++++- .../loadbalancing/loadbalancing_test.go | 53 +++++++++++ .../otelcol.exporter.loadbalancing.md | 22 +++++ .../static/configuration/traces-config.md | 3 + pkg/traces/config.go | 7 +- pkg/traces/config_test.go | 90 ++++++++++++++++++- 7 files changed, 206 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5beddbba6d2c..8063214858a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -156,6 +156,9 @@ v0.37.4 (2023-11-06) - Fix a bug where reloading the configuration of a `loki.write` component lead to a panic. (@tpaschalis) +- Added Kubernetes service resolver to static node's loadbalancing exporter + and to Flow's `otelcol.exporter.loadbalancing`. (@ptodev) + v0.37.3 (2023-10-26) ----------------- diff --git a/component/otelcol/exporter/loadbalancing/loadbalancing.go b/component/otelcol/exporter/loadbalancing/loadbalancing.go index 5fee871a7f03..3a8c2f87fdd0 100644 --- a/component/otelcol/exporter/loadbalancing/loadbalancing.go +++ b/component/otelcol/exporter/loadbalancing/loadbalancing.go @@ -137,8 +137,9 @@ func (otlpConfig OtlpConfig) Convert() otlpexporter.Config { // ResolverSettings defines the configurations for the backend resolver type ResolverSettings struct { - Static *StaticResolver `river:"static,block,optional"` - DNS *DNSResolver `river:"dns,block,optional"` + Static *StaticResolver `river:"static,block,optional"` + DNS *DNSResolver `river:"dns,block,optional"` + Kubernetes *KubernetesResolver `river:"kubernetes,block,optional"` } func (resolverSettings ResolverSettings) Convert() loadbalancingexporter.ResolverSettings { @@ -154,6 +155,11 @@ func (resolverSettings ResolverSettings) Convert() loadbalancingexporter.Resolve res.DNS = &dnsResolver } + if resolverSettings.Kubernetes != nil { + kubernetesResolver := resolverSettings.Kubernetes.Convert() + res.K8sSvc = &kubernetesResolver + } + return res } @@ -199,6 +205,29 @@ func (dnsResolver *DNSResolver) Convert() loadbalancingexporter.DNSResolver { } } +// KubernetesResolver defines the configuration for the k8s resolver +type KubernetesResolver struct { + Service string `river:"service,attr"` + Ports []int32 `river:"ports,attr,optional"` +} + +var _ river.Defaulter = &KubernetesResolver{} + +// SetToDefault implements river.Defaulter. +func (args *KubernetesResolver) SetToDefault() { + if args == nil { + args = &KubernetesResolver{} + } + args.Ports = []int32{4317} +} + +func (k8sSvcResolver *KubernetesResolver) Convert() loadbalancingexporter.K8sSvcResolver { + return loadbalancingexporter.K8sSvcResolver{ + Service: k8sSvcResolver.Service, + Ports: append([]int32{}, k8sSvcResolver.Ports...), + } +} + // Extensions implements exporter.Arguments. func (args Arguments) Extensions() map[otelcomponent.ID]otelextension.Extension { return args.Protocol.OTLP.Client.Extensions() diff --git a/component/otelcol/exporter/loadbalancing/loadbalancing_test.go b/component/otelcol/exporter/loadbalancing/loadbalancing_test.go index a5e0851fef3d..5e528dd373a3 100644 --- a/component/otelcol/exporter/loadbalancing/loadbalancing_test.go +++ b/component/otelcol/exporter/loadbalancing/loadbalancing_test.go @@ -203,6 +203,59 @@ func TestConfigConversion(t *testing.T) { Protocol: defaultProtocol, }, }, + { + testName: "k8s with defaults", + agentCfg: ` + resolver { + kubernetes { + service = "lb-svc.lb-ns" + } + } + protocol { + otlp { + client {} + } + } + `, + expected: loadbalancingexporter.Config{ + Resolver: loadbalancingexporter.ResolverSettings{ + Static: nil, + K8sSvc: &loadbalancingexporter.K8sSvcResolver{ + Service: "lb-svc.lb-ns", + Ports: []int32{4317}, + }, + }, + RoutingKey: "traceID", + Protocol: defaultProtocol, + }, + }, + { + testName: "k8s with non-defaults", + agentCfg: ` + resolver { + kubernetes { + service = "lb-svc.lb-ns" + ports = [55690, 55691] + } + } + protocol { + otlp { + client {} + } + } + `, + expected: loadbalancingexporter.Config{ + Resolver: loadbalancingexporter.ResolverSettings{ + Static: nil, + K8sSvc: &loadbalancingexporter.K8sSvcResolver{ + Service: "lb-svc.lb-ns", + Ports: []int32{55690, 55691}, + }, + }, + RoutingKey: "traceID", + Protocol: defaultProtocol, + }, + }, } for _, tc := range tests { diff --git a/docs/sources/flow/reference/components/otelcol.exporter.loadbalancing.md b/docs/sources/flow/reference/components/otelcol.exporter.loadbalancing.md index 5e42e1d318cf..f6951d828cf8 100644 --- a/docs/sources/flow/reference/components/otelcol.exporter.loadbalancing.md +++ b/docs/sources/flow/reference/components/otelcol.exporter.loadbalancing.md @@ -81,6 +81,7 @@ Hierarchy | Block | Description | Required resolver | [resolver][] | Configures discovering the endpoints to export to. | yes resolver > static | [static][] | Static list of endpoints to export to. | no resolver > dns | [dns][] | DNS-sourced list of endpoints to export to. | no +resolver > kubernetes | [kubernetes][] | Kubernetes-sourced list of endpoints to export to. | no protocol | [protocol][] | Protocol settings. Only OTLP is supported at the moment. | no protocol > otlp | [otlp][] | Configures an OTLP exporter. | no protocol > otlp > client | [client][] | Configures the exporter gRPC client. | no @@ -96,6 +97,7 @@ refers to a `static` block defined inside a `resolver` block. [resolver]: #resolver-block [static]: #static-block [dns]: #dns-block +[kubernetes]: #kubernetes-block [protocol]: #protocol-block [otlp]: #otlp-block [client]: #client-block @@ -137,6 +139,26 @@ Name | Type | Description | Default | Required `timeout` | `duration` | Resolver timeout. | `"1s"` | no `port` | `string` | Port to be used with the IP addresses resolved from the DNS hostname. | `"4317"` | no +### kubernetes block + +You can use the `kubernetes` block to load balance across the pods of a Kubernetes service. The Agent will be notified +by the Kubernetes API whenever a new pod is added or removed from the service. + +The following arguments are supported: + +Name | Type | Description | Default | Required +---- | ---- | ----------- | ------- | -------- +`service` | `string` | Kubernetes service to resolve. | | yes +`ports` | `list(number)` | Ports to use with the IP addresses resolved from `service`. | `[4317]` | no + +If no namespace is specified inside `service`, an attempt will be made to infer the namespace for this Agent. +If this fails, the `default` namespace will be used. + +Each of the ports listed in `ports` will be used with each of the IPs resolved from `service`. + +The "get", "list", and "watch" [roles](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#role-example) +must be granted in Kubernetes for the resolver to work. + ### protocol block The `protocol` block configures protocol-related settings for exporting. diff --git a/docs/sources/static/configuration/traces-config.md b/docs/sources/static/configuration/traces-config.md index b8c822f28bf8..57a2a724ea58 100644 --- a/docs/sources/static/configuration/traces-config.md +++ b/docs/sources/static/configuration/traces-config.md @@ -332,6 +332,9 @@ load_balancing: [ interval: | default = 5s ] # Resolver timeout [ timeout: | default = 1s ] + kubernetes: + service: + [ ports: | default = 4317 ] # routing_key can be either "traceID" or "service": # * "service": exports spans based on their service name. diff --git a/pkg/traces/config.go b/pkg/traces/config.go index be9adf1f56a9..69d7792a599f 100644 --- a/pkg/traces/config.go +++ b/pkg/traces/config.go @@ -64,8 +64,9 @@ const ( // defaultLoadBalancingPort is the default port the agent uses for internal load balancing defaultLoadBalancingPort = "4318" // agent's load balancing options - dnsTagName = "dns" - staticTagName = "static" + dnsTagName = "dns" + staticTagName = "static" + kubernetesTagName = "kubernetes" // sampling policies alwaysSamplePolicy = "always_sample" @@ -587,6 +588,8 @@ func resolver(config map[string]interface{}) (map[string]interface{}, error) { switch typ { case dnsTagName, staticTagName: resolverCfg[typ] = cfg + case kubernetesTagName: + resolverCfg["k8s"] = cfg default: return nil, fmt.Errorf("unsupported resolver config type: %s", typ) } diff --git a/pkg/traces/config_test.go b/pkg/traces/config_test.go index 80edb01b82f5..9ee9e0b32abf 100644 --- a/pkg/traces/config_test.go +++ b/pkg/traces/config_test.go @@ -754,7 +754,7 @@ service: `, }, { - name: "tail sampling config with load balancing", + name: "tail sampling config with DNS load balancing", cfg: ` receivers: jaeger: @@ -829,6 +829,94 @@ processors: - value1 - value2 extensions: {} +service: + pipelines: + traces/0: + exporters: ["loadbalancing"] + processors: [] + receivers: ["jaeger", "push_receiver"] + traces/1: + exporters: ["otlp/0"] + processors: ["tail_sampling"] + receivers: ["otlp/lb"] +`, + }, + { + name: "tail sampling config with Kubernetes load balancing", + cfg: ` +receivers: + jaeger: + protocols: + grpc: +remote_write: + - endpoint: example.com:12345 +tail_sampling: + policies: + - type: always_sample + - type: string_attribute + string_attribute: + key: key + values: + - value1 + - value2 +load_balancing: + receiver_port: 8181 + routing_key: service + exporter: + insecure: true + resolver: + kubernetes: + service: lb-svc.lb-ns + ports: + - 55690 + - 55691 +`, + expectedConfig: ` +receivers: + jaeger: + protocols: + grpc: + push_receiver: {} + otlp/lb: + protocols: + grpc: + endpoint: "0.0.0.0:8181" +exporters: + otlp/0: + endpoint: example.com:12345 + compression: gzip + retry_on_failure: + max_elapsed_time: 60s + loadbalancing: + routing_key: service + protocol: + otlp: + tls: + insecure: true + endpoint: noop + retry_on_failure: + max_elapsed_time: 60s + compression: none + resolver: + k8s: + service: lb-svc.lb-ns + ports: + - 55690 + - 55691 +processors: + tail_sampling: + decision_wait: 5s + policies: + - name: always_sample/0 + type: always_sample + - name: string_attribute/1 + type: string_attribute + string_attribute: + key: key + values: + - value1 + - value2 +extensions: {} service: pipelines: traces/0: From 218098a89df3127006941e0bd1e762cc02129e29 Mon Sep 17 00:00:00 2001 From: Jack Baldry Date: Wed, 15 Nov 2023 14:39:39 +0000 Subject: [PATCH 022/166] Update links to Grafana Cloud pages for content moved in https://github.com/grafana/website/pull/16313 (#5749) Signed-off-by: Jack Baldry Co-authored-by: Clayton Cornell <131809008+clayton-cornell@users.noreply.github.com> --- docs/sources/_index.md | 6 +-- docs/sources/_index.md.t | 6 +-- docs/sources/about.md | 6 +-- docs/sources/data-collection.md | 2 +- docs/sources/flow/concepts/clustering.md | 14 +++--- .../flow/concepts/component_controller.md | 6 +-- .../flow/concepts/configuration_language.md | 2 +- docs/sources/flow/concepts/modules.md | 8 ++-- .../collect-opentelemetry-data.md | 12 ++--- .../collect-prometheus-metrics.md | 10 ++--- .../configure-agent-clustering.md | 8 ++-- .../distribute-prometheus-scrape-load.md | 12 ++--- .../migrating-from-prometheus.md | 18 ++++---- .../migrating-from-promtail.md | 20 ++++----- .../getting-started/migrating-from-static.md | 44 +++++++++---------- .../opentelemetry-to-lgtm-stack.md | 20 ++++----- .../flow/monitoring/component_metrics.md | 6 +-- .../flow/monitoring/controller_metrics.md | 4 +- docs/sources/flow/monitoring/debugging.md | 10 ++--- .../flow/setup/configure/configure-linux.md | 4 +- .../flow/setup/configure/configure-macos.md | 2 +- .../flow/setup/configure/configure-windows.md | 2 +- docs/sources/flow/setup/install/_index.md | 2 +- docs/sources/flow/setup/install/binary.md | 4 +- docs/sources/flow/setup/install/docker.md | 4 +- docs/sources/flow/setup/install/kubernetes.md | 2 +- docs/sources/flow/setup/install/linux.md | 4 +- docs/sources/flow/setup/install/macos.md | 4 +- docs/sources/flow/setup/install/windows.md | 6 +-- docs/sources/flow/setup/start-agent.md | 2 +- .../sources/flow/tutorials/assets/generate.sh | 0 docs/sources/flow/tutorials/assets/runt.sh | 0 docs/sources/flow/tutorials/chaining.md | 2 +- .../collecting-prometheus-metrics.md | 10 ++--- .../flow/tutorials/filtering-metrics.md | 4 +- docs/sources/operator/release-notes.md | 2 +- .../configuration/create-config-file.md | 2 +- docs/sources/static/configuration/flags.md | 6 +-- docs/sources/static/set-up/install/_index.md | 2 +- 39 files changed, 139 insertions(+), 139 deletions(-) mode change 100755 => 100644 docs/sources/flow/tutorials/assets/generate.sh mode change 100755 => 100644 docs/sources/flow/tutorials/assets/runt.sh diff --git a/docs/sources/_index.md b/docs/sources/_index.md index 36d97758b795..865c936bba1c 100644 --- a/docs/sources/_index.md +++ b/docs/sources/_index.md @@ -104,13 +104,13 @@ Patch and security releases may be created at any time. {{% docs/reference %}} [variants]: "/docs/agent/ -> /docs/agent//about" -[variants]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/about" +[variants]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/about" [Static mode]: "/docs/agent/ -> /docs/agent//static" -[Static mode]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/static" +[Static mode]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/static" [Static mode Kubernetes operator]: "/docs/agent/ -> /docs/agent//operator" -[Static mode Kubernetes operator]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/operator" +[Static mode Kubernetes operator]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/operator" [Flow mode]: "/docs/agent/ -> /docs/agent//flow" [Flow mode]: "/docs/grafana-cloud/ -> /docs/agent//flow" diff --git a/docs/sources/_index.md.t b/docs/sources/_index.md.t index b14448733925..51208637215f 100644 --- a/docs/sources/_index.md.t +++ b/docs/sources/_index.md.t @@ -104,13 +104,13 @@ Patch and security releases may be created at any time. {{% docs/reference %}} [variants]: "/docs/agent/ -> /docs/agent//about" -[variants]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/about" +[variants]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/about" [Static mode]: "/docs/agent/ -> /docs/agent//static" -[Static mode]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/static" +[Static mode]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/static" [Static mode Kubernetes operator]: "/docs/agent/ -> /docs/agent//operator" -[Static mode Kubernetes operator]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/operator" +[Static mode Kubernetes operator]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/operator" [Flow mode]: "/docs/agent/ -> /docs/agent//flow" [Flow mode]: "/docs/grafana-cloud/ -> /docs/agent//flow" diff --git a/docs/sources/about.md b/docs/sources/about.md index 4c15b43297b6..3ebae044e00b 100644 --- a/docs/sources/about.md +++ b/docs/sources/about.md @@ -26,10 +26,10 @@ Grafana Agent is available in three different variants: {{% docs/reference %}} [Static mode]: "/docs/agent/ -> /docs/agent//static" -[Static mode]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/static" +[Static mode]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/static" [Static mode Kubernetes operator]: "/docs/agent/ -> /docs/agent//operator" -[Static mode Kubernetes operator]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/operator" +[Static mode Kubernetes operator]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/operator" [Flow mode]: "/docs/agent/ -> /docs/agent//flow" [Flow mode]: "/docs/grafana-cloud/ -> /docs/agent//flow" @@ -112,7 +112,7 @@ binaries and images with BoringCrypto enabled. Builds and Docker images for Linu {{% docs/reference %}} [integrations]: "/docs/agent/ -> /docs/agent//static/configuration/integrations" -[integrations]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations" +[integrations]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/static/configuration/integrations" [components]: "/docs/agent/ -> /docs/agent//flow/reference/components" [components]: "/docs/grafana-cloud/ -> /docs/agent//flow/reference/components" diff --git a/docs/sources/data-collection.md b/docs/sources/data-collection.md index 2ff7ec44f86e..a464f5b892b5 100644 --- a/docs/sources/data-collection.md +++ b/docs/sources/data-collection.md @@ -43,7 +43,7 @@ You can use the `-disable-reporting` [command line flag][] to disable the report [components]: "/docs/agent/ -> /docs/agent//flow/concepts/components.md" [components]: "/docs/grafana-cloud/ -> /docs/agent//flow/reference/cli/run.md" [Static]: "/docs/agent/ -> /docs/agent//static" -[Static]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/static +[Static]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/static [Flow]: "/docs/agent/ -> /docs/agent//flow" [Flow]: "/docs/grafana-cloud/ -> /docs/agent//flow" {{% /docs/reference %}} \ No newline at end of file diff --git a/docs/sources/flow/concepts/clustering.md b/docs/sources/flow/concepts/clustering.md index 6b0726c2439b..2c6514c18841 100644 --- a/docs/sources/flow/concepts/clustering.md +++ b/docs/sources/flow/concepts/clustering.md @@ -78,17 +78,17 @@ clustering issues. {{% docs/reference %}} [run]: "/docs/agent/ -> /docs/agent//flow/reference/cli/run.md#clustering-beta" -[run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/cli/run.md#clustering-beta" +[run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/cli/run.md#clustering-beta" [prometheus.scrape]: "/docs/agent/ -> /docs/agent//flow/reference/components/prometheus.scrape.md#clustering-beta" -[prometheus.scrape]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.scrape.md#clustering-beta" +[prometheus.scrape]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.scrape.md#clustering-beta" [pyroscope.scrape]: "/docs/agent/ -> /docs/agent//flow/reference/components/pyroscope.scrape.md#clustering-beta" -[pyroscope.scrape]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/pyroscope.scrape.md#clustering-beta" +[pyroscope.scrape]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/pyroscope.scrape.md#clustering-beta" [prometheus.operator.podmonitors]: "/docs/agent/ -> /docs/agent//flow/reference/components/prometheus.operator.podmonitors.md#clustering-beta" -[prometheus.operator.podmonitors]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.operator.podmonitors.md#clustering-beta" +[prometheus.operator.podmonitors]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.operator.podmonitors.md#clustering-beta" [prometheus.operator.servicemonitors]: "/docs/agent/ -> /docs/agent//flow/reference/components/prometheus.operator.servicemonitors.md#clustering-beta" -[prometheus.operator.servicemonitors]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.operator.servicemonitors.md#clustering-beta" +[prometheus.operator.servicemonitors]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.operator.servicemonitors.md#clustering-beta" [clustering page]: "/docs/agent/ -> /docs/agent//flow/monitoring/debugging.md#clustering-page" -[clustering page]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/monitoring/debugging.md#clustering-page" +[clustering page]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/monitoring/debugging.md#clustering-page" [debugging]: "/docs/agent/ -> /docs/agent//flow/monitoring/debugging.md#debugging-clustering-issues" -[debugging]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/monitoring/debugging.md#debugging-clustering-issues" +[debugging]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/monitoring/debugging.md#debugging-clustering-issues" {{% /docs/reference %}} \ No newline at end of file diff --git a/docs/sources/flow/concepts/component_controller.md b/docs/sources/flow/concepts/component_controller.md index 08b8a6afa452..362bf9c1838a 100644 --- a/docs/sources/flow/concepts/component_controller.md +++ b/docs/sources/flow/concepts/component_controller.md @@ -141,9 +141,9 @@ reloading. {{% docs/reference %}} [prometheus.exporter.unix]: "/docs/agent/ -> /docs/agent//flow/reference/components/prometheus.exporter.unix.md" -[prometheus.exporter.unix]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.exporter.unix.md" +[prometheus.exporter.unix]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.unix.md" [run]: "/docs/agent/ -> /docs/agent//flow/reference/cli/run.md" -[run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/cli/run.md" +[run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/cli/run.md" [Components]: "/docs/agent/ -> /docs/agent//flow/concepts/components.md" -[Components]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/components.md" +[Components]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/concepts/components.md" {{% /docs/reference %}} diff --git a/docs/sources/flow/concepts/configuration_language.md b/docs/sources/flow/concepts/configuration_language.md index 77b42df3293f..849951572eb1 100644 --- a/docs/sources/flow/concepts/configuration_language.md +++ b/docs/sources/flow/concepts/configuration_language.md @@ -103,5 +103,5 @@ of the Grafana Agent Flow docs. {{% docs/reference %}} [config-docs]: "/docs/agent/ -> /docs/agent//flow/config-language" -[config-docs]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/config-language" +[config-docs]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/config-language" {{% /docs/reference %}} diff --git a/docs/sources/flow/concepts/modules.md b/docs/sources/flow/concepts/modules.md index 191159c9f0bf..ace8d7993731 100644 --- a/docs/sources/flow/concepts/modules.md +++ b/docs/sources/flow/concepts/modules.md @@ -143,11 +143,11 @@ loki.write "default" { {{% docs/reference %}} [argument block]: "/docs/agent/ -> /docs/agent//flow/reference/config-blocks/argument.md" -[argument block]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/config-blocks/argument.md" +[argument block]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/config-blocks/argument.md" [export block]: "/docs/agent/ -> /docs/agent//flow/reference/config-blocks/export.md" -[export block]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/config-blocks/export.md" +[export block]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/config-blocks/export.md" [Component controller]: "/docs/agent/ -> /docs/agent//flow/concepts/component_controller.md" -[Component controller]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/component_controller.md" +[Component controller]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/concepts/component_controller.md" [Components]: "/docs/agent/ -> /docs/agent//flow/reference/components" -[Components]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components" +[Components]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components" {{% /docs/reference %}} diff --git a/docs/sources/flow/getting-started/collect-opentelemetry-data.md b/docs/sources/flow/getting-started/collect-opentelemetry-data.md index 6d32c28dac4f..edb8b9cde67e 100644 --- a/docs/sources/flow/getting-started/collect-opentelemetry-data.md +++ b/docs/sources/flow/getting-started/collect-opentelemetry-data.md @@ -358,15 +358,15 @@ Protocol, refer to [otelcol.receiver.otlp][]. {{% docs/reference %}} [otelcol.auth.basic]: "/docs/agent/ -> /docs/agent//flow/reference/components/otelcol.auth.basic.md" -[otelcol.auth.basic]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.auth.basic.md" +[otelcol.auth.basic]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.auth.basic.md" [otelcol.exporter.otlp]: "/docs/agent/ -> /docs/agent//flow/reference/components/otelcol.exporter.otlp.md" -[otelcol.exporter.otlp]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.exporter.otlp.md" +[otelcol.exporter.otlp]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.exporter.otlp.md" [otelcol.exporter.otlphttp]: "/docs/agent/ -> /docs/agent//flow/reference/components/otelcol.exporter.otlphttp.md" -[otelcol.exporter.otlphttp]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.exporter.otlphttp.md" +[otelcol.exporter.otlphttp]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.exporter.otlphttp.md" [otelcol.processor.batch]: "/docs/agent/ -> /docs/agent//flow/reference/components/otelcol.processor.batch.md" -[otelcol.processor.batch]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.processor.batch.md" +[otelcol.processor.batch]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.processor.batch.md" [otelcol.receiver.otlp]: "/docs/agent/ -> /docs/agent//flow/reference/components/otelcol.receiver.otlp.md" -[otelcol.receiver.otlp]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.receiver.otlp.md" +[otelcol.receiver.otlp]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.receiver.otlp.md" [Components]: "/docs/agent/ -> /docs/agent//flow/concepts/components.md" -[Components]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/components.md" +[Components]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/concepts/components.md" {{% /docs/reference %}} diff --git a/docs/sources/flow/getting-started/collect-prometheus-metrics.md b/docs/sources/flow/getting-started/collect-prometheus-metrics.md index 9cfbd468ce2a..a13646d409cb 100644 --- a/docs/sources/flow/getting-started/collect-prometheus-metrics.md +++ b/docs/sources/flow/getting-started/collect-prometheus-metrics.md @@ -490,13 +490,13 @@ prometheus.remote_write "default" { {{% docs/reference %}} [discovery.kubernetes]: "/docs/agent/ -> /docs/agent//flow/reference/components/discovery.kubernetes.md" -[discovery.kubernetes]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/discovery.kubernetes.md" +[discovery.kubernetes]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/discovery.kubernetes.md" [prometheus.remote_write]: "/docs/agent/ -> /docs/agent//flow/reference/components/prometheus.remote_write.md" -[prometheus.remote_write]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.remote_write.md" +[prometheus.remote_write]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.remote_write.md" [prometheus.scrape]: "/docs/agent/ -> /docs/agent//flow/reference/components/prometheus.scrape.md" -[prometheus.scrape]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.scrape.md" +[prometheus.scrape]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.scrape.md" [Components]: "/docs/agent/ -> /docs/agent//flow/concepts/components.md" -[Components]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/components.md" +[Components]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/concepts/components.md" [Objects]: "/docs/agent/ -> /docs/agent//flow/config-language/expressions/types_and_values.md#objects" -[Objects]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/config-language/expressions/types_and_values.md#objects" +[Objects]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/config-language/expressions/types_and_values.md#objects" {{% /docs/reference %}} diff --git a/docs/sources/flow/getting-started/configure-agent-clustering.md b/docs/sources/flow/getting-started/configure-agent-clustering.md index 22d9cdd1942f..2a67fc29ba1b 100644 --- a/docs/sources/flow/getting-started/configure-agent-clustering.md +++ b/docs/sources/flow/getting-started/configure-agent-clustering.md @@ -63,11 +63,11 @@ To configure clustering: {{% docs/reference %}} [clustering]: "/docs/agent/ -> /docs/agent//flow/concepts/clustering.md" -[clustering]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/clustering.md" +[clustering]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/concepts/clustering.md" [beta]: "/docs/agent/ -> /docs/agent//stability.md#beta" -[beta]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/stability.md#beta" +[beta]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/stability.md#beta" [install-helm]: "/docs/agent/ -> /docs/agent//flow/setup/install/kubernetes.md" -[install-helm]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/install/kubernetes.md" +[install-helm]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/setup/install/kubernetes.md" [UI]: "/docs/agent/ -> /docs/agent//flow/monitoring/debugging.md#component-detail-page" -[UI]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/monitoring/debugging.md#component-detail-page" +[UI]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/monitoring/debugging.md#component-detail-page" {{% /docs/reference %}} diff --git a/docs/sources/flow/getting-started/distribute-prometheus-scrape-load.md b/docs/sources/flow/getting-started/distribute-prometheus-scrape-load.md index 5317150fdc95..e069640b4e5d 100644 --- a/docs/sources/flow/getting-started/distribute-prometheus-scrape-load.md +++ b/docs/sources/flow/getting-started/distribute-prometheus-scrape-load.md @@ -53,15 +53,15 @@ To distribute Prometheus metrics scrape load with clustering: {{% docs/reference %}} [Clustering]: "/docs/agent/ -> /docs/agent//flow/concepts/clustering.md" -[Clustering]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/clustering.md" +[Clustering]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/concepts/clustering.md" [beta]: "/docs/agent/ -> /docs/agent//stability.md#beta" -[beta]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/stability.md#beta" +[beta]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/stability.md#beta" [configure-grafana-agent]: "/docs/agent/ -> /docs/agent//flow/setup/configure" -[configure-grafana-agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/configure" +[configure-grafana-agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/setup/configure" [Configure Prometheus metrics collection]: "/docs/agent/ -> /docs/agent//flow/getting-started/collect-prometheus-metrics.md" -[Configure Prometheus metrics collection]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/getting-started/collect-prometheus-metrics.md" +[Configure Prometheus metrics collection]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/getting-started/collect-prometheus-metrics.md" [Configure clustering]: "/docs/agent/ -> /docs/agent//flow/getting-started/configure-agent-clustering.md" -[Configure clustering]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/getting-started/configure-agent-clustering.md" +[Configure clustering]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/getting-started/configure-agent-clustering.md" [UI]: "/docs/agent/ -> /docs/agent//flow/monitoring/debugging.md#component-detail-page" -[UI]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/monitoring/debugging.md#component-detail-page" +[UI]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/monitoring/debugging.md#component-detail-page" {{% /docs/reference %}} diff --git a/docs/sources/flow/getting-started/migrating-from-prometheus.md b/docs/sources/flow/getting-started/migrating-from-prometheus.md index e6abc8f334db..d4f5b1616f77 100644 --- a/docs/sources/flow/getting-started/migrating-from-prometheus.md +++ b/docs/sources/flow/getting-started/migrating-from-prometheus.md @@ -243,21 +243,21 @@ Furthermore, we recommend that you review the following checklist: {{% docs/reference %}} [prometheus.scrape]: "/docs/agent/ -> /docs/agent//flow/reference/components/prometheus.scrape.md" -[prometheus.scrape]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.scrape.md" +[prometheus.scrape]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.scrape.md" [prometheus.remote_write]: "/docs/agent/ -> /docs/agent//flow/reference/components/prometheus.remote_write.md" -[prometheus.remote_write]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.remote_write.md" +[prometheus.remote_write]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.remote_write.md" [Components]: "/docs/agent/ -> /docs/agent//flow/concepts/components.md" -[Components]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/components.md" +[Components]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/concepts/components.md" [convert]: "/docs/agent/ -> /docs/agent//flow/reference/cli/convert.md" -[convert]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/cli/convert.md" +[convert]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/cli/convert.md" [run]: "/docs/agent/ -> /docs/agent//flow/reference/cli/run.md" -[run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/cli/run.md" +[run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/cli/run.md" [Start the agent]: "/docs/agent/ -> /docs/agent//flow/setup/start-agent.md" -[Start the agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/start-agent.md" +[Start the agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/setup/start-agent.md" [Flow Debugging]: "/docs/agent/ -> /docs/agent//flow/monitoring/debugging.md" -[Flow Debugging]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/monitoring/debugging.md" +[Flow Debugging]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/monitoring/debugging.md" [River]: "/docs/agent/ -> /docs/agent//flow/config-language/_index.md" -[River]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/config-language/_index.md" +[River]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/config-language/_index.md" [Grafana Agent Flow UI]: "/docs/agent/ -> /docs/agent//flow/monitoring/debugging#grafana-agent-flow-ui" -[Grafana Agent Flow UI]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/monitoring/debugging#grafana-agent-flow-ui" +[Grafana Agent Flow UI]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/monitoring/debugging#grafana-agent-flow-ui" {{% /docs/reference %}} diff --git a/docs/sources/flow/getting-started/migrating-from-promtail.md b/docs/sources/flow/getting-started/migrating-from-promtail.md index 09cf44a7bd39..178f82b1ae7b 100644 --- a/docs/sources/flow/getting-started/migrating-from-promtail.md +++ b/docs/sources/flow/getting-started/migrating-from-promtail.md @@ -237,23 +237,23 @@ Furthermore, we recommend that you review the following checklist: {{% docs/reference %}} [local.file_match]: "/docs/agent/ -> /docs/agent//flow/reference/components/local.file_match.md" -[local.file_match]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/local.file_match.md" +[local.file_match]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/local.file_match.md" [loki.source.file]: "/docs/agent/ -> /docs/agent//flow/reference/components/loki.source.file.md" -[loki.source.file]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.source.file.md" +[loki.source.file]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.source.file.md" [loki.write]: "/docs/agent/ -> /docs/agent//flow/reference/components/loki.write.md" -[loki.write]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.write.md" +[loki.write]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.write.md" [Components]: "/docs/agent/ -> /docs/agent//flow/concepts/components.md" -[Components]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/components.md" +[Components]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/concepts/components.md" [convert]: "/docs/agent/ -> /docs/agent//flow/reference/cli/convert.md" -[convert]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/cli/convert.md" +[convert]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/cli/convert.md" [run]: "/docs/agent/ -> /docs/agent//flow/reference/cli/run.md" -[run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/cli/run.md" +[run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/cli/run.md" [Start the agent]: "/docs/agent/ -> /docs/agent//flow/setup/start-agent.md" -[Start the agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/start-agent.md" +[Start the agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/setup/start-agent.md" [Flow Debugging]: "/docs/agent/ -> /docs/agent//flow/monitoring/debugging.md" -[Flow Debugging]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/monitoring/debugging.md" +[Flow Debugging]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/monitoring/debugging.md" [River]: "/docs/agent/ -> /docs/agent//flow/config-language/_index.md" -[River]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/config-language/_index.md" +[River]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/config-language/_index.md" [Grafana Agent Flow UI]: "/docs/agent/ -> /docs/agent//flow/monitoring/debugging#grafana-agent-flow-ui" -[Grafana Agent Flow UI]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/monitoring/debugging#grafana-agent-flow-ui" +[Grafana Agent Flow UI]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/monitoring/debugging#grafana-agent-flow-ui" {{% /docs/reference %}} diff --git a/docs/sources/flow/getting-started/migrating-from-static.md b/docs/sources/flow/getting-started/migrating-from-static.md index ff201deec463..6db39ede8673 100644 --- a/docs/sources/flow/getting-started/migrating-from-static.md +++ b/docs/sources/flow/getting-started/migrating-from-static.md @@ -326,47 +326,47 @@ Furthermore, we recommend that you review the following checklist: {{% docs/reference %}} [Static]: "/docs/agent/ -> /docs/agent//static" -[Static]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/static" +[Static]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/static" [prometheus.scrape]: "/docs/agent/ -> /docs/agent//flow/reference/components/prometheus.scrape.md" -[prometheus.scrape]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.scrape.md" +[prometheus.scrape]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.scrape.md" [prometheus.remote_write]: "/docs/agent/ -> /docs/agent//flow/reference/components/prometheus.remote_write.md" -[prometheus.remote_write]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.remote_write.md" +[prometheus.remote_write]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.remote_write.md" [local.file_match]: "/docs/agent/ -> /docs/agent//flow/reference/components/local.file_match.md" -[local.file_match]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/local.file_match.md" +[local.file_match]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/local.file_match.md" [loki.process]: "/docs/agent/ -> /docs/agent//flow/reference/components/loki.process.md" -[loki.process]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.process.md" +[loki.process]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.process.md" [loki.source.file]: "/docs/agent/ -> /docs/agent//flow/reference/components/loki.source.file.md" -[loki.source.file]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.source.file.md" +[loki.source.file]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.source.file.md" [loki.write]: "/docs/agent/ -> /docs/agent//flow/reference/components/loki.write.md" -[loki.write]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.write.md" +[loki.write]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.write.md" [Components]: "/docs/agent/ -> /docs/agent//flow/concepts/components.md" -[Components]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/components.md" +[Components]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/concepts/components.md" [convert]: "/docs/agent/ -> /docs/agent//flow/reference/cli/convert.md" -[convert]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/cli/convert.md" +[convert]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/cli/convert.md" [run]: "/docs/agent/ -> /docs/agent//flow/reference/cli/run.md" -[run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/cli/run.md" +[run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/cli/run.md" [Start the agent]: "/docs/agent/ -> /docs/agent//flow/setup/start-agent.md" -[Start the agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/start-agent.md" +[Start the agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/setup/start-agent.md" [Flow Debugging]: "/docs/agent/ -> /docs/agent//flow/monitoring/debugging.md" -[Flow Debugging]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/monitoring/debugging.md" +[Flow Debugging]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/monitoring/debugging.md" [River]: "/docs/agent/ -> /docs/agent//flow/config-language/" -[River]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/config-language/" +[River]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/config-language/" [Integrations next]: "/docs/agent/ -> /docs/agent//static/configuration/integrations/integrations-next/_index.md" -[Integrations next]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/traces-config.md +[Integrations next]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/static/configuration/traces-config.md [Traces]: "/docs/agent/ -> /docs/agent//static/configuration/traces-config.md" -[Traces]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/traces-config.md" +[Traces]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/static/configuration/traces-config.md" [Agent Management]: "/docs/agent/ -> /docs/agent//static/configuration/agent-management.md" -[Agent Management]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/agent-management.md" +[Agent Management]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/static/configuration/agent-management.md" [env]: "/docs/agent/ -> /docs/agent//flow/reference/stdlib/env.md" -[env]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/stdlib/env.md" +[env]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/stdlib/env.md" [Prometheus Limitations]: "/docs/agent/ -> /docs/agent//flow/getting-started/migrating-from-prometheus.md#limitations" -[Prometheus Limitations]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/getting-started/migrating-from-prometheus.md#limitations" +[Prometheus Limitations]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/getting-started/migrating-from-prometheus.md#limitations" [Promtail Limitations]: "/docs/agent/ -> /docs/agent//flow/getting-started/migrating-from-promtail.md#limitations" -[Promtail Limitations]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/getting-started/migrating-from-promtail.md#limitations" +[Promtail Limitations]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/getting-started/migrating-from-promtail.md#limitations" [Metrics]: "/docs/agent/ -> /docs/agent//static/configuration/metrics-config.md" -[Metrics]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/metrics-config.md" +[Metrics]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/static/configuration/metrics-config.md" [Logs]: "/docs/agent/ -> /docs/agent//static/configuration/logs-config.md" -[Logs]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/static/logs-config.md" +[Logs]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/static/logs-config.md" [Grafana Agent Flow UI]: "/docs/agent/ -> /docs/agent//flow/monitoring/debugging#grafana-agent-flow-ui" -[Grafana Agent Flow UI]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/monitoring/debugging#grafana-agent-flow-ui" +[Grafana Agent Flow UI]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/monitoring/debugging#grafana-agent-flow-ui" {{% /docs/reference %}} diff --git a/docs/sources/flow/getting-started/opentelemetry-to-lgtm-stack.md b/docs/sources/flow/getting-started/opentelemetry-to-lgtm-stack.md index e0ac3996e04b..ebab4c6e4d2d 100644 --- a/docs/sources/flow/getting-started/opentelemetry-to-lgtm-stack.md +++ b/docs/sources/flow/getting-started/opentelemetry-to-lgtm-stack.md @@ -311,23 +311,23 @@ You can now check the pipeline graphically by visiting http://localhost:12345/gr {{% docs/reference %}} [Collect open telemetry data]: "/docs/agent/ -> /docs/agent//flow/getting-started/collect-opentelemetry-data.md" -[Collect open telemetry data]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/getting-started/collect-opentelemetry-data.md" +[Collect open telemetry data]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/getting-started/collect-opentelemetry-data.md" [Components]: "/docs/agent/ -> /docs/agent//flow/concepts/components.md" -[Components]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/components.md" +[Components]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/concepts/components.md" [loki.write]: "/docs/agent/ -> /docs/agent//flow/reference/components/loki.write.md" -[loki.write]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/loki.write.md" +[loki.write]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/loki.write.md" [otelcol.auth.basic]: "/docs/agent/ -> /docs/agent//flow/reference/components/otelcol.auth.basic.md" -[otelcol.auth.basic]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.auth.basic.md" +[otelcol.auth.basic]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.auth.basic.md" [otelcol.exporter.loki]: "/docs/agent/ -> /docs/agent//flow/reference/components/otelcol.exporter.loki.md" -[otelcol.exporter.loki]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.exporter.loki.md" +[otelcol.exporter.loki]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.exporter.loki.md" [otelcol.exporter.otlp]: "/docs/agent/ -> /docs/agent//flow/reference/components/otelcol.exporter.otlp.md" -[otelcol.exporter.otlp]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.exporter.otlp.md" +[otelcol.exporter.otlp]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.exporter.otlp.md" [otelcol.exporter.prometheus]: "/docs/agent/ -> /docs/agent//flow/reference/components/otelcol.exporter.prometheus.md" -[otelcol.exporter.prometheus]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.exporter.prometheus.md" +[otelcol.exporter.prometheus]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.exporter.prometheus.md" [otelcol.processor.batch]: "/docs/agent/ -> /docs/agent//flow/reference/components/otelcol.processor.batch.md" -[otelcol.processor.batch]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.processor.batch.md" +[otelcol.processor.batch]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.processor.batch.md" [otelcol.receiver.otlp]: "/docs/agent/ -> /docs/agent//flow/reference/components/otelcol.receiver.otlp.md" -[otelcol.receiver.otlp]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.receiver.otlp.md" +[otelcol.receiver.otlp]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/otelcol.receiver.otlp.md" [prometheus.remote_write]: "/docs/agent/ -> /docs/agent//flow/reference/components/prometheus.remote_write.md" -[prometheus.remote_write]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.remote_write.md" +[prometheus.remote_write]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.remote_write.md" {{% /docs/reference %}} diff --git a/docs/sources/flow/monitoring/component_metrics.md b/docs/sources/flow/monitoring/component_metrics.md index 7b94337bd2b7..f85a0440c21c 100644 --- a/docs/sources/flow/monitoring/component_metrics.md +++ b/docs/sources/flow/monitoring/component_metrics.md @@ -40,9 +40,9 @@ expose metrics. {{% docs/reference %}} [components]: "/docs/agent/ -> /docs/agent//flow/concepts/components.md" -[components]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/components.md" +[components]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/concepts/components.md" [grafana-agent run]: "/docs/agent/ -> /docs/agent//flow/reference/cli/run.md" -[grafana-agent run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/cli/run.md" +[grafana-agent run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/cli/run.md" [reference documentation]: "/docs/agent/ -> /docs/agent//flow/reference/components" -[reference documentation]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components" +[reference documentation]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components" {{% /docs/reference %}} \ No newline at end of file diff --git a/docs/sources/flow/monitoring/controller_metrics.md b/docs/sources/flow/monitoring/controller_metrics.md index 03a05b0991eb..7aa08f097ef0 100644 --- a/docs/sources/flow/monitoring/controller_metrics.md +++ b/docs/sources/flow/monitoring/controller_metrics.md @@ -42,7 +42,7 @@ The controller exposes the following metrics: {{% docs/reference %}} [component controller]: "/docs/agent/ -> /docs/agent//flow/concepts/component_controller.md" -[component controller]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/component_controller.md" +[component controller]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/concepts/component_controller.md" [grafana-agent run]: "/docs/agent/ -> /docs/agent//flow/reference/cli/run.md" -[grafana-agent run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/cli/run.md" +[grafana-agent run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/cli/run.md" {{% /docs/reference %}} diff --git a/docs/sources/flow/monitoring/debugging.md b/docs/sources/flow/monitoring/debugging.md index 423319addeb6..f5b634527e3a 100644 --- a/docs/sources/flow/monitoring/debugging.md +++ b/docs/sources/flow/monitoring/debugging.md @@ -128,14 +128,14 @@ terminating Agent has been shut down. {{% docs/reference %}} [logging]: "/docs/agent/ -> /docs/agent//flow/reference/config-blocks/logging.md" -[logging]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/config-blocks/logging.md" +[logging]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/config-blocks/logging.md" [clustering]: "/docs/agent/ -> /docs/agent//flow/concepts/clustering.md" -[clustering]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/clustering.md" +[clustering]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/concepts/clustering.md" [install]: "/docs/agent/ -> /docs/agent//flow/setup/install" -[install]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/install" +[install]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/setup/install" [secret]: "/docs/agent/ -> /docs/agent//flow/config-language/expressions/types_and_values.md#secrets.md" -[secret]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/config-language/expressions/types_and_values.md#secrets.md" +[secret]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/config-language/expressions/types_and_values.md#secrets.md" [grafana-agent run]: "/docs/agent/ -> /docs/agent//flow/reference/cli/run.md" -[grafana-agent run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/cli/run.md" +[grafana-agent run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/cli/run.md" {{% /docs/reference %}} diff --git a/docs/sources/flow/setup/configure/configure-linux.md b/docs/sources/flow/setup/configure/configure-linux.md index feac6218e59e..60fb752d15ad 100644 --- a/docs/sources/flow/setup/configure/configure-linux.md +++ b/docs/sources/flow/setup/configure/configure-linux.md @@ -92,7 +92,7 @@ To expose the UI to other machines, complete the following steps: {{% docs/reference %}} [run]: "/docs/agent/ -> /docs/agent//flow/reference/cli/run.md" -[run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/cli/run.md" +[run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/cli/run.md" [UI]: "/docs/agent/ -> /docs/agent//flow/monitoring/debugging.md#grafana-agent-flow-ui" -[UI]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/monitoring/debugging.md#grafana-agent-flow-ui" +[UI]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/monitoring/debugging.md#grafana-agent-flow-ui" {{% /docs/reference %}} diff --git a/docs/sources/flow/setup/configure/configure-macos.md b/docs/sources/flow/setup/configure/configure-macos.md index 4a2f302a6cc7..210e33b234a3 100644 --- a/docs/sources/flow/setup/configure/configure-macos.md +++ b/docs/sources/flow/setup/configure/configure-macos.md @@ -83,5 +83,5 @@ To expose the UI to other machines, complete the following steps: {{% docs/reference %}} [UI]: "/docs/agent/ -> /docs/agent//flow/monitoring/debugging.md#grafana-agent-flow-ui" -[UI]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/monitoring/debugging.md#grafana-agent-flow-ui" +[UI]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/monitoring/debugging.md#grafana-agent-flow-ui" {{% /docs/reference %}} diff --git a/docs/sources/flow/setup/configure/configure-windows.md b/docs/sources/flow/setup/configure/configure-windows.md index c2d67e4aec8e..6c4986b7dc35 100644 --- a/docs/sources/flow/setup/configure/configure-windows.md +++ b/docs/sources/flow/setup/configure/configure-windows.md @@ -91,6 +91,6 @@ To expose the UI to other machines, complete the following steps: {{% docs/reference %}} [UI]: "/docs/agent/ -> /docs/agent//flow/monitoring/debugging.md#grafana-agent-flow-ui" -[UI]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/monitoring/debugging.md#grafana-agent-flow-ui" +[UI]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/monitoring/debugging.md#grafana-agent-flow-ui" {{% /docs/reference %}} diff --git a/docs/sources/flow/setup/install/_index.md b/docs/sources/flow/setup/install/_index.md index 34f4b2b521d8..9142a2a8722c 100644 --- a/docs/sources/flow/setup/install/_index.md +++ b/docs/sources/flow/setup/install/_index.md @@ -36,5 +36,5 @@ about what data is collected and how you can opt-out. {{% docs/reference %}} [data collection]: "/docs/agent/ -> /docs/agent//data-collection.md" -[data collection]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/data-collection.md" +[data collection]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/data-collection.md" {{% /docs/reference %}} diff --git a/docs/sources/flow/setup/install/binary.md b/docs/sources/flow/setup/install/binary.md index 45874e5460ce..3db7b71967a0 100644 --- a/docs/sources/flow/setup/install/binary.md +++ b/docs/sources/flow/setup/install/binary.md @@ -48,7 +48,7 @@ To download Grafana Agent as a standalone binary, perform the following steps. {{% docs/reference %}} [Start Grafana Agent]: "/docs/agent/ -> /docs/agent//flow/setup/start-agent.md#standalone-binary" -[Start Grafana Agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/start-agent.md#standalone-binary" +[Start Grafana Agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/setup/start-agent.md#standalone-binary" [Configure Grafana Agent]: "/docs/agent/ -> /docs/agent//flow/setup/configure" -[Configure Grafana Agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/configure/" +[Configure Grafana Agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/setup/configure/" {{% /docs/reference %}} diff --git a/docs/sources/flow/setup/install/docker.md b/docs/sources/flow/setup/install/docker.md index cdc5d8ceb9b2..99c11a61e123 100644 --- a/docs/sources/flow/setup/install/docker.md +++ b/docs/sources/flow/setup/install/docker.md @@ -85,7 +85,7 @@ To verify that Grafana Agent is running successfully, navigate to /docs/agent//flow/reference/cli/run.md" -[run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/cli/run.md" +[run]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/cli/run.md" [UI]: "/docs/agent/ -> /docs/agent//flow/monitoring/debugging.md#grafana-agent-flow-ui" -[UI]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/monitoring/debugging.md#grafana-agent-flow-ui" +[UI]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/monitoring/debugging.md#grafana-agent-flow-ui" {{% /docs/reference %}} diff --git a/docs/sources/flow/setup/install/kubernetes.md b/docs/sources/flow/setup/install/kubernetes.md index fb46ed722595..3909bd4462dc 100644 --- a/docs/sources/flow/setup/install/kubernetes.md +++ b/docs/sources/flow/setup/install/kubernetes.md @@ -64,5 +64,5 @@ For more information on the Grafana Agent Helm chart, refer to the Helm chart do {{% docs/reference %}} [Configure Grafana Agent]: "/docs/agent/ -> /docs/agent//flow/setup/configure/configure-kubernetes.md" -[Configure Grafana Agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/configure/configure-kubernetes.md" +[Configure Grafana Agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/setup/configure/configure-kubernetes.md" {{% /docs/reference %}} diff --git a/docs/sources/flow/setup/install/linux.md b/docs/sources/flow/setup/install/linux.md index 8a8788e4d054..f97b8f7eac64 100644 --- a/docs/sources/flow/setup/install/linux.md +++ b/docs/sources/flow/setup/install/linux.md @@ -124,7 +124,7 @@ To uninstall Grafana Agent on Linux, run the following commands in a terminal wi {{% docs/reference %}} [Start Grafana Agent]: "/docs/agent/ -> /docs/agent//flow/setup/start-agent.md#linux" -[Start Grafana Agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/start-agent.md#linux" +[Start Grafana Agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/setup/start-agent.md#linux" [Configure Grafana Agent]: "/docs/agent/ -> /docs/agent//flow/setup/configure/configure-linux.md" -[Configure Grafana Agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/configure/configure-linux.md" +[Configure Grafana Agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/setup/configure/configure-linux.md" {{% /docs/reference %}} diff --git a/docs/sources/flow/setup/install/macos.md b/docs/sources/flow/setup/install/macos.md index 9f692274ecab..2cdf01adda17 100644 --- a/docs/sources/flow/setup/install/macos.md +++ b/docs/sources/flow/setup/install/macos.md @@ -73,7 +73,7 @@ brew uninstall grafana-agent-flow {{% docs/reference %}} [Start Grafana Agent]: "/docs/agent/ -> /docs/agent//flow/setup/start-agent.md#macos" -[Start Grafana Agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/start-agent.md#macos" +[Start Grafana Agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/setup/start-agent.md#macos" [Configure Grafana Agent]: "/docs/agent/ -> /docs/agent//flow/setup/configure/configure-macos.md" -[Configure Grafana Agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/configure/configure-macos.md" +[Configure Grafana Agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/setup/configure/configure-macos.md" {{% /docs/reference %}} diff --git a/docs/sources/flow/setup/install/windows.md b/docs/sources/flow/setup/install/windows.md index 36eaced3b3d0..84b0607e139b 100644 --- a/docs/sources/flow/setup/install/windows.md +++ b/docs/sources/flow/setup/install/windows.md @@ -73,9 +73,9 @@ Grafana Agent can also be silently uninstalled by running `uninstall.exe /S` as {{% docs/reference %}} [Start Grafana Agent]: "/docs/agent/ -> /docs/agent//flow/setup/start-agent.md#windows" -[Start Grafana Agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/start-agent.md#windows" +[Start Grafana Agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/setup/start-agent.md#windows" [Configure Grafana Agent]: "/docs/agent/ -> /docs/agent//flow/setup/configure/configure-windows.md" -[Configure Grafana Agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/configure/configure-windows.md" +[Configure Grafana Agent]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/setup/configure/configure-windows.md" [data collection]: "/docs/agent/ -> /docs/agent//data-collection.md" -[data collection]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/data-collection.md" +[data collection]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/data-collection.md" {{% /docs/reference %}} diff --git a/docs/sources/flow/setup/start-agent.md b/docs/sources/flow/setup/start-agent.md index 5295fe859053..14d406461aef 100644 --- a/docs/sources/flow/setup/start-agent.md +++ b/docs/sources/flow/setup/start-agent.md @@ -253,5 +253,5 @@ These steps assume you have a default systemd and Grafana Agent configuration. {{% docs/reference %}} [Configure the Grafana Agent service]: "/docs/agent/ -> /docs/agent//flow/setup/configure/configure-macos.md#configure-the-grafana-agent-service" -[Configure the Grafana Agent service]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/setup/configure/configure-macos.md#configure-the-grafana-agent-service" +[Configure the Grafana Agent service]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/setup/configure/configure-macos.md#configure-the-grafana-agent-service" {{% /docs/reference %}} diff --git a/docs/sources/flow/tutorials/assets/generate.sh b/docs/sources/flow/tutorials/assets/generate.sh old mode 100755 new mode 100644 diff --git a/docs/sources/flow/tutorials/assets/runt.sh b/docs/sources/flow/tutorials/assets/runt.sh old mode 100755 new mode 100644 diff --git a/docs/sources/flow/tutorials/chaining.md b/docs/sources/flow/tutorials/chaining.md index 67d82a151c7f..3effc0409fa3 100644 --- a/docs/sources/flow/tutorials/chaining.md +++ b/docs/sources/flow/tutorials/chaining.md @@ -88,5 +88,5 @@ In `multiple-input.river` add a new `prometheus.relabel` component that adds a ` {{% docs/reference %}} [Filtering metrics]: "/docs/agent/ -> /docs/agent//flow/tutorials/filtering-metrics.md" -[Filtering metrics]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/tutorials/filtering-metrics.md" +[Filtering metrics]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/tutorials/filtering-metrics.md" {{% /docs/reference %}} diff --git a/docs/sources/flow/tutorials/collecting-prometheus-metrics.md b/docs/sources/flow/tutorials/collecting-prometheus-metrics.md index acac5f42597a..a12cb625b17a 100644 --- a/docs/sources/flow/tutorials/collecting-prometheus-metrics.md +++ b/docs/sources/flow/tutorials/collecting-prometheus-metrics.md @@ -98,13 +98,13 @@ To try out the Grafana Agent without using Docker: {{% docs/reference %}} [prometheus.scrape]: "/docs/agent/ -> /docs/agent//flow/reference/components/prometheus.scrape.md" -[prometheus.scrape]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.scrape.md" +[prometheus.scrape]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.scrape.md" [attribute]: "/docs/agent/ -> /docs/agent//flow/concepts/configuration_language.md#attributes" -[attribute]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/configuration_language.md#attributes" +[attribute]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/concepts/configuration_language.md#attributes" [argument]: "/docs/agent/ -> /docs/agent//flow/concepts/components" -[argument]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/components" +[argument]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/concepts/components" [export]: "/docs/agent/ -> /docs/agent//flow/concepts/components" -[export]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/concepts/components" +[export]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/concepts/components" [prometheus.remote_write]: "/docs/agent/ -> /docs/agent//flow/reference/components/prometheus.remote_write.md" -[prometheus.remote_write]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.remote_write.md" +[prometheus.remote_write]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.remote_write.md" {{% /docs/reference %}} diff --git a/docs/sources/flow/tutorials/filtering-metrics.md b/docs/sources/flow/tutorials/filtering-metrics.md index 84e198c0f65c..9314f0bebf15 100644 --- a/docs/sources/flow/tutorials/filtering-metrics.md +++ b/docs/sources/flow/tutorials/filtering-metrics.md @@ -60,7 +60,7 @@ Open the `relabel.river` file that was downloaded and change the name of the ser {{% docs/reference %}} [prometheus.relabel]: "/docs/agent/ -> /docs/agent//flow/reference/components/prometheus.relabel.md" -[prometheus.relabel]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/prometheus.relabel.md" +[prometheus.relabel]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.relabel.md" [Collecting Prometheus metrics]: "/docs/agent/ -> /docs/agent//flow/tutorials/collecting-prometheus-metrics.md" -[Collecting Prometheus metrics]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/flow/tutorials/collecting-prometheus-metrics.md" +[Collecting Prometheus metrics]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/flow/tutorials/collecting-prometheus-metrics.md" {{% /docs/reference %}} diff --git a/docs/sources/operator/release-notes.md b/docs/sources/operator/release-notes.md index ada223145603..edd18e628a76 100644 --- a/docs/sources/operator/release-notes.md +++ b/docs/sources/operator/release-notes.md @@ -26,7 +26,7 @@ For a complete list of changes to Grafana Agent, with links to pull requests and {{% docs/reference %}} [release-notes-static]: "/docs/agent/ -> /docs/agent//static/release-notes" -[release-notes-static]: "/docs/agent/ -> /docs/grafana-cloud/monitor-infrastructure/agent/static/release-notes" +[release-notes-static]: "/docs/agent/ -> /docs/grafana-cloud/send-data/agent/static/release-notes" [release-notes-flow]: "/docs/agent/ -> /docs/agent//flow/release-notes" [release-notes-flow]: "/docs/grafana-cloud/ -> /docs/agent//flow/release-notes" diff --git a/docs/sources/static/configuration/create-config-file.md b/docs/sources/static/configuration/create-config-file.md index c019bd545516..08f7cd6974b8 100644 --- a/docs/sources/static/configuration/create-config-file.md +++ b/docs/sources/static/configuration/create-config-file.md @@ -188,5 +188,5 @@ integrations: {{% docs/reference %}} [configure]: "/docs/agent/ -> /docs/agent//static/configuration" -[configure]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration" +[configure]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/static/configuration" {{% /docs/reference %}} diff --git a/docs/sources/static/configuration/flags.md b/docs/sources/static/configuration/flags.md index c88e1173af6e..db8c48f30250 100644 --- a/docs/sources/static/configuration/flags.md +++ b/docs/sources/static/configuration/flags.md @@ -148,11 +148,11 @@ YAML configuration when the `-server.http.tls-enabled` flag is used. {{% docs/reference %}} [retrieving]: "/docs/agent/ -> /docs/agent//static/configuration#remote-configuration-experimental" -[retrieving]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration#remote-configuration-experimental" +[retrieving]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/static/configuration#remote-configuration-experimental" [revamp]: "/docs/agent/ -> /docs/agent//static/configuration/integrations/integrations-next/" -[revamp]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/integrations/integrations-next" +[revamp]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/static/configuration/integrations/integrations-next" [management]: "/docs/agent/ -> /docs/agent//static/configuration/agent-management" -[management]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/static/configuration/agent-management" +[management]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/static/configuration/agent-management" {{% /docs/reference %}} diff --git a/docs/sources/static/set-up/install/_index.md b/docs/sources/static/set-up/install/_index.md index ac6a8b51714d..24663d2bdade 100644 --- a/docs/sources/static/set-up/install/_index.md +++ b/docs/sources/static/set-up/install/_index.md @@ -47,5 +47,5 @@ about what data is collected and how you can opt-out. {{% docs/reference %}} [data collection]: "/docs/agent/ -> /docs/agent//data-collection.md" -[data collection]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/monitor-infrastructure/agent/data-collection.md" +[data collection]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/data-collection.md" {{% /docs/reference %}} \ No newline at end of file From 0b03f0b437025f822ce8a0250f513f431fce87cd Mon Sep 17 00:00:00 2001 From: Tristan Date: Wed, 15 Nov 2023 10:02:36 -0500 Subject: [PATCH 023/166] helm: align k8s version label with values (#5773) --- operations/helm/charts/grafana-agent/CHANGELOG.md | 5 +++++ operations/helm/charts/grafana-agent/templates/_helpers.tpl | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/operations/helm/charts/grafana-agent/CHANGELOG.md b/operations/helm/charts/grafana-agent/CHANGELOG.md index f87918d883ce..6b82c54edf9d 100644 --- a/operations/helm/charts/grafana-agent/CHANGELOG.md +++ b/operations/helm/charts/grafana-agent/CHANGELOG.md @@ -10,6 +10,11 @@ internal API changes are not present. Unreleased ---------- +### Enhancements + +- Ensure that `app.kubernetes.io/version` label accounts for any + image tag overrides supplied to the chart Values. (@tristanburgess) + 0.27.2 (2023-11-07) ---------- diff --git a/operations/helm/charts/grafana-agent/templates/_helpers.tpl b/operations/helm/charts/grafana-agent/templates/_helpers.tpl index b9336e976d62..342a330a8aa6 100644 --- a/operations/helm/charts/grafana-agent/templates/_helpers.tpl +++ b/operations/helm/charts/grafana-agent/templates/_helpers.tpl @@ -55,9 +55,9 @@ helm.sh/chart: {{ include "grafana-agent.chart" . }} app.kubernetes.io/version: "vX.Y.Z" app.kubernetes.io/managed-by: {{ .Release.Service }} {{- else }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} +{{/* substr trims delimeter prefix char from grafana-agent.imageId output + e.g. ':' for tags and '@' for digests. */}} +app.kubernetes.io/version: {{ substr 1 -1 (include "grafana-agent.imageId" .) }} app.kubernetes.io/managed-by: {{ .Release.Service }} {{- end }} {{- end }} From bbd45096ba8f5c30ef5e9ffa2db4b7368544b2dc Mon Sep 17 00:00:00 2001 From: Erik Baranowski <39704712+erikbaranowski@users.noreply.github.com> Date: Wed, 15 Nov 2023 12:33:28 -0500 Subject: [PATCH 024/166] Fixed an issue in the static config converter where exporter instance values (#5782) were not being mapped when translating to flow. Signed-off-by: erikbaranowski <39704712+erikbaranowski@users.noreply.github.com> --- CHANGELOG.md | 3 ++ .../staticconvert/internal/build/builder.go | 21 +++++++++- .../testdata-v2/integrations_v2.river | 38 +++++++++++++++++-- .../staticconvert/testdata/integrations.river | 16 +++++++- .../staticconvert/testdata/integrations.yaml | 2 + 5 files changed, 75 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8063214858a4..a1e6a6d05a8d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -143,6 +143,9 @@ Main (unreleased) resulting in remote write sending the exemplar first and Prometheus failing to ingest it due to missing series. (@krajorama) +- Fixed an issue in the static config converter where exporter instance values + were not being mapped when translating to flow. (@erikbaranowski) + v0.37.4 (2023-11-06) ----------------- diff --git a/converter/internal/staticconvert/internal/build/builder.go b/converter/internal/staticconvert/internal/build/builder.go index 07a2b7a000ce..0053f545f5af 100644 --- a/converter/internal/staticconvert/internal/build/builder.go +++ b/converter/internal/staticconvert/internal/build/builder.go @@ -163,9 +163,19 @@ func (b *IntegrationsConfigBuilder) appendV1Integrations() { } func (b *IntegrationsConfigBuilder) appendExporter(commonConfig *int_config.Common, name string, extraTargets []discovery.Target) { + var relabelConfigs []*relabel.Config + if commonConfig.InstanceKey != nil { + defaultConfig := relabel.DefaultRelabelConfig + relabelConfig := &defaultConfig + relabelConfig.TargetLabel = "instance" + relabelConfig.Replacement = *commonConfig.InstanceKey + + relabelConfigs = append(relabelConfigs, relabelConfig) + } + scrapeConfig := prom_config.DefaultScrapeConfig scrapeConfig.JobName = b.formatJobName(name, nil) - scrapeConfig.RelabelConfigs = commonConfig.RelabelConfigs + scrapeConfig.RelabelConfigs = append(commonConfig.RelabelConfigs, relabelConfigs...) scrapeConfig.MetricRelabelConfigs = commonConfig.MetricRelabelConfigs scrapeConfig.HTTPClientConfig.TLSConfig = b.cfg.Integrations.ConfigV1.TLSConfig @@ -282,6 +292,15 @@ func (b *IntegrationsConfigBuilder) appendExporterV2(commonConfig *common_v2.Met relabelConfigs = append(relabelConfigs, relabelConfig) } + if commonConfig.InstanceKey != nil { + defaultConfig := relabel.DefaultRelabelConfig + relabelConfig := &defaultConfig + relabelConfig.TargetLabel = "instance" + relabelConfig.Replacement = *commonConfig.InstanceKey + + relabelConfigs = append(relabelConfigs, relabelConfig) + } + commonConfig.ApplyDefaults(b.cfg.Integrations.ConfigV2.Metrics.Autoscrape) scrapeConfig := prom_config.DefaultScrapeConfig scrapeConfig.JobName = b.formatJobName(name, commonConfig.InstanceKey) diff --git a/converter/internal/staticconvert/testdata-v2/integrations_v2.river b/converter/internal/staticconvert/testdata-v2/integrations_v2.river index f3d134cdc79a..3580c4767151 100644 --- a/converter/internal/staticconvert/testdata-v2/integrations_v2.river +++ b/converter/internal/staticconvert/testdata-v2/integrations_v2.river @@ -15,8 +15,17 @@ prometheus.exporter.azure "integrations_azure1" { metrics = ["HttpRequestCount"] } +discovery.relabel "integrations_azure1" { + targets = prometheus.exporter.azure.integrations_azure1.targets + + rule { + target_label = "instance" + replacement = "azure1" + } +} + prometheus.scrape "integrations_azure1" { - targets = prometheus.exporter.azure.integrations_azure1.targets + targets = discovery.relabel.integrations_azure1.output forward_to = [prometheus.remote_write.metrics_default.receiver] job_name = "integrations/azure1" } @@ -27,8 +36,17 @@ prometheus.exporter.azure "integrations_azure2" { metrics = ["HttpRequestCount"] } +discovery.relabel "integrations_azure2" { + targets = prometheus.exporter.azure.integrations_azure2.targets + + rule { + target_label = "instance" + replacement = "azure2" + } +} + prometheus.scrape "integrations_azure2" { - targets = prometheus.exporter.azure.integrations_azure2.targets + targets = discovery.relabel.integrations_azure2.output forward_to = [prometheus.remote_write.metrics_default.receiver] job_name = "integrations/azure2" } @@ -409,8 +427,17 @@ prometheus.exporter.apache "integrations_apache1" { insecure = true } +discovery.relabel "integrations_apache1" { + targets = prometheus.exporter.apache.integrations_apache1.targets + + rule { + target_label = "instance" + replacement = "apache1" + } +} + prometheus.scrape "integrations_apache1" { - targets = prometheus.exporter.apache.integrations_apache1.targets + targets = discovery.relabel.integrations_apache1.output forward_to = [prometheus.remote_write.metrics_default.receiver] job_name = "integrations/apache1" } @@ -431,6 +458,11 @@ discovery.relabel "integrations_apache2" { target_label = "test_label_2" replacement = "test_label_value_2" } + + rule { + target_label = "instance" + replacement = "apache2" + } } prometheus.scrape "integrations_apache2" { diff --git a/converter/internal/staticconvert/testdata/integrations.river b/converter/internal/staticconvert/testdata/integrations.river index 1fc2e1867c1e..68a04d198066 100644 --- a/converter/internal/staticconvert/testdata/integrations.river +++ b/converter/internal/staticconvert/testdata/integrations.river @@ -331,6 +331,11 @@ discovery.relabel "integrations_mongodb_exporter" { target_label = "mongodb_cluster" replacement = "prod-cluster" } + + rule { + target_label = "instance" + replacement = "instance-key-value" + } } prometheus.scrape "integrations_mongodb_exporter" { @@ -349,8 +354,17 @@ prometheus.exporter.mssql "integrations_mssql" { connection_string = "sqlserver://:@:" } +discovery.relabel "integrations_mssql" { + targets = prometheus.exporter.mssql.integrations_mssql.targets + + rule { + target_label = "instance" + replacement = "instance-key-value" + } +} + prometheus.scrape "integrations_mssql" { - targets = prometheus.exporter.mssql.integrations_mssql.targets + targets = discovery.relabel.integrations_mssql.output forward_to = [prometheus.remote_write.integrations.receiver] job_name = "integrations/mssql" diff --git a/converter/internal/staticconvert/testdata/integrations.yaml b/converter/internal/staticconvert/testdata/integrations.yaml index a57b0f808024..ced11cf6d911 100644 --- a/converter/internal/staticconvert/testdata/integrations.yaml +++ b/converter/internal/staticconvert/testdata/integrations.yaml @@ -107,6 +107,7 @@ integrations: mongodb_exporter: enabled: true mongodb_uri: mongodb://mongodb-a:27017 + instance: 'instance-key-value' relabel_configs: - source_labels: [__address__] target_label: service_name @@ -116,6 +117,7 @@ integrations: replacement: 'prod-cluster' mssql: enabled: true + instance: 'instance-key-value' connection_string: sqlserver://:@: mysqld_exporter: enabled: true From b76dc336b61d9c26dd50518ed2c606365c5a427e Mon Sep 17 00:00:00 2001 From: Robert Fratto Date: Wed, 15 Nov 2023 14:31:50 -0500 Subject: [PATCH 025/166] web/ui: remove unused dependencies (#5783) Closes #5653. --- web/ui/package.json | 10 - web/ui/yarn.lock | 2290 +------------------------------------------ 2 files changed, 32 insertions(+), 2268 deletions(-) diff --git a/web/ui/package.json b/web/ui/package.json index 2f20549e10ba..8c466a40e980 100644 --- a/web/ui/package.json +++ b/web/ui/package.json @@ -3,34 +3,24 @@ "private": true, "dependencies": { "@fortawesome/fontawesome-svg-core": "^6.4.0", - "@fortawesome/free-regular-svg-icons": "^6.4.0", "@fortawesome/free-solid-svg-icons": "^6.4.0", "@fortawesome/react-fontawesome": "^0.2.0", - "@grafana/ui": "^9.5.2", - "@tanstack/react-query": "^4.29.5", "d3": "^7.8.4", "d3-dag": "^0.11.5", "d3-zoom": "^3.0.0", "normalize.css": "^8.0.1", - "prismjs": "^1.29.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.11.1", "react-syntax-highlighter": "^15.5.0", - "react-table": "^7.8.0", "typescript": "^5.0.4" }, "devDependencies": { "@types/d3": "^7.4.0", "@types/d3-zoom": "^3.0.2", - "@types/eslint-plugin-prettier": "^3.1.0", - "@types/node": "^20.1.3", - "@types/prettier": "^2.7.2", - "@types/prismjs": "^1.26.0", "@types/react": "^18.2.6", "@types/react-dom": "^18.2.14", "@types/react-syntax-highlighter": "^15.5.6", - "@types/react-table": "^7.7.14", "eslint": "^8.40.0", "eslint-config-prettier": "^8.8.0", "eslint-config-react-app": "^7.0.1", diff --git a/web/ui/yarn.lock b/web/ui/yarn.lock index 20ee26ab4206..66627484b971 100644 --- a/web/ui/yarn.lock +++ b/web/ui/yarn.lock @@ -202,7 +202,7 @@ dependencies: "@babel/types" "^7.21.5" -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.21.4": +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.21.4": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== @@ -1102,7 +1102,7 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.6", "@babel/runtime@^7.20.7", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.20.7", "@babel/runtime@^7.3.1", "@babel/runtime@^7.8.4": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200" integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q== @@ -1166,11 +1166,6 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@braintree/sanitize-url@6.0.2": - version "6.0.2" - resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz#6110f918d273fe2af8ea1c4398a88774bb9fc12f" - integrity sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg== - "@csstools/normalize.css@*": version "12.0.0" resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-12.0.0.tgz#a9583a75c3f150667771f30b60d9f059473e62c4" @@ -1282,119 +1277,6 @@ resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016" integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== -"@emotion/babel-plugin@^11.10.6", "@emotion/babel-plugin@^11.11.0": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" - integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/runtime" "^7.18.3" - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/serialize" "^1.1.2" - babel-plugin-macros "^3.1.0" - convert-source-map "^1.5.0" - escape-string-regexp "^4.0.0" - find-root "^1.1.0" - source-map "^0.5.7" - stylis "4.2.0" - -"@emotion/cache@^11.10.5", "@emotion/cache@^11.11.0", "@emotion/cache@^11.4.0": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" - integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== - dependencies: - "@emotion/memoize" "^0.8.1" - "@emotion/sheet" "^1.2.2" - "@emotion/utils" "^1.2.1" - "@emotion/weak-memoize" "^0.3.1" - stylis "4.2.0" - -"@emotion/css@11.10.6": - version "11.10.6" - resolved "https://registry.yarnpkg.com/@emotion/css/-/css-11.10.6.tgz#5d226fdd8ef2a46d28e4eb09f66dc01a3bda5a04" - integrity sha512-88Sr+3heKAKpj9PCqq5A1hAmAkoSIvwEq1O2TwDij7fUtsJpdkV4jMTISSTouFeRvsGvXIpuSuDQ4C1YdfNGXw== - dependencies: - "@emotion/babel-plugin" "^11.10.6" - "@emotion/cache" "^11.10.5" - "@emotion/serialize" "^1.1.1" - "@emotion/sheet" "^1.2.1" - "@emotion/utils" "^1.2.0" - -"@emotion/hash@^0.9.1": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" - integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== - -"@emotion/memoize@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" - integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== - -"@emotion/react@11.10.6": - version "11.10.6" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.6.tgz#dbe5e650ab0f3b1d2e592e6ab1e006e75fd9ac11" - integrity sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw== - dependencies: - "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.10.6" - "@emotion/cache" "^11.10.5" - "@emotion/serialize" "^1.1.1" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@emotion/utils" "^1.2.0" - "@emotion/weak-memoize" "^0.3.0" - hoist-non-react-statics "^3.3.1" - -"@emotion/react@^11.8.1": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.0.tgz#408196b7ef8729d8ad08fc061b03b046d1460e02" - integrity sha512-ZSK3ZJsNkwfjT3JpDAWJZlrGD81Z3ytNDsxw1LKq1o+xkmO5pnWfr6gmCC8gHEFf3nSSX/09YrG67jybNPxSUw== - dependencies: - "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.11.0" - "@emotion/cache" "^11.11.0" - "@emotion/serialize" "^1.1.2" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" - "@emotion/utils" "^1.2.1" - "@emotion/weak-memoize" "^0.3.1" - hoist-non-react-statics "^3.3.1" - -"@emotion/serialize@^1.1.1", "@emotion/serialize@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.2.tgz#017a6e4c9b8a803bd576ff3d52a0ea6fa5a62b51" - integrity sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA== - dependencies: - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/unitless" "^0.8.1" - "@emotion/utils" "^1.2.1" - csstype "^3.0.2" - -"@emotion/sheet@^1.2.1", "@emotion/sheet@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" - integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== - -"@emotion/unitless@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" - integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== - -"@emotion/use-insertion-effect-with-fallbacks@^1.0.0", "@emotion/use-insertion-effect-with-fallbacks@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" - integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== - -"@emotion/utils@^1.2.0", "@emotion/utils@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" - integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== - -"@emotion/weak-memoize@^0.3.0", "@emotion/weak-memoize@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" - integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== - "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -1427,57 +1309,6 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.40.0.tgz#3ba73359e11f5a7bd3e407f70b3528abfae69cec" integrity sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA== -"@floating-ui/core@^1.2.6": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.2.6.tgz#d21ace437cc919cdd8f1640302fa8851e65e75c0" - integrity sha512-EvYTiXet5XqweYGClEmpu3BoxmsQ4hkj3QaYA6qEnigCWffTP3vNRwBReTdrwDwo7OoJ3wM8Uoe9Uk4n+d4hfg== - -"@floating-ui/dom@^1.0.1": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.2.7.tgz#c123e4db014b07b97e996cd459245fa217049c6b" - integrity sha512-DyqylONj1ZaBnzj+uBnVfzdjjCkFCL2aA9ESHLyUOGSqb03RpbLMImP1ekIQXYs4KLk9jAjJfZAU8hXfWSahEg== - dependencies: - "@floating-ui/core" "^1.2.6" - -"@formatjs/ecma402-abstract@1.15.0": - version "1.15.0" - resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.15.0.tgz#0a285a5dc69889e15d53803bd5036272e23e5a18" - integrity sha512-7bAYAv0w4AIao9DNg0avfOLTCPE9woAgs6SpXuMq11IN3A+l+cq8ghczwqSZBM11myvPSJA7vLn72q0rJ0QK6Q== - dependencies: - "@formatjs/intl-localematcher" "0.2.32" - tslib "^2.4.0" - -"@formatjs/fast-memoize@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-2.0.1.tgz#f15aaa73caad5562899c69bdcad8db82adcd3b0b" - integrity sha512-M2GgV+qJn5WJQAYewz7q2Cdl6fobQa69S1AzSM2y0P68ZDbK5cWrJIcPCO395Of1ksftGZoOt4LYCO/j9BKBSA== - dependencies: - tslib "^2.4.0" - -"@formatjs/icu-messageformat-parser@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.4.0.tgz#e165f3594c68416ce15f63793768251de2a85f88" - integrity sha512-6Dh5Z/gp4F/HovXXu/vmd0If5NbYLB5dZrmhWVNb+BOGOEU3wt7Z/83KY1dtd7IDhAnYHasbmKE1RbTE0J+3hw== - dependencies: - "@formatjs/ecma402-abstract" "1.15.0" - "@formatjs/icu-skeleton-parser" "1.4.0" - tslib "^2.4.0" - -"@formatjs/icu-skeleton-parser@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.4.0.tgz#96342eca7c4eef7a309875569e5da973db3465e6" - integrity sha512-Qq347VM616rVLkvN6QsKJELazRyNlbCiN47LdH0Mc5U7E2xV0vatiVhGqd3KFgbc055BvtnUXR7XX60dCGFuWg== - dependencies: - "@formatjs/ecma402-abstract" "1.15.0" - tslib "^2.4.0" - -"@formatjs/intl-localematcher@0.2.32": - version "0.2.32" - resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.2.32.tgz#00d4d307cd7d514b298e15a11a369b86c8933ec1" - integrity sha512-k/MEBstff4sttohyEpXxCmC3MqbUn9VvHGlZ8fauLzkbwXmVrEeyzS+4uhrvAk9DWU9/7otYWxyDox4nT/KVLQ== - dependencies: - tslib "^2.4.0" - "@fortawesome/fontawesome-common-types@6.4.0": version "6.4.0" resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.0.tgz#88da2b70d6ca18aaa6ed3687832e11f39e80624b" @@ -1490,13 +1321,6 @@ dependencies: "@fortawesome/fontawesome-common-types" "6.4.0" -"@fortawesome/free-regular-svg-icons@^6.4.0": - version "6.4.0" - resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.4.0.tgz#cacc53bd8d832d46feead412d9ea9ce80a55e13a" - integrity sha512-ZfycI7D0KWPZtf7wtMFnQxs8qjBXArRzczABuMQqecA/nXohquJ5J/RCR77PmY5qGWkxAZDxpnUFVXKwtY/jPw== - dependencies: - "@fortawesome/fontawesome-common-types" "6.4.0" - "@fortawesome/free-solid-svg-icons@^6.4.0": version "6.4.0" resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.4.0.tgz#48c0e790847fa56299e2f26b82b39663b8ad7119" @@ -1511,144 +1335,6 @@ dependencies: prop-types "^15.8.1" -"@grafana/data@9.5.2": - version "9.5.2" - resolved "https://registry.yarnpkg.com/@grafana/data/-/data-9.5.2.tgz#983042208a61c3a321499da7837fdd2ecbe7a04c" - integrity sha512-L5lXzwPfG1Zu04slMLVqwETykYoWfJFqB7HqeqHWRtUD4YW7NlsyNXnSI7/d0GnbPGNWjejWFxjss3jq4Beq5Q== - dependencies: - "@braintree/sanitize-url" "6.0.2" - "@grafana/schema" "9.5.2" - "@types/d3-interpolate" "^3.0.0" - d3-interpolate "3.0.1" - date-fns "2.29.3" - dompurify "^2.4.3" - eventemitter3 "5.0.0" - fast_array_intersect "1.1.0" - history "4.10.1" - lodash "4.17.21" - marked "4.2.12" - moment "2.29.4" - moment-timezone "0.5.41" - ol "7.2.2" - papaparse "5.3.2" - react-use "17.4.0" - regenerator-runtime "0.13.11" - rxjs "7.8.0" - tinycolor2 "1.6.0" - tslib "2.5.0" - uplot "1.6.24" - xss "^1.0.14" - -"@grafana/e2e-selectors@9.5.2": - version "9.5.2" - resolved "https://registry.yarnpkg.com/@grafana/e2e-selectors/-/e2e-selectors-9.5.2.tgz#8d56e0c11d7dfb85e0b9a908397abb58cfbc2325" - integrity sha512-SXBFbRMsRRRSnHbIiJZJsepTHDgOf885VuHMrtkjLiYTLAU5Rg/Ywy0I270qhAPtyWXpiDXTGlqCEQoJF3P3IQ== - dependencies: - "@grafana/tsconfig" "^1.2.0-rc1" - tslib "2.5.0" - typescript "4.8.4" - -"@grafana/faro-core@^1.0.2": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@grafana/faro-core/-/faro-core-1.0.5.tgz#12eb4c46b7372f66f5fb0d7fd28970ac40b07881" - integrity sha512-LO7KvdzB55TplshdE19B9ZFsEcEgL/tsUBMNeotUPtT+LdyQriATCQj1eBalJY16M1bcieVc6Umzv7a6nMBTYg== - dependencies: - "@opentelemetry/api" "^1.4.1" - "@opentelemetry/api-metrics" "^0.33.0" - "@opentelemetry/otlp-transformer" "^0.37.0" - -"@grafana/faro-web-sdk@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@grafana/faro-web-sdk/-/faro-web-sdk-1.0.2.tgz#24e305a5d91fccc9c57577606f0adb12ad7f4a93" - integrity sha512-C5Cx1owlhdpa+CSu4s5cBN9jmFGfhdoUilWc9bP0gK5LW/MIPlysYNgE/1jCyYYQekOnQPNAxwBUOx1c0kbDqg== - dependencies: - "@grafana/faro-core" "^1.0.2" - ua-parser-js "^1.0.32" - web-vitals "^3.1.1" - -"@grafana/schema@9.5.2": - version "9.5.2" - resolved "https://registry.yarnpkg.com/@grafana/schema/-/schema-9.5.2.tgz#336587ceb9cb1391b3d07d9e0372a7812cb7b215" - integrity sha512-EbJLpdS4Zt7e8p40DVWOdGrTz0M8LRrCHGuHZnpz7xcFmwWTwu5bh/i1n4i98QYmF5cD+oAcRaHqRqT15HYORw== - dependencies: - tslib "2.5.0" - -"@grafana/tsconfig@^1.2.0-rc1": - version "1.2.0-rc1" - resolved "https://registry.yarnpkg.com/@grafana/tsconfig/-/tsconfig-1.2.0-rc1.tgz#10973c978ec95b0ea637511254b5f478bce04de7" - integrity sha512-+SgQeBQ1pT6D/E3/dEdADqTrlgdIGuexUZ8EU+8KxQFKUeFeU7/3z/ayI2q/wpJ/Kr6WxBBNlrST6aOKia19Ag== - -"@grafana/ui@^9.5.2": - version "9.5.2" - resolved "https://registry.yarnpkg.com/@grafana/ui/-/ui-9.5.2.tgz#ea535b1f32486b7ce7bf7233ae3e16f6fb9224d2" - integrity sha512-wI8CiKjAH4I7sQEvI4HB12/k7sHFI5WXwnx8WPPIarF///i+e+D/7gzEeoVOFz6UlRPgO8jFxnJ8ePN1C/DF0Q== - dependencies: - "@emotion/css" "11.10.6" - "@emotion/react" "11.10.6" - "@grafana/data" "9.5.2" - "@grafana/e2e-selectors" "9.5.2" - "@grafana/faro-web-sdk" "1.0.2" - "@grafana/schema" "9.5.2" - "@leeoniya/ufuzzy" "1.0.6" - "@monaco-editor/react" "4.4.6" - "@popperjs/core" "2.11.6" - "@react-aria/button" "3.6.1" - "@react-aria/dialog" "3.3.1" - "@react-aria/focus" "3.8.0" - "@react-aria/menu" "3.6.1" - "@react-aria/overlays" "3.10.1" - "@react-aria/utils" "3.13.1" - "@react-stately/menu" "3.4.1" - "@sentry/browser" "6.19.7" - ansicolor "1.1.100" - calculate-size "1.1.1" - classnames "2.3.2" - core-js "3.28.0" - d3 "7.8.2" - date-fns "2.29.3" - hoist-non-react-statics "3.3.2" - i18next "^22.0.0" - immutable "4.2.4" - is-hotkey "0.2.0" - jquery "3.6.3" - lodash "4.17.21" - memoize-one "6.0.0" - moment "2.29.4" - monaco-editor "0.34.0" - ol "7.2.2" - prismjs "1.29.0" - rc-cascader "3.8.0" - rc-drawer "6.1.3" - rc-slider "10.1.1" - rc-time-picker "^3.7.3" - rc-tooltip "5.3.1" - react-beautiful-dnd "13.1.1" - react-calendar "4.0.0" - react-colorful "5.6.1" - react-custom-scrollbars-2 "4.5.0" - react-dropzone "14.2.3" - react-highlight-words "0.20.0" - react-hook-form "7.5.3" - react-i18next "^12.0.0" - react-inlinesvg "3.0.2" - react-popper "2.3.0" - react-popper-tooltip "4.4.2" - react-router-dom "^5.2.0" - react-select "5.7.0" - react-select-event "^5.1.0" - react-table "7.8.0" - react-transition-group "4.4.5" - react-use "17.4.0" - react-window "1.8.8" - rxjs "7.8.0" - slate "0.47.9" - slate-plain-serializer "0.7.13" - slate-react "0.22.10" - tinycolor2 "1.6.0" - tslib "2.5.0" - uplot "1.6.24" - uuid "9.0.0" - "@humanwhocodes/config-array@^0.11.8": version "0.11.8" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" @@ -1668,35 +1354,6 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== -"@internationalized/date@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.2.0.tgz#1d266e5e5543a059cf8cca9b954fa033c3e58a75" - integrity sha512-VDMHN1m33L4eqPs5BaihzgQJXyaORbMoHOtrapFxx179J8ucY5CRIHYsq5RRLKPHZWgjNfa5v6amWWDkkMFywA== - dependencies: - "@swc/helpers" "^0.4.14" - -"@internationalized/message@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@internationalized/message/-/message-3.1.0.tgz#b284014cd8bbb430a648b76c87c62bdca968b04c" - integrity sha512-Oo5m70FcBdADf7G8NkUffVSfuCdeAYVfsvNjZDi9ELpjvkc4YNJVTHt/NyTI9K7FgAVoELxiP9YmN0sJ+HNHYQ== - dependencies: - "@swc/helpers" "^0.4.14" - intl-messageformat "^10.1.0" - -"@internationalized/number@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@internationalized/number/-/number-3.2.0.tgz#dffb661cacd61a87b814c47b7d5240a286249066" - integrity sha512-GUXkhXSX1Ee2RURnzl+47uvbOxnlMnvP9Er+QePTjDjOPWuunmLKlEkYkEcLiiJp7y4l9QxGDLOlVr8m69LS5w== - dependencies: - "@swc/helpers" "^0.4.14" - -"@internationalized/string@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@internationalized/string/-/string-3.1.0.tgz#0b365906a8c3f44800b0db52c2e990cff345abce" - integrity sha512-TJQKiyUb+wyAfKF59UNeZ/kELMnkxyecnyPCnBI1ma4NaXReJW+7Cc2mObXAqraIBJUVv7rgI46RLKrLgi35ng== - dependencies: - "@swc/helpers" "^0.4.14" - "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -1968,60 +1625,11 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" -"@leeoniya/ufuzzy@1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@leeoniya/ufuzzy/-/ufuzzy-1.0.6.tgz#cbafcff1529d9592b92bd735f1e8b18f23eda983" - integrity sha512-7co2giTKNKESSEqW+nijF2cGG92WtlGkxFFq7dnwQTemS209JzTLODsnF1pS4KMr3S9xa7WheeCKfGVo5U7s6g== - "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== -"@mapbox/jsonlint-lines-primitives@~2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz#ce56e539f83552b58d10d672ea4d6fc9adc7b234" - integrity sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ== - -"@mapbox/mapbox-gl-style-spec@^13.23.1": - version "13.28.0" - resolved "https://registry.yarnpkg.com/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.28.0.tgz#2ec226320a0f77856046e000df9b419303a56458" - integrity sha512-B8xM7Fp1nh5kejfIl4SWeY0gtIeewbuRencqO3cJDrCHZpaPg7uY+V8abuR+esMeuOjRl5cLhVTP40v+1ywxbg== - dependencies: - "@mapbox/jsonlint-lines-primitives" "~2.0.2" - "@mapbox/point-geometry" "^0.1.0" - "@mapbox/unitbezier" "^0.0.0" - csscolorparser "~1.0.2" - json-stringify-pretty-compact "^2.0.0" - minimist "^1.2.6" - rw "^1.3.3" - sort-object "^0.3.2" - -"@mapbox/point-geometry@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz#8a83f9335c7860effa2eeeca254332aa0aeed8f2" - integrity sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ== - -"@mapbox/unitbezier@^0.0.0": - version "0.0.0" - resolved "https://registry.yarnpkg.com/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz#15651bd553a67b8581fb398810c98ad86a34524e" - integrity sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA== - -"@monaco-editor/loader@^1.3.2": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@monaco-editor/loader/-/loader-1.3.3.tgz#7f1742bd3cc21c0362a46a4056317f6e5215cfca" - integrity sha512-6KKF4CTzcJiS8BJwtxtfyYt9shBiEv32ateQ9T4UVogwn4HM/uPo9iJd2Dmbkpz8CM6Y0PDUpjnZzCwC+eYo2Q== - dependencies: - state-local "^1.0.6" - -"@monaco-editor/react@4.4.6": - version "4.4.6" - resolved "https://registry.yarnpkg.com/@monaco-editor/react/-/react-4.4.6.tgz#8ae500b0edf85276d860ed702e7056c316548218" - integrity sha512-Gr3uz3LYf33wlFE3eRnta4RxP5FSNxiIV9ENn2D2/rN8KgGAD8ecvcITRtsbbyuOuNkwbuHYxfeaz2Vr+CtyFA== - dependencies: - "@monaco-editor/loader" "^1.3.2" - prop-types "^15.7.2" - "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" @@ -2050,71 +1658,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@opentelemetry/api-metrics@^0.33.0": - version "0.33.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/api-metrics/-/api-metrics-0.33.0.tgz#753d355289b7811ad254d6e5b0193bd1b9f23ab0" - integrity sha512-78evfPRRRnJA6uZ3xuBuS3VZlXTO/LRs+Ff1iv3O/7DgibCtq9k27T6Zlj8yRdJDFmcjcbQrvC0/CpDpWHaZYA== - dependencies: - "@opentelemetry/api" "^1.0.0" - -"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.4.1.tgz#ff22eb2e5d476fbc2450a196e40dd243cc20c28f" - integrity sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA== - -"@opentelemetry/core@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.11.0.tgz#3141a0e96a9ade6ee2dcdd794fd0b014e1013dde" - integrity sha512-aP1wHSb+YfU0pM63UAkizYPuS4lZxzavHHw5KJfFNN2oWQ79HSm6JR3CzwFKHwKhSzHN8RE9fgP1IdVJ8zmo1w== - dependencies: - "@opentelemetry/semantic-conventions" "1.11.0" - -"@opentelemetry/otlp-transformer@^0.37.0": - version "0.37.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.37.0.tgz#5de4bf39da9a14841ca0ebd7ac220801d616de64" - integrity sha512-cIzV9x2DhJ5gN0mld8OqN+XM95sDiuAJJvXsRjVuz9vu8TSNbbao/QCKNfJLOXqe8l3Ge05nKzQ6Q2gDDEN36w== - dependencies: - "@opentelemetry/core" "1.11.0" - "@opentelemetry/resources" "1.11.0" - "@opentelemetry/sdk-metrics" "1.11.0" - "@opentelemetry/sdk-trace-base" "1.11.0" - -"@opentelemetry/resources@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.11.0.tgz#68e3ca399e63246a6b87bc495f819c5bd9f2c112" - integrity sha512-y0z2YJTqk0ag+hGT4EXbxH/qPhDe8PfwltYb4tXIEsozgEFfut/bqW7H7pDvylmCjBRMG4NjtLp57V1Ev++brA== - dependencies: - "@opentelemetry/core" "1.11.0" - "@opentelemetry/semantic-conventions" "1.11.0" - -"@opentelemetry/sdk-metrics@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.11.0.tgz#0fe347fb39a802ec270315cba0eba2e3ce64c4a2" - integrity sha512-knuq3pwU0+46FEMdw9Ses+alXL9cbcLUUTdYBBBsaKkqKwoVMHfhBufW7u6YCu4i+47Wg6ZZTN/eGc4LbTbK5Q== - dependencies: - "@opentelemetry/core" "1.11.0" - "@opentelemetry/resources" "1.11.0" - lodash.merge "4.6.2" - -"@opentelemetry/sdk-trace-base@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.11.0.tgz#a962dbe74ae28442501ce804d4a270892e70d862" - integrity sha512-DV8e5/Qo42V8FMBlQ0Y0Liv6Hl/Pp5bAZ73s7r1euX8w4bpRes1B7ACiA4yujADbWMJxBgSo4fGbi4yjmTMG2A== - dependencies: - "@opentelemetry/core" "1.11.0" - "@opentelemetry/resources" "1.11.0" - "@opentelemetry/semantic-conventions" "1.11.0" - -"@opentelemetry/semantic-conventions@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.11.0.tgz#b7ed9a601acb6e0aef67564b37e4f9abad449170" - integrity sha512-fG4D0AktoHyHwGhFGv+PzKrZjxbKJfckJauTJdq2A+ej5cTazmNYjJVAODXXkYyrsI10muMl+B1iO2q1R6Lp+w== - -"@petamoriken/float16@^3.4.7": - version "3.8.0" - resolved "https://registry.yarnpkg.com/@petamoriken/float16/-/float16-3.8.0.tgz#3a48b7938e1a62188a61ec02d5b12630f671401f" - integrity sha512-AhVAm6SQ+zgxIiOzwVdUcDmKlu/qU39FiYD2UD6kQQaVenrn0dGZewIghWAENGQsvC+1avLCuT+T2/3Gsp/W3w== - "@pmmmwh/react-refresh-webpack-plugin@^0.5.3": version "0.5.10" resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz#2eba163b8e7dbabb4ce3609ab5e32ab63dda3ef8" @@ -2130,320 +1673,6 @@ schema-utils "^3.0.0" source-map "^0.7.3" -"@popperjs/core@2.11.6": - version "2.11.6" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" - integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== - -"@popperjs/core@^2.11.5": - version "2.11.7" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.7.tgz#ccab5c8f7dc557a52ca3288c10075c9ccd37fff7" - integrity sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw== - -"@rc-component/portal@^1.0.0-6": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@rc-component/portal/-/portal-1.1.1.tgz#1a30ffe51c240b54360cba8e8bfc5d1f559325c4" - integrity sha512-m8w3dFXX0H6UkJ4wtfrSwhe2/6M08uz24HHrF8pWfAXPwA9hwCuTE5per/C86KwNLouRpwFGcr7LfpHaa1F38g== - dependencies: - "@babel/runtime" "^7.18.0" - classnames "^2.3.2" - rc-util "^5.24.4" - -"@react-aria/button@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@react-aria/button/-/button-3.6.1.tgz#111e296df8e171e4eb227c306f087337490bc896" - integrity sha512-g10dk0eIQ71F1QefUymbff0yceQFHEKzOwK7J5QAFB5w/FUSmCTsMkBrrra4AogRxYHIAr5adPic5F2g7VzQFw== - dependencies: - "@babel/runtime" "^7.6.2" - "@react-aria/focus" "^3.8.0" - "@react-aria/interactions" "^3.11.0" - "@react-aria/utils" "^3.13.3" - "@react-stately/toggle" "^3.4.1" - "@react-types/button" "^3.6.1" - "@react-types/shared" "^3.14.1" - -"@react-aria/dialog@3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@react-aria/dialog/-/dialog-3.3.1.tgz#16e250ecc25ddd5da140a4b3dccb4af0d2bfacb8" - integrity sha512-Sz7XdzX3rRhmfIp1rYS5D90T1tqiDsAkONsbPBRqUJx7NrjKiHhx3wvG4shiK66cPhAZwBk7wuQmMugDeIDFSA== - dependencies: - "@babel/runtime" "^7.6.2" - "@react-aria/focus" "^3.8.0" - "@react-aria/utils" "^3.13.3" - "@react-stately/overlays" "^3.4.1" - "@react-types/dialog" "^3.4.3" - "@react-types/shared" "^3.14.1" - -"@react-aria/focus@3.8.0": - version "3.8.0" - resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.8.0.tgz#b292df7e35ed1b57af43f98df8135b00c4667d17" - integrity sha512-XuaLFdqf/6OyILifkVJo++5k2O+wlpNvXgsJkRWn/wSmB77pZKURm2MMGiSg2u911NqY+829UrSlpmhCZrc8RA== - dependencies: - "@babel/runtime" "^7.6.2" - "@react-aria/interactions" "^3.11.0" - "@react-aria/utils" "^3.13.3" - "@react-types/shared" "^3.14.1" - clsx "^1.1.1" - -"@react-aria/focus@^3.12.0", "@react-aria/focus@^3.8.0": - version "3.12.0" - resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.12.0.tgz#ac01f13782c608d0ed24a3f0b39c96b4a0031716" - integrity sha512-nY6/2lpXzLep6dzQEESoowiSqNcy7DFWuRD/qHj9uKcQwWpYH/rqBrHVS/RNvL6Cz/fBA7L/4AzByJ6pTBtoeA== - dependencies: - "@react-aria/interactions" "^3.15.0" - "@react-aria/utils" "^3.16.0" - "@react-types/shared" "^3.18.0" - "@swc/helpers" "^0.4.14" - clsx "^1.1.1" - -"@react-aria/i18n@^3.6.0", "@react-aria/i18n@^3.7.1": - version "3.7.1" - resolved "https://registry.yarnpkg.com/@react-aria/i18n/-/i18n-3.7.1.tgz#bd52869f67a5847f2dbe89603255a2dfc5ef45b4" - integrity sha512-2fu1cv8yD3V+rlhOqstTdGAubadoMFuPE7lA1FfYdaJNxXa09iWqvpipUPlxYJrahW0eazkesOPDKFwOEMF1iA== - dependencies: - "@internationalized/date" "^3.2.0" - "@internationalized/message" "^3.1.0" - "@internationalized/number" "^3.2.0" - "@internationalized/string" "^3.1.0" - "@react-aria/ssr" "^3.6.0" - "@react-aria/utils" "^3.16.0" - "@react-types/shared" "^3.18.0" - "@swc/helpers" "^0.4.14" - -"@react-aria/interactions@^3.11.0", "@react-aria/interactions@^3.15.0": - version "3.15.0" - resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.15.0.tgz#db638d6ae0407be52ecaa1882c2ebc2931880da8" - integrity sha512-8br5uatPDISEWMINKGs7RhNPtqLhRsgwQsooaH7Jgxjs0LBlylODa8l7D3NA1uzVzlvfnZm/t2YN/y8ieRSDcQ== - dependencies: - "@react-aria/ssr" "^3.6.0" - "@react-aria/utils" "^3.16.0" - "@react-types/shared" "^3.18.0" - "@swc/helpers" "^0.4.14" - -"@react-aria/menu@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@react-aria/menu/-/menu-3.6.1.tgz#91ad540795316623e539b32163a5d6a95f09052c" - integrity sha512-HUJVIOW9TwDS4RpAaw9/JqcOXFCn3leVUumWLfbwwzxON/Sbywr1j1jLuIkfIRAPmp0QVd42f6/9Y0cfH78BQQ== - dependencies: - "@babel/runtime" "^7.6.2" - "@react-aria/i18n" "^3.6.0" - "@react-aria/interactions" "^3.11.0" - "@react-aria/overlays" "^3.10.1" - "@react-aria/selection" "^3.10.1" - "@react-aria/utils" "^3.13.3" - "@react-stately/collections" "^3.4.3" - "@react-stately/menu" "^3.4.1" - "@react-stately/tree" "^3.3.3" - "@react-types/button" "^3.6.1" - "@react-types/menu" "^3.7.1" - "@react-types/shared" "^3.14.1" - -"@react-aria/overlays@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@react-aria/overlays/-/overlays-3.10.1.tgz#ea7995d818030482987fbcd2f65344daf67175c2" - integrity sha512-6hY+3PQzFXQ2Gf656IiUy2VCwxzNohCHxHTZb7WTlOyNWDN77q8lzuHBlaoEzyh25M8CCO6NPa5DukyK3uCHSQ== - dependencies: - "@babel/runtime" "^7.6.2" - "@react-aria/i18n" "^3.6.0" - "@react-aria/interactions" "^3.11.0" - "@react-aria/ssr" "^3.3.0" - "@react-aria/utils" "^3.13.3" - "@react-aria/visually-hidden" "^3.4.1" - "@react-stately/overlays" "^3.4.1" - "@react-types/button" "^3.6.1" - "@react-types/overlays" "^3.6.3" - "@react-types/shared" "^3.14.1" - -"@react-aria/overlays@^3.10.1": - version "3.14.0" - resolved "https://registry.yarnpkg.com/@react-aria/overlays/-/overlays-3.14.0.tgz#2206ca33010dbf6f1986dac6019caeeb5632c03d" - integrity sha512-lt4vOj44ho0LpmpaHwQ4VgX7eNfKXig9VD7cvE9u7uyECG51jqt9go19s4+/O+otX7pPrhdYlEB2FxLFJocxfw== - dependencies: - "@react-aria/focus" "^3.12.0" - "@react-aria/i18n" "^3.7.1" - "@react-aria/interactions" "^3.15.0" - "@react-aria/ssr" "^3.6.0" - "@react-aria/utils" "^3.16.0" - "@react-aria/visually-hidden" "^3.8.0" - "@react-stately/overlays" "^3.5.1" - "@react-types/button" "^3.7.2" - "@react-types/overlays" "^3.7.1" - "@react-types/shared" "^3.18.0" - "@swc/helpers" "^0.4.14" - -"@react-aria/selection@^3.10.1": - version "3.14.0" - resolved "https://registry.yarnpkg.com/@react-aria/selection/-/selection-3.14.0.tgz#33520cee7d3f67da0f1c718694c8f557f03a487f" - integrity sha512-4/cq3mP75/qbhz2OkWmrfL6MJ+7+KfFsT6wvVNvxgOWR0n4jivHToKi3DXo2TzInvNU+10Ha7FCWavZoUNgSlA== - dependencies: - "@react-aria/focus" "^3.12.0" - "@react-aria/i18n" "^3.7.1" - "@react-aria/interactions" "^3.15.0" - "@react-aria/utils" "^3.16.0" - "@react-stately/collections" "^3.7.0" - "@react-stately/selection" "^3.13.0" - "@react-types/shared" "^3.18.0" - "@swc/helpers" "^0.4.14" - -"@react-aria/ssr@^3.2.0", "@react-aria/ssr@^3.3.0", "@react-aria/ssr@^3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.6.0.tgz#e5d52bd1686ff229f68f806cf94ee29dd9f54fb7" - integrity sha512-OFiYQdv+Yk7AO7IsQu/fAEPijbeTwrrEYvdNoJ3sblBBedD5j5fBTNWrUPNVlwC4XWWnWTCMaRIVsJujsFiWXg== - dependencies: - "@swc/helpers" "^0.4.14" - -"@react-aria/utils@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.13.1.tgz#45557fdc7ae9de057a83014013bf09e54d074c96" - integrity sha512-usW6RoLKil4ylgDbRcaQ5YblNGv5ZihI4I9NB8pdazhw53cSRyLaygLdmHO33xgpPnAhb6Nb/tv8d5p6cAde+A== - dependencies: - "@babel/runtime" "^7.6.2" - "@react-aria/ssr" "^3.2.0" - "@react-stately/utils" "^3.5.0" - "@react-types/shared" "^3.13.1" - clsx "^1.1.1" - -"@react-aria/utils@^3.13.3", "@react-aria/utils@^3.16.0": - version "3.16.0" - resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.16.0.tgz#0394f575e47b1c48a15844dc58e1775a9f72f8f5" - integrity sha512-BumpgENDlXuoRPQm1OfVUYRcxY9vwuXw1AmUpwF61v55gAZT3LvJWsfF8jgfQNzLJr5jtr7xvUx7pXuEyFpJMA== - dependencies: - "@react-aria/ssr" "^3.6.0" - "@react-stately/utils" "^3.6.0" - "@react-types/shared" "^3.18.0" - "@swc/helpers" "^0.4.14" - clsx "^1.1.1" - -"@react-aria/visually-hidden@^3.4.1", "@react-aria/visually-hidden@^3.8.0": - version "3.8.0" - resolved "https://registry.yarnpkg.com/@react-aria/visually-hidden/-/visually-hidden-3.8.0.tgz#9bdcf708e4e628041d8fbac66c7dcb98b9529da9" - integrity sha512-Ox7VcO8vfdA1rCHPcUuP9DWfCI9bNFVlvN/u66AfjwBLH40MnGGdob5hZswQnbxOY4e0kwkMQDmZwNPYzBQgsg== - dependencies: - "@react-aria/interactions" "^3.15.0" - "@react-aria/utils" "^3.16.0" - "@react-types/shared" "^3.18.0" - "@swc/helpers" "^0.4.14" - clsx "^1.1.1" - -"@react-stately/collections@^3.4.3", "@react-stately/collections@^3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@react-stately/collections/-/collections-3.7.0.tgz#5f032ba5e8b554e90bf1a2077220d2560618dbf7" - integrity sha512-xZHJxjGXFe3LUbuNgR1yATBVSIQnm+ItLq2DJZo3JzTtRu3gEwLoRRoapPsBQnC5VsjcaimgoqvT05P0AlvCTQ== - dependencies: - "@react-types/shared" "^3.18.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/menu@3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@react-stately/menu/-/menu-3.4.1.tgz#47f23996927ffa605d725e68902e27ef848fe27a" - integrity sha512-DWo87hjKwtQsFiFJYZGcEvzfSYT/I4FoRl3Ose5lA/gPjdg97f42vumj+Kp4mqJwlla4A9Erz2vAh2uMLl4H0w== - dependencies: - "@babel/runtime" "^7.6.2" - "@react-stately/overlays" "^3.4.1" - "@react-stately/utils" "^3.5.1" - "@react-types/menu" "^3.7.1" - "@react-types/shared" "^3.14.1" - -"@react-stately/menu@^3.4.1": - version "3.5.1" - resolved "https://registry.yarnpkg.com/@react-stately/menu/-/menu-3.5.1.tgz#2cffe84d8c93920822fdd92bf716205460873db7" - integrity sha512-nnuZlDBFIc3gB34kofbKDStFg9r8rijY+7ez2VWQmss72I9D7+JTn7OXJxV0oQt2lBYmNfS5W6bC9uXk3Z4dLg== - dependencies: - "@react-stately/overlays" "^3.5.1" - "@react-stately/utils" "^3.6.0" - "@react-types/menu" "^3.9.0" - "@react-types/shared" "^3.18.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/overlays@^3.4.1", "@react-stately/overlays@^3.5.1": - version "3.5.1" - resolved "https://registry.yarnpkg.com/@react-stately/overlays/-/overlays-3.5.1.tgz#7d876261fe288cfbc4cc56869481b7cd7a14e30f" - integrity sha512-lDKqqpdaIQdJb8DS4+tT7p0TLyCeaUaFpEtWZNjyv1/nguoqYtSeRwnyPR4p/YM4AW7SJspNiTJSLQxkTMIa8w== - dependencies: - "@react-stately/utils" "^3.6.0" - "@react-types/overlays" "^3.7.1" - "@swc/helpers" "^0.4.14" - -"@react-stately/selection@^3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@react-stately/selection/-/selection-3.13.0.tgz#a4efe8ebebd99cc38fa5cfe90c9038bbe155192a" - integrity sha512-F6FiB5GIS6wdmDDJtD2ofr+y6ysLHcvHVyUZHm00aEup2hcNjtNx3x4MlFIc3tO1LvxDSIIWXJhPXdB4sb32uw== - dependencies: - "@react-stately/collections" "^3.7.0" - "@react-stately/utils" "^3.6.0" - "@react-types/shared" "^3.18.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/toggle@^3.4.1": - version "3.5.1" - resolved "https://registry.yarnpkg.com/@react-stately/toggle/-/toggle-3.5.1.tgz#9e8a2c55f8e18c5904c07f724cf7c056fd55660c" - integrity sha512-PF4ZaATpXWu7DkneGSZ2/PA6LJ1MrhKNiaENTZlbojXMRr5kK33wPzaDW7I8O25IUm0+rvQicv7A6QkEOxgOPg== - dependencies: - "@react-stately/utils" "^3.6.0" - "@react-types/checkbox" "^3.4.3" - "@react-types/shared" "^3.18.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/tree@^3.3.3": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@react-stately/tree/-/tree-3.6.0.tgz#bdcb645ca2e566d0a7e3dc1cdde13b491f34dfc1" - integrity sha512-9ekYGaebgMmd2p6PGRzsvr8KsDsDnrJF2uLV1GMq9hBaMxOLN5/dpxgfZGdHWoF3MXgeHeLloqrleMNfO6g64Q== - dependencies: - "@react-stately/collections" "^3.7.0" - "@react-stately/selection" "^3.13.0" - "@react-stately/utils" "^3.6.0" - "@react-types/shared" "^3.18.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/utils@^3.5.0", "@react-stately/utils@^3.5.1", "@react-stately/utils@^3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@react-stately/utils/-/utils-3.6.0.tgz#f273e7fcb348254347d2e88c8f0c45571060c207" - integrity sha512-rptF7iUWDrquaYvBAS4QQhOBQyLBncDeHF03WnHXAxnuPJXNcr9cXJtjJPGCs036ZB8Q2hc9BGG5wNyMkF5v+Q== - dependencies: - "@swc/helpers" "^0.4.14" - -"@react-types/button@^3.6.1", "@react-types/button@^3.7.2": - version "3.7.2" - resolved "https://registry.yarnpkg.com/@react-types/button/-/button-3.7.2.tgz#954566e9b576780bda0c018d7f5046a1d44f5677" - integrity sha512-P7L+r+k4yVrvsfEWx3wlzbb+G7c9XNWzxEBfy6WX9HnKb/J5bo4sP5Zi8/TFVaKTlaG60wmVhdr+8KWSjL0GuQ== - dependencies: - "@react-types/shared" "^3.18.0" - -"@react-types/checkbox@^3.4.3": - version "3.4.3" - resolved "https://registry.yarnpkg.com/@react-types/checkbox/-/checkbox-3.4.3.tgz#fb1585030b000a9fcc87d624a218dd3f2e3038d1" - integrity sha512-kn2f8mK88yvRrCfh8jYCDL2xpPhSApFWk9+qjWGsX/bnGGob7D5n71YYQ4cS58117YK2nrLc/AyQJXcZnJiA7Q== - dependencies: - "@react-types/shared" "^3.18.0" - -"@react-types/dialog@^3.4.3": - version "3.5.1" - resolved "https://registry.yarnpkg.com/@react-types/dialog/-/dialog-3.5.1.tgz#0e1faa133238e026c4ba52c62fd2c8d748539b1f" - integrity sha512-a0eeGIITFuOxY2fIL1WkJT5yWIMIQ+VM4vE5MtS59zV9JynDaiL4uNL4yg08kJZm8oyzxIWwrov4gAbEVVWbDQ== - dependencies: - "@react-types/overlays" "^3.7.1" - "@react-types/shared" "^3.18.0" - -"@react-types/menu@^3.7.1", "@react-types/menu@^3.9.0": - version "3.9.0" - resolved "https://registry.yarnpkg.com/@react-types/menu/-/menu-3.9.0.tgz#2c98335e9e563f06a25996cde73b99a8920ef6a9" - integrity sha512-aalUYwOkzcHn8X59vllgtH96YLqZvAr4mTj5GEs8chv5JVlmArUzcDiOymNrYZ0p9JzshzSUqxxXyCFpnnxghw== - dependencies: - "@react-types/overlays" "^3.7.1" - "@react-types/shared" "^3.18.0" - -"@react-types/overlays@^3.6.3", "@react-types/overlays@^3.7.1": - version "3.7.1" - resolved "https://registry.yarnpkg.com/@react-types/overlays/-/overlays-3.7.1.tgz#f06bf0b7845e5a609c3a3eda0bb3f2aea71a143a" - integrity sha512-2AwYQkelr4p1uXR1KJIGQEbubOumzM853Hsyup2y/TaMbjvBWOVyzYWSrQURex667JZmpwUb0qjkEH+4z3Q74g== - dependencies: - "@react-types/shared" "^3.18.0" - -"@react-types/shared@^3.13.1", "@react-types/shared@^3.14.1", "@react-types/shared@^3.18.0": - version "3.18.0" - resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.18.0.tgz#4f2bacad5912eba6667695ee3f9e8ac9f79849f7" - integrity sha512-WJj7RAPj7NLdR/VzFObgvCju9NMDktWSruSPJ3DrL5qyrrvJoyMW67L4YjNoVp2b7Y+k10E0q4fSMV0PlJoL0w== - "@remix-run/router@1.6.1": version "1.6.1" resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.6.1.tgz#3a3a408481a3796f45223a549c2571517bc8af2d" @@ -2491,58 +1720,6 @@ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== -"@sentry/browser@6.19.7": - version "6.19.7" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-6.19.7.tgz#a40b6b72d911b5f1ed70ed3b4e7d4d4e625c0b5f" - integrity sha512-oDbklp4O3MtAM4mtuwyZLrgO1qDVYIujzNJQzXmi9YzymJCuzMLSRDvhY83NNDCRxf0pds4DShgYeZdbSyKraA== - dependencies: - "@sentry/core" "6.19.7" - "@sentry/types" "6.19.7" - "@sentry/utils" "6.19.7" - tslib "^1.9.3" - -"@sentry/core@6.19.7": - version "6.19.7" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.19.7.tgz#156aaa56dd7fad8c89c145be6ad7a4f7209f9785" - integrity sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw== - dependencies: - "@sentry/hub" "6.19.7" - "@sentry/minimal" "6.19.7" - "@sentry/types" "6.19.7" - "@sentry/utils" "6.19.7" - tslib "^1.9.3" - -"@sentry/hub@6.19.7": - version "6.19.7" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.19.7.tgz#58ad7776bbd31e9596a8ec46365b45cd8b9cfd11" - integrity sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA== - dependencies: - "@sentry/types" "6.19.7" - "@sentry/utils" "6.19.7" - tslib "^1.9.3" - -"@sentry/minimal@6.19.7": - version "6.19.7" - resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.19.7.tgz#b3ee46d6abef9ef3dd4837ebcb6bdfd01b9aa7b4" - integrity sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ== - dependencies: - "@sentry/hub" "6.19.7" - "@sentry/types" "6.19.7" - tslib "^1.9.3" - -"@sentry/types@6.19.7": - version "6.19.7" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.19.7.tgz#c6b337912e588083fc2896eb012526cf7cfec7c7" - integrity sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg== - -"@sentry/utils@6.19.7": - version "6.19.7" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.19.7.tgz#6edd739f8185fd71afe49cbe351c1bbf5e7b7c79" - integrity sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA== - dependencies: - "@sentry/types" "6.19.7" - tslib "^1.9.3" - "@sinclair/typebox@^0.24.1": version "0.24.51" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" @@ -2678,40 +1855,6 @@ "@svgr/plugin-jsx" "8.0.1" "@svgr/plugin-svgo" "8.0.1" -"@swc/helpers@^0.4.14": - version "0.4.14" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.14.tgz#1352ac6d95e3617ccb7c1498ff019654f1e12a74" - integrity sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw== - dependencies: - tslib "^2.4.0" - -"@tanstack/query-core@4.29.5": - version "4.29.5" - resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-4.29.5.tgz#a0273e88bf2fc102c4c893dc7c034127b67fd5d9" - integrity sha512-xXIiyQ/4r9KfaJ3k6kejqcaqFXXBTzN2aOJ5H1J6aTJE9hl/nbgAdfF6oiIu0CD5xowejJEJ6bBg8TO7BN4NuQ== - -"@tanstack/react-query@^4.29.5": - version "4.29.5" - resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-4.29.5.tgz#3890741291f9f925933243d78bd74dfc59d64208" - integrity sha512-F87cibC3s3eG0Q90g2O+hqntpCrudKFnR8P24qkH9uccEhXErnJxBC/AAI4cJRV2bfMO8IeGZQYf3WyYgmSg0w== - dependencies: - "@tanstack/query-core" "4.29.5" - use-sync-external-store "^1.2.0" - -"@testing-library/dom@>=7": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-9.3.0.tgz#ed8ce10aa5e05eb6eaf0635b5b8975d889f66075" - integrity sha512-Dffe68pGwI6WlLRYR2I0piIkyole9cSBH5jGQKCGMRpHW5RHCqAUaqc2Kv0tUyd4dU4DLPKhJIjyKOnjv4tuUw== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^5.0.1" - aria-query "^5.0.0" - chalk "^4.1.0" - dom-accessibility-api "^0.5.9" - lz-string "^1.5.0" - pretty-format "^27.0.2" - "@tootallnate/once@1": version "1.1.2" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" @@ -2722,11 +1865,6 @@ resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== -"@types/aria-query@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.1.tgz#3286741fb8f1e1580ac28784add4c7a1d49bdfbc" - integrity sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q== - "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": version "7.20.0" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" @@ -2883,7 +2021,7 @@ resolved "https://registry.yarnpkg.com/@types/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b3a446b5437faededb30ac32b7cc0486559ab1e2" integrity sha512-9hjRTVoZjRFR6xo8igAJyNXQyPX6Aq++Nhb5ebrUF414dv4jr2MitM2fWiOY475wa3Za7TOS2Gh9fmqEhLTt0A== -"@types/d3-interpolate@*", "@types/d3-interpolate@^3.0.0": +"@types/d3-interpolate@*": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz#e7d17fa4a5830ad56fe22ce3b4fac8541a9572dc" integrity sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw== @@ -3000,13 +2138,6 @@ "@types/d3-transition" "*" "@types/d3-zoom" "*" -"@types/eslint-plugin-prettier@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.0.tgz#451b5e1e5f148a38dc41e9c5b61d45cd2e97af2c" - integrity sha512-6/UIuz99F0IvtDez4U3bRwAmN4VKnuw10Ibblf0iZhtNbmbonMSLqs/qqsXrGIAWvjy+vXqYwOljgtLhrETSMg== - dependencies: - "@types/eslint" "*" - "@types/eslint-scope@^3.7.3": version "3.7.4" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" @@ -3072,14 +2203,6 @@ dependencies: "@types/unist" "*" -"@types/hoist-non-react-statics@^3.3.0": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" - integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== - dependencies: - "@types/react" "*" - hoist-non-react-statics "^3.3.0" - "@types/html-minifier-terser@^6.0.0": version "6.1.0" resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" @@ -3111,11 +2234,6 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/js-cookie@^2.2.6": - version "2.2.7" - resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.2.7.tgz#226a9e31680835a6188e887f3988e60c04d3f6a3" - integrity sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA== - "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" @@ -3136,7 +2254,7 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== -"@types/node@*", "@types/node@^20.1.3": +"@types/node@*": version "20.1.3" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.1.3.tgz#bc8e7cd8065a5fc355a3a191a68db8019c58bc00" integrity sha512-NP2yfZpgmf2eDRPmgGq+fjGjSwFgYbihA8/gK+ey23qT9RkxsgNTZvGOEpXgzIGqesTYkElELLgtKoMQTys5vA== @@ -3146,16 +2264,11 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/prettier@^2.1.5", "@types/prettier@^2.7.2": +"@types/prettier@^2.1.5": version "2.7.2" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== -"@types/prismjs@^1.26.0": - version "1.26.0" - resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.26.0.tgz#a1c3809b0ad61c62cac6d4e0c56d610c910b7654" - integrity sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ== - "@types/prop-types@*": version "15.7.5" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" @@ -3178,16 +2291,6 @@ dependencies: "@types/react" "*" -"@types/react-redux@^7.1.20": - version "7.1.25" - resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.25.tgz#de841631205b24f9dfb4967dd4a7901e048f9a88" - integrity sha512-bAGh4e+w5D8dajd6InASVIyCo4pZLJ66oLb80F9OBLO1gKESbZcRCJpTT6uLXX+HAB57zw1WTdwJdAsewuTweg== - dependencies: - "@types/hoist-non-react-statics" "^3.3.0" - "@types/react" "*" - hoist-non-react-statics "^3.3.0" - redux "^4.0.0" - "@types/react-syntax-highlighter@^15.5.6": version "15.5.6" resolved "https://registry.yarnpkg.com/@types/react-syntax-highlighter/-/react-syntax-highlighter-15.5.6.tgz#77c95e6b74d2be23208fcdcf187b93b47025f1b1" @@ -3195,20 +2298,6 @@ dependencies: "@types/react" "*" -"@types/react-table@^7.7.14": - version "7.7.14" - resolved "https://registry.yarnpkg.com/@types/react-table/-/react-table-7.7.14.tgz#b880f1ae140ed065bca2e21b3008ca1ebe71595a" - integrity sha512-TYrv7onCiakaG1uAu/UpQ9FojNEt/4/ht87EgJQaEGFoWV606ZLWUZAcUHzMxgc3v1mywP1cDyz3qB4ho3hWOw== - dependencies: - "@types/react" "*" - -"@types/react-transition-group@^4.4.0": - version "4.4.6" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.6.tgz#18187bcda5281f8e10dfc48f0943e2fdf4f75e2e" - integrity sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew== - dependencies: - "@types/react" "*" - "@types/react@*", "@types/react@^18.2.6": version "18.2.6" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.6.tgz#5cd53ee0d30ffc193b159d3516c8c8ad2f19d571" @@ -3523,16 +2612,6 @@ "@webassemblyjs/ast" "1.11.6" "@xtuc/long" "4.2.2" -"@wojtekmaj/date-utils@^1.0.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@wojtekmaj/date-utils/-/date-utils-1.1.3.tgz#7be7fb33a2b987d886ff868877ee8c7908176e85" - integrity sha512-rHrDuTl1cx5LYo8F4K4HVauVjwzx4LwrKfEk4br4fj4nK8JjJZ8IG6a6pBHkYmPLBQHCOEDwstb0WNXMGsmdOw== - -"@xobotyi/scrollbar-width@^1.9.5": - version "1.9.5" - resolved "https://registry.yarnpkg.com/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz#80224a6919272f405b87913ca13b92929bdf3c4d" - integrity sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ== - "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -3589,18 +2668,6 @@ acorn@^8.2.4, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== -add-dom-event-listener@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz#6a92db3a0dd0abc254e095c0f1dc14acbbaae310" - integrity sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw== - dependencies: - object-assign "4.x" - -add-px-to-style@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/add-px-to-style/-/add-px-to-style-1.0.0.tgz#d0c135441fa8014a8137904531096f67f28f263a" - integrity sha512-YMyxSlXpPjD8uWekCQGuN40lV4bnZagUwqa2m/uFv1z/tNImSk9fnXVMUI5qwME/zzI3MMQRvjZ+69zyfSSyew== - address@^1.0.1, address@^1.1.2: version "1.2.2" resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" @@ -3701,11 +2768,6 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -ansicolor@1.1.100: - version "1.1.100" - resolved "https://registry.yarnpkg.com/ansicolor/-/ansicolor-1.1.100.tgz#811f1afbf726edca3aafb942a14df8351996304a" - integrity sha512-Jl0pxRfa9WaQVUX57AB8/V2my6FJxrOR1Pp2qqFbig20QB4HzUoQ48THTKAgHlUCJeQm/s2WoOPcoIDhyCL/kw== - any-promise@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" @@ -3736,7 +2798,7 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@^5.0.0, aria-query@^5.1.3: +aria-query@^5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== @@ -3772,11 +2834,6 @@ array-includes@^3.1.5, array-includes@^3.1.6: get-intrinsic "^1.1.3" is-string "^1.0.7" -array-tree-filter@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" - integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== - array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -3838,11 +2895,6 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -attr-accept@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.2.tgz#646613809660110749e92f2c10833b70968d929b" - integrity sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg== - autoprefixer@^10.4.13: version "10.4.14" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d" @@ -4008,14 +3060,6 @@ babel-preset-react-app@^10.0.1: babel-plugin-macros "^3.1.0" babel-plugin-transform-react-remove-prop-types "^0.4.24" -babel-runtime@6.x, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -4148,11 +3192,6 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -calculate-size@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/calculate-size/-/calculate-size-1.1.1.tgz#ae7caa1c7795f82c4f035dc7be270e3581dae3ee" - integrity sha512-jJZ7pvbQVM/Ss3VO789qpsypN3xmnepg242cejOAslsmlZLYw2dnj7knnNowabQ0Kzabzx56KFTy2Pot/y6FmA== - call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -4286,11 +3325,6 @@ cjs-module-lexer@^1.0.0: resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== -classnames@2.3.2, classnames@2.x, classnames@^2.2.1, classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1, classnames@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" - integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== - clean-css@^5.2.2: version "5.3.2" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224" @@ -4307,11 +3341,6 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -clsx@^1.1.1, clsx@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" - integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -4373,7 +3402,7 @@ commander@7, commander@^7.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== -commander@^2.20.0, commander@^2.20.3: +commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -4403,18 +3432,6 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== -component-classes@^1.2.5: - version "1.2.6" - resolved "https://registry.yarnpkg.com/component-classes/-/component-classes-1.2.6.tgz#c642394c3618a4d8b0b8919efccbbd930e5cd691" - integrity sha512-hPFGULxdwugu1QWW3SvVOCUHLzO34+a2J6Wqy0c5ASQkfi9/8nZcBB0ZohaEbXOQlCflMAEMmEWk7u7BVs4koA== - dependencies: - component-indexof "0.0.3" - -component-indexof@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-indexof/-/component-indexof-0.0.3.tgz#11d091312239eb8f32c8f25ae9cb002ffe8d3c24" - integrity sha512-puDQKvx/64HZXb4hBwIcvQLaLgux8o1CbWl39s41hrIIZDl1lJiD5jc22gj3RBeGK0ovxALDYpIbyjqDUUl0rw== - compressible@~2.0.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -4462,7 +3479,7 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== -convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.9.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== @@ -4477,13 +3494,6 @@ cookie@0.5.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== -copy-to-clipboard@^3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" - integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== - dependencies: - toggle-selection "^1.0.6" - core-js-compat@^3.25.1: version "3.30.2" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.30.2.tgz#83f136e375babdb8c80ad3c22d67c69098c1dd8b" @@ -4496,16 +3506,6 @@ core-js-pure@^3.23.3: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.30.2.tgz#005a82551f4af3250dcfb46ed360fad32ced114e" integrity sha512-p/npFUJXXBkCCTIlEGBdghofn00jWG6ZOtdoIXSJmAu2QBvN0IqpZXWweOytcwE6cfx8ZvVUy1vw8zxhe4Y2vg== -core-js@3.28.0: - version "3.28.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.28.0.tgz#ed8b9e99c273879fdfff0edfc77ee709a5800e4a" - integrity sha512-GiZn9D4Z/rSYvTeg1ljAIsEqFm0LaN9gVtwDCrKL80zHtS31p9BAjmTxVqTQDMpwlMolJZOFntUG2uwyj7DAqw== - -core-js@^2.4.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - core-js@^3.19.2: version "3.30.2" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.30.2.tgz#6528abfda65e5ad728143ea23f7a14f0dcf503fc" @@ -4562,14 +3562,6 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -css-animation@^1.3.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/css-animation/-/css-animation-1.6.1.tgz#162064a3b0d51f958b7ff37b3d6d4de18e17039e" - integrity sha512-/48+/BaEaHRY6kNQ2OIPzKf9A6g8WjZYjhiNDNuIVbsm5tXCGIAsHDjB4Xu1C4vXJtUWZo26O68OQkDpNBaPog== - dependencies: - babel-runtime "6.x" - component-classes "^1.2.5" - css-blank-pseudo@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561" @@ -4577,13 +3569,6 @@ css-blank-pseudo@^3.0.3: dependencies: postcss-selector-parser "^6.0.9" -css-box-model@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/css-box-model/-/css-box-model-1.2.1.tgz#59951d3b81fd6b2074a62d49444415b0d2b4d7c1" - integrity sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw== - dependencies: - tiny-invariant "^1.0.6" - css-declaration-sorter@^6.3.1: version "6.4.0" resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz#630618adc21724484b3e9505bce812def44000ad" @@ -4596,13 +3581,6 @@ css-has-pseudo@^3.0.4: dependencies: postcss-selector-parser "^6.0.9" -css-in-js-utils@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz#640ae6a33646d401fc720c54fc61c42cd76ae2bb" - integrity sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A== - dependencies: - hyphenate-style-name "^1.0.3" - css-loader@^6.5.1: version "6.7.3" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.3.tgz#1e8799f3ccc5874fdd55461af51137fcc5befbcd" @@ -4685,11 +3663,6 @@ css-what@^6.0.1, css-what@^6.1.0: resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== -csscolorparser@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/csscolorparser/-/csscolorparser-1.0.3.tgz#b34f391eea4da8f3e98231e2ccd8df9c041f171b" - integrity sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w== - cssdb@^7.1.0: version "7.5.4" resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.5.4.tgz#e34dafee5184d67634604e345e389ca79ac179ea" @@ -4700,11 +3673,6 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssfilter@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" - integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw== - cssnano-preset-default@^5.2.14: version "5.2.14" resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" @@ -4785,7 +3753,7 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" -csstype@^3.0.2, csstype@^3.0.6: +csstype@^3.0.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== @@ -4909,7 +3877,7 @@ d3-hierarchy@3: resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b01cd42c1eed3d46db77a5966cf726f8c09160c6" integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== -"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3, d3-interpolate@3.0.1: +"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== @@ -5008,42 +3976,6 @@ d3-zoom@3, d3-zoom@^3.0.0: d3-selection "2 - 3" d3-transition "2 - 3" -d3@7.8.2: - version "7.8.2" - resolved "https://registry.yarnpkg.com/d3/-/d3-7.8.2.tgz#2bdb3c178d095ae03b107a18837ae049838e372d" - integrity sha512-WXty7qOGSHb7HR7CfOzwN1Gw04MUOzN8qh9ZUsvwycIMb4DYMpY9xczZ6jUorGtO6bR9BPMPaueIKwiDxu9uiQ== - dependencies: - d3-array "3" - d3-axis "3" - d3-brush "3" - d3-chord "3" - d3-color "3" - d3-contour "4" - d3-delaunay "6" - d3-dispatch "3" - d3-drag "3" - d3-dsv "3" - d3-ease "3" - d3-fetch "3" - d3-force "3" - d3-format "3" - d3-geo "3" - d3-hierarchy "3" - d3-interpolate "3" - d3-path "3" - d3-polygon "3" - d3-quadtree "3" - d3-random "3" - d3-scale "4" - d3-scale-chromatic "3" - d3-selection "3" - d3-shape "3" - d3-time "3" - d3-time-format "4" - d3-timer "3" - d3-transition "3" - d3-zoom "3" - d3@^7.8.4: version "7.8.4" resolved "https://registry.yarnpkg.com/d3/-/d3-7.8.4.tgz#e35d45800e4068cab07e59e5d883a4bb42ab217f" @@ -5094,11 +4026,6 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -date-fns@2.29.3: - version "2.29.3" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" - integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== - debug@2.6.9, debug@^2.6.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -5113,7 +4040,7 @@ debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: dependencies: ms "2.1.2" -debug@^3.1.0, debug@^3.2.7: +debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== @@ -5246,11 +4173,6 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -direction@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/direction/-/direction-0.1.5.tgz#ce5d797f97e26f8be7beff53f7dc40e1c1a9ec4c" - integrity sha512-HceXsAluGbXKCz2qCVbXFUH4Vn4eNMWxY5gzydMFMnS1zKSwvDASqLwcrYLIFDpwuZ63FUAqjDLEP1eicHt8DQ== - dlv@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" @@ -5282,16 +4204,6 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-accessibility-api@^0.5.9: - version "0.5.16" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" - integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== - -dom-align@^1.7.0: - version "1.12.4" - resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.4.tgz#3503992eb2a7cfcb2ed3b2a6d21e0b9c00d54511" - integrity sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw== - dom-converter@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" @@ -5299,23 +4211,6 @@ dom-converter@^0.2.0: dependencies: utila "~0.4" -dom-css@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/dom-css/-/dom-css-2.1.0.tgz#fdbc2d5a015d0a3e1872e11472bbd0e7b9e6a202" - integrity sha512-w9kU7FAbaSh3QKijL6n59ofAhkkmMJ31GclJIz/vyQdjogfyxcB6Zf8CZyibOERI5o0Hxz30VmJS7+7r5fEj2Q== - dependencies: - add-px-to-style "1.0.0" - prefix-style "2.0.1" - to-camel-case "1.0.0" - -dom-helpers@^5.0.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" - integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== - dependencies: - "@babel/runtime" "^7.8.7" - csstype "^3.0.2" - dom-serializer@^1.0.1: version "1.4.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" @@ -5360,11 +4255,6 @@ domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" -dompurify@^2.4.3: - version "2.4.5" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.5.tgz#0e89a27601f0bad978f9a924e7a05d5d2cccdd87" - integrity sha512-jggCCd+8Iqp4Tsz0nIvpcb22InKEBrGz5dw3EQJMs8HPJDsKbFIO3STYtAvCfDx26Muevn1MHVI0XxjgFfmiSA== - domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" @@ -5406,11 +4296,6 @@ duplexer@^0.1.2: resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -earcut@^2.2.3: - version "2.2.4" - resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.4.tgz#6d02fd4d68160c114825d06890a92ecaae60343a" - integrity sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ== - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -5867,11 +4752,6 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -esrever@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/esrever/-/esrever-0.2.0.tgz#96e9d28f4f1b1a76784cd5d490eaae010e7407b8" - integrity sha512-1e9YJt6yQkyekt2BUjTky7LZWWVyC2cIpgdnsTAvMcnzXIZvlW/fTMPkxBcZoYhgih4d+EC+iw+yv9GIkz7vrw== - estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" @@ -5897,11 +4777,6 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -eventemitter3@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.0.tgz#084eb7f5b5388df1451e63f4c2aafd71b217ccb3" - integrity sha512-riuVbElZZNXLeLEoprfNYoDSwTBRR44X3mnhdI1YcnENpWTCsTTVZ2zFuqQcpoyqPQIUXdiPEU0ECAq0KQRaHg== - eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -5927,11 +4802,6 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -exenv@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" - integrity sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw== - exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -6015,26 +4885,6 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-loops@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/fast-loops/-/fast-loops-1.1.3.tgz#ce96adb86d07e7bf9b4822ab9c6fac9964981f75" - integrity sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g== - -fast-shallow-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz#d4dcaf6472440dcefa6f88b98e3251e27f25628b" - integrity sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw== - -fast_array_intersect@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fast_array_intersect/-/fast_array_intersect-1.1.0.tgz#8e8a83d95c515fd55bfb2b02da94da3d7f1c2b8b" - integrity sha512-/DCilZlUdz2XyNDF+ASs0PwY+RKG9Y4Silp/gbS72Cvbg4oibc778xcecg+pnNyiNHYgh/TApsiDTjpdniyShw== - -fastest-stable-stringify@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz#3757a6774f6ec8de40c4e86ec28ea02417214c76" - integrity sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q== - fastpriorityqueue@0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/fastpriorityqueue/-/fastpriorityqueue-0.7.2.tgz#64dfee2c2adbc18c076cf7552dc4bfbef7befe3f" @@ -6083,13 +4933,6 @@ file-loader@^6.2.0: loader-utils "^2.0.0" schema-utils "^3.0.0" -file-selector@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/file-selector/-/file-selector-0.6.0.tgz#fa0a8d9007b829504db4d07dd4de0310b65287dc" - integrity sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw== - dependencies: - tslib "^2.4.0" - filelist@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" @@ -6131,11 +4974,6 @@ find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-root@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" - integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== - find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -6291,29 +5129,11 @@ gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -geotiff@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/geotiff/-/geotiff-2.0.7.tgz#358e578233af70bfb0b4dee62d599ad78fc5cfca" - integrity sha512-FKvFTNowMU5K6lHYY2f83d4lS2rsCNdpUC28AX61x9ZzzqPNaWFElWv93xj0eJFaNyOYA63ic5OzJ88dHpoA5Q== - dependencies: - "@petamoriken/float16" "^3.4.7" - lerc "^3.0.0" - pako "^2.0.4" - parse-headers "^2.0.2" - quick-lru "^6.1.1" - web-worker "^1.2.0" - xml-utils "^1.0.2" - get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-document@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-document/-/get-document-1.0.0.tgz#4821bce66f1c24cb0331602be6cb6b12c4f01c4b" - integrity sha512-8E7H2Xxibav+/rQTTtm6gFlSQwDoAQg667yheA+vWQr/amxEuswChzGo4MIbOJJoR0SMpDyhbUqWp3FpIfwD9A== - get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" @@ -6346,20 +5166,6 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -get-user-locale@^1.2.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/get-user-locale/-/get-user-locale-1.5.1.tgz#18a9ba2cfeed0e713ea00968efa75d620523a5ea" - integrity sha512-WiNpoFRcHn1qxP9VabQljzGwkAQDrcpqUtaP0rNBEkFxJdh4f3tik6MfZsMYZc+UgQJdGCxWEjL9wnCUlRQXag== - dependencies: - lodash.memoize "^4.1.1" - -get-window@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/get-window/-/get-window-1.1.2.tgz#65fbaa999fb87f86ea5d30770f4097707044f47f" - integrity sha512-yjWpFcy9fjhLQHW1dPtg9ga4pmizLY8y4ZSHdGrAQ1NU277MRhnGnnLPxe19X8W5lWVsCZz++5xEuNozWMVmTw== - dependencies: - get-document "1" - glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -6551,34 +5357,10 @@ he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -highlight-words-core@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/highlight-words-core/-/highlight-words-core-1.2.2.tgz#1eff6d7d9f0a22f155042a00791237791b1eeaaa" - integrity sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg== - highlight.js@^10.4.1, highlight.js@~10.7.0: version "10.7.3" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" - integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== - -history@4.10.1, history@^4.9.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" - integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== - dependencies: - "@babel/runtime" "^7.1.2" - loose-envify "^1.2.0" - resolve-pathname "^3.0.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - value-equal "^1.0.1" - -hoist-non-react-statics@3.3.2, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" + integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== hoopy@^0.1.4: version "0.1.4" @@ -6625,13 +5407,6 @@ html-minifier-terser@^6.0.2: relateurl "^0.2.7" terser "^5.10.0" -html-parse-stringify@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz#dfc1017347ce9f77c8141a507f233040c59c55d2" - integrity sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg== - dependencies: - void-elements "3.1.0" - html-webpack-plugin@^5.5.0: version "5.5.1" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.1.tgz#826838e31b427f5f7f30971f8d8fa2422dfa6763" @@ -6726,18 +5501,6 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -hyphenate-style-name@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" - integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== - -i18next@^22.0.0: - version "22.4.15" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-22.4.15.tgz#951882b751872994f8502b5a6ef6f796e6a7d7f8" - integrity sha512-yYudtbFrrmWKLEhl6jvKUYyYunj4bTBCe2qIUYAxbXoPusY7YmdwPvOE6fx6UIfWvmlbCWDItr7wIs8KEBZ5Zg== - dependencies: - "@babel/runtime" "^7.20.6" - iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -6769,11 +5532,6 @@ identity-obj-proxy@^3.0.0: dependencies: harmony-reflect "^1.4.6" -ieee754@^1.1.12: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - ignore@^5.2.0: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" @@ -6784,11 +5542,6 @@ immer@^9.0.7: resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== -immutable@4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.2.4.tgz#83260d50889526b4b531a5e293709a77f7c55a2a" - integrity sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w== - import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -6833,14 +5586,6 @@ ini@^1.3.5: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -inline-style-prefixer@^6.0.0: - version "6.0.4" - resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-6.0.4.tgz#4290ed453ab0e4441583284ad86e41ad88384f44" - integrity sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg== - dependencies: - css-in-js-utils "^3.1.0" - fast-loops "^1.1.3" - internal-slot@^1.0.3, internal-slot@^1.0.4, internal-slot@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" @@ -6855,23 +5600,6 @@ internal-slot@^1.0.3, internal-slot@^1.0.4, internal-slot@^1.0.5: resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== -intl-messageformat@^10.1.0: - version "10.3.5" - resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.3.5.tgz#f55684fc663e62616ad59d3a504ea0cac3f267b7" - integrity sha512-6kPkftF8Jg3XJCkGKa5OD+nYQ+qcSxF4ZkuDdXZ6KGG0VXn+iblJqRFyDdm9VvKcMyC0Km2+JlVQffFM52D0YA== - dependencies: - "@formatjs/ecma402-abstract" "1.15.0" - "@formatjs/fast-memoize" "2.0.1" - "@formatjs/icu-messageformat-parser" "2.4.0" - tslib "^2.4.0" - -invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -6995,21 +5723,6 @@ is-hexadecimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== -is-hotkey@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-hotkey/-/is-hotkey-0.1.4.tgz#c34d2c85d6ec8d09a871dcf71931c8067a824c7d" - integrity sha512-Py+aW4r5mBBY18TGzGz286/gKS+fCQ0Hee3qkaiSmEPiD0PqFpe0wuA3l7rTOUKyeXl8Mxf3XzJxIoTlSv+kxA== - -is-hotkey@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/is-hotkey/-/is-hotkey-0.2.0.tgz#1835a68171a91e5c9460869d96336947c8340cef" - integrity sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw== - -is-in-browser@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" - integrity sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g== - is-map@^2.0.1, is-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" @@ -7052,13 +5765,6 @@ is-plain-obj@^3.0.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" @@ -7149,11 +5855,6 @@ is-weakset@^2.0.1: call-bind "^1.0.2" get-intrinsic "^1.1.1" -is-window@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d" - integrity sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg== - is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" @@ -7161,11 +5862,6 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" @@ -7181,16 +5877,6 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -isomorphic-base64@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/isomorphic-base64/-/isomorphic-base64-1.0.2.tgz#f426aae82569ba8a4ec5ca73ad21a44ab1ee7803" - integrity sha512-pQFyLwShVPA1Qr0dE1ZPguJkbOsFGDfSq6Wzz6XaO33v74X6/iQjgYPozwkeKGQxOI1/H3Fz7+ROtnV1veyKEg== - istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" @@ -7735,16 +6421,6 @@ jiti@^1.18.2: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.18.2.tgz#80c3ef3d486ebf2450d9335122b32d121f2a83cd" integrity sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg== -jquery@3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.3.tgz#23ed2ffed8a19e048814f13391a19afcdba160e6" - integrity sha512-bZ5Sy3YzKo9Fyc8wH2iIQK4JImJ6R0GWI9kL1/k7Z91ZBNgkRXE6U0JfHIizZbort8ZunhSI3jw9I6253ahKfg== - -js-cookie@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" - integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== - js-sdsl@^4.1.4: version "4.4.0" resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" @@ -7838,11 +6514,6 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json-stringify-pretty-compact@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz#e77c419f52ff00c45a31f07f4c820c2433143885" - integrity sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ== - json5@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" @@ -7912,11 +6583,6 @@ launch-editor@^2.6.0: picocolors "^1.0.0" shell-quote "^1.7.3" -lerc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lerc/-/lerc-3.0.0.tgz#36f36fbd4ba46f0abf4833799fff2e7d6865f5cb" - integrity sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww== - leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -7994,12 +6660,12 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== -lodash.memoize@^4.1.1, lodash.memoize@^4.1.2: +lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== -lodash.merge@4.6.2, lodash.merge@^4.6.2: +lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== @@ -8014,12 +6680,12 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== -lodash@4.17.21, lodash@^4.1.1, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: +lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: +loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -8055,11 +6721,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lz-string@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" - integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== - magic-string@^0.25.0, magic-string@^0.25.7: version "0.25.9" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" @@ -8081,16 +6742,6 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" -mapbox-to-css-font@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/mapbox-to-css-font/-/mapbox-to-css-font-2.4.2.tgz#a9e31b363ad8ca881cd339ca99f2d2a6b02ea5dd" - integrity sha512-f+NBjJJY4T3dHtlEz1wCG7YFlkODEjFIYlxDdLIDMNpkSksqTt+l/d4rjuwItxuzkuMFvPyrjzV2lxRM4ePcIA== - -marked@4.2.12: - version "4.2.12" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.12.tgz#d69a64e21d71b06250da995dcd065c11083bebb5" - integrity sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw== - mdn-data@2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" @@ -8118,21 +6769,6 @@ memfs@^3.1.2, memfs@^3.4.3: dependencies: fs-monkey "^1.0.3" -memoize-one@6.0.0, memoize-one@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045" - integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== - -"memoize-one@>=3.1.1 <6", memoize-one@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" - integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== - -memoize-one@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.1.0.tgz#a2387c58c03fff27ca390c31b764a79addf3f906" - integrity sha512-2GApq0yI/b22J2j9rhbrAlsHb0Qcz+7yWxeLG8h+95sl1XPUgeLimQSOdur4Vw7cUhrBHwaUZxWFZueojqNRzA== - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -8214,23 +6850,6 @@ minimist@^1.2.0, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -moment-timezone@0.5.41: - version "0.5.41" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.41.tgz#a7ad3285fd24aaf5f93b8119a9d749c8039c64c5" - integrity sha512-e0jGNZDOHfBXJGz8vR/sIMXvBIGJJcqFjmlg9lmE+5KX1U7/RZNMswfD8nKnNCnQdKTIj50IaRKwl1fvMLyyRg== - dependencies: - moment "^2.29.4" - -moment@2.29.4, moment@2.x, moment@^2.29.4: - version "2.29.4" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" - integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== - -monaco-editor@0.34.0: - version "0.34.0" - resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.34.0.tgz#b1749870a1f795dbfc4dc03d8e9b646ddcbeefa7" - integrity sha512-VF+S5zG8wxfinLKLrWcl4WUizMx+LeJrG4PM/M78OhcwocpV0jiyhX/pG6Q9jIOhrb/ckYi6nHnaR5OojlOZCQ== - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -8263,20 +6882,6 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nano-css@^5.3.1: - version "5.3.5" - resolved "https://registry.yarnpkg.com/nano-css/-/nano-css-5.3.5.tgz#3075ea29ffdeb0c7cb6d25edb21d8f7fa8e8fe8e" - integrity sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg== - dependencies: - css-tree "^1.1.2" - csstype "^3.0.6" - fastest-stable-stringify "^2.0.2" - inline-style-prefixer "^6.0.0" - rtl-css-js "^1.14.0" - sourcemap-codec "^1.4.8" - stacktrace-js "^2.0.2" - stylis "^4.0.6" - nanoid@^3.3.6: version "3.3.6" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" @@ -8364,7 +6969,7 @@ nwsapi@^2.2.0: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.4.tgz#fd59d5e904e8e1f03c25a7d5a15cfa16c714a1e5" integrity sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g== -object-assign@4.x, object-assign@^4.0.1, object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -8442,25 +7047,6 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -ol-mapbox-style@^9.2.0: - version "9.7.0" - resolved "https://registry.yarnpkg.com/ol-mapbox-style/-/ol-mapbox-style-9.7.0.tgz#38a4f7abc8f0a94f378dcdb7cefdcc69ca3f6287" - integrity sha512-YX3u8FBJHsRHaoGxmd724Mp5WPTuV7wLQW6zZhcihMuInsSdCX1EiZfU+8IAL7jG0pbgl5YgC0aWE/MXJcUXxg== - dependencies: - "@mapbox/mapbox-gl-style-spec" "^13.23.1" - mapbox-to-css-font "^2.4.1" - -ol@7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/ol/-/ol-7.2.2.tgz#d675a1525fd995a29a70a9a9fa9c3a9bc827aa39" - integrity sha512-eqJ1hhVQQ3Ap4OhYq9DRu5pz9RMpLhmoTauDoIqpn7logVi1AJE+lXjEHrPrTSuZYjtFbMgqr07sxoLNR65nrw== - dependencies: - earcut "^2.2.3" - geotiff "^2.0.7" - ol-mapbox-style "^9.2.0" - pbf "3.2.1" - rbush "^3.0.1" - on-finished@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -8568,16 +7154,6 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pako@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" - integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== - -papaparse@5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.3.2.tgz#d1abed498a0ee299f103130a6109720404fbd467" - integrity sha512-6dNZu0Ki+gyV0eBsFKJhYr+MdQYAzFUGlBMNj3GNrmHxmz1lfRa24CjFObPXtjcetlOv5Ad299MhIK0znp3afw== - param-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" @@ -8605,11 +7181,6 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" -parse-headers@^2.0.2: - version "2.0.5" - resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" - integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== - parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -8668,26 +7239,11 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pbf@3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/pbf/-/pbf-3.2.1.tgz#b4c1b9e72af966cd82c6531691115cc0409ffe2a" - integrity sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ== - dependencies: - ieee754 "^1.1.12" - resolve-protobuf-schema "^2.1.0" - performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -9284,11 +7840,6 @@ postcss@^8.3.5, postcss@^8.4.19, postcss@^8.4.23, postcss@^8.4.4: picocolors "^1.0.0" source-map-js "^1.0.2" -prefix-style@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/prefix-style/-/prefix-style-2.0.1.tgz#66bba9a870cfda308a5dc20e85e9120932c95a06" - integrity sha512-gdr1MBNVT0drzTq95CbSNdsrBDoHGlb2aDJP/FoY+1e+jSDPOb1Cv554gH2MGiSr2WTcXi/zu+NaFzfcHQkfBQ== - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -9324,7 +7875,7 @@ pretty-error@^4.0.0: lodash "^4.17.20" renderkid "^3.0.0" -pretty-format@^27.0.2, pretty-format@^27.5.1: +pretty-format@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== @@ -9343,7 +7894,7 @@ pretty-format@^28.1.3: ansi-styles "^5.0.0" react-is "^18.0.0" -prismjs@1.29.0, prismjs@^1.27.0, prismjs@^1.29.0: +prismjs@^1.27.0: version "1.29.0" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== @@ -9373,7 +7924,7 @@ prompts@^2.0.1, prompts@^2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@15.x, prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -9389,11 +7940,6 @@ property-information@^5.0.0: dependencies: xtend "^4.0.0" -protocol-buffers-schema@^3.3.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03" - integrity sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw== - proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -9434,22 +7980,7 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -quick-lru@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-6.1.1.tgz#f8e5bf9010376c126c80c1a62827a526c0e60adf" - integrity sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q== - -quickselect@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018" - integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw== - -raf-schd@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/raf-schd/-/raf-schd-4.0.3.tgz#5d6c34ef46f8b2a0e880a8fcdb743efc5bfdbc1a" - integrity sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ== - -raf@^3.1.0, raf@^3.4.0, raf@^3.4.1: +raf@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== @@ -9478,206 +8009,6 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" -rbush@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/rbush/-/rbush-3.0.1.tgz#5fafa8a79b3b9afdfe5008403a720cc1de882ecf" - integrity sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w== - dependencies: - quickselect "^2.0.0" - -rc-align@^2.4.0: - version "2.4.5" - resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-2.4.5.tgz#c941a586f59d1017f23a428f0b468663fb7102ab" - integrity sha512-nv9wYUYdfyfK+qskThf4BQUSIadeI/dCsfaMZfNEoxm9HwOIioQ+LyqmMK6jWHAZQgOzMLaqawhuBXlF63vgjw== - dependencies: - babel-runtime "^6.26.0" - dom-align "^1.7.0" - prop-types "^15.5.8" - rc-util "^4.0.4" - -rc-align@^4.0.0: - version "4.0.15" - resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-4.0.15.tgz#2bbd665cf85dfd0b0244c5a752b07565e9098577" - integrity sha512-wqJtVH60pka/nOX7/IspElA8gjPNQKIx/ZqJ6heATCkXpe1Zg4cPVrMD2vC96wjsFFL8WsmhPbx9tdMo1qqlIA== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - dom-align "^1.7.0" - rc-util "^5.26.0" - resize-observer-polyfill "^1.5.1" - -rc-animate@2.x: - version "2.11.1" - resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-2.11.1.tgz#2666eeb6f1f2a495a13b2af09e236712278fdb2c" - integrity sha512-1NyuCGFJG/0Y+9RKh5y/i/AalUCA51opyyS/jO2seELpgymZm2u9QV3xwODwEuzkmeQ1BDPxMLmYLcTJedPlkQ== - dependencies: - babel-runtime "6.x" - classnames "^2.2.6" - css-animation "^1.3.2" - prop-types "15.x" - raf "^3.4.0" - rc-util "^4.15.3" - react-lifecycles-compat "^3.0.4" - -rc-cascader@3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-3.8.0.tgz#5eaca8998b2e3f5692d13f16bfe2346eccc87c6a" - integrity sha512-zCz/NzsNRQ1TIfiR3rQNxjeRvgRHEkNdo0FjHQZ6Ay6n4tdCmMrM7+81ThNaf21JLQ1gS2AUG2t5uikGV78obA== - dependencies: - "@babel/runtime" "^7.12.5" - array-tree-filter "^2.1.0" - classnames "^2.3.1" - rc-select "~14.2.0" - rc-tree "~5.7.0" - rc-util "^5.6.1" - -rc-drawer@6.1.3: - version "6.1.3" - resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-6.1.3.tgz#4b2277db09f059be7144dc82d5afede9c2ab2191" - integrity sha512-AvHisO90A+xMLMKBw2zs89HxjWxusM2BUABlgK60RhweIHF8W/wk0hSOrxBlUXoA9r1F+10na3g6GZ97y1qDZA== - dependencies: - "@babel/runtime" "^7.10.1" - "@rc-component/portal" "^1.0.0-6" - classnames "^2.2.6" - rc-motion "^2.6.1" - rc-util "^5.21.2" - -rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.6.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.7.3.tgz#126155bb3e687174fb3b92fddade2835c963b04d" - integrity sha512-2xUvo8yGHdOHeQbdI8BtBsCIrWKchEmFEIskf0nmHtJsou+meLd/JE+vnvSX2JxcBrJtXY2LuBpxAOxrbY/wMQ== - dependencies: - "@babel/runtime" "^7.11.1" - classnames "^2.2.1" - rc-util "^5.21.0" - -rc-overflow@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/rc-overflow/-/rc-overflow-1.3.0.tgz#964f7db14aab611c3047788d3b8ee472732fee09" - integrity sha512-p2Qt4SWPTHAYl4oAao1THy669Fm5q8pYBDBHRaFOekCvcdcrgIx0ByXQMEkyPm8wUDX4BK6aARWecvCRc/7CTA== - dependencies: - "@babel/runtime" "^7.11.1" - classnames "^2.2.1" - rc-resize-observer "^1.0.0" - rc-util "^5.19.2" - -rc-resize-observer@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-1.3.1.tgz#b61b9f27048001243617b81f95e53d7d7d7a6a3d" - integrity sha512-iFUdt3NNhflbY3mwySv5CA1TC06zdJ+pfo0oc27xpf4PIOvfZwZGtD9Kz41wGYqC4SLio93RVAirSSpYlV/uYg== - dependencies: - "@babel/runtime" "^7.20.7" - classnames "^2.2.1" - rc-util "^5.27.0" - resize-observer-polyfill "^1.5.1" - -rc-select@~14.2.0: - version "14.2.2" - resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-14.2.2.tgz#03558848b190d24fc9010a3bf1104c6dbea9b122" - integrity sha512-w+LuiYGFWgaV23PuxtdeWtXSsoxt+eCfzxu/CvRuqSRm8tn/pqvAb1xUIDAjoMMWK1FqiOW4jI/iMt7ZRG/BBg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.0.1" - rc-overflow "^1.0.0" - rc-trigger "^5.0.4" - rc-util "^5.16.1" - rc-virtual-list "^3.4.13" - -rc-slider@10.1.1: - version "10.1.1" - resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-10.1.1.tgz#5e82036e60b61021aba3ea0e353744dd7c74e104" - integrity sha512-gn8oXazZISEhnmRinI89Z/JD/joAaM35jp+gDtIVSTD/JJMCCBqThqLk1SVJmvtfeiEF/kKaFY0+qt4SDHFUDw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-util "^5.27.0" - -rc-time-picker@^3.7.3: - version "3.7.3" - resolved "https://registry.yarnpkg.com/rc-time-picker/-/rc-time-picker-3.7.3.tgz#65a8de904093250ae9c82b02a4905e0f995e23e2" - integrity sha512-Lv1Mvzp9fRXhXEnRLO4nW6GLNxUkfAZ3RsiIBsWjGjXXvMNjdr4BX/ayElHAFK0DoJqOhm7c5tjmIYpEOwcUXg== - dependencies: - classnames "2.x" - moment "2.x" - prop-types "^15.5.8" - raf "^3.4.1" - rc-trigger "^2.2.0" - react-lifecycles-compat "^3.0.4" - -rc-tooltip@5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-5.3.1.tgz#3dde4e1865f79cd23f202bba4e585c2a1173024b" - integrity sha512-e6H0dMD38EPaSPD2XC8dRfct27VvT2TkPdoBSuNl3RRZ5tspiY/c5xYEmGC0IrABvMBgque4Mr2SMZuliCvoiQ== - dependencies: - "@babel/runtime" "^7.11.2" - classnames "^2.3.1" - rc-trigger "^5.3.1" - -rc-tree@~5.7.0: - version "5.7.3" - resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-5.7.3.tgz#5da576ba87039486d59092eb4490831690b8b3b5" - integrity sha512-Oql2S9+ZmT+mfTp5SNo1XM0QvkENjc0mPRFsHWRFSPuKird0OYMZZKmLznUJ+0aGDeFFWN42wiUZJtMFhrLgLw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.0.1" - rc-util "^5.16.1" - rc-virtual-list "^3.4.8" - -rc-trigger@^2.2.0: - version "2.6.5" - resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-2.6.5.tgz#140a857cf28bd0fa01b9aecb1e26a50a700e9885" - integrity sha512-m6Cts9hLeZWsTvWnuMm7oElhf+03GOjOLfTuU0QmdB9ZrW7jR2IpI5rpNM7i9MvAAlMAmTx5Zr7g3uu/aMvZAw== - dependencies: - babel-runtime "6.x" - classnames "^2.2.6" - prop-types "15.x" - rc-align "^2.4.0" - rc-animate "2.x" - rc-util "^4.4.0" - react-lifecycles-compat "^3.0.4" - -rc-trigger@^5.0.4, rc-trigger@^5.3.1: - version "5.3.4" - resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-5.3.4.tgz#6b4b26e32825677c837d1eb4d7085035eecf9a61" - integrity sha512-mQv+vas0TwKcjAO2izNPkqR4j86OemLRmvL2nOzdP9OWNWA1ivoTt5hzFqYNW9zACwmTezRiN8bttrC7cZzYSw== - dependencies: - "@babel/runtime" "^7.18.3" - classnames "^2.2.6" - rc-align "^4.0.0" - rc-motion "^2.0.0" - rc-util "^5.19.2" - -rc-util@^4.0.4, rc-util@^4.15.3, rc-util@^4.4.0: - version "4.21.1" - resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.21.1.tgz#88602d0c3185020aa1053d9a1e70eac161becb05" - integrity sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg== - dependencies: - add-dom-event-listener "^1.1.0" - prop-types "^15.5.10" - react-is "^16.12.0" - react-lifecycles-compat "^3.0.4" - shallowequal "^1.1.0" - -rc-util@^5.15.0, rc-util@^5.16.1, rc-util@^5.19.2, rc-util@^5.21.0, rc-util@^5.21.2, rc-util@^5.24.4, rc-util@^5.26.0, rc-util@^5.27.0, rc-util@^5.6.1: - version "5.30.0" - resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.30.0.tgz#76ae9019ff72a5b519ce51465cd77b2e451207e3" - integrity sha512-uaWpF/CZGyXuhQG71MWxkU+0bWkPEgqZUxEv251Cu7p3kpHDNm5+Ygu/U8ux0a/zbfGW8PsKcJL0XVBOMrlIZg== - dependencies: - "@babel/runtime" "^7.18.3" - react-is "^16.12.0" - -rc-virtual-list@^3.4.13, rc-virtual-list@^3.4.8: - version "3.4.13" - resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.4.13.tgz#20acc934b263abcf7b7c161f50ef82281b2f7e8d" - integrity sha512-cPOVDmcNM7rH6ANotanMDilW/55XnFPw0Jh/GQYtrzZSy3AmWvCnqVNyNC/pgg3lfVmX2994dlzAhuUrd4jG7w== - dependencies: - "@babel/runtime" "^7.20.0" - classnames "^2.2.6" - rc-resize-observer "^1.0.0" - rc-util "^5.15.0" - react-app-polyfill@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz#95221e0a9bd259e5ca6b177c7bb1cb6768f68fd7" @@ -9690,43 +8021,6 @@ react-app-polyfill@^3.0.0: regenerator-runtime "^0.13.9" whatwg-fetch "^3.6.2" -react-beautiful-dnd@13.1.1: - version "13.1.1" - resolved "https://registry.yarnpkg.com/react-beautiful-dnd/-/react-beautiful-dnd-13.1.1.tgz#b0f3087a5840920abf8bb2325f1ffa46d8c4d0a2" - integrity sha512-0Lvs4tq2VcrEjEgDXHjT98r+63drkKEgqyxdA7qD3mvKwga6a5SscbdLPO2IExotU1jW8L0Ksdl0Cj2AF67nPQ== - dependencies: - "@babel/runtime" "^7.9.2" - css-box-model "^1.2.0" - memoize-one "^5.1.1" - raf-schd "^4.0.2" - react-redux "^7.2.0" - redux "^4.0.4" - use-memo-one "^1.1.1" - -react-calendar@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/react-calendar/-/react-calendar-4.0.0.tgz#99ad73dd0c7c5b25aa535a5fdeee3d71bfe45faa" - integrity sha512-y9Q5Oo3Mq869KExbOCP3aJ3hEnRZKZ0TqUa9QU1wJGgDZFrW1qTaWp5v52oZpmxTTrpAMTUcUGaC0QJcO1f8Nw== - dependencies: - "@wojtekmaj/date-utils" "^1.0.2" - clsx "^1.2.1" - get-user-locale "^1.2.0" - prop-types "^15.6.0" - -react-colorful@5.6.1: - version "5.6.1" - resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.6.1.tgz#7dc2aed2d7c72fac89694e834d179e32f3da563b" - integrity sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw== - -react-custom-scrollbars-2@4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/react-custom-scrollbars-2/-/react-custom-scrollbars-2-4.5.0.tgz#cff18e7368bce9d570aea0be780045eda392c745" - integrity sha512-/z0nWAeXfMDr4+OXReTpYd1Atq9kkn4oI3qxq3iMXGQx1EEfwETSqB8HTAvg1X7dEqcCachbny1DRNGlqX5bDQ== - dependencies: - dom-css "^2.0.0" - prop-types "^15.5.10" - raf "^3.1.0" - react-dev-utils@^12.0.1: version "12.0.1" resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" @@ -9765,73 +8059,17 @@ react-dom@^18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" -react-dropzone@14.2.3: - version "14.2.3" - resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-14.2.3.tgz#0acab68308fda2d54d1273a1e626264e13d4e84b" - integrity sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug== - dependencies: - attr-accept "^2.2.2" - file-selector "^0.6.0" - prop-types "^15.8.1" - react-error-overlay@^6.0.11: version "6.0.11" resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== -react-fast-compare@^3.0.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.1.tgz#53933d9e14f364281d6cba24bfed7a4afb808b5f" - integrity sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg== - -react-from-dom@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/react-from-dom/-/react-from-dom-0.6.2.tgz#9da903a508c91c013b55afcd59348b8b0a39bdb4" - integrity sha512-qvWWTL/4xw4k/Dywd41RBpLQUSq97csuv15qrxN+izNeLYlD9wn5W8LspbfYe5CWbaSdkZ72BsaYBPQf2x4VbQ== - -react-highlight-words@0.20.0: - version "0.20.0" - resolved "https://registry.yarnpkg.com/react-highlight-words/-/react-highlight-words-0.20.0.tgz#c60bfff5d14678c8f0e8fbe4bdcf083e6c70d507" - integrity sha512-asCxy+jCehDVhusNmCBoxDf2mm1AJ//D+EzDx1m5K7EqsMBIHdZ5G4LdwbSEXqZq1Ros0G0UySWmAtntSph7XA== - dependencies: - highlight-words-core "^1.2.0" - memoize-one "^4.0.0" - prop-types "^15.5.8" - -react-hook-form@7.5.3: - version "7.5.3" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.5.3.tgz#9a624fa14ec153b154891c5ebddae02ec5c2e40f" - integrity sha512-5T0mfJ4kCPKljd7t3Rgp7lML4Y2+kaZIeMdN6Zo/J7gBQ+WkrDBHOftdOtz4X+7/eqHGak5yL5evNpYdA9abVA== - -react-i18next@^12.0.0: - version "12.2.2" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-12.2.2.tgz#38a6fad11acf4f2abfc5611bdb6b1918d0f47578" - integrity sha512-KBB6buBmVKXUWNxXHdnthp+38gPyBT46hJCAIQ8rX19NFL/m2ahte2KARfIDf2tMnSAL7wwck6eDOd/9zn6aFg== - dependencies: - "@babel/runtime" "^7.20.6" - html-parse-stringify "^3.0.1" - -react-immutable-proptypes@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/react-immutable-proptypes/-/react-immutable-proptypes-2.2.0.tgz#cce96d68cc3c18e89617cbf3092d08e35126af4a" - integrity sha512-Vf4gBsePlwdGvSZoLSBfd4HAP93HDauMY4fDjXhreg/vg6F3Fj/MXDNyTbltPC/xZKmZc+cjLu3598DdYK6sgQ== - dependencies: - invariant "^2.2.2" - -react-inlinesvg@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/react-inlinesvg/-/react-inlinesvg-3.0.2.tgz#5c59799966ae7926057091b2ac230ddcee01bea0" - integrity sha512-BEzkpMGQwEY68fgaouY7ZWvAUPb8jbj7dE9iDbWZxstDhMuz9qfpxNgvGSENKcDMdpq/XHduSk/LAmNKin4nKw== - dependencies: - exenv "^1.2.2" - react-from-dom "^0.6.2" - -react-is@^16.12.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: +react-is@^16.13.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^17.0.1, react-is@^17.0.2: +react-is@^17.0.1: version "17.0.2" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== @@ -9841,58 +8079,11 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-lifecycles-compat@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" - integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== - -react-popper-tooltip@4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/react-popper-tooltip/-/react-popper-tooltip-4.4.2.tgz#0dc4894b8e00ba731f89bd2d30584f6032ec6163" - integrity sha512-y48r0mpzysRTZAIh8m2kpZ8S1YPNqGtQPDrlXYSGvDS1c1GpG/NUXbsbIdfbhXfmSaRJuTcaT6N1q3CKuHRVbg== - dependencies: - "@babel/runtime" "^7.18.3" - "@popperjs/core" "^2.11.5" - react-popper "^2.3.0" - -react-popper@2.3.0, react-popper@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-2.3.0.tgz#17891c620e1320dce318bad9fede46a5f71c70ba" - integrity sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q== - dependencies: - react-fast-compare "^3.0.1" - warning "^4.0.2" - -react-redux@^7.2.0: - version "7.2.9" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.9.tgz#09488fbb9416a4efe3735b7235055442b042481d" - integrity sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ== - dependencies: - "@babel/runtime" "^7.15.4" - "@types/react-redux" "^7.1.20" - hoist-non-react-statics "^3.3.2" - loose-envify "^1.4.0" - prop-types "^15.7.2" - react-is "^17.0.2" - react-refresh@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== -react-router-dom@^5.2.0: - version "5.3.4" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.4.tgz#2ed62ffd88cae6db134445f4a0c0ae8b91d2e5e6" - integrity sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ== - dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - loose-envify "^1.3.1" - prop-types "^15.6.2" - react-router "5.3.4" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - react-router-dom@^6.11.1: version "6.11.1" resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.11.1.tgz#af226bae950deb437208a606a47cf5c2d72c55dc" @@ -9901,21 +8092,6 @@ react-router-dom@^6.11.1: "@remix-run/router" "1.6.1" react-router "6.11.1" -react-router@5.3.4: - version "5.3.4" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.4.tgz#8ca252d70fcc37841e31473c7a151cf777887bb5" - integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== - dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - hoist-non-react-statics "^3.1.0" - loose-envify "^1.3.1" - path-to-regexp "^1.7.0" - prop-types "^15.6.2" - react-is "^16.6.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - react-router@6.11.1: version "6.11.1" resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.11.1.tgz#6e58458c03e16834dda2b433c6adb9e7c2b1d7a8" @@ -9978,28 +8154,6 @@ react-scripts@5.0.1: optionalDependencies: fsevents "^2.3.2" -react-select-event@^5.1.0: - version "5.5.1" - resolved "https://registry.yarnpkg.com/react-select-event/-/react-select-event-5.5.1.tgz#d67e04a6a51428b1534b15ecb1b82afbe5edddcb" - integrity sha512-goAx28y0+iYrbqZA2FeRTreHHs/ZtSuKxtA+J5jpKT5RHPCbVZJ4MqACfPnWyFXsEec+3dP5bCrNTxIX8oYe9A== - dependencies: - "@testing-library/dom" ">=7" - -react-select@5.7.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.7.0.tgz#82921b38f1fcf1471a0b62304da01f2896cd8ce6" - integrity sha512-lJGiMxCa3cqnUr2Jjtg9YHsaytiZqeNOKeibv6WF5zbK/fPegZ1hg3y/9P1RZVLhqBTs0PfqQLKuAACednYGhQ== - dependencies: - "@babel/runtime" "^7.12.0" - "@emotion/cache" "^11.4.0" - "@emotion/react" "^11.8.1" - "@floating-ui/dom" "^1.0.1" - "@types/react-transition-group" "^4.4.0" - memoize-one "^6.0.0" - prop-types "^15.6.0" - react-transition-group "^4.3.0" - use-isomorphic-layout-effect "^1.1.2" - react-syntax-highlighter@^15.5.0: version "15.5.0" resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz#4b3eccc2325fa2ec8eff1e2d6c18fa4a9e07ab20" @@ -10011,54 +8165,6 @@ react-syntax-highlighter@^15.5.0: prismjs "^1.27.0" refractor "^3.6.0" -react-table@7.8.0, react-table@^7.8.0: - version "7.8.0" - resolved "https://registry.yarnpkg.com/react-table/-/react-table-7.8.0.tgz#07858c01c1718c09f7f1aed7034fcfd7bda907d2" - integrity sha512-hNaz4ygkZO4bESeFfnfOft73iBUj8K5oKi1EcSHPAibEydfsX2MyU6Z8KCr3mv3C9Kqqh71U+DhZkFvibbnPbA== - -react-transition-group@4.4.5, react-transition-group@^4.3.0: - version "4.4.5" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" - integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== - dependencies: - "@babel/runtime" "^7.5.5" - dom-helpers "^5.0.1" - loose-envify "^1.4.0" - prop-types "^15.6.2" - -react-universal-interface@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/react-universal-interface/-/react-universal-interface-0.6.2.tgz#5e8d438a01729a4dbbcbeeceb0b86be146fe2b3b" - integrity sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw== - -react-use@17.4.0: - version "17.4.0" - resolved "https://registry.yarnpkg.com/react-use/-/react-use-17.4.0.tgz#cefef258b0a6c534a5c8021c2528ac6e1a4cdc6d" - integrity sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q== - dependencies: - "@types/js-cookie" "^2.2.6" - "@xobotyi/scrollbar-width" "^1.9.5" - copy-to-clipboard "^3.3.1" - fast-deep-equal "^3.1.3" - fast-shallow-equal "^1.0.0" - js-cookie "^2.2.1" - nano-css "^5.3.1" - react-universal-interface "^0.6.2" - resize-observer-polyfill "^1.5.1" - screenfull "^5.1.0" - set-harmonic-interval "^1.0.1" - throttle-debounce "^3.0.1" - ts-easing "^0.2.0" - tslib "^2.1.0" - -react-window@1.8.8: - version "1.8.8" - resolved "https://registry.yarnpkg.com/react-window/-/react-window-1.8.8.tgz#1b52919f009ddf91970cbdb2050a6c7be44df243" - integrity sha512-D4IiBeRtGXziZ1n0XklnFGu7h9gU684zepqyKzgPNzrsrk7xOCxni+TCckjg2Nr/DiaEEGVVmnhYSlT2rB47dQ== - dependencies: - "@babel/runtime" "^7.0.0" - memoize-one ">=3.1.1 <6" - react@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" @@ -10109,13 +8215,6 @@ recursive-readdir@^2.2.2: dependencies: minimatch "^3.0.5" -redux@^4.0.0, redux@^4.0.4: - version "4.2.1" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.1.tgz#c08f4306826c49b5e9dc901dee0452ea8fce6197" - integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== - dependencies: - "@babel/runtime" "^7.9.2" - refractor@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.6.0.tgz#ac318f5a0715ead790fcfb0c71f4dd83d977935a" @@ -10137,16 +8236,11 @@ regenerate@^1.4.2: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@0.13.11, regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.9: +regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.9: version "0.13.11" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - regenerator-transform@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" @@ -10218,11 +8312,6 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -resize-observer-polyfill@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" - integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== - resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -10240,18 +8329,6 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-pathname@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" - integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== - -resolve-protobuf-schema@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz#9ca9a9e69cf192bbdaf1006ec1973948aa4a3758" - integrity sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ== - dependencies: - protocol-buffers-schema "^3.3.1" - resolve-url-loader@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" @@ -10325,13 +8402,6 @@ rollup@^2.43.1: optionalDependencies: fsevents "~2.3.2" -rtl-css-js@^1.14.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/rtl-css-js/-/rtl-css-js-1.16.1.tgz#4b48b4354b0ff917a30488d95100fbf7219a3e80" - integrity sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg== - dependencies: - "@babel/runtime" "^7.1.2" - run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -10339,18 +8409,11 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rw@1, rw@^1.3.3: +rw@1: version "1.3.3" resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== -rxjs@7.8.0: - version "7.8.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" - integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== - dependencies: - tslib "^2.1.0" - safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -10439,21 +8502,11 @@ schema-utils@^4.0.0: ajv-formats "^2.1.1" ajv-keywords "^5.1.0" -screenfull@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.2.0.tgz#6533d524d30621fc1283b9692146f3f13a93d1ba" - integrity sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA== - select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== -selection-is-backward@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/selection-is-backward/-/selection-is-backward-1.0.0.tgz#97a54633188a511aba6419fc5c1fa91b467e6be1" - integrity sha512-C+6PCOO55NLCfS8uQjUKV/6E5XMuUcfOVsix5m0QqCCCKi495NgeQVNfWtAaD71NKHsdmFCJoXUGfir3qWdr9A== - selfsigned@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" @@ -10529,11 +8582,6 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -set-harmonic-interval@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz#e1773705539cdfb80ce1c3d99e7f298bb3995249" - integrity sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g== - setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -10544,11 +8592,6 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -shallowequal@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" - integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -10595,79 +8638,6 @@ slash@^4.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== -slate-base64-serializer@^0.2.112: - version "0.2.115" - resolved "https://registry.yarnpkg.com/slate-base64-serializer/-/slate-base64-serializer-0.2.115.tgz#438e051959bde013b50507f3144257e74039ff7f" - integrity sha512-GnLV7bUW/UQ5j7rVIxCU5zdB6NOVsEU6YWsCp68dndIjSGTGLaQv2+WwV3NcnrGGZEYe5qgo33j2QWrPws2C1A== - dependencies: - isomorphic-base64 "^1.0.2" - -slate-dev-environment@^0.2.2: - version "0.2.5" - resolved "https://registry.yarnpkg.com/slate-dev-environment/-/slate-dev-environment-0.2.5.tgz#481b6906fde5becc390db7c14edf97a4bb0029f2" - integrity sha512-oLD8Fclv/RqrDv6RYfN2CRzNcRXsUB99Qgcw5L/njTjxAdDPguV6edQ3DgUG9Q2pLFLhI15DwsKClzVfFzfwGQ== - dependencies: - is-in-browser "^1.1.3" - -slate-hotkeys@^0.2.9: - version "0.2.11" - resolved "https://registry.yarnpkg.com/slate-hotkeys/-/slate-hotkeys-0.2.11.tgz#a94db117d9a98575671192329b05f23e6f485d6f" - integrity sha512-xhq/TlI74dRbO57O4ulGsvCcV4eaQ5nEEz9noZjeNLtNzFRd6lSgExRqAJqKGGIeJw+FnJ3OcqGvdb5CEc9/Ew== - dependencies: - is-hotkey "0.1.4" - slate-dev-environment "^0.2.2" - -slate-plain-serializer@0.7.13, slate-plain-serializer@^0.7.11: - version "0.7.13" - resolved "https://registry.yarnpkg.com/slate-plain-serializer/-/slate-plain-serializer-0.7.13.tgz#6de8f5c645dd749f1b2e4426c20de74bfd213adf" - integrity sha512-TtrlaslxQBEMV0LYdf3s7VAbTxRPe1xaW10WNNGAzGA855/0RhkaHjKkQiRjHv5rvbRleVf7Nxr9fH+4uErfxQ== - -slate-prop-types@^0.5.42: - version "0.5.44" - resolved "https://registry.yarnpkg.com/slate-prop-types/-/slate-prop-types-0.5.44.tgz#da60b69c3451c3bd6cdd60a45d308eeba7e83c76" - integrity sha512-JS0iW7uaciE/W3ADuzeN1HOnSjncQhHPXJ65nZNQzB0DF7mXVmbwQKI6cmCo/xKni7XRJT0JbWSpXFhEdPiBUA== - -slate-react-placeholder@^0.2.9: - version "0.2.9" - resolved "https://registry.yarnpkg.com/slate-react-placeholder/-/slate-react-placeholder-0.2.9.tgz#30f450a05d4871c7d1a27668ebe7907861e7ca74" - integrity sha512-YSJ9Gb4tGpbzPje3eNKtu26hWM8ApxTk9RzjK+6zfD5V/RMTkuWONk24y6c9lZk0OAYNZNUmrnb/QZfU3j9nag== - -slate-react@0.22.10: - version "0.22.10" - resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.22.10.tgz#01296dadb707869ace6cb21d336c90bedfb567bf" - integrity sha512-B2Ms1u/REbdd8yKkOItKgrw/tX8klgz5l5x6PP86+oh/yqmB6EHe0QyrYlQ9fc3WBlJUVTOL+nyAP1KmlKj2/w== - dependencies: - debug "^3.1.0" - get-window "^1.1.1" - is-window "^1.0.2" - lodash "^4.1.1" - memoize-one "^4.0.0" - prop-types "^15.5.8" - react-immutable-proptypes "^2.1.0" - selection-is-backward "^1.0.0" - slate-base64-serializer "^0.2.112" - slate-dev-environment "^0.2.2" - slate-hotkeys "^0.2.9" - slate-plain-serializer "^0.7.11" - slate-prop-types "^0.5.42" - slate-react-placeholder "^0.2.9" - tiny-invariant "^1.0.1" - tiny-warning "^0.0.3" - -slate@0.47.9: - version "0.47.9" - resolved "https://registry.yarnpkg.com/slate/-/slate-0.47.9.tgz#090597dd790e79718f782994907d34a903739443" - integrity sha512-EK4O6b7lGt+g5H9PGw9O5KCM4RrOvOgE9mPi3rzQ0zDRlgAb2ga4TdpS6XNQbrsJWsc8I1fjaSsUeCqCUhhi9A== - dependencies: - debug "^3.1.0" - direction "^0.1.5" - esrever "^0.2.0" - is-plain-object "^2.0.4" - lodash "^4.17.4" - tiny-invariant "^1.0.1" - tiny-warning "^0.0.3" - type-of "^2.0.1" - snake-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" @@ -10685,24 +8655,6 @@ sockjs@^0.3.24: uuid "^8.3.2" websocket-driver "^0.7.4" -sort-asc@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/sort-asc/-/sort-asc-0.1.0.tgz#ab799df61fc73ea0956c79c4b531ed1e9e7727e9" - integrity sha512-jBgdDd+rQ+HkZF2/OHCmace5dvpos/aWQpcxuyRs9QUbPRnkEJmYVo81PIGpjIdpOcsnJ4rGjStfDHsbn+UVyw== - -sort-desc@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/sort-desc/-/sort-desc-0.1.1.tgz#198b8c0cdeb095c463341861e3925d4ee359a9ee" - integrity sha512-jfZacW5SKOP97BF5rX5kQfJmRVZP5/adDUTY8fCSPvNcXDVpUEe2pr/iKGlcyZzchRJZrswnp68fgk3qBXgkJw== - -sort-object@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/sort-object/-/sort-object-0.3.2.tgz#98e0d199ede40e07c61a84403c61d6c3b290f9e2" - integrity sha512-aAQiEdqFTTdsvUFxXm3umdo04J7MRljoVGbBlkH7BgNsMvVNAJyGj7C/wV1A8wHWAJj/YikeZbfuCKqhggNWGA== - dependencies: - sort-asc "^0.1.0" - sort-desc "^0.1.1" - source-list-map@^2.0.0, source-list-map@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -10730,21 +8682,11 @@ source-map-support@^0.5.6, source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA== - source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - source-map@^0.7.3: version "0.7.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" @@ -10800,13 +8742,6 @@ stable@^0.1.8: resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -stack-generator@^2.0.5: - version "2.0.10" - resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.10.tgz#8ae171e985ed62287d4f1ed55a1633b3fb53bb4d" - integrity sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ== - dependencies: - stackframe "^1.3.4" - stack-utils@^2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" @@ -10819,28 +8754,6 @@ stackframe@^1.3.4: resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== -stacktrace-gps@^3.0.4: - version "3.1.2" - resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz#0c40b24a9b119b20da4525c398795338966a2fb0" - integrity sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ== - dependencies: - source-map "0.5.6" - stackframe "^1.3.4" - -stacktrace-js@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.2.tgz#4ca93ea9f494752d55709a081d400fdaebee897b" - integrity sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg== - dependencies: - error-stack-parser "^2.0.6" - stack-generator "^2.0.5" - stacktrace-gps "^3.0.4" - -state-local@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/state-local/-/state-local-1.0.7.tgz#da50211d07f05748d53009bee46307a37db386d5" - integrity sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w== - statuses@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" @@ -11004,11 +8917,6 @@ stylehacks@^5.1.1: browserslist "^4.21.4" postcss-selector-parser "^6.0.4" -stylis@4.2.0, stylis@^4.0.6: - version "4.2.0" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" - integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== - sucrase@^3.32.0: version "3.32.0" resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.32.0.tgz#c4a95e0f1e18b6847127258a75cf360bc568d4a7" @@ -11207,58 +9115,21 @@ throat@^6.0.1: resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.2.tgz#51a3fbb5e11ae72e2cf74861ed5c8020f89f29fe" integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== -throttle-debounce@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb" - integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg== - thunky@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -tiny-invariant@^1.0.1, tiny-invariant@^1.0.2, tiny-invariant@^1.0.6: - version "1.3.1" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" - integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== - -tiny-warning@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-0.0.3.tgz#1807eb4c5f81784a6354d58ea1d5024f18c6c81f" - integrity sha512-r0SSA5Y5IWERF9Xh++tFPx0jITBgGggOsRLDWWew6YRw/C2dr4uNO1fw1vanrBmHsICmPyMLNBZboTlxUmUuaA== - -tiny-warning@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" - integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== - -tinycolor2@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e" - integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== - tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -to-camel-case@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-camel-case/-/to-camel-case-1.0.0.tgz#1a56054b2f9d696298ce66a60897322b6f423e46" - integrity sha512-nD8pQi5H34kyu1QDMFjzEIYqk0xa9Alt6ZfrdEMuHCFOfTLhDG5pgTu/aAM9Wt9lXILwlXmWP43b8sav0GNE8Q== - dependencies: - to-space-case "^1.0.0" - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== -to-no-case@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/to-no-case/-/to-no-case-1.0.2.tgz#c722907164ef6b178132c8e69930212d1b4aa16a" - integrity sha512-Z3g735FxuZY8rodxV4gH7LxClE4H0hTIyHNIHdk+vpQxjLm0cwnKXq/OFVZ76SOQmto7txVcwSCwkU5kqp+FKg== - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -11266,18 +9137,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -to-space-case@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-space-case/-/to-space-case-1.0.0.tgz#b052daafb1b2b29dc770cea0163e5ec0ebc9fc17" - integrity sha512-rLdvwXZ39VOn1IxGL3V6ZstoTbwLRckQmn/U8ZDLuWwIXNpuZDhQ3AiRUlhTbOXFVE9C+dR51wM0CBDhk31VcA== - dependencies: - to-no-case "^1.0.0" - -toggle-selection@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" - integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== - toidentifier@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" @@ -11312,11 +9171,6 @@ tryer@^1.0.1: resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== -ts-easing@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/ts-easing/-/ts-easing-0.2.0.tgz#c8a8a35025105566588d87dbda05dd7fbfa5a4ec" - integrity sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ== - ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" @@ -11332,16 +9186,16 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@2.5.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" - integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== - -tslib@^1.8.1, tslib@^1.9.3: +tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.0.3: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -11391,11 +9245,6 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -type-of@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/type-of/-/type-of-2.0.1.tgz#e72a1741896568e9f628378d816d6912f7f23972" - integrity sha512-39wxbwHdQ2sTiBB8wAzKfQ9GN+om8w+sjNWzr+vZJR5AMD5J+J7Yc8AtXnU9r/r2c8XiDZ/smxutDmZehX/qpQ== - typed-array-length@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" @@ -11412,21 +9261,11 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@4.8.4: - version "4.8.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" - integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== - typescript@^5.0.4: version "5.0.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== -ua-parser-js@^1.0.32: - version "1.0.35" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.35.tgz#c4ef44343bc3db0a3cbefdf21822f1b1fc1ab011" - integrity sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA== - unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -11495,11 +9334,6 @@ update-browserslist-db@^1.0.10: escalade "^3.1.1" picocolors "^1.0.0" -uplot@1.6.24: - version "1.6.24" - resolved "https://registry.yarnpkg.com/uplot/-/uplot-1.6.24.tgz#dfa213fa7da92763261920ea972ed1a5f9f6af12" - integrity sha512-WpH2BsrFrqxkMu+4XBvc0eCDsRBhzoq9crttYeSI0bfxpzR5YoSVzZXOKFVWcVC7sp/aDXrdDPbDZGCtck2PVg== - uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -11515,21 +9349,6 @@ url-parse@^1.5.3: querystringify "^2.1.1" requires-port "^1.0.0" -use-isomorphic-layout-effect@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" - integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== - -use-memo-one@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/use-memo-one/-/use-memo-one-1.1.3.tgz#2fd2e43a2169eabc7496960ace8c79efef975e99" - integrity sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ== - -use-sync-external-store@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" - integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== - util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -11545,11 +9364,6 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" - integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== - uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" @@ -11564,21 +9378,11 @@ v8-to-istanbul@^8.1.0: convert-source-map "^1.6.0" source-map "^0.7.3" -value-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" - integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== - vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -void-elements@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" - integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== - w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -11600,13 +9404,6 @@ walker@^1.0.7: dependencies: makeerror "1.0.12" -warning@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" - integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== - dependencies: - loose-envify "^1.0.0" - watchpack@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" @@ -11622,16 +9419,6 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -web-vitals@^3.1.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-3.3.1.tgz#f80e4fd01784476c023c8b2c4219075bbe96f64d" - integrity sha512-LTfY5GjcY3ngFzNsYFSYL+AmVmlWrzPTUxSMDis2rZbf+SzT7HH3NH4Y/l45XOlrAIunOBeURN9qtBHkRskAiA== - -web-worker@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.2.0.tgz#5d85a04a7fbc1e7db58f66595d7a3ac7c9c180da" - integrity sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA== - webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -12062,24 +9849,11 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -xml-utils@^1.0.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/xml-utils/-/xml-utils-1.7.0.tgz#333ce391d8918f872aaf98d2cf90f9ef9b82bd0f" - integrity sha512-bWB489+RQQclC7A9OW8e5BzbT8Tu//jtAOvkYwewFr+Q9T9KDGvfzC1lp0pYPEQPEoPQLDkmxkepSC/2gIAZGw== - xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xss@^1.0.14: - version "1.0.14" - resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.14.tgz#4f3efbde75ad0d82e9921cc3c95e6590dd336694" - integrity sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw== - dependencies: - commander "^2.20.3" - cssfilter "0.0.10" - xtend@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" From a2817f5153a2fc2d04660e0f4f5e1994e0641924 Mon Sep 17 00:00:00 2001 From: Paulin Todev Date: Wed, 15 Nov 2023 19:38:44 +0000 Subject: [PATCH 026/166] Fix issue with metrics exporter in otelcol.exporter.loadbalancing (#5684) --- CHANGELOG.md | 5 +- component/otelcol/exporter/exporter.go | 74 +++++++++++++++---- component/otelcol/exporter/exporter_test.go | 36 ++++++++- .../exporter/loadbalancing/loadbalancing.go | 5 +- component/otelcol/exporter/logging/logging.go | 2 +- component/otelcol/exporter/otlp/otlp.go | 2 +- .../otelcol/exporter/otlphttp/otlphttp.go | 2 +- 7 files changed, 104 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a1e6a6d05a8d..24f03f218cfc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -146,6 +146,9 @@ Main (unreleased) - Fixed an issue in the static config converter where exporter instance values were not being mapped when translating to flow. (@erikbaranowski) +- Fix a bug which prevented Agent from running `otelcol.exporter.loadbalancing` + with a `routing_key` of `traceID`. (@ptodev) + v0.37.4 (2023-11-06) ----------------- @@ -159,7 +162,7 @@ v0.37.4 (2023-11-06) - Fix a bug where reloading the configuration of a `loki.write` component lead to a panic. (@tpaschalis) -- Added Kubernetes service resolver to static node's loadbalancing exporter +- Added Kubernetes service resolver to static node's loadbalancing exporter and to Flow's `otelcol.exporter.loadbalancing`. (@ptodev) v0.37.3 (2023-10-26) diff --git a/component/otelcol/exporter/exporter.go b/component/otelcol/exporter/exporter.go index 947e37ebec0d..01893c7aa250 100644 --- a/component/otelcol/exporter/exporter.go +++ b/component/otelcol/exporter/exporter.go @@ -44,6 +44,33 @@ type Arguments interface { DebugMetricsConfig() otelcol.DebugMetricsArguments } +// TypeSignal is a bit field to indicate which telemetry signals the exporter supports. +type TypeSignal byte + +const ( + TypeLogs TypeSignal = 1 << iota // 1 + TypeMetrics // 2 + TypeTraces // 4 +) + +// TypeAll indicates that the exporter supports all telemetry signals. +const TypeAll = TypeLogs | TypeMetrics | TypeTraces + +// SupportsLogs returns true if the exporter supports logs. +func (s TypeSignal) SupportsLogs() bool { + return s&TypeLogs != 0 +} + +// SupportsMetrics returns true if the exporter supports metrics. +func (s TypeSignal) SupportsMetrics() bool { + return s&TypeMetrics != 0 +} + +// SupportsTraces returns true if the exporter supports traces. +func (s TypeSignal) SupportsTraces() bool { + return s&TypeTraces != 0 +} + // Exporter is a Flow component shim which manages an OpenTelemetry Collector // exporter component. type Exporter struct { @@ -56,6 +83,10 @@ type Exporter struct { sched *scheduler.Scheduler collector *lazycollector.Collector + + // Signals which the exporter is able to export. + // Can be logs, metrics, traces or any combination of them. + supportedSignals TypeSignal } var ( @@ -69,7 +100,7 @@ var ( // // The registered component must be registered to export the // otelcol.ConsumerExports type, otherwise New will panic. -func New(opts component.Options, f otelexporter.Factory, args Arguments) (*Exporter, error) { +func New(opts component.Options, f otelexporter.Factory, args Arguments, supportedSignals TypeSignal) (*Exporter, error) { ctx, cancel := context.WithCancel(context.Background()) consumer := lazyconsumer.New(ctx) @@ -96,6 +127,8 @@ func New(opts component.Options, f otelexporter.Factory, args Arguments) (*Expor sched: scheduler.New(opts.Logger), collector: collector, + + supportedSignals: supportedSignals, } if err := e.Update(args); err != nil { return nil, err @@ -162,25 +195,34 @@ func (e *Exporter) Update(args component.Arguments) error { // supported telemetry signals. var components []otelcomponent.Component - tracesExporter, err := e.factory.CreateTracesExporter(e.ctx, settings, exporterConfig) - if err != nil && !errors.Is(err, otelcomponent.ErrDataTypeIsNotSupported) { - return err - } else if tracesExporter != nil { - components = append(components, tracesExporter) + var tracesExporter otelexporter.Traces + if e.supportedSignals.SupportsTraces() { + tracesExporter, err = e.factory.CreateTracesExporter(e.ctx, settings, exporterConfig) + if err != nil && !errors.Is(err, otelcomponent.ErrDataTypeIsNotSupported) { + return err + } else if tracesExporter != nil { + components = append(components, tracesExporter) + } } - metricsExporter, err := e.factory.CreateMetricsExporter(e.ctx, settings, exporterConfig) - if err != nil && !errors.Is(err, otelcomponent.ErrDataTypeIsNotSupported) { - return err - } else if metricsExporter != nil { - components = append(components, metricsExporter) + var metricsExporter otelexporter.Metrics + if e.supportedSignals.SupportsMetrics() { + metricsExporter, err = e.factory.CreateMetricsExporter(e.ctx, settings, exporterConfig) + if err != nil && !errors.Is(err, otelcomponent.ErrDataTypeIsNotSupported) { + return err + } else if metricsExporter != nil { + components = append(components, metricsExporter) + } } - logsExporter, err := e.factory.CreateLogsExporter(e.ctx, settings, exporterConfig) - if err != nil && !errors.Is(err, otelcomponent.ErrDataTypeIsNotSupported) { - return err - } else if logsExporter != nil { - components = append(components, logsExporter) + var logsExporter otelexporter.Logs + if e.supportedSignals.SupportsLogs() { + logsExporter, err = e.factory.CreateLogsExporter(e.ctx, settings, exporterConfig) + if err != nil && !errors.Is(err, otelcomponent.ErrDataTypeIsNotSupported) { + return err + } else if logsExporter != nil { + components = append(components, logsExporter) + } } // Schedule the components to run once our component is running. diff --git a/component/otelcol/exporter/exporter_test.go b/component/otelcol/exporter/exporter_test.go index be07ab2b48f7..7ef29244518c 100644 --- a/component/otelcol/exporter/exporter_test.go +++ b/component/otelcol/exporter/exporter_test.go @@ -103,7 +103,7 @@ func newTestEnvironment(t *testing.T, fe *fakeExporter) *testEnvironment { }, otelcomponent.StabilityLevelUndefined), ) - return exporter.New(opts, factory, args.(exporter.Arguments)) + return exporter.New(opts, factory, args.(exporter.Arguments), exporter.TypeAll) }, } @@ -198,3 +198,37 @@ func createTestTraces() ptrace.Traces { } return data } + +func TestExporterSignalType(t *testing.T) { + // + // Check if ExporterAll supports all signals + // + require.True(t, exporter.TypeAll.SupportsLogs()) + require.True(t, exporter.TypeAll.SupportsMetrics()) + require.True(t, exporter.TypeAll.SupportsTraces()) + + // + // Make sure each of the 3 signals supports itself + // + require.True(t, exporter.TypeLogs.SupportsLogs()) + require.True(t, exporter.TypeMetrics.SupportsMetrics()) + require.True(t, exporter.TypeTraces.SupportsTraces()) + + // + // Make sure Logs does not support Metrics and Traces. + // + require.False(t, exporter.TypeLogs.SupportsMetrics()) + require.False(t, exporter.TypeLogs.SupportsTraces()) + + // + // Make sure Metrics does not support Logs and Traces. + // + require.False(t, exporter.TypeMetrics.SupportsLogs()) + require.False(t, exporter.TypeMetrics.SupportsTraces()) + + // + // Make sure Traces does not support Logs and Metrics. + // + require.False(t, exporter.TypeTraces.SupportsLogs()) + require.False(t, exporter.TypeTraces.SupportsMetrics()) +} diff --git a/component/otelcol/exporter/loadbalancing/loadbalancing.go b/component/otelcol/exporter/loadbalancing/loadbalancing.go index 3a8c2f87fdd0..35a42df3a328 100644 --- a/component/otelcol/exporter/loadbalancing/loadbalancing.go +++ b/component/otelcol/exporter/loadbalancing/loadbalancing.go @@ -31,7 +31,10 @@ func init() { Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := loadbalancingexporter.NewFactory() - return exporter.New(opts, fact, args.(Arguments)) + //TODO(ptodev): LB exporter cannot yet work with metrics due to a limitation in the Agent: + // https://github.com/grafana/agent/pull/5684 + // Once the limitation is removed, we may be able to remove the need for exporter.TypeSignal altogether. + return exporter.New(opts, fact, args.(Arguments), exporter.TypeLogs|exporter.TypeTraces) }, }) } diff --git a/component/otelcol/exporter/logging/logging.go b/component/otelcol/exporter/logging/logging.go index 9976c28b6209..c4dc735c4fca 100644 --- a/component/otelcol/exporter/logging/logging.go +++ b/component/otelcol/exporter/logging/logging.go @@ -21,7 +21,7 @@ func init() { Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := loggingexporter.NewFactory() - return exporter.New(opts, fact, args.(Arguments)) + return exporter.New(opts, fact, args.(Arguments), exporter.TypeAll) }, }) } diff --git a/component/otelcol/exporter/otlp/otlp.go b/component/otelcol/exporter/otlp/otlp.go index aea6fd02b4bb..c58d434d992a 100644 --- a/component/otelcol/exporter/otlp/otlp.go +++ b/component/otelcol/exporter/otlp/otlp.go @@ -23,7 +23,7 @@ func init() { Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := otlpexporter.NewFactory() - return exporter.New(opts, fact, args.(Arguments)) + return exporter.New(opts, fact, args.(Arguments), exporter.TypeAll) }, }) } diff --git a/component/otelcol/exporter/otlphttp/otlphttp.go b/component/otelcol/exporter/otlphttp/otlphttp.go index bf142960f6a9..d70d0f7f8e98 100644 --- a/component/otelcol/exporter/otlphttp/otlphttp.go +++ b/component/otelcol/exporter/otlphttp/otlphttp.go @@ -23,7 +23,7 @@ func init() { Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := otlphttpexporter.NewFactory() - return exporter.New(opts, fact, args.(Arguments)) + return exporter.New(opts, fact, args.(Arguments), exporter.TypeAll) }, }) } From c5ef04061336dbe6f1b1ee84fc831bc23823b64c Mon Sep 17 00:00:00 2001 From: Mischa Thompson Date: Wed, 15 Nov 2023 11:48:27 -0800 Subject: [PATCH 027/166] Add river language tag (#5775) Co-authored-by: Clayton Cornell <131809008+clayton-cornell@users.noreply.github.com> --- docs/sources/flow/getting-started/migrating-from-operator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sources/flow/getting-started/migrating-from-operator.md b/docs/sources/flow/getting-started/migrating-from-operator.md index 9262930f4abf..1496a8ae5658 100644 --- a/docs/sources/flow/getting-started/migrating-from-operator.md +++ b/docs/sources/flow/getting-started/migrating-from-operator.md @@ -154,7 +154,7 @@ helm upgrade grafana-agent-logs grafana/grafana-agent -i -n monitoring -f values This simple configuration will scrape logs for every pod on each node: -``` +```river // read the credentials secret for remote_write authorization remote.kubernetes.secret "credentials" { namespace = "monitoring" From 3a28cedd98b4b77deb74f9f477c4ed4c95790f8d Mon Sep 17 00:00:00 2001 From: Robert Fratto Date: Wed, 15 Nov 2023 14:52:48 -0500 Subject: [PATCH 028/166] build-image: bump to Go 1.21.4 (#5785) --- CHANGELOG.md | 13 ++++++++----- build-image/Dockerfile | 2 +- build-image/windows/Dockerfile | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 24f03f218cfc..e3e1a9925073 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,11 +26,6 @@ Main (unreleased) - renamed 3 metrics starting with `mysql_perf_schema_transaction_` to start with `mysql_perf_schema_transactions_` to be consistent with column names. - exposing only server's own stats by matching `MEMBER_ID` with `@@server_uuid` resulting "member_id" label to be dropped. -### Other changes - -- Bump `mysqld_exporter` version to v0.15.0. (@marctc) -- Bump `github-exporter` version to 1.0.6. (@marctc) - ### Features - Added a new `stage.decolorize` stage to `loki.process` component which @@ -149,6 +144,14 @@ Main (unreleased) - Fix a bug which prevented Agent from running `otelcol.exporter.loadbalancing` with a `routing_key` of `traceID`. (@ptodev) +### Other changes + +- Bump `mysqld_exporter` version to v0.15.0. (@marctc) + +- Bump `github-exporter` version to 1.0.6. (@marctc) + +- Use Go 1.21.4 for builds. (@rfratto) + v0.37.4 (2023-11-06) ----------------- diff --git a/build-image/Dockerfile b/build-image/Dockerfile index fb3861df11d4..eeea8fdce018 100644 --- a/build-image/Dockerfile +++ b/build-image/Dockerfile @@ -23,7 +23,7 @@ FROM alpine:3.17 as helm RUN apk add --no-cache helm # Dependency: Go and Go dependencies -FROM golang:1.21.3-bullseye as golang +FROM golang:1.21.4-bullseye as golang # Keep in sync with cmd/grafana-agent-operator/DEVELOPERS.md ENV CONTROLLER_GEN_VERSION v0.9.2 diff --git a/build-image/windows/Dockerfile b/build-image/windows/Dockerfile index 1f4efb7beb2a..6664d8928e82 100644 --- a/build-image/windows/Dockerfile +++ b/build-image/windows/Dockerfile @@ -1,4 +1,4 @@ -FROM library/golang:1.21.3-windowsservercore-1809 +FROM library/golang:1.21.4-windowsservercore-1809 SHELL ["powershell", "-command"] From 36d4dec772eb6204d7548fcfab3ed5375d1e5943 Mon Sep 17 00:00:00 2001 From: Robert Fratto Date: Wed, 15 Nov 2023 15:32:17 -0500 Subject: [PATCH 029/166] misc: update build image to v0.30.4 (#5787) --- .drone/drone.yml | 128 ++++++++++++------------ .github/workflows/integration-tests.yml | 4 +- cmd/grafana-agent-operator/Dockerfile | 2 +- cmd/grafana-agent/Dockerfile | 2 +- cmd/grafana-agent/Dockerfile.windows | 2 +- cmd/grafana-agentctl/Dockerfile | 2 +- cmd/grafana-agentctl/Dockerfile.windows | 2 +- tools/crow/Dockerfile | 2 +- tools/make/build-container.mk | 2 +- tools/smoke/Dockerfile | 2 +- 10 files changed, 74 insertions(+), 74 deletions(-) diff --git a/.drone/drone.yml b/.drone/drone.yml index 982d2f04bc1d..43e4161ef322 100644 --- a/.drone/drone.yml +++ b/.drone/drone.yml @@ -75,7 +75,7 @@ steps: - commands: - apt-get update -y && apt-get install -y libsystemd-dev - make lint - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Lint trigger: event: @@ -93,7 +93,7 @@ steps: - ERR_MSG="Dashboard definitions are out of date. Please run 'make generate-dashboards' and commit changes!" - if [ ! -z "$(git status --porcelain)" ]; then echo $ERR_MSG >&2; exit 1; fi - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Regenerate dashboards trigger: event: @@ -111,7 +111,7 @@ steps: - ERR_MSG="Custom Resource Definitions are out of date. Please run 'make generate-crds' and commit changes!" - if [ ! -z "$(git status --porcelain)" ]; then echo $ERR_MSG >&2; exit 1; fi - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Regenerate crds trigger: event: @@ -129,7 +129,7 @@ steps: - ERR_MSG="The environment manifests are out of date. Please run 'make generate-manifests' and commit changes!" - if [ ! -z "$(git status --porcelain)" ]; then echo $ERR_MSG >&2; exit 1; fi - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Regenerate environment manifests trigger: event: @@ -144,7 +144,7 @@ platform: steps: - commands: - make GO_TAGS="nodocker" test - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Run Go tests trigger: event: @@ -159,7 +159,7 @@ platform: steps: - commands: - K8S_USE_DOCKER_NETWORK=1 make test - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Run Go tests volumes: - name: docker @@ -181,8 +181,8 @@ platform: version: "1809" steps: - commands: - - go test -tags="nodocker,nonetwork" $(go list ./... | grep -v integration-tests) - image: grafana/agent-build-image:0.30.3-windows + - go test -tags="nodocker,nonetwork" ./... + image: grafana/agent-build-image:0.30.4-windows name: Run Go tests trigger: ref: @@ -197,7 +197,7 @@ platform: steps: - commands: - make agent-image - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build container volumes: - name: docker @@ -222,7 +222,7 @@ platform: steps: - commands: - make agentctl-image - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build container volumes: - name: docker @@ -247,7 +247,7 @@ platform: steps: - commands: - make operator-image - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build container volumes: - name: docker @@ -273,7 +273,7 @@ platform: steps: - commands: - '& "C:/Program Files/git/bin/bash.exe" ./tools/ci/docker-containers-windows agent' - image: grafana/agent-build-image:0.30.3-windows + image: grafana/agent-build-image:0.30.4-windows name: Build container volumes: - name: docker @@ -299,7 +299,7 @@ platform: steps: - commands: - '& "C:/Program Files/git/bin/bash.exe" ./tools/ci/docker-containers-windows agentctl' - image: grafana/agent-build-image:0.30.3-windows + image: grafana/agent-build-image:0.30.4-windows name: Build container volumes: - name: docker @@ -326,7 +326,7 @@ steps: - make generate-ui - GO_TAGS="builtinassets promtail_journal_enabled" GOOS=linux GOARCH=amd64 GOARM= make agent - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -343,7 +343,7 @@ steps: - make generate-ui - GO_TAGS="builtinassets promtail_journal_enabled" GOOS=linux GOARCH=arm64 GOARM= make agent - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -360,7 +360,7 @@ steps: - make generate-ui - GO_TAGS="builtinassets promtail_journal_enabled" GOOS=linux GOARCH=ppc64le GOARM= make agent - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -377,7 +377,7 @@ steps: - make generate-ui - GO_TAGS="builtinassets promtail_journal_enabled" GOOS=linux GOARCH=s390x GOARM= make agent - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -393,7 +393,7 @@ steps: - commands: - make generate-ui - GO_TAGS="builtinassets" GOOS=darwin GOARCH=amd64 GOARM= make agent - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -409,7 +409,7 @@ steps: - commands: - make generate-ui - GO_TAGS="builtinassets" GOOS=darwin GOARCH=arm64 GOARM= make agent - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -425,7 +425,7 @@ steps: - commands: - make generate-ui - GO_TAGS="builtinassets" GOOS=windows GOARCH=amd64 GOARM= make agent - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -441,7 +441,7 @@ steps: - commands: - make generate-ui - GO_TAGS="builtinassets" GOOS=freebsd GOARCH=amd64 GOARM= make agent - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -458,7 +458,7 @@ steps: - make generate-ui - GO_TAGS="builtinassets promtail_journal_enabled" GOOS=linux GOARCH=amd64 GOARM= make agent-flow - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -475,7 +475,7 @@ steps: - make generate-ui - GO_TAGS="builtinassets promtail_journal_enabled" GOOS=linux GOARCH=arm64 GOARM= make agent-flow - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -492,7 +492,7 @@ steps: - make generate-ui - GO_TAGS="builtinassets promtail_journal_enabled" GOOS=linux GOARCH=ppc64le GOARM= make agent-flow - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -509,7 +509,7 @@ steps: - make generate-ui - GO_TAGS="builtinassets promtail_journal_enabled" GOOS=linux GOARCH=s390x GOARM= make agent-flow - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -525,7 +525,7 @@ steps: - commands: - make generate-ui - GO_TAGS="builtinassets" GOOS=darwin GOARCH=amd64 GOARM= make agent-flow - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -541,7 +541,7 @@ steps: - commands: - make generate-ui - GO_TAGS="builtinassets" GOOS=darwin GOARCH=arm64 GOARM= make agent-flow - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -557,7 +557,7 @@ steps: - commands: - make generate-ui - GO_TAGS="builtinassets" GOOS=windows GOARCH=amd64 GOARM= make agent-flow - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -573,7 +573,7 @@ steps: - commands: - make generate-ui - GO_TAGS="builtinassets" GOOS=freebsd GOARCH=amd64 GOARM= make agent-flow - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -590,7 +590,7 @@ steps: - make generate-ui - GO_TAGS="builtinassets promtail_journal_enabled" GOOS=linux GOARCH=amd64 GOARM= make agentctl - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -607,7 +607,7 @@ steps: - make generate-ui - GO_TAGS="builtinassets promtail_journal_enabled" GOOS=linux GOARCH=arm64 GOARM= make agentctl - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -624,7 +624,7 @@ steps: - make generate-ui - GO_TAGS="builtinassets promtail_journal_enabled" GOOS=linux GOARCH=ppc64le GOARM= make agentctl - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -641,7 +641,7 @@ steps: - make generate-ui - GO_TAGS="builtinassets promtail_journal_enabled" GOOS=linux GOARCH=s390x GOARM= make agentctl - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -657,7 +657,7 @@ steps: - commands: - make generate-ui - GO_TAGS="builtinassets" GOOS=darwin GOARCH=amd64 GOARM= make agentctl - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -673,7 +673,7 @@ steps: - commands: - make generate-ui - GO_TAGS="builtinassets" GOOS=darwin GOARCH=arm64 GOARM= make agentctl - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -689,7 +689,7 @@ steps: - commands: - make generate-ui - GO_TAGS="builtinassets" GOOS=windows GOARCH=amd64 GOARM= make agentctl - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -705,7 +705,7 @@ steps: - commands: - make generate-ui - GO_TAGS="builtinassets" GOOS=freebsd GOARCH=amd64 GOARM= make agentctl - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -722,7 +722,7 @@ steps: - make generate-ui - GO_TAGS="builtinassets promtail_journal_enabled" GOOS=linux GOARCH=amd64 GOARM= make operator - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -739,7 +739,7 @@ steps: - make generate-ui - GO_TAGS="builtinassets promtail_journal_enabled" GOOS=linux GOARCH=arm64 GOARM= make operator - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -756,7 +756,7 @@ steps: - make generate-ui - GO_TAGS="builtinassets promtail_journal_enabled" GOOS=linux GOARCH=ppc64le GOARM= make operator - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -773,7 +773,7 @@ steps: - make generate-ui - GO_TAGS="builtinassets promtail_journal_enabled" GOOS=linux GOARCH=s390x GOARM= make operator - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -789,7 +789,7 @@ steps: - commands: - make generate-ui - GO_TAGS="builtinassets" GOOS=darwin GOARCH=amd64 GOARM= make operator - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -805,7 +805,7 @@ steps: - commands: - make generate-ui - GO_TAGS="builtinassets" GOOS=darwin GOARCH=arm64 GOARM= make operator - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -821,7 +821,7 @@ steps: - commands: - make generate-ui - GO_TAGS="builtinassets" GOOS=windows GOARCH=amd64 GOARM= make operator - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -837,7 +837,7 @@ steps: - commands: - make generate-ui - GO_TAGS="builtinassets" GOOS=freebsd GOARCH=amd64 GOARM= make operator - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -854,7 +854,7 @@ steps: - make generate-ui - GO_TAGS="builtinassets promtail_journal_enabled" GOOS=linux GOARCH=amd64 GOARM= GOEXPERIMENT=boringcrypto make agent-boringcrypto - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -871,7 +871,7 @@ steps: - make generate-ui - GO_TAGS="builtinassets promtail_journal_enabled" GOOS=linux GOARCH=arm64 GOARM= GOEXPERIMENT=boringcrypto make agent-boringcrypto - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Build trigger: event: @@ -887,7 +887,7 @@ steps: - commands: - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes failure: ignore - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Configure QEMU volumes: - name: docker @@ -907,7 +907,7 @@ steps: from_secret: docker_password GCR_CREDS: from_secret: gcr_admin - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Publish container volumes: - name: docker @@ -931,7 +931,7 @@ steps: - commands: - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes failure: ignore - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Configure QEMU volumes: - name: docker @@ -951,7 +951,7 @@ steps: from_secret: docker_password GCR_CREDS: from_secret: gcr_admin - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Publish container volumes: - name: docker @@ -975,7 +975,7 @@ steps: - commands: - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes failure: ignore - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Configure QEMU volumes: - name: docker @@ -995,7 +995,7 @@ steps: from_secret: docker_password GCR_CREDS: from_secret: gcr_admin - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Publish container volumes: - name: docker @@ -1019,7 +1019,7 @@ steps: - commands: - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes failure: ignore - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Configure QEMU volumes: - name: docker @@ -1039,7 +1039,7 @@ steps: from_secret: docker_password GCR_CREDS: from_secret: gcr_admin - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Publish container volumes: - name: docker @@ -1063,7 +1063,7 @@ steps: - commands: - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes failure: ignore - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Configure QEMU volumes: - name: docker @@ -1083,7 +1083,7 @@ steps: from_secret: docker_password GCR_CREDS: from_secret: gcr_admin - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Publish container volumes: - name: docker @@ -1107,7 +1107,7 @@ steps: - commands: - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes failure: ignore - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Configure QEMU volumes: - name: docker @@ -1127,7 +1127,7 @@ steps: from_secret: docker_password GCR_CREDS: from_secret: gcr_admin - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Publish container volumes: - name: docker @@ -1156,7 +1156,7 @@ steps: from_secret: docker_login DOCKER_PASSWORD: from_secret: docker_password - image: grafana/agent-build-image:0.30.3-windows + image: grafana/agent-build-image:0.30.4-windows name: Build containers volumes: - name: docker @@ -1185,7 +1185,7 @@ steps: from_secret: docker_login DOCKER_PASSWORD: from_secret: docker_password - image: grafana/agent-build-image:0.30.3-windows + image: grafana/agent-build-image:0.30.4-windows name: Build containers volumes: - name: docker @@ -1306,7 +1306,7 @@ steps: from_secret: gpg_private_key GPG_PUBLIC_KEY: from_secret: gpg_public_key - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Publish release volumes: - name: docker @@ -1331,7 +1331,7 @@ steps: - DOCKER_OPTS="" make dist/grafana-agentctl-linux-amd64 - DOCKER_OPTS="" make dist.temp/grafana-agent-flow-linux-amd64 - DOCKER_OPTS="" make test-packages - image: grafana/agent-build-image:0.30.3 + image: grafana/agent-build-image:0.30.4 name: Test Linux system packages volumes: - name: docker @@ -1427,6 +1427,6 @@ kind: secret name: updater_private_key --- kind: signature -hmac: 47d018f95267288b13edfd1bdabbab3bc60daa2674fda3ebeb713fac569586cb +hmac: 28ba52df6f22c10bf77a95386a49aff65a1c372127f7d89489ac2d3ee02ce618 ... diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index 1d3e276ef4c3..b27dfa59319e 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -16,8 +16,8 @@ jobs: - name: Setup Go uses: actions/setup-go@v4 with: - go-version: "1.21.0" + go-version: "1.21" - name: Set OTEL Exporter Endpoint run: echo "OTEL_EXPORTER_ENDPOINT=http://172.17.0.1:8080" >> $GITHUB_ENV - name: Run tests - run: make integration-test \ No newline at end of file + run: make integration-test diff --git a/cmd/grafana-agent-operator/Dockerfile b/cmd/grafana-agent-operator/Dockerfile index 1b797fc96d69..17847af8456b 100644 --- a/cmd/grafana-agent-operator/Dockerfile +++ b/cmd/grafana-agent-operator/Dockerfile @@ -4,7 +4,7 @@ # default when running `docker buildx build` or when DOCKER_BUILDKIT=1 is set # in environment variables. -FROM --platform=$BUILDPLATFORM grafana/agent-build-image:0.30.3 as build +FROM --platform=$BUILDPLATFORM grafana/agent-build-image:0.30.4 as build ARG BUILDPLATFORM ARG TARGETPLATFORM ARG TARGETOS diff --git a/cmd/grafana-agent/Dockerfile b/cmd/grafana-agent/Dockerfile index f03bd4efdfd0..6a514a9d501e 100644 --- a/cmd/grafana-agent/Dockerfile +++ b/cmd/grafana-agent/Dockerfile @@ -4,7 +4,7 @@ # default when running `docker buildx build` or when DOCKER_BUILDKIT=1 is set # in environment variables. -FROM --platform=$BUILDPLATFORM grafana/agent-build-image:0.30.3 as build +FROM --platform=$BUILDPLATFORM grafana/agent-build-image:0.30.4 as build ARG BUILDPLATFORM ARG TARGETPLATFORM ARG TARGETOS diff --git a/cmd/grafana-agent/Dockerfile.windows b/cmd/grafana-agent/Dockerfile.windows index cd2bd529f942..454c93450eea 100644 --- a/cmd/grafana-agent/Dockerfile.windows +++ b/cmd/grafana-agent/Dockerfile.windows @@ -1,4 +1,4 @@ -FROM grafana/agent-build-image:0.30.3-windows as builder +FROM grafana/agent-build-image:0.30.4-windows as builder ARG VERSION ARG RELEASE_BUILD=1 diff --git a/cmd/grafana-agentctl/Dockerfile b/cmd/grafana-agentctl/Dockerfile index 5a024889e664..6530f85d58f8 100644 --- a/cmd/grafana-agentctl/Dockerfile +++ b/cmd/grafana-agentctl/Dockerfile @@ -4,7 +4,7 @@ # default when running `docker buildx build` or when DOCKER_BUILDKIT=1 is set # in environment variables. -FROM --platform=$BUILDPLATFORM grafana/agent-build-image:0.30.3 as build +FROM --platform=$BUILDPLATFORM grafana/agent-build-image:0.30.4 as build ARG BUILDPLATFORM ARG TARGETPLATFORM ARG TARGETOS diff --git a/cmd/grafana-agentctl/Dockerfile.windows b/cmd/grafana-agentctl/Dockerfile.windows index f310fa1af798..80d32f866736 100644 --- a/cmd/grafana-agentctl/Dockerfile.windows +++ b/cmd/grafana-agentctl/Dockerfile.windows @@ -1,4 +1,4 @@ -FROM grafana/agent-build-image:0.30.3-windows as builder +FROM grafana/agent-build-image:0.30.4-windows as builder ARG VERSION ARG RELEASE_BUILD=1 diff --git a/tools/crow/Dockerfile b/tools/crow/Dockerfile index 2e167ab9d2f6..7decaf84fdd0 100644 --- a/tools/crow/Dockerfile +++ b/tools/crow/Dockerfile @@ -4,7 +4,7 @@ # default when running `docker buildx build` or when DOCKER_BUILDKIT=1 is set # in environment variables. -FROM --platform=$BUILDPLATFORM grafana/agent-build-image:0.30.3 as build +FROM --platform=$BUILDPLATFORM grafana/agent-build-image:0.30.4 as build ARG BUILDPLATFORM ARG TARGETPLATFORM ARG TARGETOS diff --git a/tools/make/build-container.mk b/tools/make/build-container.mk index ae67dbe8a3e3..36ed221bb961 100644 --- a/tools/make/build-container.mk +++ b/tools/make/build-container.mk @@ -34,7 +34,7 @@ # variable names should be passed through to the container. USE_CONTAINER ?= 0 -BUILD_IMAGE_VERSION ?= 0.30.3 +BUILD_IMAGE_VERSION ?= 0.30.4 BUILD_IMAGE ?= grafana/agent-build-image:$(BUILD_IMAGE_VERSION) DOCKER_OPTS ?= -it diff --git a/tools/smoke/Dockerfile b/tools/smoke/Dockerfile index aed61b57dede..779536c296dd 100644 --- a/tools/smoke/Dockerfile +++ b/tools/smoke/Dockerfile @@ -4,7 +4,7 @@ # default when running `docker buildx build` or when DOCKER_BUILDKIT=1 is set # in environment variables. -FROM --platform=$BUILDPLATFORM grafana/agent-build-image:0.30.3 as build +FROM --platform=$BUILDPLATFORM grafana/agent-build-image:0.30.4 as build ARG BUILDPLATFORM ARG TARGETPLATFORM ARG TARGETOS From ea7b005c1a41ac218bac345b7634419531d8d1cf Mon Sep 17 00:00:00 2001 From: Craig Peterson <192540+captncraig@users.noreply.github.com> Date: Wed, 15 Nov 2023 15:58:41 -0500 Subject: [PATCH 030/166] Add metadata to User-Agent header (#5774) * extract widely duplicated user agent code into shared package * add useragent package * space * add goos and operator flag * set AGENT_OPERATOR env var * add space * move to internal * switch to deploy mode env * switch to deploy mode env * add deploy mode to helm chart * add deploy mode to deb and rpm * add deploy mode to docker image * tests * regen helm * use binary as fallback deploy mode * fix test * changelog --- CHANGELOG.md | 2 + cmd/grafana-agent/Dockerfile | 1 + component/common/kubernetes/kubernetes.go | 4 +- component/common/loki/client/client.go | 6 +- component/common/loki/client/queue_client.go | 2 +- component/loki/source/docker/docker.go | 4 +- component/loki/write/write.go | 3 - .../prometheus/remotewrite/remote_write.go | 4 +- component/prometheus/scrape/scrape.go | 4 +- component/pyroscope/scrape/scrape_loop.go | 5 +- component/pyroscope/write/write.go | 5 +- component/remote/http/http.go | 4 +- internal/useragent/useragent.go | 60 +++++++++++++ internal/useragent/useragent_test.go | 89 +++++++++++++++++++ .../templates/containers/_agent.yaml | 2 + .../templates/controllers/statefulset.yaml | 2 + .../templates/controllers/daemonset.yaml | 2 + .../templates/controllers/daemonset.yaml | 2 + .../templates/controllers/daemonset.yaml | 2 + .../templates/controllers/deployment.yaml | 2 + .../templates/controllers/deployment.yaml | 2 + .../templates/controllers/statefulset.yaml | 2 + .../templates/controllers/statefulset.yaml | 2 + .../templates/controllers/daemonset.yaml | 2 + .../templates/controllers/daemonset.yaml | 2 + .../templates/controllers/daemonset.yaml | 2 + .../templates/controllers/daemonset.yaml | 2 + .../templates/controllers/daemonset.yaml | 2 + .../templates/controllers/daemonset.yaml | 2 + .../templates/controllers/daemonset.yaml | 2 + .../templates/controllers/daemonset.yaml | 2 + .../templates/controllers/daemonset.yaml | 2 + .../templates/controllers/daemonset.yaml | 2 + .../templates/controllers/daemonset.yaml | 2 + .../templates/controllers/daemonset.yaml | 2 + .../templates/controllers/daemonset.yaml | 2 + .../templates/controllers/daemonset.yaml | 2 + .../templates/controllers/daemonset.yaml | 2 + .../deb/grafana-agent-flow.service | 1 + .../rpm/grafana-agent-flow.service | 1 + .../grafana-agent/deb/grafana-agent.service | 1 + .../grafana-agent/rpm/grafana-agent.service | 1 + pkg/logs/logs.go | 4 +- pkg/metrics/instance/instance.go | 6 +- pkg/operator/resources_pod_template.go | 17 ++-- pkg/operator/resources_pod_template_test.go | 13 +++ 46 files changed, 252 insertions(+), 33 deletions(-) create mode 100644 internal/useragent/useragent.go create mode 100644 internal/useragent/useragent_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index e3e1a9925073..e2f10620bf6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -152,6 +152,8 @@ Main (unreleased) - Use Go 1.21.4 for builds. (@rfratto) +- Change User-Agent header for outbound requests to include agent-mode, goos, and deployment mode. Example `GrafanaAgent/v0.38.0 (flow; linux; docker)` (@captncraig) + v0.37.4 (2023-11-06) ----------------- diff --git a/cmd/grafana-agent/Dockerfile b/cmd/grafana-agent/Dockerfile index 6a514a9d501e..7bd934790fe9 100644 --- a/cmd/grafana-agent/Dockerfile +++ b/cmd/grafana-agent/Dockerfile @@ -47,4 +47,5 @@ COPY cmd/grafana-agent/agent-local-config.yaml /etc/agent/agent.yaml ENTRYPOINT ["/bin/grafana-agent"] +ENV AGENT_DEPLOY_MODE=docker CMD ["--config.file=/etc/agent/agent.yaml", "--metrics.wal-directory=/etc/agent/data"] diff --git a/component/common/kubernetes/kubernetes.go b/component/common/kubernetes/kubernetes.go index a317fb58f11e..d46c3c0238c0 100644 --- a/component/common/kubernetes/kubernetes.go +++ b/component/common/kubernetes/kubernetes.go @@ -6,7 +6,7 @@ import ( "github.com/go-kit/log" commoncfg "github.com/grafana/agent/component/common/config" - "github.com/grafana/agent/pkg/build" + "github.com/grafana/agent/internal/useragent" "github.com/grafana/agent/pkg/flow/logging/level" promconfig "github.com/prometheus/common/config" "k8s.io/client-go/rest" @@ -79,7 +79,7 @@ func (args *ClientArguments) BuildRESTConfig(l log.Logger) (*rest.Config, error) } } - cfg.UserAgent = fmt.Sprintf("GrafanaAgent/%s", build.Version) + cfg.UserAgent = useragent.Get() cfg.ContentType = "application/vnd.kubernetes.protobuf" return cfg, nil diff --git a/component/common/loki/client/client.go b/component/common/loki/client/client.go index 964b6c98513b..5b426b4a1873 100644 --- a/component/common/loki/client/client.go +++ b/component/common/loki/client/client.go @@ -13,6 +13,7 @@ import ( "time" "github.com/go-kit/log" + "github.com/grafana/agent/internal/useragent" "github.com/grafana/agent/pkg/flow/logging/level" "github.com/grafana/dskit/backoff" "github.com/prometheus/client_golang/prometheus" @@ -20,7 +21,6 @@ import ( "github.com/prometheus/common/model" "github.com/grafana/agent/component/common/loki" - "github.com/grafana/agent/pkg/build" "github.com/grafana/agent/pkg/util" lokiutil "github.com/grafana/loki/pkg/util" ) @@ -47,7 +47,7 @@ const ( var Reasons = []string{ReasonGeneric, ReasonRateLimited, ReasonStreamLimited, ReasonLineTooLong} -var UserAgent = fmt.Sprintf("GrafanaAgent/%s", build.Version) +var userAgent = useragent.Get() type Metrics struct { encodedBytes *prometheus.CounterVec @@ -419,7 +419,7 @@ func (c *client) send(ctx context.Context, tenantID string, buf []byte) (int, er } req = req.WithContext(ctx) req.Header.Set("Content-Type", contentType) - req.Header.Set("User-Agent", UserAgent) + req.Header.Set("User-Agent", userAgent) // If the tenant ID is not empty promtail is running in multi-tenant mode, so // we should send it to Loki diff --git a/component/common/loki/client/queue_client.go b/component/common/loki/client/queue_client.go index dc8ed469fba3..871880cad17b 100644 --- a/component/common/loki/client/queue_client.go +++ b/component/common/loki/client/queue_client.go @@ -520,7 +520,7 @@ func (c *queueClient) send(ctx context.Context, tenantID string, buf []byte) (in } req = req.WithContext(ctx) req.Header.Set("Content-Type", contentType) - req.Header.Set("User-Agent", UserAgent) + req.Header.Set("User-Agent", userAgent) // If the tenant ID is not empty promtail is running in multi-tenant mode, so // we should send it to Loki diff --git a/component/loki/source/docker/docker.go b/component/loki/source/docker/docker.go index 584838f244fc..53a25b85da47 100644 --- a/component/loki/source/docker/docker.go +++ b/component/loki/source/docker/docker.go @@ -22,7 +22,7 @@ import ( flow_relabel "github.com/grafana/agent/component/common/relabel" "github.com/grafana/agent/component/discovery" dt "github.com/grafana/agent/component/loki/source/docker/internal/dockertarget" - "github.com/grafana/agent/pkg/build" + "github.com/grafana/agent/internal/useragent" "github.com/grafana/agent/pkg/flow/logging/level" "github.com/prometheus/common/config" "github.com/prometheus/common/model" @@ -40,7 +40,7 @@ func init() { }) } -var userAgent = fmt.Sprintf("GrafanaAgent/%s", build.Version) +var userAgent = useragent.Get() const ( dockerLabel = model.MetaLabelPrefix + "docker_" diff --git a/component/loki/write/write.go b/component/loki/write/write.go index a9d9c2730936..efda7b597c6f 100644 --- a/component/loki/write/write.go +++ b/component/loki/write/write.go @@ -12,7 +12,6 @@ import ( "github.com/grafana/agent/component/common/loki/client" "github.com/grafana/agent/component/common/loki/limit" "github.com/grafana/agent/component/common/loki/wal" - "github.com/grafana/agent/pkg/build" ) func init() { @@ -25,8 +24,6 @@ func init() { return New(opts, args.(Arguments)) }, }) - - client.UserAgent = fmt.Sprintf("GrafanaAgent/%s", build.Version) } // Arguments holds values which are used to configure the loki.write component. diff --git a/component/prometheus/remotewrite/remote_write.go b/component/prometheus/remotewrite/remote_write.go index d36d5cde8cfe..ed6ec0089b39 100644 --- a/component/prometheus/remotewrite/remote_write.go +++ b/component/prometheus/remotewrite/remote_write.go @@ -21,7 +21,7 @@ import ( "github.com/go-kit/log" "github.com/grafana/agent/component" - "github.com/grafana/agent/pkg/build" + "github.com/grafana/agent/internal/useragent" "github.com/grafana/agent/pkg/flow/logging/level" "github.com/grafana/agent/pkg/metrics/wal" "github.com/prometheus/prometheus/model/timestamp" @@ -35,7 +35,7 @@ import ( var remoteFlushDeadline = 1 * time.Minute func init() { - remote.UserAgent = fmt.Sprintf("GrafanaAgent/%s", build.Version) + remote.UserAgent = useragent.Get() component.Register(component.Registration{ Name: "prometheus.remote_write", diff --git a/component/prometheus/scrape/scrape.go b/component/prometheus/scrape/scrape.go index 750f71bd9aa0..d700221d1a15 100644 --- a/component/prometheus/scrape/scrape.go +++ b/component/prometheus/scrape/scrape.go @@ -12,7 +12,7 @@ import ( component_config "github.com/grafana/agent/component/common/config" "github.com/grafana/agent/component/discovery" "github.com/grafana/agent/component/prometheus" - "github.com/grafana/agent/pkg/build" + "github.com/grafana/agent/internal/useragent" "github.com/grafana/agent/pkg/flow/logging/level" "github.com/grafana/agent/service/cluster" "github.com/grafana/agent/service/http" @@ -27,7 +27,7 @@ import ( ) func init() { - scrape.UserAgent = fmt.Sprintf("GrafanaAgent/%s", build.Version) + scrape.UserAgent = useragent.Get() component.Register(component.Registration{ Name: "prometheus.scrape", diff --git a/component/pyroscope/scrape/scrape_loop.go b/component/pyroscope/scrape/scrape_loop.go index 5abb3fd801f3..2b74930ed191 100644 --- a/component/pyroscope/scrape/scrape_loop.go +++ b/component/pyroscope/scrape/scrape_loop.go @@ -12,18 +12,17 @@ import ( "github.com/go-kit/log" "github.com/grafana/agent/component/pyroscope" + "github.com/grafana/agent/internal/useragent" "github.com/grafana/agent/pkg/flow/logging/level" commonconfig "github.com/prometheus/common/config" "github.com/prometheus/prometheus/discovery/targetgroup" "github.com/prometheus/prometheus/util/pool" "golang.org/x/net/context/ctxhttp" - - "github.com/grafana/agent/pkg/build" ) var ( payloadBuffers = pool.New(1e3, 1e6, 3, func(sz int) interface{} { return make([]byte, 0, sz) }) - userAgentHeader = fmt.Sprintf("GrafanaAgent/%s", build.Version) + userAgentHeader = useragent.Get() ) type scrapePool struct { diff --git a/component/pyroscope/write/write.go b/component/pyroscope/write/write.go index e92c7dfb1706..165a7f20a812 100644 --- a/component/pyroscope/write/write.go +++ b/component/pyroscope/write/write.go @@ -3,12 +3,12 @@ package write import ( "context" "errors" - "fmt" "strings" "time" "github.com/bufbuild/connect-go" "github.com/grafana/agent/component/pyroscope" + "github.com/grafana/agent/internal/useragent" "github.com/grafana/agent/pkg/flow/logging/level" "github.com/oklog/run" commonconfig "github.com/prometheus/common/config" @@ -18,7 +18,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/common/config" - "github.com/grafana/agent/pkg/build" "github.com/grafana/dskit/backoff" pushv1 "github.com/grafana/pyroscope/api/gen/proto/go/push/v1" "github.com/grafana/pyroscope/api/gen/proto/go/push/v1/pushv1connect" @@ -26,7 +25,7 @@ import ( ) var ( - userAgent = fmt.Sprintf("GrafanaAgent/%s", build.Version) + userAgent = useragent.Get() DefaultArguments = func() Arguments { return Arguments{} } diff --git a/component/remote/http/http.go b/component/remote/http/http.go index 3966a63c6522..c45833ba81df 100644 --- a/component/remote/http/http.go +++ b/component/remote/http/http.go @@ -13,13 +13,13 @@ import ( "github.com/go-kit/log" "github.com/grafana/agent/component" common_config "github.com/grafana/agent/component/common/config" - "github.com/grafana/agent/pkg/build" + "github.com/grafana/agent/internal/useragent" "github.com/grafana/agent/pkg/flow/logging/level" "github.com/grafana/river/rivertypes" prom_config "github.com/prometheus/common/config" ) -var userAgent = fmt.Sprintf("GrafanaAgent/%s", build.Version) +var userAgent = useragent.Get() func init() { component.Register(component.Registration{ diff --git a/internal/useragent/useragent.go b/internal/useragent/useragent.go new file mode 100644 index 000000000000..bb6043f97aa3 --- /dev/null +++ b/internal/useragent/useragent.go @@ -0,0 +1,60 @@ +// package useragent provides a consistent way to get a user agent for outbound http requests from Grafana Agent. +// The default User-Agent is `GrafanaAgent/$VERSION($MODE)` +// Where version is the build version of the agent and MODE is one of "static" or "flow". +package useragent + +import ( + "fmt" + "os" + "runtime" + "strings" + + "github.com/grafana/agent/pkg/build" +) + +const ( + deployModeEnv = "AGENT_DEPLOY_MODE" + modeEnv = "AGENT_MODE" +) + +// settable by tests +var goos = runtime.GOOS + +func Get() string { + parenthesis := "" + metadata := []string{} + if mode := getRunMode(); mode != "" { + metadata = append(metadata, mode) + } + metadata = append(metadata, goos) + if op := getDeployMode(); op != "" { + metadata = append(metadata, op) + } + if len(metadata) > 0 { + parenthesis = fmt.Sprintf(" (%s)", strings.Join(metadata, "; ")) + } + return fmt.Sprintf("GrafanaAgent/%s%s", build.Version, parenthesis) +} + +// getRunMode attempts to get agent mode, using `unknown` for invalid values. +func getRunMode() string { + key := os.Getenv(modeEnv) + switch key { + case "flow": + return "flow" + case "static", "": + return "static" + default: + return "unknown" + } +} + +func getDeployMode() string { + op := os.Getenv(deployModeEnv) + // only return known modes. Use "binary" as a default catch-all. + switch op { + case "operator", "helm", "docker", "deb", "rpm", "brew": + return op + } + return "binary" +} diff --git a/internal/useragent/useragent_test.go b/internal/useragent/useragent_test.go new file mode 100644 index 000000000000..abaf0b80d192 --- /dev/null +++ b/internal/useragent/useragent_test.go @@ -0,0 +1,89 @@ +package useragent + +import ( + "testing" + + "github.com/grafana/agent/pkg/build" + "github.com/stretchr/testify/require" +) + +func TestUserAgent(t *testing.T) { + build.Version = "v1.2.3" + tests := []struct { + Name string + Mode string + Expected string + DeployMode string + GOOS string + }{ + { + Name: "basic", + Mode: "", + Expected: "GrafanaAgent/v1.2.3 (static; linux; binary)", + GOOS: "linux", + }, + { + Name: "flow", + Mode: "flow", + Expected: "GrafanaAgent/v1.2.3 (flow; windows; binary)", + GOOS: "windows", + }, + { + Name: "static", + Mode: "static", + Expected: "GrafanaAgent/v1.2.3 (static; darwin; binary)", + GOOS: "darwin", + }, + { + Name: "unknown", + Mode: "blahlahblah", + // unknown mode, should not happen. But we will substitute 'unknown' to avoid allowing arbitrary cardinality. + Expected: "GrafanaAgent/v1.2.3 (unknown; freebsd; binary)", + GOOS: "freebsd", + }, + { + Name: "operator", + Mode: "static", + DeployMode: "operator", + Expected: "GrafanaAgent/v1.2.3 (static; linux; operator)", + GOOS: "linux", + }, + { + Name: "deb", + Mode: "flow", + DeployMode: "deb", + Expected: "GrafanaAgent/v1.2.3 (flow; linux; deb)", + GOOS: "linux", + }, + { + Name: "rpm", + Mode: "static", + DeployMode: "rpm", + Expected: "GrafanaAgent/v1.2.3 (static; linux; rpm)", + GOOS: "linux", + }, + { + Name: "docker", + Mode: "flow", + DeployMode: "docker", + Expected: "GrafanaAgent/v1.2.3 (flow; linux; docker)", + GOOS: "linux", + }, + { + Name: "helm", + Mode: "flow", + DeployMode: "helm", + Expected: "GrafanaAgent/v1.2.3 (flow; linux; helm)", + GOOS: "linux", + }, + } + for _, tst := range tests { + t.Run(tst.Name, func(t *testing.T) { + goos = tst.GOOS + t.Setenv(deployModeEnv, tst.DeployMode) + t.Setenv(modeEnv, tst.Mode) + actual := Get() + require.Equal(t, tst.Expected, actual) + }) + } +} diff --git a/operations/helm/charts/grafana-agent/templates/containers/_agent.yaml b/operations/helm/charts/grafana-agent/templates/containers/_agent.yaml index c486c8ec30d8..32d081b58dc4 100644 --- a/operations/helm/charts/grafana-agent/templates/containers/_agent.yaml +++ b/operations/helm/charts/grafana-agent/templates/containers/_agent.yaml @@ -27,6 +27,8 @@ env: - name: AGENT_MODE value: {{ .Values.agent.mode }} + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/clustering/grafana-agent/templates/controllers/statefulset.yaml b/operations/helm/tests/clustering/grafana-agent/templates/controllers/statefulset.yaml index 1aca2fb93859..69354494639f 100644 --- a/operations/helm/tests/clustering/grafana-agent/templates/controllers/statefulset.yaml +++ b/operations/helm/tests/clustering/grafana-agent/templates/controllers/statefulset.yaml @@ -41,6 +41,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/controller-volumes-extra/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/controller-volumes-extra/grafana-agent/templates/controllers/daemonset.yaml index f19ed25ad63b..de0c1e307bc6 100644 --- a/operations/helm/tests/controller-volumes-extra/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/controller-volumes-extra/grafana-agent/templates/controllers/daemonset.yaml @@ -36,6 +36,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/create-daemonset-hostnetwork/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/create-daemonset-hostnetwork/grafana-agent/templates/controllers/daemonset.yaml index f7d69461630e..0921197e38ef 100644 --- a/operations/helm/tests/create-daemonset-hostnetwork/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/create-daemonset-hostnetwork/grafana-agent/templates/controllers/daemonset.yaml @@ -36,6 +36,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/create-daemonset/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/create-daemonset/grafana-agent/templates/controllers/daemonset.yaml index 0038338c8e15..640801c35de4 100644 --- a/operations/helm/tests/create-daemonset/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/create-daemonset/grafana-agent/templates/controllers/daemonset.yaml @@ -36,6 +36,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/create-deployment-autoscaling/grafana-agent/templates/controllers/deployment.yaml b/operations/helm/tests/create-deployment-autoscaling/grafana-agent/templates/controllers/deployment.yaml index 33115f481940..c5383a670125 100644 --- a/operations/helm/tests/create-deployment-autoscaling/grafana-agent/templates/controllers/deployment.yaml +++ b/operations/helm/tests/create-deployment-autoscaling/grafana-agent/templates/controllers/deployment.yaml @@ -36,6 +36,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/create-deployment/grafana-agent/templates/controllers/deployment.yaml b/operations/helm/tests/create-deployment/grafana-agent/templates/controllers/deployment.yaml index 17238227bbe4..37fcf8fc0dc6 100644 --- a/operations/helm/tests/create-deployment/grafana-agent/templates/controllers/deployment.yaml +++ b/operations/helm/tests/create-deployment/grafana-agent/templates/controllers/deployment.yaml @@ -37,6 +37,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/create-statefulset-autoscaling/grafana-agent/templates/controllers/statefulset.yaml b/operations/helm/tests/create-statefulset-autoscaling/grafana-agent/templates/controllers/statefulset.yaml index 56f4e29353a8..bc9d31d9cf75 100644 --- a/operations/helm/tests/create-statefulset-autoscaling/grafana-agent/templates/controllers/statefulset.yaml +++ b/operations/helm/tests/create-statefulset-autoscaling/grafana-agent/templates/controllers/statefulset.yaml @@ -38,6 +38,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/create-statefulset/grafana-agent/templates/controllers/statefulset.yaml b/operations/helm/tests/create-statefulset/grafana-agent/templates/controllers/statefulset.yaml index 57ffe8a5b38d..7a641636bc13 100644 --- a/operations/helm/tests/create-statefulset/grafana-agent/templates/controllers/statefulset.yaml +++ b/operations/helm/tests/create-statefulset/grafana-agent/templates/controllers/statefulset.yaml @@ -39,6 +39,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/custom-config/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/custom-config/grafana-agent/templates/controllers/daemonset.yaml index 0038338c8e15..640801c35de4 100644 --- a/operations/helm/tests/custom-config/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/custom-config/grafana-agent/templates/controllers/daemonset.yaml @@ -36,6 +36,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/default-values/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/default-values/grafana-agent/templates/controllers/daemonset.yaml index 0038338c8e15..640801c35de4 100644 --- a/operations/helm/tests/default-values/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/default-values/grafana-agent/templates/controllers/daemonset.yaml @@ -36,6 +36,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/enable-servicemonitor/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/enable-servicemonitor/grafana-agent/templates/controllers/daemonset.yaml index 0038338c8e15..640801c35de4 100644 --- a/operations/helm/tests/enable-servicemonitor/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/enable-servicemonitor/grafana-agent/templates/controllers/daemonset.yaml @@ -36,6 +36,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/envFrom/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/envFrom/grafana-agent/templates/controllers/daemonset.yaml index af9f8733bfa3..ab153416d599 100644 --- a/operations/helm/tests/envFrom/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/envFrom/grafana-agent/templates/controllers/daemonset.yaml @@ -36,6 +36,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/existing-config/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/existing-config/grafana-agent/templates/controllers/daemonset.yaml index b3acab2c314f..39cf2262d661 100644 --- a/operations/helm/tests/existing-config/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/existing-config/grafana-agent/templates/controllers/daemonset.yaml @@ -36,6 +36,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/extra-env/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/extra-env/grafana-agent/templates/controllers/daemonset.yaml index b375f5c2d740..2b4663c47d86 100644 --- a/operations/helm/tests/extra-env/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/extra-env/grafana-agent/templates/controllers/daemonset.yaml @@ -36,6 +36,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/extra-ports/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/extra-ports/grafana-agent/templates/controllers/daemonset.yaml index b949dab97850..388eb68a16eb 100644 --- a/operations/helm/tests/extra-ports/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/extra-ports/grafana-agent/templates/controllers/daemonset.yaml @@ -36,6 +36,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/faro-ingress/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/faro-ingress/grafana-agent/templates/controllers/daemonset.yaml index 1a4310f118dc..840b64e244cd 100644 --- a/operations/helm/tests/faro-ingress/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/faro-ingress/grafana-agent/templates/controllers/daemonset.yaml @@ -36,6 +36,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/global-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/global-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml index 23c984e2bd59..93e08d06f66b 100644 --- a/operations/helm/tests/global-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/global-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml @@ -41,6 +41,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/global-image-registry/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/global-image-registry/grafana-agent/templates/controllers/daemonset.yaml index fb0c5bccfba3..83d83473d371 100644 --- a/operations/helm/tests/global-image-registry/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/global-image-registry/grafana-agent/templates/controllers/daemonset.yaml @@ -36,6 +36,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/initcontainers/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/initcontainers/grafana-agent/templates/controllers/daemonset.yaml index 00b72a087f56..dea955f56900 100644 --- a/operations/helm/tests/initcontainers/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/initcontainers/grafana-agent/templates/controllers/daemonset.yaml @@ -54,6 +54,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/local-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/local-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml index c9bbe3a6d165..8be0679577ea 100644 --- a/operations/helm/tests/local-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/local-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml @@ -38,6 +38,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/local-image-registry/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/local-image-registry/grafana-agent/templates/controllers/daemonset.yaml index fb0c5bccfba3..83d83473d371 100644 --- a/operations/helm/tests/local-image-registry/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/local-image-registry/grafana-agent/templates/controllers/daemonset.yaml @@ -36,6 +36,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/nodeselectors-and-tolerations/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/nodeselectors-and-tolerations/grafana-agent/templates/controllers/daemonset.yaml index d38ffc899ae0..a9d14c8e2d29 100644 --- a/operations/helm/tests/nodeselectors-and-tolerations/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/nodeselectors-and-tolerations/grafana-agent/templates/controllers/daemonset.yaml @@ -36,6 +36,8 @@ spec: env: - name: AGENT_MODE value: flow + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/operations/helm/tests/static-mode/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/static-mode/grafana-agent/templates/controllers/daemonset.yaml index afd7d674720b..5fc4e67fd107 100644 --- a/operations/helm/tests/static-mode/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/static-mode/grafana-agent/templates/controllers/daemonset.yaml @@ -33,6 +33,8 @@ spec: env: - name: AGENT_MODE value: static + - name: AGENT_DEPLOY_MODE + value: "helm" - name: HOSTNAME valueFrom: fieldRef: diff --git a/packaging/grafana-agent-flow/deb/grafana-agent-flow.service b/packaging/grafana-agent-flow/deb/grafana-agent-flow.service index aaf037d9f162..afca01973135 100644 --- a/packaging/grafana-agent-flow/deb/grafana-agent-flow.service +++ b/packaging/grafana-agent-flow/deb/grafana-agent-flow.service @@ -8,6 +8,7 @@ After=network-online.target Restart=always User=grafana-agent-flow Environment=HOSTNAME=%H +Environment=AGENT_DEPLOY_MODE=deb EnvironmentFile=/etc/default/grafana-agent-flow WorkingDirectory=/var/lib/grafana-agent-flow ExecStart=/usr/bin/grafana-agent-flow run $CUSTOM_ARGS --storage.path=/var/lib/grafana-agent-flow $CONFIG_FILE diff --git a/packaging/grafana-agent-flow/rpm/grafana-agent-flow.service b/packaging/grafana-agent-flow/rpm/grafana-agent-flow.service index 98638ed8e47a..330960790500 100644 --- a/packaging/grafana-agent-flow/rpm/grafana-agent-flow.service +++ b/packaging/grafana-agent-flow/rpm/grafana-agent-flow.service @@ -8,6 +8,7 @@ After=network-online.target Restart=always User=grafana-agent-flow Environment=HOSTNAME=%H +Environment=AGENT_DEPLOY_MODE=rpm EnvironmentFile=/etc/sysconfig/grafana-agent-flow WorkingDirectory=/var/lib/grafana-agent-flow ExecStart=/usr/bin/grafana-agent-flow run $CUSTOM_ARGS --storage.path=/var/lib/grafana-agent-flow $CONFIG_FILE diff --git a/packaging/grafana-agent/deb/grafana-agent.service b/packaging/grafana-agent/deb/grafana-agent.service index 1f2d95315f03..eea8677f3f6e 100644 --- a/packaging/grafana-agent/deb/grafana-agent.service +++ b/packaging/grafana-agent/deb/grafana-agent.service @@ -8,6 +8,7 @@ After=network-online.target Restart=always User=grafana-agent Environment=HOSTNAME=%H +Environment=AGENT_DEPLOY_MODE=deb EnvironmentFile=/etc/default/grafana-agent WorkingDirectory=/var/lib/grafana-agent ExecStart=/usr/bin/grafana-agent --config.file $CONFIG_FILE $CUSTOM_ARGS diff --git a/packaging/grafana-agent/rpm/grafana-agent.service b/packaging/grafana-agent/rpm/grafana-agent.service index fb5e24607a98..0089827dcd85 100644 --- a/packaging/grafana-agent/rpm/grafana-agent.service +++ b/packaging/grafana-agent/rpm/grafana-agent.service @@ -8,6 +8,7 @@ After=network-online.target Restart=always User=grafana-agent Environment=HOSTNAME=%H +Environment=AGENT_DEPLOY_MODE=rpm EnvironmentFile=/etc/sysconfig/grafana-agent WorkingDirectory=/var/lib/grafana-agent ExecStart=/usr/bin/grafana-agent --config.file $CONFIG_FILE $CUSTOM_ARGS diff --git a/pkg/logs/logs.go b/pkg/logs/logs.go index 7b0d9b2c27c0..a821298be9fd 100644 --- a/pkg/logs/logs.go +++ b/pkg/logs/logs.go @@ -11,6 +11,7 @@ import ( "github.com/go-kit/log" "github.com/go-kit/log/level" + "github.com/grafana/agent/internal/useragent" "github.com/grafana/agent/pkg/util" "github.com/grafana/loki/clients/pkg/promtail" "github.com/grafana/loki/clients/pkg/promtail/api" @@ -21,11 +22,10 @@ import ( "github.com/grafana/loki/clients/pkg/promtail/wal" "github.com/grafana/loki/pkg/tracing" "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/common/version" ) func init() { - client.UserAgent = fmt.Sprintf("GrafanaAgent/%s", version.Version) + client.UserAgent = useragent.Get() } // Logs is a Logs log collection. It uses multiple distinct sets of Logs diff --git a/pkg/metrics/instance/instance.go b/pkg/metrics/instance/instance.go index 9a9e36c788b1..3d0e9fd47ca7 100644 --- a/pkg/metrics/instance/instance.go +++ b/pkg/metrics/instance/instance.go @@ -17,7 +17,7 @@ import ( "github.com/go-kit/log" "github.com/go-kit/log/level" - "github.com/grafana/agent/pkg/build" + "github.com/grafana/agent/internal/useragent" "github.com/grafana/agent/pkg/metrics/wal" "github.com/grafana/agent/pkg/util" "github.com/oklog/run" @@ -35,8 +35,8 @@ import ( ) func init() { - remote.UserAgent = fmt.Sprintf("GrafanaAgent/%s", build.Version) - scrape.UserAgent = fmt.Sprintf("GrafanaAgent/%s", build.Version) + remote.UserAgent = useragent.Get() + scrape.UserAgent = useragent.Get() // default remote_write send_exemplars to true config.DefaultRemoteWriteConfig.SendExemplars = true diff --git a/pkg/operator/resources_pod_template.go b/pkg/operator/resources_pod_template.go index c826ea6ea980..5e97851cd8ce 100644 --- a/pkg/operator/resources_pod_template.go +++ b/pkg/operator/resources_pod_template.go @@ -190,12 +190,19 @@ func generatePodTemplate( finalLabels = cfg.Labels.Merge(podLabels) ) - envVars := []core_v1.EnvVar{{ - Name: "POD_NAME", - ValueFrom: &core_v1.EnvVarSource{ - FieldRef: &core_v1.ObjectFieldSelector{FieldPath: "metadata.name"}, + envVars := []core_v1.EnvVar{ + { + Name: "POD_NAME", + ValueFrom: &core_v1.EnvVarSource{ + FieldRef: &core_v1.ObjectFieldSelector{FieldPath: "metadata.name"}, + }, }, - }} + // Allows the agent to identify this is an operator-created pod. + { + Name: "AGENT_DEPLOY_MODE", + Value: "operator", + }, + } envVars = append(envVars, opts.ExtraEnvVars...) useConfigReloaderVersion := d.Agent.Spec.ConfigReloaderVersion diff --git a/pkg/operator/resources_pod_template_test.go b/pkg/operator/resources_pod_template_test.go index eb855820cc9d..fa189a203385 100644 --- a/pkg/operator/resources_pod_template_test.go +++ b/pkg/operator/resources_pod_template_test.go @@ -155,4 +155,17 @@ func Test_generatePodTemplate(t *testing.T) { require.NoError(t, err) assert.Nil(t, tmpl.Spec.RuntimeClassName) }) + + t.Run("AGENT_DEPLOY_MODE env ser", func(t *testing.T) { + deploy := gragent.Deployment{ + Agent: &gragent.GrafanaAgent{ + ObjectMeta: v1.ObjectMeta{Name: name, Namespace: name}, + }, + } + + tmpl, _, err := generatePodTemplate(cfg, "agent", deploy, podTemplateOptions{}) + require.NoError(t, err) + require.Equal(t, "operator", tmpl.Spec.Containers[1].Env[1].Value) + require.Equal(t, "AGENT_DEPLOY_MODE", tmpl.Spec.Containers[1].Env[1].Name) + }) } From 3831214026c2f546283ed20df47d41a14bddb875 Mon Sep 17 00:00:00 2001 From: Jorge Creixell Date: Thu, 16 Nov 2023 09:23:47 +0100 Subject: [PATCH 031/166] Agent Management: Introduce support for external labels in logs (#5786) - We currently support remotely managing external labels for metrics. This change adds support for logs as well. - Note: this change only applies to static mode. --- CHANGELOG.md | 2 ++ .../agent_management_remote_config_test.go | 33 ++++++++++++++++++- pkg/config/agentmanagement_remote_config.go | 18 +++++++--- 3 files changed, 48 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e2f10620bf6c..76a1fce9d595 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,6 +58,8 @@ Main (unreleased) - `otelcol.processor.filter` - filters OTLP telemetry data using OpenTelemetry Transformation Language (OTTL). (@hainenber) +- Agent Management: Introduce support for remotely managed external labels for logs. (@jcreixell) + ### Enhancements - The `loki.write` WAL now has snappy compression enabled by default. (@thepalbi) diff --git a/pkg/config/agent_management_remote_config_test.go b/pkg/config/agent_management_remote_config_test.go index 887173411994..af97bd70190a 100644 --- a/pkg/config/agent_management_remote_config_test.go +++ b/pkg/config/agent_management_remote_config_test.go @@ -5,6 +5,7 @@ import ( "time" "github.com/grafana/agent/pkg/metrics/instance" + "github.com/prometheus/common/model" "github.com/prometheus/prometheus/model/labels" "github.com/stretchr/testify/require" ) @@ -199,7 +200,13 @@ server: metrics: global: external_labels: - foo: bar` + foo: bar +logs: + global: + clients: + - external_labels: + foo: bar +` rc := RemoteConfig{ BaseConfig: BaseConfigContent(baseConfig), Snippets: allSnippets, @@ -207,11 +214,26 @@ metrics: c, err := rc.BuildAgentConfig() require.NoError(t, err) require.Equal(t, 1, len(c.Logs.Configs)) + require.Equal(t, 1, len(c.Logs.Global.ClientConfigs)) + require.Equal(t, c.Logs.Global.ClientConfigs[0].ExternalLabels.LabelSet, model.LabelSet{"foo": "bar"}) require.Equal(t, 1, len(c.Metrics.Global.Prometheus.ExternalLabels)) require.Contains(t, c.Metrics.Global.Prometheus.ExternalLabels, labels.Label{Name: "foo", Value: "bar"}) }) t.Run("external labels provided", func(t *testing.T) { + baseConfig := ` +server: + log_level: debug +metrics: + global: + remote_write: + - url: http://localhost:9090/api/prom/push +logs: + global: + clients: + - url: http://localhost:3100/loki/api/v1/push +` + rc := RemoteConfig{ BaseConfig: BaseConfigContent(baseConfig), Snippets: allSnippets, @@ -225,6 +247,8 @@ metrics: require.NoError(t, err) require.Equal(t, 1, len(c.Logs.Configs)) require.Equal(t, 1, len(c.Metrics.Configs)) + require.Equal(t, 1, len(c.Logs.Global.ClientConfigs)) + require.Equal(t, c.Logs.Global.ClientConfigs[0].ExternalLabels.LabelSet, model.LabelSet{"foo": "bar"}) require.Contains(t, c.Metrics.Global.Prometheus.ExternalLabels, labels.Label{Name: "foo", Value: "bar"}) }) @@ -236,6 +260,11 @@ metrics: global: external_labels: foo: bar +logs: + global: + clients: + - external_labels: + foo: bar ` rc := RemoteConfig{ BaseConfig: BaseConfigContent(baseConfig), @@ -250,6 +279,8 @@ metrics: require.NoError(t, err) require.Equal(t, 1, len(c.Logs.Configs)) require.Equal(t, 1, len(c.Metrics.Configs)) + require.Equal(t, 1, len(c.Logs.Global.ClientConfigs)) + require.Equal(t, c.Logs.Global.ClientConfigs[0].ExternalLabels.LabelSet, model.LabelSet{"foo": "bar"}) require.Contains(t, c.Metrics.Global.Prometheus.ExternalLabels, labels.Label{Name: "foo", Value: "bar"}) require.NotContains(t, c.Metrics.Global.Prometheus.ExternalLabels, labels.Label{Name: "foo", Value: "baz"}) }) diff --git a/pkg/config/agentmanagement_remote_config.go b/pkg/config/agentmanagement_remote_config.go index f5deeed9a47c..c1f87615930d 100644 --- a/pkg/config/agentmanagement_remote_config.go +++ b/pkg/config/agentmanagement_remote_config.go @@ -5,6 +5,7 @@ import ( "github.com/grafana/agent/pkg/logs" "github.com/grafana/agent/pkg/metrics/instance" "github.com/grafana/loki/clients/pkg/promtail/scrapeconfig" + "github.com/prometheus/common/model" pc "github.com/prometheus/prometheus/config" "github.com/prometheus/prometheus/model/labels" "gopkg.in/yaml.v2" @@ -130,11 +131,20 @@ func appendExternalLabels(c *Config, externalLabels map[string]string) { return } // Start off with the existing external labels, which will only be added to (not replaced) - newExternalLabels := c.Metrics.Global.Prometheus.ExternalLabels.Map() + metricsExternalLabels := c.Metrics.Global.Prometheus.ExternalLabels.Map() for k, v := range externalLabels { - if _, ok := newExternalLabels[k]; !ok { - newExternalLabels[k] = v + if _, ok := metricsExternalLabels[k]; !ok { + metricsExternalLabels[k] = v } } - c.Metrics.Global.Prometheus.ExternalLabels = labels.FromMap(newExternalLabels) + + logsExternalLabels := make(model.LabelSet) + for k, v := range externalLabels { + logsExternalLabels[model.LabelName(k)] = model.LabelValue(v) + } + + c.Metrics.Global.Prometheus.ExternalLabels = labels.FromMap(metricsExternalLabels) + for i, cc := range c.Logs.Global.ClientConfigs { + c.Logs.Global.ClientConfigs[i].ExternalLabels.LabelSet = logsExternalLabels.Merge(cc.ExternalLabels.LabelSet) + } } From 308e2b4b123605221002db168b1397b2bdb5194d Mon Sep 17 00:00:00 2001 From: Paulin Todev Date: Thu, 16 Nov 2023 09:42:53 +0000 Subject: [PATCH 032/166] Move k8s resolver change to the main branch section (#5789) --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 76a1fce9d595..34630f581d6d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -146,6 +146,9 @@ Main (unreleased) - Fix a bug which prevented Agent from running `otelcol.exporter.loadbalancing` with a `routing_key` of `traceID`. (@ptodev) +- Added Kubernetes service resolver to static node's loadbalancing exporter + and to Flow's `otelcol.exporter.loadbalancing`. (@ptodev) + ### Other changes - Bump `mysqld_exporter` version to v0.15.0. (@marctc) @@ -169,9 +172,6 @@ v0.37.4 (2023-11-06) - Fix a bug where reloading the configuration of a `loki.write` component lead to a panic. (@tpaschalis) -- Added Kubernetes service resolver to static node's loadbalancing exporter - and to Flow's `otelcol.exporter.loadbalancing`. (@ptodev) - v0.37.3 (2023-10-26) ----------------- From 461a4b2d20013c1384d095f01f95aff7b0243096 Mon Sep 17 00:00:00 2001 From: mason Date: Thu, 16 Nov 2023 21:58:15 +0800 Subject: [PATCH 033/166] Fix static pods missing in the discovery.kubelet output (#5735) Co-authored-by: Paschalis Tsilias --- CHANGELOG.md | 2 ++ component/discovery/kubelet/kubelet.go | 40 +++++++++++++++++++++ component/discovery/kubelet/kubelet_test.go | 17 +++++++++ 3 files changed, 59 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34630f581d6d..06b45869c134 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -94,6 +94,8 @@ Main (unreleased) - Added support for replaying not sent data for `loki.write` when WAL is enabled. (@thepalbi) +- Make the result of 'discovery.kubelet' support pods that without ports, such as k8s control plane static pods. (@masonmei) + - Added support for unicode strings in `pyroscope.ebpf` python profiles. (@korniltsev) - Improved resilience of graph evaluation in presence of slow components. (@thampiotr) diff --git a/component/discovery/kubelet/kubelet.go b/component/discovery/kubelet/kubelet.go index 53032c424968..ff952e2ada6e 100644 --- a/component/discovery/kubelet/kubelet.go +++ b/component/discovery/kubelet/kubelet.go @@ -34,6 +34,7 @@ const ( podNameLabel = metaLabelPrefix + "pod_name" podIPLabel = metaLabelPrefix + "pod_ip" podContainerNameLabel = metaLabelPrefix + "pod_container_name" + podContainerIDLabel = metaLabelPrefix + "pod_container_id" podContainerImageLabel = metaLabelPrefix + "pod_container_image" podContainerPortNameLabel = metaLabelPrefix + "pod_container_port_name" podContainerPortNumberLabel = metaLabelPrefix + "pod_container_port_number" @@ -214,6 +215,27 @@ func (d *Discovery) buildPodTargetGroup(pod v1.Pod) *targetgroup.Group { containers := append(pod.Spec.Containers, pod.Spec.InitContainers...) for i, c := range containers { isInit := i >= len(pod.Spec.Containers) + cStatuses := &pod.Status.ContainerStatuses + if isInit { + cStatuses = &pod.Status.InitContainerStatuses + } + cID := d.findPodContainerID(cStatuses, c.Name) + + // If no ports are defined for the container, create an anonymous + // target per container. + if len(c.Ports) == 0 { + // We don't have a port so we just set the address label to the pod IP. + // The user has to add a port manually. + tg.Targets = append(tg.Targets, model.LabelSet{ + model.AddressLabel: lv(pod.Status.PodIP), + podContainerNameLabel: lv(c.Name), + podContainerIDLabel: lv(cID), + podContainerImageLabel: lv(c.Image), + podContainerIsInit: lv(strconv.FormatBool(isInit)), + }) + continue + } + for _, port := range c.Ports { ports := strconv.FormatUint(uint64(port.ContainerPort), 10) addr := net.JoinHostPort(pod.Status.PodIP, ports) @@ -221,6 +243,7 @@ func (d *Discovery) buildPodTargetGroup(pod v1.Pod) *targetgroup.Group { tg.Targets = append(tg.Targets, model.LabelSet{ model.AddressLabel: lv(addr), podContainerNameLabel: lv(c.Name), + podContainerIDLabel: lv(cID), podContainerImageLabel: lv(c.Image), podContainerPortNumberLabel: lv(ports), podContainerPortNameLabel: lv(port.Name), @@ -233,6 +256,23 @@ func (d *Discovery) buildPodTargetGroup(pod v1.Pod) *targetgroup.Group { return tg } +func (p *Discovery) findPodContainerStatus(statuses *[]v1.ContainerStatus, containerName string) (*v1.ContainerStatus, error) { + for _, s := range *statuses { + if s.Name == containerName { + return &s, nil + } + } + return nil, fmt.Errorf("cannot find container with name %v", containerName) +} + +func (p *Discovery) findPodContainerID(statuses *[]v1.ContainerStatus, containerName string) string { + cStatus, err := p.findPodContainerStatus(statuses, containerName) + if err != nil { + return "" + } + return cStatus.ContainerID +} + func (d *Discovery) podInTargetNamespaces(pod v1.Pod) bool { for _, ns := range d.targetNamespaces { if pod.Namespace == ns { diff --git a/component/discovery/kubelet/kubelet_test.go b/component/discovery/kubelet/kubelet_test.go index dd73a42d1b3d..b7d2c750d9d2 100644 --- a/component/discovery/kubelet/kubelet_test.go +++ b/component/discovery/kubelet/kubelet_test.go @@ -88,3 +88,20 @@ func newPod(name, namespace string) v1.Pod { }, } } + +func TestDiscoveryPodWithoutPod(t *testing.T) { + pod1 := newPod("pod-1", "namespace-1") + pod2 := newPod("pod-2", "namespace-2") + pod1.Spec.Containers[0].Ports = []v1.ContainerPort{} + + podList1 := v1.PodList{ + Items: []v1.Pod{pod1, pod2}, + } + + kubeletDiscovery, err := NewKubeletDiscovery(DefaultConfig) + require.NoError(t, err) + + _, err = kubeletDiscovery.refresh(podList1) + require.NoError(t, err) + require.Len(t, kubeletDiscovery.discoveredPodSources, 2) +} From a608dd65fec399bc778a8c66adba19cc612a3716 Mon Sep 17 00:00:00 2001 From: mattdurham Date: Thu, 16 Nov 2023 09:29:14 -0500 Subject: [PATCH 034/166] For Loki Sources position files: Use a best effort atomic rename (#5772) * Use a best effort atomic rename, this should work in all but the most edge cases. * Add changelog * Add changelog and fix write positions file for loki sources. * Add error handling and details on promtail version. --- CHANGELOG.md | 3 + .../loki/positions/write_positions_windows.go | 17 +- .../loki/source/windowsevent/bookmark.go | 89 +++++++ .../source/windowsevent/component_windows.go | 5 +- component/loki/source/windowsevent/format.go | 121 +++++++++ component/loki/source/windowsevent/target.go | 230 ++++++++++++++++++ 6 files changed, 448 insertions(+), 17 deletions(-) create mode 100644 component/loki/source/windowsevent/bookmark.go create mode 100644 component/loki/source/windowsevent/format.go create mode 100644 component/loki/source/windowsevent/target.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 06b45869c134..c5037208cc07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -161,6 +161,9 @@ Main (unreleased) - Change User-Agent header for outbound requests to include agent-mode, goos, and deployment mode. Example `GrafanaAgent/v0.38.0 (flow; linux; docker)` (@captncraig) +- `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) ----------------- diff --git a/component/common/loki/positions/write_positions_windows.go b/component/common/loki/positions/write_positions_windows.go index 939c85c5f2e0..5712a2e3c9b2 100644 --- a/component/common/loki/positions/write_positions_windows.go +++ b/component/common/loki/positions/write_positions_windows.go @@ -7,14 +7,11 @@ package positions // same place in case of a restart. import ( - "os" - "path/filepath" - + "bytes" + "github.com/natefinch/atomic" yaml "gopkg.in/yaml.v2" ) -// writePositionFile is a fallback for Windows because renameio does not support Windows. -// See https://github.com/google/renameio#windows-support func writePositionFile(filename string, positions map[Entry]string) error { buf, err := yaml.Marshal(File{ Positions: positions, @@ -22,14 +19,6 @@ func writePositionFile(filename string, positions map[Entry]string) error { if err != nil { return err } + return atomic.WriteFile(filename, bytes.NewReader(buf)) - target := filepath.Clean(filename) - temp := target + "-new" - - err = os.WriteFile(temp, buf, os.FileMode(positionFileMode)) - if err != nil { - return err - } - - return os.Rename(temp, target) } diff --git a/component/loki/source/windowsevent/bookmark.go b/component/loki/source/windowsevent/bookmark.go new file mode 100644 index 000000000000..bd42f2532ccd --- /dev/null +++ b/component/loki/source/windowsevent/bookmark.go @@ -0,0 +1,89 @@ +//go:build windows +// +build windows + +// This code is copied from Promtail v1.6.2-0.20231004111112-07cbef92268a with minor changes. + +package windowsevent + +import ( + "bytes" + "errors" + "github.com/natefinch/atomic" + "io" + "io/fs" + "os" + + "github.com/grafana/loki/clients/pkg/promtail/targets/windows/win_eventlog" +) + +type bookMark struct { + handle win_eventlog.EvtHandle + isNew bool + path string + buf []byte +} + +// newBookMark creates a new windows event bookmark. +// The bookmark will be saved at the given path. Use save to save the current position for a given event. +func newBookMark(path string) (*bookMark, error) { + // 16kb buffer for rendering bookmark + buf := make([]byte, 16<<10) + + _, err := os.Stat(path) + // creates a new bookmark file if none exists. + if errors.Is(err, fs.ErrNotExist) { + _, err := os.Create(path) + if err != nil { + return nil, err + } + bm, err := win_eventlog.CreateBookmark("") + if err != nil { + return nil, err + } + return &bookMark{ + handle: bm, + path: path, + isNew: true, + buf: buf, + }, nil + } + if err != nil { + return nil, err + } + // otherwise open the current one. + file, err := os.OpenFile(path, os.O_RDWR, 0666) + if err != nil { + return nil, err + } + fileContent, err := io.ReadAll(file) + if err != nil { + return nil, err + } + fileString := string(fileContent) + // load the current bookmark. + bm, err := win_eventlog.CreateBookmark(fileString) + if err != nil { + // If we errored likely due to incorrect data then create a blank one + bm, err = win_eventlog.CreateBookmark("") + fileString = "" + // This should never fail but just in case. + if err != nil { + return nil, err + } + } + return &bookMark{ + handle: bm, + path: path, + isNew: fileString == "", + buf: buf, + }, nil +} + +// save Saves the bookmark at the current event position. +func (b *bookMark) save(event win_eventlog.EvtHandle) error { + newBookmark, err := win_eventlog.UpdateBookmark(b.handle, event, b.buf) + if err != nil { + return err + } + return atomic.WriteFile(b.path, bytes.NewReader([]byte(newBookmark))) +} diff --git a/component/loki/source/windowsevent/component_windows.go b/component/loki/source/windowsevent/component_windows.go index 2dc969029126..c11673ce1a49 100644 --- a/component/loki/source/windowsevent/component_windows.go +++ b/component/loki/source/windowsevent/component_windows.go @@ -11,7 +11,6 @@ import ( "github.com/grafana/agent/component/common/loki/utils" "github.com/grafana/loki/clients/pkg/promtail/api" "github.com/grafana/loki/clients/pkg/promtail/scrapeconfig" - "github.com/grafana/loki/clients/pkg/promtail/targets/windows" ) func init() { @@ -35,7 +34,7 @@ type Component struct { mut sync.RWMutex args Arguments - target *windows.Target + target *Target handle *handler receivers []loki.LogsReceiver } @@ -123,7 +122,7 @@ func (c *Component) Update(args component.Arguments) error { _ = f.Close() } - winTarget, err := windows.New(c.opts.Logger, c.handle, nil, convertConfig(newArgs)) + winTarget, err := NewTarget(c.opts.Logger, c.handle, nil, convertConfig(newArgs)) if err != nil { return err } diff --git a/component/loki/source/windowsevent/format.go b/component/loki/source/windowsevent/format.go new file mode 100644 index 000000000000..eb521a7757a4 --- /dev/null +++ b/component/loki/source/windowsevent/format.go @@ -0,0 +1,121 @@ +//go:build windows +// +build windows + +// This code is copied from Promtail v1.6.2-0.20231004111112-07cbef92268a with minor changes. + +package windowsevent + +import ( + "fmt" + "syscall" + + jsoniter "github.com/json-iterator/go" + + "github.com/grafana/loki/clients/pkg/promtail/scrapeconfig" + "github.com/grafana/loki/clients/pkg/promtail/targets/windows/win_eventlog" +) + +type Event struct { + Source string `json:"source,omitempty"` + Channel string `json:"channel,omitempty"` + Computer string `json:"computer,omitempty"` + EventID int `json:"event_id,omitempty"` + Version int `json:"version,omitempty"` + + Level int `json:"level,omitempty"` + Task int `json:"task,omitempty"` + Opcode int `json:"opCode,omitempty"` + + LevelText string `json:"levelText,omitempty"` + TaskText string `json:"taskText,omitempty"` + OpcodeText string `json:"opCodeText,omitempty"` + + Keywords string `json:"keywords,omitempty"` + TimeCreated string `json:"timeCreated,omitempty"` + EventRecordID int `json:"eventRecordID,omitempty"` + Correlation *Correlation `json:"correlation,omitempty"` + Execution *Execution `json:"execution,omitempty"` + + Security *Security `json:"security,omitempty"` + UserData string `json:"user_data,omitempty"` + EventData string `json:"event_data,omitempty"` + Message string `json:"message,omitempty"` +} + +type Security struct { + UserID string `json:"userId,omitempty"` + UserName string `json:"userName,omitempty"` +} + +type Execution struct { + ProcessID uint32 `json:"processId,omitempty"` + ThreadID uint32 `json:"threadId,omitempty"` + ProcessName string `json:"processName,omitempty"` +} + +type Correlation struct { + ActivityID string `json:"activityID,omitempty"` + RelatedActivityID string `json:"relatedActivityID,omitempty"` +} + +// formatLine format a Loki log line from a windows event. +func formatLine(cfg *scrapeconfig.WindowsEventsTargetConfig, event win_eventlog.Event) (string, error) { + structuredEvent := Event{ + Source: event.Source.Name, + Channel: event.Channel, + Computer: event.Computer, + EventID: event.EventID, + Version: event.Version, + Level: event.Level, + Task: event.Task, + Opcode: event.Opcode, + LevelText: event.LevelText, + TaskText: event.TaskText, + OpcodeText: event.OpcodeText, + Keywords: event.Keywords, + TimeCreated: event.TimeCreated.SystemTime, + EventRecordID: event.EventRecordID, + } + + if !cfg.ExcludeEventData { + structuredEvent.EventData = string(event.EventData.InnerXML) + } + if !cfg.ExcludeUserData { + structuredEvent.UserData = string(event.UserData.InnerXML) + } + if !cfg.ExcludeEventMessage { + structuredEvent.Message = event.Message + } + if event.Correlation.ActivityID != "" || event.Correlation.RelatedActivityID != "" { + structuredEvent.Correlation = &Correlation{ + ActivityID: event.Correlation.ActivityID, + RelatedActivityID: event.Correlation.RelatedActivityID, + } + } + // best effort to get the username of the event. + if event.Security.UserID != "" { + var userName string + usid, err := syscall.StringToSid(event.Security.UserID) + if err == nil { + username, domain, _, err := usid.LookupAccount("") + if err == nil { + userName = fmt.Sprint(domain, "\\", username) + } + } + structuredEvent.Security = &Security{ + UserID: event.Security.UserID, + UserName: userName, + } + } + if event.Execution.ProcessID != 0 { + structuredEvent.Execution = &Execution{ + ProcessID: event.Execution.ProcessID, + ThreadID: event.Execution.ThreadID, + } + _, _, processName, err := win_eventlog.GetFromSnapProcess(event.Execution.ProcessID) + if err == nil { + structuredEvent.Execution.ProcessName = processName + } + } + return jsoniter.MarshalToString(structuredEvent) +} diff --git a/component/loki/source/windowsevent/target.go b/component/loki/source/windowsevent/target.go new file mode 100644 index 000000000000..60c719f40a66 --- /dev/null +++ b/component/loki/source/windowsevent/target.go @@ -0,0 +1,230 @@ +//go:build windows +// +build windows + +// This code is copied from Promtail v1.6.2-0.20231004111112-07cbef92268a with minor changes. + +package windowsevent + +import ( + "fmt" + "strings" + "sync" + "time" + + "github.com/go-kit/log" + "github.com/go-kit/log/level" + "github.com/prometheus/common/model" + "github.com/prometheus/prometheus/model/relabel" + "golang.org/x/sys/windows" + + "github.com/prometheus/prometheus/model/labels" + + "github.com/grafana/loki/clients/pkg/promtail/api" + "github.com/grafana/loki/clients/pkg/promtail/scrapeconfig" + "github.com/grafana/loki/clients/pkg/promtail/targets/target" + "github.com/grafana/loki/clients/pkg/promtail/targets/windows/win_eventlog" + + util_log "github.com/grafana/loki/pkg/util/log" +) + +type Target struct { + subscription win_eventlog.EvtHandle + handler api.EntryHandler + cfg *scrapeconfig.WindowsEventsTargetConfig + relabelConfig []*relabel.Config + logger log.Logger + + bm *bookMark // bookmark to save positions. + fetcher *win_eventlog.EventFetcher + + ready bool + done chan struct{} + wg sync.WaitGroup + err error +} + +// NewTarget create a new windows targets, that will fetch windows event logs and send them to Loki. +func NewTarget( + logger log.Logger, + handler api.EntryHandler, + relabel []*relabel.Config, + cfg *scrapeconfig.WindowsEventsTargetConfig, +) (*Target, error) { + sigEvent, err := windows.CreateEvent(nil, 0, 0, nil) + if err != nil { + return nil, err + } + defer windows.CloseHandle(sigEvent) + + bm, err := newBookMark(cfg.BookmarkPath) + if err != nil { + return nil, fmt.Errorf("failed to create bookmark using path=%s: %w", cfg.BookmarkPath, err) + } + + t := &Target{ + done: make(chan struct{}), + cfg: cfg, + bm: bm, + relabelConfig: relabel, + logger: logger, + handler: handler, + fetcher: win_eventlog.NewEventFetcher(), + } + + if cfg.Query == "" { + cfg.Query = "*" + } + + var subsHandle win_eventlog.EvtHandle + if bm.isNew { + subsHandle, err = win_eventlog.EvtSubscribe(cfg.EventlogName, cfg.Query) + } else { + subsHandle, err = win_eventlog.EvtSubscribeWithBookmark(cfg.EventlogName, cfg.Query, bm.handle) + } + + if err != nil { + return nil, fmt.Errorf("error subscribing to windows events: %w", err) + } + t.subscription = subsHandle + + if t.cfg.PollInterval == 0 { + t.cfg.PollInterval = 3 * time.Second + } + go t.loop() + return t, nil +} + +// loop fetches new events and send them to via the Loki client. +func (t *Target) loop() { + t.ready = true + t.wg.Add(1) + interval := time.NewTicker(t.cfg.PollInterval) + defer func() { + t.ready = false + t.wg.Done() + interval.Stop() + }() + + for { + + loop: + for { + // fetch events until there's no more. + events, handles, err := t.fetcher.FetchEvents(t.subscription, t.cfg.Locale) + if err != nil { + if err != win_eventlog.ERROR_NO_MORE_ITEMS { + t.err = err + level.Error(util_log.Logger).Log("msg", "error fetching events", "err", err) + } + break loop + } + t.err = nil + // we have received events to handle. + for i, entry := range t.renderEntries(events) { + t.handler.Chan() <- entry + if err := t.bm.save(handles[i]); err != nil { + t.err = err + level.Error(util_log.Logger).Log("msg", "error saving bookmark", "err", err) + } + } + win_eventlog.Close(handles) + + } + // no more messages we wait for next poll timer tick. + select { + case <-t.done: + return + case <-interval.C: + } + } +} + +// renderEntries renders Loki entries from windows event logs +func (t *Target) renderEntries(events []win_eventlog.Event) []api.Entry { + res := make([]api.Entry, 0, len(events)) + lbs := labels.NewBuilder(nil) + for _, event := range events { + entry := api.Entry{ + Labels: make(model.LabelSet), + } + + entry.Timestamp = time.Now() + if t.cfg.UseIncomingTimestamp { + timeStamp, err := time.Parse(time.RFC3339Nano, fmt.Sprintf("%v", event.TimeCreated.SystemTime)) + if err != nil { + level.Warn(t.logger).Log("msg", "error parsing timestamp", "err", err) + } else { + entry.Timestamp = timeStamp + } + } + // Add constant labels + for k, v := range t.cfg.Labels { + lbs.Set(string(k), string(v)) + } + // discover labels + if channel := model.LabelValue(event.Channel); channel != "" && channel.IsValid() { + lbs.Set("channel", event.Channel) + } + if computer := model.LabelValue(event.Computer); computer != "" && computer.IsValid() { + lbs.Set("computer", event.Computer) + } + // apply relabelings. + processed, _ := relabel.Process(lbs.Labels(), t.relabelConfig...) + + for _, lbl := range processed { + if strings.HasPrefix(lbl.Name, "__") { + continue + } + entry.Labels[model.LabelName(lbl.Name)] = model.LabelValue(lbl.Value) + } + + line, err := formatLine(t.cfg, event) + if err != nil { + level.Warn(t.logger).Log("msg", "error formatting event", "err", err) + continue + } + entry.Line = line + res = append(res, entry) + } + return res +} + +// Type returns WindowsTargetType. +func (t *Target) Type() target.TargetType { + return target.WindowsTargetType +} + +// Ready indicates whether or not the windows target is ready. +func (t *Target) Ready() bool { + if t.err != nil { + return false + } + return t.ready +} + +// DiscoveredLabels returns discovered labels from the target. +func (t *Target) DiscoveredLabels() model.LabelSet { + // todo(cyriltovena) we might want to sample discovered labels later and returns them here. + return nil +} + +// Labels returns the set of labels that statically apply to all log entries +// produced by the windows target. +func (t *Target) Labels() model.LabelSet { + return t.cfg.Labels +} + +// Details returns target-specific details. +func (t *Target) Details() interface{} { + if t.err != nil { + return map[string]string{"err": t.err.Error()} + } + return map[string]string{} +} + +func (t *Target) Stop() error { + close(t.done) + t.wg.Wait() + t.handler.Stop() + return t.err +} From 55b34460859a1b64f5e698aeb5abd045bf39b23d Mon Sep 17 00:00:00 2001 From: mattdurham Date: Thu, 16 Nov 2023 10:48:24 -0500 Subject: [PATCH 035/166] Remove windows fork (#5784) * use upstream windows exporter * Update the agent go.mod * Update windows exporter. * Remove dead file * add specific windows * Rename and reorganize items to prevent cyclic dependency. * Fix go.mod cillium along with moving some items around for windows * fix reference * update windows exporter --- CHANGELOG.md | 2 + go.mod | 38 ++-- go.sum | 90 ++++------ pkg/crow/crow.go | 2 +- .../windows_exporter/config_windows.go | 164 ++++-------------- .../windows_exporter/config_windows_test.go | 2 +- .../windows_exporter_windows.go | 55 ++---- 7 files changed, 102 insertions(+), 251 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c5037208cc07..0e09b7cb96c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -100,6 +100,8 @@ Main (unreleased) - Improved resilience of graph evaluation in presence of slow components. (@thampiotr) +- Updated windows exporter to use prometheus-community/windows_exporter commit 1836cd1. (@mattdurham) + ### Bugfixes - Set exit code 1 on grafana-agentctl non-runnable command. (@fgouteroux) diff --git a/go.mod b/go.mod index 3f9215d560fe..2602e4922d07 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/buger/jsonparser v1.1.1 github.com/burningalchemist/sql_exporter v0.0.0-20221222155641-2ff59aa75200 github.com/cespare/xxhash/v2 v2.2.0 - github.com/cilium/ebpf v0.11.0 // indirect + github.com/cilium/ebpf v0.12.3 // indirect github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf github.com/coreos/go-systemd/v22 v22.5.0 github.com/davidmparrott/kafka_exporter/v2 v2.0.1 @@ -138,14 +138,14 @@ require ( github.com/prometheus-community/elasticsearch_exporter v1.5.0 github.com/prometheus-community/postgres_exporter v0.11.1 github.com/prometheus-community/stackdriver_exporter v0.13.0 - github.com/prometheus-community/windows_exporter v0.0.0-20230507104622-79781c6d75fc + github.com/prometheus-community/windows_exporter v0.24.1-0.20231116150933-ab05f43716d4 github.com/prometheus-operator/prometheus-operator v0.66.0 github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.66.0 github.com/prometheus-operator/prometheus-operator/pkg/client v0.66.0 github.com/prometheus/blackbox_exporter v0.24.1-0.20230623125439-bd22efa1c900 github.com/prometheus/client_golang v1.17.0 github.com/prometheus/client_model v0.5.0 - github.com/prometheus/common v0.44.0 + github.com/prometheus/common v0.45.0 github.com/prometheus/consul_exporter v0.8.0 github.com/prometheus/memcached_exporter v0.13.0 github.com/prometheus/mysqld_exporter v0.14.0 @@ -213,12 +213,12 @@ require ( go.uber.org/goleak v1.2.1 go.uber.org/multierr v1.11.0 go.uber.org/zap v1.26.0 - golang.org/x/crypto v0.14.0 - golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 - golang.org/x/net v0.17.0 + golang.org/x/crypto v0.15.0 + golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa + golang.org/x/net v0.18.0 golang.org/x/oauth2 v0.13.0 - golang.org/x/sys v0.13.0 - golang.org/x/text v0.13.0 + golang.org/x/sys v0.14.1-0.20231108175955-e4099bfacb8c + golang.org/x/text v0.14.0 golang.org/x/time v0.3.0 google.golang.org/api v0.146.0 google.golang.org/grpc v1.59.0 @@ -272,7 +272,7 @@ require ( github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.2.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/Microsoft/hcsshim v0.11.0 // indirect + github.com/Microsoft/hcsshim v0.11.4 // indirect github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 // indirect github.com/ProtonMail/go-crypto v0.0.0-20210920160938-87db9fbc61c7 // indirect github.com/acomagu/bufpipe v1.0.3 // indirect @@ -361,7 +361,7 @@ require ( github.com/go-git/go-billy/v5 v5.3.1 // indirect github.com/go-kit/kit v0.13.0 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-ole/go-ole v1.2.6 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-openapi/analysis v0.21.4 // indirect github.com/go-openapi/errors v0.20.4 // indirect github.com/go-openapi/jsonpointer v0.20.0 // indirect @@ -468,7 +468,6 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect github.com/mattn/go-xmlrpc v0.0.3 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/mdlayher/ethtool v0.1.0 // indirect github.com/mdlayher/genetlink v1.3.2 // indirect github.com/mdlayher/netlink v1.7.2 // indirect @@ -587,10 +586,10 @@ require ( go.opentelemetry.io/contrib/propagators/b3 v1.19.0 // indirect go.opentelemetry.io/otel/bridge/opencensus v0.42.0 // indirect go4.org/netipx v0.0.0-20230125063823-8449b0a6169f // indirect - golang.org/x/mod v0.13.0 // indirect - golang.org/x/sync v0.4.0 // indirect - golang.org/x/term v0.13.0 // indirect - golang.org/x/tools v0.14.0 // indirect + golang.org/x/mod v0.14.0 // indirect + golang.org/x/sync v0.5.0 // indirect + golang.org/x/term v0.14.0 // indirect + golang.org/x/tools v0.15.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect gonum.org/v1/gonum v0.14.0 // indirect @@ -630,8 +629,8 @@ require ( github.com/hetznercloud/hcloud-go/v2 v2.0.0 // indirect github.com/julienschmidt/httprouter v1.3.0 // indirect github.com/knadh/koanf/v2 v2.0.1 // indirect - github.com/leoluk/perflib_exporter v0.2.0 // indirect github.com/lightstep/go-expohisto v1.0.0 // indirect + github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect github.com/metalmatze/signal v0.0.0-20210307161603-1c9aa721a97a // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8sconfig v0.87.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/kafka v0.87.0 // indirect @@ -703,9 +702,6 @@ replace ( github.com/prometheus-community/postgres_exporter => github.com/grafana/postgres_exporter v0.8.1-0.20210722175051-db35d7c2f520 - // TODO(mattdurham): this is to allow defaults to propogate properly: https://github.com/prometheus-community/windows_exporter/pull/1227 - github.com/prometheus-community/windows_exporter => github.com/grafana/windows_exporter v0.15.1-0.20230612134738-fdb3ba7accd8 - // TODO(marctc): remove once this PR is merged upstream: https://github.com/prometheus/mysqld_exporter/pull/774 github.com/prometheus/mysqld_exporter => github.com/grafana/mysqld_exporter v0.12.2-0.20231005125903-364b9c41e595 @@ -738,3 +734,7 @@ exclude ( ) replace github.com/github/smimesign => github.com/grafana/smimesign v0.2.1-0.20220408144937-2a5adf3481d3 + +// This is the last version that used slices.Func with a bool return +// If we upgrade to a newer one then since the signature changed loki will complain. +replace golang.org/x/exp => golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 diff --git a/go.sum b/go.sum index ae7048887316..573217dc64a4 100644 --- a/go.sum +++ b/go.sum @@ -64,7 +64,6 @@ contrib.go.opencensus.io/exporter/prometheus v0.4.2 h1:sqfsYl5GIY/L570iT+l93ehxa contrib.go.opencensus.io/exporter/prometheus v0.4.2/go.mod h1:dvEHbiKmgvbr5pjaF9fpw1KeYcjrnC1J8B+JKjsZyRQ= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= @@ -170,7 +169,6 @@ github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDm github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChannelMeter/iso8601duration v0.0.0-20150204201828-8da3af7a2a61 h1:N5Vqww5QISEHsWHOWDEx4PzdIay3Cg0Jp7zItq2ZAro= github.com/ChannelMeter/iso8601duration v0.0.0-20150204201828-8da3af7a2a61/go.mod h1:GnKXcK+7DYNy/8w2Ex//Uql4IgfaU82Cd5rWKb7ah00= github.com/ClickHouse/clickhouse-go v1.5.4 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0= @@ -210,8 +208,8 @@ github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpz github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/Microsoft/hcsshim v0.11.0 h1:7EFNIY4igHEXUdj1zXgAyU3fLc7QfOKHbkldRVTBdiM= -github.com/Microsoft/hcsshim v0.11.0/go.mod h1:OEthFdQv/AD2RAdzR6Mm1N1KPCztGKDurW1Z8b8VGMM= +github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= +github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/NYTimes/gziphandler v1.0.1/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= @@ -466,8 +464,8 @@ github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWR github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= -github.com/cilium/ebpf v0.11.0 h1:V8gS/bTCCjX9uUnkUFUpPsksM8n1lXBAvHcpiFk1X2Y= -github.com/cilium/ebpf v0.11.0/go.mod h1:WE7CZAnqOL2RouJ4f1uyNhqr2P4CCvXFIqdRDUgWsVs= +github.com/cilium/ebpf v0.12.3 h1:8ht6F9MquybnY97at+VDZb3eQQr8ev79RueWeVaEcG4= +github.com/cilium/ebpf v0.12.3/go.mod h1:TctK1ivibvI3znr66ljgi4hqOT8EYQjz1KWBfb1UVgM= github.com/circonus-labs/circonus-gometrics v0.0.0-20161109192337-d17a8420c36e/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.0.0-20161110002650-365d370cc145/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= @@ -716,9 +714,6 @@ github.com/go-git/go-git-fixtures/v4 v4.2.1 h1:n9gGL1Ct/yIw+nfsfr8s4+sbhT+Ncu2Su github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4= github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-jose/go-jose/v3 v3.0.0 h1:s6rrhirfEP/CGIoc6p+PZAeogN2SxKav6Wp7+dyMWVo= github.com/go-jose/go-jose/v3 v3.0.0/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= @@ -744,8 +739,9 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA= github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY= github.com/go-openapi/analysis v0.21.4 h1:ZDFLvSNxpDaomuCueM0BlSXxpANBlFYiBvr+GXrvIHc= github.com/go-openapi/analysis v0.21.4/go.mod h1:4zQ35W4neeZTqh3ol0rv/O8JBbka9QyAgQRPp9y3pfo= @@ -1067,8 +1063,6 @@ github.com/grafana/opentelemetry-collector/otelcol v0.0.0-20231018134914-c0109e0 github.com/grafana/opentelemetry-collector/otelcol v0.0.0-20231018134914-c0109e052230/go.mod h1:BSCvlVMyWLH3704kfGUv8KWRRN2nvNJBOBcfKttXTDM= github.com/grafana/opentelemetry-collector/service v0.0.0-20231018134914-c0109e052230 h1:f054R0C2NPdYXRl6kV+tGSI69Y4Vl/vduo2m/iIuSFE= github.com/grafana/opentelemetry-collector/service v0.0.0-20231018134914-c0109e052230/go.mod h1:kBdpzrqR2wJkOdg50yzp4dv+2XBMyeqTgF4lCx0hSpQ= -github.com/grafana/perflib_exporter v0.1.1-0.20230511173423-6166026bd090 h1:Ko80Xcl7xo1eYqkqLUb9AVVCLGVmuQp2jOV69hEEeZw= -github.com/grafana/perflib_exporter v0.1.1-0.20230511173423-6166026bd090/go.mod h1:MinSWm88jguXFFrGsP56PtleUb4Qtm4tNRH/wXNXRTI= github.com/grafana/postgres_exporter v0.8.1-0.20210722175051-db35d7c2f520 h1:HnFWqxhoSF3WC7sKAdMZ+SRXvHLVZlZ3sbQjuUlTqkw= github.com/grafana/postgres_exporter v0.8.1-0.20210722175051-db35d7c2f520/go.mod h1:+HPXgiOV0InDHcZ2jNijL1SOKvo0eEPege5fQA0+ICI= github.com/grafana/prometheus v1.8.2-0.20231016083943-46550094220d h1:hr0QEXSfpdakWdHw2sZeT/5GnGwIkHnNO0YBkfRj5zk= @@ -1091,8 +1085,6 @@ github.com/grafana/tail v0.0.0-20230510142333-77b18831edf0 h1:bjh0PVYSVVFxzINqPF github.com/grafana/tail v0.0.0-20230510142333-77b18831edf0/go.mod h1:7t5XR+2IA8P2qggOAHTj/GCZfoLBle3OvNSYh1VkRBU= github.com/grafana/vmware_exporter v0.0.4-beta h1:Tb8Edm/wDYh0Lvhm38HLNTlkflUrlPGB+jD+/hW4xHI= github.com/grafana/vmware_exporter v0.0.4-beta/go.mod h1:+SsUoWeCJ3nDm1gkw8xqBp4NNSUIrGVoEbnwJeeoIVU= -github.com/grafana/windows_exporter v0.15.1-0.20230612134738-fdb3ba7accd8 h1:xa9iGJ1pl7nzrmMxkVxgkOrXoIwozCe5RH5sYjGk8QM= -github.com/grafana/windows_exporter v0.15.1-0.20230612134738-fdb3ba7accd8/go.mod h1:Fxr4FlDGM8TLI58WNi9Zu1Kd4Jg2x61Zv+DZdKI75DM= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grobie/gomemcache v0.0.0-20230213081705-239240bbc445 h1:FlKQKUYPZ5yDCN248M3R7x8yu2E3yEZ0H7aLomE4EoE= github.com/grobie/gomemcache v0.0.0-20230213081705-239240bbc445/go.mod h1:L69/dBlPQlWkcnU76WgcppK5e4rrxzQdi6LhLnK/ytA= @@ -1554,8 +1546,8 @@ github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOq github.com/mattn/go-xmlrpc v0.0.3 h1:Y6WEMLEsqs3RviBrAa1/7qmbGB7DVD3brZIbqMbQdGY= github.com/mattn/go-xmlrpc v0.0.3/go.mod h1:mqc2dz7tP5x5BKlCahN/n+hs7OSZKJkS9JsHNBRlrxA= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= github.com/maxatome/go-testdeep v1.12.0 h1:Ql7Go8Tg0C1D/uMMX59LAoYK7LffeJQ6X2T04nTH68g= github.com/maxatome/go-testdeep v1.12.0/go.mod h1:lPZc/HAcJMP92l7yI6TRz1aZN5URwUBUAfUNvrclaNM= github.com/mdlayher/apcupsd v0.0.0-20200608131503-2bf01da7bf1b/go.mod h1:WYK/Z/aXq9cbMFIL5ihcA4sX/r/3/WCas/Qvs/2fXcA= @@ -1921,6 +1913,8 @@ github.com/prometheus-community/prom-label-proxy v0.6.0 h1:vRY29tUex8qI2MEimovTz github.com/prometheus-community/prom-label-proxy v0.6.0/go.mod h1:XyAyskjjhqEx0qnbGUVeAkYSz3Wm9gStT7/wXFxD8n0= github.com/prometheus-community/stackdriver_exporter v0.13.0 h1:4h7v28foRJ4/RuchNZCYsoDp+CkF4Mp9nebtPzgil3g= github.com/prometheus-community/stackdriver_exporter v0.13.0/go.mod h1:ZFO015Mexz1xNHSvFjZFiIspYx6qhDg9Kre4LPUjO9s= +github.com/prometheus-community/windows_exporter v0.24.1-0.20231116150933-ab05f43716d4 h1:j22xJOQMUfvcTglmleBmImE8uEYJsj1P/KejsqmhAZ4= +github.com/prometheus-community/windows_exporter v0.24.1-0.20231116150933-ab05f43716d4/go.mod h1:Dfe1LoU+7BmiGpGDfnQhjiH0ea30EusvEw9M4kUpRpY= github.com/prometheus-operator/prometheus-operator v0.66.0 h1:Jj4mbGAkfBbTih6ait03f2vUjEHB7Kb4gnlAmWu7AJ0= github.com/prometheus-operator/prometheus-operator v0.66.0/go.mod h1:U7S3+u6YTxwCTMNIQxZWttEq70qBA4Qps7/c5mUZOpQ= github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.66.0 h1:PPW01FLVjJHMNcbAL1DDD9EZceSQKMOU/VpK0irrxrI= @@ -1972,8 +1966,8 @@ github.com/prometheus/common v0.31.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+ github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.35.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= -github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= +github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4= github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI= github.com/prometheus/consul_exporter v0.8.0 h1:2z3drFic65WFoHaJRKkmnJRRlBLmmxVqT8L9LO2yxAo= @@ -2492,29 +2486,15 @@ golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= -golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 h1:MGwJjxBy0HJshjDNfLsYO8xppfqWlA5ZT9OhtUUhTNw= golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -2528,12 +2508,8 @@ golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPI golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -2541,9 +2517,11 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 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.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= -golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +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= @@ -2619,8 +2597,8 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/oauth2 v0.0.0-20170807180024-9a379c6b3e95/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2655,8 +2633,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2691,7 +2669,6 @@ golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191003212358-c178f38b412c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2786,8 +2763,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.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.1-0.20231108175955-e4099bfacb8c h1:3kC/TjQ+xzIblQv39bCOyRk8fbEeJcDHwbyxPUU2BpA= +golang.org/x/sys v0.14.1-0.20231108175955-e4099bfacb8c/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,8 +2774,8 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= 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.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= -golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= +golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= +golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= 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= @@ -2815,8 +2792,8 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2835,7 +2812,6 @@ golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -2851,11 +2827,9 @@ golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -2871,7 +2845,6 @@ golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -2903,9 +2876,10 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= -golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= +golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/pkg/crow/crow.go b/pkg/crow/crow.go index 93c79ae07bf4..236a53b133cd 100644 --- a/pkg/crow/crow.go +++ b/pkg/crow/crow.go @@ -152,7 +152,7 @@ func newCrow(cfg Config) (*Crow, error) { RoundTripper: api.DefaultRoundTripper, } if cfg.UserID != "" && cfg.PasswordFile != "" { - apiCfg.RoundTripper = commonCfg.NewBasicAuthRoundTripper(cfg.UserID, "", cfg.PasswordFile, api.DefaultRoundTripper) + apiCfg.RoundTripper = commonCfg.NewBasicAuthRoundTripper(cfg.UserID, "", "", cfg.PasswordFile, api.DefaultRoundTripper) } if cfg.OrgID != "" { apiCfg.RoundTripper = &nethttp.Transport{ diff --git a/pkg/integrations/windows_exporter/config_windows.go b/pkg/integrations/windows_exporter/config_windows.go index d27a5994e33b..cb556363d084 100644 --- a/pkg/integrations/windows_exporter/config_windows.go +++ b/pkg/integrations/windows_exporter/config_windows.go @@ -1,141 +1,49 @@ -package windows_exporter //nolint:golint +package windows_exporter -import ( - "fmt" - "strconv" +import "github.com/prometheus-community/windows_exporter/pkg/collector" - "github.com/alecthomas/kingpin/v2" - "github.com/prometheus-community/windows_exporter/collector" -) +func (c *Config) ToWindowsExporterConfig() collector.Config { + cfg := collector.ConfigDefaults + cfg.Dfsr.DfsrEnabledCollectors = c.Dfsr.SourcesEnabled + cfg.Exchange.CollectorsEnabled = c.Exchange.EnabledList -// Populate defaults for all collector configs. -func init() { - // TODO (@mattdurham) we should look at removing this init. I think it can become - // a function call now. - // Register flags from all collector configs to a fake integration and then - // parse an empty command line to force defaults to be populated. - app := kingpin.New("", "") + cfg.Iis.SiteInclude = coalesceString(c.IIS.SiteInclude, c.IIS.SiteWhiteList) + cfg.Iis.SiteExclude = coalesceString(c.IIS.SiteExclude, c.IIS.SiteBlackList) + cfg.Iis.AppInclude = coalesceString(c.IIS.AppInclude, c.IIS.AppWhiteList) + cfg.Iis.AppExclude = coalesceString(c.IIS.AppExclude, c.IIS.AppBlackList) - // Register all flags from collector - collectors := collector.CreateInitializers() - collector.RegisterCollectorsFlags(collectors, app) + cfg.Service.ServiceWhereClause = c.Service.Where + cfg.Service.UseAPI = c.Service.UseApi == "true" - _, err := app.Parse([]string{}) - if err != nil { - panic(err) - } + cfg.Smtp.ServerInclude = coalesceString(c.SMTP.Include, c.SMTP.WhiteList) + cfg.Smtp.ServerExclude = coalesceString(c.SMTP.Exclude, c.SMTP.BlackList) - // Map the configs with defaults applied to our default config. - DefaultConfig.setDefaults(app) -} + cfg.Textfile.TextFileDirectories = c.TextFile.TextFileDirectory -// getDefault works by getting the Flag values after being parsed, which sets the defaults. -// The only default we differ on is the parent enabled-collectors, which we remove textfile. -func getDefault(app *kingpin.Application, name string) string { - for _, f := range app.Model().Flags { - if f.Name != name { - continue - } - // Returns default value. - return f.String() - } - return "" -} + cfg.Process.ProcessExclude = coalesceString(c.Process.Exclude, c.Process.BlackList) + cfg.Process.ProcessInclude = coalesceString(c.Process.Include, c.Process.WhiteList) + + cfg.Net.NicExclude = coalesceString(c.Network.Exclude, c.Network.BlackList) + cfg.Net.NicInclude = coalesceString(c.Network.Include, c.Network.WhiteList) -// setDefaults converts windows_exporter configs into the integration Config. -// This should ONLY be called from the DefaultConfig to generate the defaults. -func (c *Config) setDefaults(app *kingpin.Application) { - c.Dfsr.SourcesEnabled = getDefault(app, collector.FlagDfsrEnabledCollectors) - c.Exchange.EnabledList = getDefault(app, collector.FlagExchangeCollectorsEnabled) - c.IIS.SiteBlackList = getDefault(app, collector.FlagIISSiteOldExclude) - c.IIS.SiteWhiteList = getDefault(app, collector.FlagIISSiteOldInclude) - c.IIS.AppBlackList = getDefault(app, collector.FlagIISAppOldExclude) - c.IIS.AppWhiteList = getDefault(app, collector.FlagIISAppOldInclude) - c.IIS.SiteExclude = getDefault(app, collector.FlagIISSiteExclude) - c.IIS.SiteInclude = getDefault(app, collector.FlagIISSiteInclude) - c.IIS.AppExclude = getDefault(app, collector.FlagIISAppExclude) - c.IIS.AppInclude = getDefault(app, collector.FlagIISAppInclude) - c.LogicalDisk.BlackList = getDefault(app, collector.FlagLogicalDiskVolumeOldExclude) - c.LogicalDisk.WhiteList = getDefault(app, collector.FlagLogicalDiskVolumeOldInclude) - c.LogicalDisk.Exclude = getDefault(app, collector.FlagLogicalDiskVolumeExclude) - c.LogicalDisk.Include = getDefault(app, collector.FlagLogicalDiskVolumeInclude) - c.MSMQ.Where = getDefault(app, collector.FlagMsmqWhereClause) - c.MSSQL.EnabledClasses = getDefault(app, collector.FlagMssqlEnabledCollectors) - c.Network.BlackList = getDefault(app, collector.FlagNicOldExclude) - c.Network.WhiteList = getDefault(app, collector.FlagNicOldInclude) - c.Network.Exclude = getDefault(app, collector.FlagNicExclude) - c.Network.Include = getDefault(app, collector.FlagNicInclude) - c.Process.BlackList = getDefault(app, collector.FlagProcessOldExclude) - c.Process.WhiteList = getDefault(app, collector.FlagProcessOldInclude) - c.Process.Exclude = getDefault(app, collector.FlagProcessExclude) - c.Process.Include = getDefault(app, collector.FlagProcessInclude) - c.ScheduledTask.Exclude = getDefault(app, collector.FlagScheduledTaskExclude) - c.ScheduledTask.Include = getDefault(app, collector.FlagScheduledTaskInclude) - c.Service.Where = getDefault(app, collector.FlagServiceWhereClause) - c.Service.UseApi = getDefault(app, collector.FlagServiceUseAPI) - c.SMTP.BlackList = getDefault(app, collector.FlagSmtpServerOldExclude) - c.SMTP.WhiteList = getDefault(app, collector.FlagSmtpServerOldInclude) - c.SMTP.Exclude = getDefault(app, collector.FlagSmtpServerExclude) - c.SMTP.Include = getDefault(app, collector.FlagSmtpServerInclude) - c.TextFile.TextFileDirectory = getDefault(app, collector.FlagTextFileDirectory) + cfg.Mssql.EnabledCollectors = c.MSSQL.EnabledClasses + + cfg.Msmq.QueryWhereClause = c.MSMQ.Where + + cfg.LogicalDisk.VolumeInclude = coalesceString(c.LogicalDisk.Include, c.LogicalDisk.WhiteList) + cfg.LogicalDisk.VolumeExclude = coalesceString(c.LogicalDisk.Exclude, c.LogicalDisk.BlackList) + + cfg.ScheduledTask.TaskInclude = c.ScheduledTask.Include + cfg.ScheduledTask.TaskExclude = c.ScheduledTask.Exclude + + return cfg } -// toExporterConfig converts integration Configs into windows_exporter configs. -func (c *Config) toExporterConfig(collectors map[string]*collector.Initializer) error { - for _, v := range collectors { - // Most collectors don't have settings so if its nil then pass on by. - // The windows_export functions ensure that if a setting is required it will be initialized. - if v.Settings == nil { - continue - } - switch t := v.Settings.(type) { - case *collector.DFRSSettings: - t.DFRSEnabledCollectors = &c.Dfsr.SourcesEnabled - case *collector.DiskSettings: - t.VolumeInclude = &c.LogicalDisk.Include - t.VolumeExclude = &c.LogicalDisk.Exclude - case *collector.ExchangeSettings: - t.ArgExchangeCollectorsEnabled = &c.Exchange.EnabledList - case *collector.IISSettings: - t.AppInclude = &c.IIS.AppInclude - t.AppExclude = &c.IIS.AppExclude - t.OldAppExclude = &c.IIS.AppBlackList - t.OldAppInclude = &c.IIS.AppWhiteList - t.SiteExclude = &c.IIS.SiteExclude - t.SiteInclude = &c.IIS.SiteInclude - t.OldSiteExclude = &c.IIS.SiteBlackList - t.OldSiteInclude = &c.IIS.SiteWhiteList - case *collector.MSMQSettings: - t.MSMQWhereClause = &c.MSMQ.Where - case *collector.MSSqlSettings: - t.ClassesEnabled = &c.MSSQL.EnabledClasses - case *collector.NetSettings: - t.NicInclude = &c.Network.Include - t.NicExclude = &c.Network.Exclude - t.NicOldExclude = &c.Network.BlackList - t.NicOldInclude = &c.Network.WhiteList - case *collector.ProcessSettings: - t.ProcessExclude = &c.Process.Exclude - t.ProcessInclude = &c.Process.Include - t.ProcessOldExclude = &c.Process.BlackList - t.ProcessOldInclude = &c.Process.WhiteList - case *collector.ServiceSettings: - val, _ := strconv.ParseBool(c.Service.UseApi) - t.UseAPI = &val - t.ServiceWhereClause = &c.Service.Where - case *collector.SMTPSettings: - t.ServerInclude = &c.SMTP.Include - t.ServerExclude = &c.SMTP.Exclude - t.ServerOldExclude = &c.SMTP.BlackList - t.ServerOldInclude = &c.SMTP.WhiteList - case *collector.TaskSettings: - t.TaskInclude = &c.ScheduledTask.Include - t.TaskExclude = &c.ScheduledTask.Exclude - case *collector.TextSettings: - t.TextFileDirectory = &c.TextFile.TextFileDirectory - default: - return fmt.Errorf("unknown windows exporter type %t", t) +func coalesceString(v ...string) string { + for _, s := range v { + if s != "" { + return s } } - return nil + return "" } diff --git a/pkg/integrations/windows_exporter/config_windows_test.go b/pkg/integrations/windows_exporter/config_windows_test.go index 16d71924bc1b..5546426c9e0f 100644 --- a/pkg/integrations/windows_exporter/config_windows_test.go +++ b/pkg/integrations/windows_exporter/config_windows_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/alecthomas/kingpin/v2" - "github.com/prometheus-community/windows_exporter/collector" + "github.com/prometheus-community/windows_exporter/pkg/collector" "github.com/stretchr/testify/require" "gopkg.in/yaml.v2" ) diff --git a/pkg/integrations/windows_exporter/windows_exporter_windows.go b/pkg/integrations/windows_exporter/windows_exporter_windows.go index 2418acf07b6d..fd0a7effe023 100644 --- a/pkg/integrations/windows_exporter/windows_exporter_windows.go +++ b/pkg/integrations/windows_exporter/windows_exporter_windows.go @@ -1,51 +1,32 @@ package windows_exporter //nolint:golint import ( - "sort" - "strings" - "time" - - "github.com/alecthomas/kingpin/v2" "github.com/go-kit/log" "github.com/go-kit/log/level" "github.com/grafana/agent/pkg/integrations" - "github.com/prometheus-community/windows_exporter/collector" + "github.com/prometheus-community/windows_exporter/pkg/collector" + "sort" + "strings" + "time" ) // New creates a new windows_exporter integration. func New(logger log.Logger, c *Config) (integrations.Integration, error) { - // We need to create a list of all the possible collectors. - collectors := collector.CreateInitializers() - // We need to pass in kingpin so that the settings get created appropriately. Even though we arent going to use its output. - windowsExporter := kingpin.New("", "") - // We only need this to fill in the appropriate settings structs so we can override them. - collector.RegisterCollectorsFlags(collectors, windowsExporter) - // Override the settings structs generated from the kingping.app switch our own. - err := c.toExporterConfig(collectors) - if err != nil { - return nil, err - } - // Register the performance monitors - collector.RegisterCollectors(collectors) // Filter down to the enabled collectors enabledCollectorNames := enabledCollectors(c.EnabledCollectors) - // Finally build the collectors that we need to run. - builtCollectors, err := buildCollectors(collectors, enabledCollectorNames) + winCol := collector.NewWithConfig(logger, c.ToWindowsExporterConfig()) + winCol.Enable(enabledCollectorNames) + sort.Strings(enabledCollectorNames) + level.Info(logger).Log("msg", "enabled windows_exporter collectors", "collectors", strings.Join(enabledCollectorNames, ",")) + + err := winCol.Build() if err != nil { return nil, err } - - collectorNames := make([]string, 0, len(collectors)) - for key := range collectors { - collectorNames = append(collectorNames, key) - } - sort.Strings(collectorNames) - level.Info(logger).Log("msg", "enabled windows_exporter collectors", "collectors", strings.Join(collectorNames, ",")) - return integrations.NewCollectorIntegration(c.Name(), integrations.WithCollectors( // Hard-coded 4m timeout to represent the time a series goes stale. // TODO: Make configurable if useful. - collector.NewPrometheus(4*time.Minute, builtCollectors), + collector.NewPrometheus(4*time.Minute, &winCol, logger), )), nil } @@ -64,17 +45,3 @@ func enabledCollectors(input string) []string { } return result } - -func buildCollectors(colls map[string]*collector.Initializer, enabled []string) (map[string]collector.Collector, error) { - collectors := map[string]collector.Collector{} - - for _, name := range enabled { - c, err := collector.Build(colls, name) - if err != nil { - return nil, err - } - collectors[name] = c - } - - return collectors, nil -} From 440d01d05d85f0725dbc720f748681e71f9458aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Tudur=C3=AD?= Date: Thu, 16 Nov 2023 17:28:59 +0100 Subject: [PATCH 036/166] flow: Add otelcol.receiver.vcenter component (#5715) Co-authored-by: Paulin Todev --- CHANGELOG.md | 1 + component/all/all.go | 1 + component/otelcol/config_scrape.go | 58 +++ component/otelcol/receiver/vcenter/vcenter.go | 331 ++++++++++++++++++ .../otelcol/receiver/vcenter/vcenter_test.go | 42 +++ .../components/otelcol.receiver.vcenter.md | 143 ++++++++ .../components/prometheus.exporter.vsphere.md | 7 +- go.mod | 3 +- go.sum | 11 +- 9 files changed, 590 insertions(+), 7 deletions(-) create mode 100644 component/otelcol/config_scrape.go create mode 100644 component/otelcol/receiver/vcenter/vcenter.go create mode 100644 component/otelcol/receiver/vcenter/vcenter_test.go create mode 100644 docs/sources/flow/reference/components/otelcol.receiver.vcenter.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e09b7cb96c7..5dd878676da2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,6 +57,7 @@ Main (unreleased) - `otelcol.processor.filter` - filters OTLP telemetry data using OpenTelemetry Transformation Language (OTTL). (@hainenber) + - `otelcol.receiver.vcenter` - receives metrics telemetry data from vCenter. (@marctc) - Agent Management: Introduce support for remotely managed external labels for logs. (@jcreixell) diff --git a/component/all/all.go b/component/all/all.go index 79da39323077..3822deee7c9c 100644 --- a/component/all/all.go +++ b/component/all/all.go @@ -89,6 +89,7 @@ import ( _ "github.com/grafana/agent/component/otelcol/receiver/opencensus" // Import otelcol.receiver.opencensus _ "github.com/grafana/agent/component/otelcol/receiver/otlp" // Import otelcol.receiver.otlp _ "github.com/grafana/agent/component/otelcol/receiver/prometheus" // Import otelcol.receiver.prometheus + _ "github.com/grafana/agent/component/otelcol/receiver/vcenter" // Import otelcol.receiver.vcenter _ "github.com/grafana/agent/component/otelcol/receiver/zipkin" // Import otelcol.receiver.zipkin _ "github.com/grafana/agent/component/prometheus/exporter/agent" // Import prometheus.exporter.agent _ "github.com/grafana/agent/component/prometheus/exporter/apache" // Import prometheus.exporter.apache diff --git a/component/otelcol/config_scrape.go b/component/otelcol/config_scrape.go new file mode 100644 index 000000000000..60f30ae946ac --- /dev/null +++ b/component/otelcol/config_scrape.go @@ -0,0 +1,58 @@ +package otelcol + +import ( + "errors" + "fmt" + "time" + + scraperhelper "go.opentelemetry.io/collector/receiver/scraperhelper" +) + +var ( + errNonPositiveInterval = errors.New("requires positive value") + errGreaterThanZero = errors.New("requires a value greater than zero") +) + +// ScraperControllerArguments defines common settings for a scraper controller +// configuration. +type ScraperControllerArguments struct { + CollectionInterval time.Duration `river:"collection_interval,attr,optional"` + InitialDelay time.Duration `river:"initial_delay,attr,optional"` + Timeout time.Duration `river:"timeout,attr,optional"` +} + +// DefaultScraperControllerArguments holds default settings for ScraperControllerArguments. +var DefaultScraperControllerArguments = ScraperControllerArguments{ + CollectionInterval: time.Minute, + InitialDelay: time.Second, + Timeout: 0 * time.Second, +} + +// SetToDefault implements river.Defaulter. +func (args *ScraperControllerArguments) SetToDefault() { + *args = DefaultScraperControllerArguments +} + +// Convert converts args into the upstream type. +func (args *ScraperControllerArguments) Convert() *scraperhelper.ScraperControllerSettings { + if args == nil { + return nil + } + + return &scraperhelper.ScraperControllerSettings{ + CollectionInterval: args.CollectionInterval, + InitialDelay: args.InitialDelay, + Timeout: args.Timeout, + } +} + +// Validate returns an error if args is invalid. +func (args *ScraperControllerArguments) Validate() error { + if args.CollectionInterval <= 0 { + return fmt.Errorf(`"collection_interval": %w`, errNonPositiveInterval) + } + if args.Timeout < 0 { + return fmt.Errorf(`"timeout": %w`, errGreaterThanZero) + } + return nil +} diff --git a/component/otelcol/receiver/vcenter/vcenter.go b/component/otelcol/receiver/vcenter/vcenter.go new file mode 100644 index 000000000000..88efd9402940 --- /dev/null +++ b/component/otelcol/receiver/vcenter/vcenter.go @@ -0,0 +1,331 @@ +// Package vcenter provides an otelcol.receiver.vcenter component. +package vcenter + +import ( + "fmt" + "net/url" + + "github.com/grafana/agent/component" + "github.com/grafana/agent/component/otelcol" + "github.com/grafana/agent/component/otelcol/receiver" + otel_service "github.com/grafana/agent/service/otel" + "github.com/grafana/river/rivertypes" + "github.com/mitchellh/mapstructure" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver" + otelcomponent "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/config/configopaque" + otelextension "go.opentelemetry.io/collector/extension" +) + +func init() { + component.Register(component.Registration{ + Name: "otelcol.receiver.vcenter", + Args: Arguments{}, + NeedsServices: []string{otel_service.ServiceName}, + + Build: func(opts component.Options, args component.Arguments) (component.Component, error) { + fact := vcenterreceiver.NewFactory() + return receiver.New(opts, fact, args.(Arguments)) + }, + }) +} + +type MetricConfig struct { + Enabled bool `river:"enabled,attr"` +} + +func (r *MetricConfig) Convert() map[string]interface{} { + if r == nil { + return nil + } + + return map[string]interface{}{ + "enabled": r.Enabled, + } +} + +type MetricsConfig struct { + VcenterClusterCPUEffective MetricConfig `river:"vcenter.cluster.cpu.effective,block,optional"` + VcenterClusterCPULimit MetricConfig `river:"vcenter.cluster.cpu.limit,block,optional"` + VcenterClusterHostCount MetricConfig `river:"vcenter.cluster.host.count,block,optional"` + VcenterClusterMemoryEffective MetricConfig `river:"vcenter.cluster.memory.effective,block,optional"` + VcenterClusterMemoryLimit MetricConfig `river:"vcenter.cluster.memory.limit,block,optional"` + VcenterClusterMemoryUsed MetricConfig `river:"vcenter.cluster.memory.used,block,optional"` + VcenterClusterVMCount MetricConfig `river:"vcenter.cluster.vm.count,block,optional"` + VcenterDatastoreDiskUsage MetricConfig `river:"vcenter.datastore.disk.usage,block,optional"` + VcenterDatastoreDiskUtilization MetricConfig `river:"vcenter.datastore.disk.utilization,block,optional"` + VcenterHostCPUUsage MetricConfig `river:"vcenter.host.cpu.usage,block,optional"` + VcenterHostCPUUtilization MetricConfig `river:"vcenter.host.cpu.utilization,block,optional"` + VcenterHostDiskLatencyAvg MetricConfig `river:"vcenter.host.disk.latency.avg,block,optional"` + VcenterHostDiskLatencyMax MetricConfig `river:"vcenter.host.disk.latency.max,block,optional"` + VcenterHostDiskThroughput MetricConfig `river:"vcenter.host.disk.throughput,block,optional"` + VcenterHostMemoryUsage MetricConfig `river:"vcenter.host.memory.usage,block,optional"` + VcenterHostMemoryUtilization MetricConfig `river:"vcenter.host.memory.utilization,block,optional"` + VcenterHostNetworkPacketCount MetricConfig `river:"vcenter.host.network.packet.count,block,optional"` + VcenterHostNetworkPacketErrors MetricConfig `river:"vcenter.host.network.packet.errors,block,optional"` + VcenterHostNetworkThroughput MetricConfig `river:"vcenter.host.network.throughput,block,optional"` + VcenterHostNetworkUsage MetricConfig `river:"vcenter.host.network.usage,block,optional"` + VcenterResourcePoolCPUShares MetricConfig `river:"vcenter.resource_pool.cpu.shares,block,optional"` + VcenterResourcePoolCPUUsage MetricConfig `river:"vcenter.resource_pool.cpu.usage,block,optional"` + VcenterResourcePoolMemoryShares MetricConfig `river:"vcenter.resource_pool.memory.shares,block,optional"` + VcenterResourcePoolMemoryUsage MetricConfig `river:"vcenter.resource_pool.memory.usage,block,optional"` + VcenterVMCPUUsage MetricConfig `river:"vcenter.vm.cpu.usage,block,optional"` + VcenterVMCPUUtilization MetricConfig `river:"vcenter.vm.cpu.utilization,block,optional"` + VcenterVMDiskLatencyAvg MetricConfig `river:"vcenter.vm.disk.latency.avg,block,optional"` + VcenterVMDiskLatencyMax MetricConfig `river:"vcenter.vm.disk.latency.max,block,optional"` + VcenterVMDiskThroughput MetricConfig `river:"vcenter.vm.disk.throughput,block,optional"` + VcenterVMDiskUsage MetricConfig `river:"vcenter.vm.disk.usage,block,optional"` + VcenterVMDiskUtilization MetricConfig `river:"vcenter.vm.disk.utilization,block,optional"` + VcenterVMMemoryBallooned MetricConfig `river:"vcenter.vm.memory.ballooned,block,optional"` + VcenterVMMemorySwapped MetricConfig `river:"vcenter.vm.memory.swapped,block,optional"` + VcenterVMMemorySwappedSsd MetricConfig `river:"vcenter.vm.memory.swapped_ssd,block,optional"` + VcenterVMMemoryUsage MetricConfig `river:"vcenter.vm.memory.usage,block,optional"` + VcenterVMMemoryUtilization MetricConfig `river:"vcenter.vm.memory.utilization,block,optional"` + VcenterVMNetworkPacketCount MetricConfig `river:"vcenter.vm.network.packet.count,block,optional"` + VcenterVMNetworkThroughput MetricConfig `river:"vcenter.vm.network.throughput,block,optional"` + VcenterVMNetworkUsage MetricConfig `river:"vcenter.vm.network.usage,block,optional"` +} + +func (args *MetricsConfig) Convert() map[string]interface{} { + if args == nil { + return nil + } + + return map[string]interface{}{ + "vcenter.cluster.cpu.effective": args.VcenterClusterCPUEffective.Convert(), + "vcenter.cluster.cpu.limit": args.VcenterClusterCPULimit.Convert(), + "vcenter.cluster.host.count": args.VcenterClusterHostCount.Convert(), + "vcenter.cluster.memory.effective": args.VcenterClusterMemoryEffective.Convert(), + "vcenter.cluster.memory.limit": args.VcenterClusterMemoryLimit.Convert(), + "vcenter.cluster.memory.used": args.VcenterClusterMemoryUsed.Convert(), + "vcenter.cluster.vm.count": args.VcenterClusterVMCount.Convert(), + "vcenter.datastore.disk.usage": args.VcenterDatastoreDiskUsage.Convert(), + "vcenter.datastore.disk.utilization": args.VcenterDatastoreDiskUtilization.Convert(), + "vcenter.host.cpu.usage": args.VcenterHostCPUUsage.Convert(), + "vcenter.host.cpu.utilization": args.VcenterHostCPUUtilization.Convert(), + "vcenter.host.disk.latency.avg": args.VcenterHostDiskLatencyAvg.Convert(), + "vcenter.host.disk.latency.max": args.VcenterHostDiskLatencyMax.Convert(), + "vcenter.host.disk.throughput": args.VcenterHostDiskThroughput.Convert(), + "vcenter.host.memory.usage": args.VcenterHostMemoryUsage.Convert(), + "vcenter.host.memory.utilization": args.VcenterHostMemoryUtilization.Convert(), + "vcenter.host.network.packet.count": args.VcenterHostNetworkPacketCount.Convert(), + "vcenter.host.network.packet.errors": args.VcenterHostNetworkPacketErrors.Convert(), + "vcenter.host.network.throughput": args.VcenterHostNetworkThroughput.Convert(), + "vcenter.host.network.usage": args.VcenterHostNetworkUsage.Convert(), + "vcenter.resource_pool.cpu.shares": args.VcenterResourcePoolCPUShares.Convert(), + "vcenter.resource_pool.cpu.usage": args.VcenterResourcePoolCPUUsage.Convert(), + "vcenter.resource_pool.memory.shares": args.VcenterResourcePoolMemoryShares.Convert(), + "vcenter.resource_pool.memory.usage": args.VcenterResourcePoolMemoryUsage.Convert(), + "vcenter.vm.cpu.usage": args.VcenterVMCPUUsage.Convert(), + "vcenter.vm.cpu.utilization": args.VcenterVMCPUUtilization.Convert(), + "vcenter.vm.disk.latency.avg": args.VcenterVMDiskLatencyAvg.Convert(), + "vcenter.vm.disk.latency.max": args.VcenterVMDiskLatencyMax.Convert(), + "vcenter.vm.disk.throughput": args.VcenterVMDiskThroughput.Convert(), + "vcenter.vm.disk.usage": args.VcenterVMDiskUsage.Convert(), + "vcenter.vm.disk.utilization": args.VcenterVMDiskUtilization.Convert(), + "vcenter.vm.memory.ballooned": args.VcenterVMMemoryBallooned.Convert(), + "vcenter.vm.memory.swapped": args.VcenterVMMemorySwapped.Convert(), + "vcenter.vm.memory.swapped_ssd": args.VcenterVMMemorySwappedSsd.Convert(), + "vcenter.vm.memory.usage": args.VcenterVMMemoryUsage.Convert(), + "vcenter.vm.memory.utilization": args.VcenterVMMemoryUtilization.Convert(), + "vcenter.vm.network.packet.count": args.VcenterVMNetworkPacketCount.Convert(), + "vcenter.vm.network.throughput": args.VcenterVMNetworkThroughput.Convert(), + "vcenter.vm.network.usage": args.VcenterVMNetworkUsage.Convert()} +} + +type ResourceAttributeConfig struct { + Enabled bool `river:"enabled,attr"` +} + +func (r *ResourceAttributeConfig) Convert() map[string]interface{} { + if r == nil { + return nil + } + + return map[string]interface{}{ + "enabled": r.Enabled, + } +} + +type ResourceAttributesConfig struct { + VcenterClusterName ResourceAttributeConfig `river:"vcenter.cluster.name,block,optional"` + VcenterDatastoreName ResourceAttributeConfig `river:"vcenter.datastore.name,block,optional"` + VcenterHostName ResourceAttributeConfig `river:"vcenter.host.name,block,optional"` + VcenterResourcePoolInventoryPath ResourceAttributeConfig `river:"vcenter.resource_pool.inventory_path,block,optional"` + VcenterResourcePoolName ResourceAttributeConfig `river:"vcenter.resource_pool.name,block,optional"` + VcenterVMID ResourceAttributeConfig `river:"vcenter.vm.id,block,optional"` + VcenterVMName ResourceAttributeConfig `river:"vcenter.vm.name,block,optional"` +} + +func (args *ResourceAttributesConfig) Convert() map[string]interface{} { + if args == nil { + return nil + } + + res := map[string]interface{}{ + "vcenter.cluster.name": args.VcenterClusterName.Convert(), + "vcenter.datastore.name": args.VcenterDatastoreName.Convert(), + "vcenter.host.name": args.VcenterHostName.Convert(), + "vcenter.resource_pool.inventory_path": args.VcenterResourcePoolInventoryPath.Convert(), + "vcenter.resource_pool.name": args.VcenterResourcePoolName.Convert(), + "vcenter.vm.id": args.VcenterVMID.Convert(), + "vcenter.vm.name": args.VcenterVMName.Convert(), + } + + return res +} + +type MetricsBuilderConfig struct { + Metrics MetricsConfig `river:"metrics,block,optional"` + ResourceAttributes ResourceAttributesConfig `river:"resource_attributes,block,optional"` +} + +func (args *MetricsBuilderConfig) Convert() map[string]interface{} { + if args == nil { + return nil + } + + res := map[string]interface{}{ + "metrics": args.Metrics.Convert(), + "resource_attributes": args.ResourceAttributes.Convert(), + } + + return res +} + +// Arguments configures the otelcol.receiver.vcenter component. +type Arguments struct { + Endpoint string `river:"endpoint,attr"` + Username string `river:"username,attr"` + Password rivertypes.Secret `river:"password,attr"` + + MetricsBuilderConfig MetricsBuilderConfig `river:",squash"` + + ScraperControllerArguments otelcol.ScraperControllerArguments `river:",squash"` + TLS otelcol.TLSClientArguments `river:"tls,block,optional"` + + // DebugMetrics configures component internal metrics. Optional. + DebugMetrics otelcol.DebugMetricsArguments `river:"debug_metrics,block,optional"` + + // Output configures where to send received data. Required. + Output *otelcol.ConsumerArguments `river:"output,block"` +} + +var _ receiver.Arguments = Arguments{} + +var ( + // DefaultArguments holds default values for Arguments. + DefaultArguments = Arguments{ + ScraperControllerArguments: otelcol.DefaultScraperControllerArguments, + MetricsBuilderConfig: MetricsBuilderConfig{ + Metrics: MetricsConfig{ + VcenterClusterCPUEffective: MetricConfig{Enabled: true}, + VcenterClusterCPULimit: MetricConfig{Enabled: true}, + VcenterClusterHostCount: MetricConfig{Enabled: true}, + VcenterClusterMemoryEffective: MetricConfig{Enabled: true}, + VcenterClusterMemoryLimit: MetricConfig{Enabled: true}, + VcenterClusterMemoryUsed: MetricConfig{Enabled: true}, + VcenterClusterVMCount: MetricConfig{Enabled: true}, + VcenterDatastoreDiskUsage: MetricConfig{Enabled: true}, + VcenterDatastoreDiskUtilization: MetricConfig{Enabled: true}, + VcenterHostCPUUsage: MetricConfig{Enabled: true}, + VcenterHostCPUUtilization: MetricConfig{Enabled: true}, + VcenterHostDiskLatencyAvg: MetricConfig{Enabled: true}, + VcenterHostDiskLatencyMax: MetricConfig{Enabled: true}, + VcenterHostDiskThroughput: MetricConfig{Enabled: true}, + VcenterHostMemoryUsage: MetricConfig{Enabled: true}, + VcenterHostMemoryUtilization: MetricConfig{Enabled: true}, + VcenterHostNetworkPacketCount: MetricConfig{Enabled: true}, + VcenterHostNetworkPacketErrors: MetricConfig{Enabled: true}, + VcenterHostNetworkThroughput: MetricConfig{Enabled: true}, + VcenterHostNetworkUsage: MetricConfig{Enabled: true}, + VcenterResourcePoolCPUShares: MetricConfig{Enabled: true}, + VcenterResourcePoolCPUUsage: MetricConfig{Enabled: true}, + VcenterResourcePoolMemoryShares: MetricConfig{Enabled: true}, + VcenterResourcePoolMemoryUsage: MetricConfig{Enabled: true}, + VcenterVMCPUUsage: MetricConfig{Enabled: true}, + VcenterVMCPUUtilization: MetricConfig{Enabled: true}, + VcenterVMDiskLatencyAvg: MetricConfig{Enabled: true}, + VcenterVMDiskLatencyMax: MetricConfig{Enabled: true}, + VcenterVMDiskThroughput: MetricConfig{Enabled: true}, + VcenterVMDiskUsage: MetricConfig{Enabled: true}, + VcenterVMDiskUtilization: MetricConfig{Enabled: true}, + VcenterVMMemoryBallooned: MetricConfig{Enabled: true}, + VcenterVMMemorySwapped: MetricConfig{Enabled: true}, + VcenterVMMemorySwappedSsd: MetricConfig{Enabled: true}, + VcenterVMMemoryUsage: MetricConfig{Enabled: true}, + VcenterVMMemoryUtilization: MetricConfig{Enabled: false}, + VcenterVMNetworkPacketCount: MetricConfig{Enabled: true}, + VcenterVMNetworkThroughput: MetricConfig{Enabled: true}, + VcenterVMNetworkUsage: MetricConfig{Enabled: true}, + }, + ResourceAttributes: ResourceAttributesConfig{ + VcenterClusterName: ResourceAttributeConfig{Enabled: true}, + VcenterDatastoreName: ResourceAttributeConfig{Enabled: true}, + VcenterHostName: ResourceAttributeConfig{Enabled: true}, + VcenterResourcePoolInventoryPath: ResourceAttributeConfig{Enabled: true}, + VcenterResourcePoolName: ResourceAttributeConfig{Enabled: true}, + VcenterVMID: ResourceAttributeConfig{Enabled: true}, + VcenterVMName: ResourceAttributeConfig{Enabled: true}, + }, + }, + } +) + +// SetToDefault implements river.Defaulter. +func (args *Arguments) SetToDefault() { + *args = DefaultArguments +} + +// Convert implements receiver.Arguments. +func (args Arguments) Convert() (otelcomponent.Config, error) { + cfg := args.MetricsBuilderConfig.Convert() + + var result vcenterreceiver.Config + err := mapstructure.Decode(cfg, &result) + + if err != nil { + return nil, err + } + + result.Endpoint = args.Endpoint + result.Username = args.Username + result.Password = configopaque.String(args.Password) + result.TLSClientSetting = *args.TLS.Convert() + result.ScraperControllerSettings = *args.ScraperControllerArguments.Convert() + + return &result, nil +} + +// Validate checks to see if the supplied config will work for the receiver +func (args Arguments) Validate() error { + res, err := url.Parse(args.Endpoint) + if err != nil { + return fmt.Errorf("unable to parse url %s: %w", args.Endpoint, err) + } + + if res.Scheme != "http" && res.Scheme != "https" { + return fmt.Errorf("url scheme must be http or https") + } + return nil +} + +// Extensions implements receiver.Arguments. +func (args Arguments) Extensions() map[otelcomponent.ID]otelextension.Extension { + return nil +} + +// Exporters implements receiver.Arguments. +func (args Arguments) Exporters() map[otelcomponent.DataType]map[otelcomponent.ID]otelcomponent.Component { + return nil +} + +// NextConsumers implements receiver.Arguments. +func (args Arguments) NextConsumers() *otelcol.ConsumerArguments { + return args.Output +} + +// DebugMetricsConfig implements receiver.Arguments. +func (args Arguments) DebugMetricsConfig() otelcol.DebugMetricsArguments { + return args.DebugMetrics +} diff --git a/component/otelcol/receiver/vcenter/vcenter_test.go b/component/otelcol/receiver/vcenter/vcenter_test.go new file mode 100644 index 000000000000..934d87d0798c --- /dev/null +++ b/component/otelcol/receiver/vcenter/vcenter_test.go @@ -0,0 +1,42 @@ +package vcenter + +import ( + "testing" + "time" + + "github.com/grafana/river" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver" + "github.com/stretchr/testify/require" +) + +func TestArguments_UnmarshalRiver(t *testing.T) { + in := ` + endpoint = "http://localhost:1234" + username = "user" + password = "pass" + collection_interval = "2m" + + output { /* no-op */ } + ` + + var args Arguments + require.NoError(t, river.Unmarshal([]byte(in), &args)) + args.Convert() + ext, err := args.Convert() + require.NoError(t, err) + otelArgs, ok := (ext).(*vcenterreceiver.Config) + + require.True(t, ok) + + require.Equal(t, "user", otelArgs.Username) + require.Equal(t, "pass", string(otelArgs.Password)) + require.Equal(t, "http://localhost:1234", otelArgs.Endpoint) + + require.Equal(t, 2*time.Minute, otelArgs.ScraperControllerSettings.CollectionInterval) + require.Equal(t, time.Second, otelArgs.ScraperControllerSettings.InitialDelay) + require.Equal(t, 0*time.Second, otelArgs.ScraperControllerSettings.Timeout) + + require.Equal(t, true, otelArgs.Metrics.VcenterClusterCPUEffective.Enabled) + require.Equal(t, false, otelArgs.Metrics.VcenterVMMemoryUtilization.Enabled) + require.Equal(t, true, otelArgs.ResourceAttributes.VcenterClusterName.Enabled) +} diff --git a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md new file mode 100644 index 000000000000..c5d9ef68563b --- /dev/null +++ b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md @@ -0,0 +1,143 @@ +--- +aliases: +- /docs/grafana-cloud/agent/flow/reference/components/otelcol.receiver.vcenter/ +- /docs/grafana-cloud/monitor-infrastructure/agent/flow/reference/components/otelcol.receiver.vcenter/ +- /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/otelcol.receiver.vcenter/ +canonical: https://grafana.com/docs/agent/latest/flow/reference/components/otelcol.receiver.vcenter/ +title: otelcol.receiver.vcenter +description: Learn about otelcol.receiver.vcenter +labels: + stage: experimental +--- + +# otelcol.receiver.vcenter + +{{< docs/shared lookup="flow/stability/experimental.md" source="agent" version="" >}} + +`otelcol.receiver.vcenter` accepts metrics from a +vCenter or ESXi host running VMware vSphere APIs and +forwards it to other `otelcol.*` components. + +> **NOTE**: `otelcol.receiver.vcenter` is a wrapper over the upstream +> OpenTelemetry Collector `vcenter` receiver from the `otelcol-contrib` +> distribution. Bug reports or feature requests will be redirected to the +> upstream repository, if necessary. + +Multiple `otelcol.receiver.vcenter` components can be specified by giving them +different labels. + +The full list of metrics that can be collected can be found in [vcenter receiver documentation][vcenter metrics]. + +[vcenter metrics]: https://github.com/open-telemetry/opentelemetry-collector/blob/{{< param "OTEL_VERSION" >}}/receiver/vcenterreceiver/documentation.md + +## Prerequisites + +This receiver has been built to support ESXi and vCenter versions: + +- 7.5 +- 7.0 +- 6.7 + +A “Read Only” user assigned to a vSphere with permissions to the vCenter server, cluster and all subsequent resources being monitored must be specified in order for the receiver to retrieve information about them. + +## Usage + +```river +otelcol.receiver.vcenter "LABEL" { + endpoint = "VCENTER_ENDPOINT" + username = "VCENTER_USERNAME" + password = "VCENTER_PASSWORD" + + output { + metrics = [...] + } +} +``` + +## Arguments + +`otelcol.receiver.vcenter` supports the following arguments: + + +Name | Type | Description | Default | Required +---- | ---- | ----------- | ------- | -------- +`endpoint` | `string` | Endpoint to a vCenter Server or ESXi host which has the SDK path enabled. | | yes +`username` | `string` | Username to use for authentication. | | yes +`password` | `string` | Password to use for authentication. | | yes +`collection_interval` | `duration` | Defines how often to collect metrics. | `"1m"` | no +`initial_delay` | `duration` | Defines how long this receiver waits before starting. | `"1s"` | no +`timeout` | `duration` | Defines the timeout for the underlying HTTP client. | `"0s"` | no + +`endpoint` has the format `://`. For example, `https://vcsa.hostname.localnet`. + +## Blocks + +The following blocks are supported inside the definition of +`otelcol.receiver.vcenter`: + +Hierarchy | Block | Description | Required +--------- | ----- | ----------- | -------- +tls | [tls][] | Configures TLS for the HTTP client. | no +debug_metrics | [debug_metrics][] | Configures the metrics that this component generates to monitor its state. | no +output | [output][] | Configures where to send received telemetry data. | yes + +[tls]: #tls-block +[debug_metrics]: #debug_metrics-block +[output]: #output-block + +### tls block + +The `tls` block configures TLS settings used for a server. If the `tls` block +isn't provided, TLS won't be used for connections to the server. + +{{< docs/shared lookup="flow/reference/components/otelcol-tls-config-block.md" source="agent" version="" >}} + +### debug_metrics block + +{{< docs/shared lookup="flow/reference/components/otelcol-debug-metrics-block.md" source="agent" version="" >}} + +### output block + +{{< docs/shared lookup="flow/reference/components/output-block.md" source="agent" version="" >}} + +## Exported fields + +`otelcol.receiver.vcenter` does not export any fields. + +## Component health + +`otelcol.receiver.vcenter` is only reported as unhealthy if given an invalid +configuration. + +## Debug information + +`otelcol.receiver.vcenter` does not expose any component-specific debug +information. + +## Example + +This example forwards received telemetry data through a batch processor before +finally sending it to an OTLP-capable endpoint: + +```river +otelcol.receiver.vcenter "default" { + endpoint = "http://localhost:15672" + username = "otelu" + password = "password" + + output { + metrics = [otelcol.processor.batch.default.input] + } +} + +otelcol.processor.batch "default" { + output { + metrics = [otelcol.exporter.otlp.default.input] + } +} + +otelcol.exporter.otlp "default" { + client { + endpoint = env("OTLP_ENDPOINT") + } +} diff --git a/docs/sources/flow/reference/components/prometheus.exporter.vsphere.md b/docs/sources/flow/reference/components/prometheus.exporter.vsphere.md index 166226a27717..f9231788ef8e 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.vsphere.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.vsphere.md @@ -5,14 +5,19 @@ aliases: - /docs/grafana-cloud/monitor-infrastructure/integrations/agent/flow/reference/components/prometheus.exporter.vsphere/ - /docs/grafana-cloud/send-data/agent/flow/reference/components/prometheus.exporter.vsphere/ canonical: https://grafana.com/docs/agent/latest/flow/reference/components/prometheus.exporter.vsphere/ -description: Learn about prometheus.exporter.vsphere title: prometheus.exporter.vsphere +description: Learn about prometheus.exporter.vsphere --- # prometheus.exporter.vsphere The `prometheus.exporter.vsphere` component embeds [`vmware_exporter`](https://github.com/grafana/vmware_exporter) to collect vSphere metrics +> **NOTE**: We recommend to use [otelcol.receiver.vcenter][] instead. + +[otelcol.receiver.vcenter]: {{< relref "./otelcol.receiver.vcenter.md" >}} + + ## Usage ```river diff --git a/go.mod b/go.mod index 2602e4922d07..891de83235af 100644 --- a/go.mod +++ b/go.mod @@ -559,7 +559,7 @@ require ( github.com/vertica/vertica-sql-go v1.3.0 // indirect github.com/vishvananda/netlink v1.2.1-beta.2 // indirect github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f // indirect - github.com/vmware/govmomi v0.27.2 // indirect + github.com/vmware/govmomi v0.32.0 // indirect github.com/vultr/govultr/v2 v2.17.2 // indirect github.com/willf/bitset v1.1.11 // indirect github.com/willf/bloom v2.0.3+incompatible // indirect @@ -615,6 +615,7 @@ require ( github.com/githubexporter/github-exporter v0.0.0-20231025122338-656e7dc33fe7 github.com/natefinch/atomic v1.0.1 github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.87.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver v0.87.0 go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.42.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 ) diff --git a/go.sum b/go.sum index 573217dc64a4..0384745ab682 100644 --- a/go.sum +++ b/go.sum @@ -242,7 +242,6 @@ github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrd github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/Workiva/go-datastructures v1.1.0 h1:hu20UpgZneBhQ3ZvwiOGlqJSKIosin2Rd5wAKUHEO/k= github.com/Workiva/go-datastructures v1.1.0/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= -github.com/a8m/tree v0.0.0-20210115125333-10a5fd5b637d/go.mod h1:FSdwKX97koS5efgm8WevNf7XS3PqtyFkKDDXrz778cg= github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af h1:DBNMBMuMiWYu0b+8KMJuWmfCkcxl09JwdlqwDZZ6U14= github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw= github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= @@ -399,6 +398,8 @@ github.com/aws/smithy-go v1.15.0 h1:PS/durmlzvAFpQHDs4wi4sNNP9ExsqZh6IlfdHXgKK8= github.com/aws/smithy-go v1.15.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/aybabtme/iocontrol v0.0.0-20150809002002-ad15bcfc95a0 h1:0NmehRCgyk5rljDQLKUO+cRJCnduDyn11+zGZIc9Z48= github.com/aybabtme/iocontrol v0.0.0-20150809002002-ad15bcfc95a0/go.mod h1:6L7zgvqo0idzI7IO8de6ZC051AfXb5ipkIJ7bIA2tGA= +github.com/basgys/goxml2json v1.1.0 h1:4ln5i4rseYfXNd86lGEB+Vi652IsIXIvggKM/BhUKVw= +github.com/basgys/goxml2json v1.1.0/go.mod h1:wH7a5Np/Q4QoECFIU8zTQlZwZkrilY0itPfecMw41Dw= github.com/beevik/ntp v1.3.0 h1:/w5VhpW5BGKS37vFm1p9oVk/t4HnnkKZAZIubHM6F7Q= github.com/beevik/ntp v1.3.0/go.mod h1:vD6h1um4kzXpqmLTuu0cCLcC+NfvC0IC+ltmEDA8E78= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= @@ -540,7 +541,6 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-xdr v0.0.0-20161123171359-e6a2ba005892/go.mod h1:CTDl0pzVzE5DEzZhPfvhY/9sPFMQIxaJ9VAMs9AagrE= github.com/davidmparrott/kafka_exporter/v2 v2.0.1 h1:nGn+MKV8z08NK4xqcYSa3fBCs/VPVesT/5kboFWJaiE= github.com/davidmparrott/kafka_exporter/v2 v2.0.1/go.mod h1:n3ho8mZ5tZcmr8NAu/SjQHY61CDTqXtrACcEYwLXv4Y= github.com/denisenkom/go-mssqldb v0.0.0-20180620032804-94c9c97e8c9f/go.mod h1:xN/JuLBIz4bjkxNmByTiV1IbhfnYb6oo99phBn4Eqhc= @@ -1803,6 +1803,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusrec github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusreceiver v0.87.0/go.mod h1:LIGa2oqb+geqkmWvteeDjzulK1PfDYCY8Jp6pI0ey2A= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.87.0 h1:fwmow4M0aJUsmY9DGUMe6yykd0TvgB6PpLS+Z590R5s= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.87.0/go.mod h1:ZLfpGguza42G+SwGEZ5/plr1wa3D7GA7I6KJyARgHPA= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver v0.87.0 h1:TI5m4trLA3cVMQSRyxU14MzCzHXDk56+sc+9TY01uw0= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver v0.87.0/go.mod h1:IA/xIUE0Fl8lc7hkEOkVyYcTF7sE7AGawI9s8ipqRKc= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.87.0 h1:0DeNqM3fhNYPsfmPbaZ1PyBJ2vtOSFpMGadRKvryXfs= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.87.0/go.mod h1:tSxkxxWCcGh/vh1mHflhQTlwulkwWM1yyEABa6DXSmY= github.com/openconfig/gnmi v0.0.0-20180912164834-33a1865c3029/go.mod h1:t+O9It+LKzfOAhKTT5O0ehDix+MTqbtT0T9t+7zzOvc= @@ -2219,9 +2221,8 @@ github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1 github.com/vjeantet/grok v1.0.0/go.mod h1:/FWYEVYekkm+2VjcFmO9PufDU5FgXHUz9oy2EGqmQBo= github.com/vmware/govmomi v0.18.0/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= github.com/vmware/govmomi v0.19.0/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= -github.com/vmware/govmomi v0.27.2 h1:Ecooqg069gUbl5EuWYwcrvzRqMkah9J8BXaf9HCEGVM= -github.com/vmware/govmomi v0.27.2/go.mod h1:daTuJEcQosNMXYJOeku0qdBJP9SOLLWB3Mqz8THtv6o= -github.com/vmware/vmw-guestinfo v0.0.0-20170707015358-25eff159a728/go.mod h1:x9oS4Wk2s2u4tS29nEaDLdzvuHdB19CvSGJjPgkZJNk= +github.com/vmware/govmomi v0.32.0 h1:Rsdi/HAX5Ebf9Byp/FvBir4sfM7yP5DBUeRlbC6vLBo= +github.com/vmware/govmomi v0.32.0/go.mod h1:JA63Pg0SgQcSjk+LuPzjh3rJdcWBo/ZNCIwbb1qf2/0= github.com/vultr/govultr/v2 v2.17.2 h1:gej/rwr91Puc/tgh+j33p/BLR16UrIPnSr+AIwYWZQs= github.com/vultr/govultr/v2 v2.17.2/go.mod h1:ZFOKGWmgjytfyjeyAdhQlSWwTjh2ig+X49cAp50dzXI= github.com/wavefronthq/wavefront-sdk-go v0.9.2/go.mod h1:hQI6y8M9OtTCtc0xdwh+dCER4osxXdEAeCpacjpDZEU= From 7e33d9c176a300d35db8bb0c7c1d4311c9666098 Mon Sep 17 00:00:00 2001 From: Clayton Cornell <131809008+clayton-cornell@users.noreply.github.com> Date: Thu, 16 Nov 2023 09:13:57 -0800 Subject: [PATCH 037/166] Add a table to the flow description showing benefits and strengths of flow (#5732) * First draft adding config table * Rephrase soem parts and move tables * Update docs/sources/about.md Co-authored-by: Jack Baldry * Cleanup some semantic linebreaks * Reorg tabels, add note to operator * Fix broken link --------- Co-authored-by: Jack Baldry --- docs/sources/about.md | 105 ++++++++++++++++++++++++++++-------------- 1 file changed, 71 insertions(+), 34 deletions(-) diff --git a/docs/sources/about.md b/docs/sources/about.md index 3ebae044e00b..f7767e04fa30 100644 --- a/docs/sources/about.md +++ b/docs/sources/about.md @@ -14,27 +14,40 @@ weight: 100 # Introduction to Grafana Agent -Grafana Agent is a vendor-neutral, batteries-included telemetry collector. It -is designed to be flexible, performant, and compatible with multiple ecosystems -such as Prometheus and OpenTelemetry. +Grafana Agent is a flexible, high performance, vendor-neutral telemetry collector. It's fully compatible with the most popular open source observability standards such as OpenTelemetry (OTel) and Prometheus. Grafana Agent is available in three different variants: -- [Static mode][]: The default, original variant of Grafana Agent. -- [Static mode Kubernetes operator][]: Variant which manages agents running in Static mode. -- [Flow mode][]: The newer, more flexible re-imagining variant of Grafana Agent. +- [Static mode][]: The original Grafana Agent. +- [Static mode Kubernetes operator][]: The Kubernetes operator for Static mode. +- [Flow mode][]: The new, component-based Grafana Agent. {{% docs/reference %}} [Static mode]: "/docs/agent/ -> /docs/agent//static" [Static mode]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/static" - [Static mode Kubernetes operator]: "/docs/agent/ -> /docs/agent//operator" [Static mode Kubernetes operator]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/send-data/agent/operator" - [Flow mode]: "/docs/agent/ -> /docs/agent//flow" [Flow mode]: "/docs/grafana-cloud/ -> /docs/agent//flow" +[Prometheus]: "/docs/agent/ -> /docs/agent//flow/getting-started/collect-prometheus-metrics.md" +[Prometheus]: "/docs/grafana-cloud/ -> /docs/agent//flow/getting-started/collect-prometheus-metrics.md" +[OTel]: "/docs/agent/ -> /docs/agent//flow/getting-started/collect-opentelemetry-data.md" +[OTel]: "/docs/grafana-cloud/ -> /docs/agent//flow/getting-started/collect-opentelemetry-data.md" +[Loki]: "/docs/agent/ -> /docs/agent//flow/getting-started/migrating-from-promtail.md" +[Loki]: "/docs/grafana-cloud/ -> /docs/agent//flow/getting-started/migrating-from-promtail.md" +[clustering]: "/docs/agent/ -> /docs/agent//flow/concepts/clustering/_index.md" +[clustering]: "/docs/grafana-cloud/ -> /docs/agent//flow/concepts/clustering/_index.md" +[rules]: "/docs/agent/ -> /docs/agent/latest/flow/reference/components/mimir.rules.kubernetes.md" +[rules]: "/docs/grafana-cloud/ -> /docs/agent/latest/flow/reference/components/mimir.rules.kubernetes.md" +[vault]: "/docs/agent/ -> /docs/agent//flow/reference/components/remote.vault.md" +[vault]: "/docs/grafana-cloud/ -> /docs/agent//flow/reference/components/remote.vault.md" {{% /docs/reference %}} +[Pyroscope]: https://grafana.com/docs/pyroscope/latest/configure-client/grafana-agent/go_pull +[helm chart]: https://grafana.com/docs/grafana-cloud/monitor-infrastructure/kubernetes-monitoring/configuration/config-k8s-helmchart +[sla]: https://grafana.com/legal/grafana-cloud-sla +[observability]: https://grafana.com/docs/grafana-cloud/monitor-applications/application-observability/setup#send-telemetry + ## Stability | Project | Stability | @@ -45,13 +58,44 @@ Grafana Agent is available in three different variants: ## Choose which variant of Grafana Agent to run -> **NOTE**: You do not have to pick just one variant; it is possible to +> **NOTE**: You don't have to pick just one variant; it's possible to > mix-and-match installations of Grafana Agent. +### Compare variants + +Each variant of Grafana Agent provides a different level of functionality. The following tables compare Grafana Agent Flow mode with Static mode, Operator, OpenTelemetry, and Prometheus. + +#### Core telemetry + +| | Grafana Agent Flow mode | Grafana Agent Static mode | Grafana Agent Operator | OpenTelemetry Collector | Prometheus Agent mode | +|--------------|--------------------------|---------------------------|------------------------|-------------------------|-----------------------| +| **Metrics** | [Prometheus][], [OTel][] | Prometheus | Prometheus | OTel | Prometheus | +| **Logs** | [Loki][], [OTel][] | Loki | Loki | OTel | No | +| **Traces** | [OTel][] | OTel | OTel | OTel | No | +| **Profiles** | [Pyroscope][] | No | No | Planned | No | + +#### **OSS features** + +| | Grafana Agent Flow mode | Grafana Agent Static mode | Grafana Agent Operator | OpenTelemetry Collector | Prometheus Agent mode | +|--------------------------|-------------------------|---------------------------|------------------------|-------------------------|-----------------------| +| **Kubernetes native** | [Yes][helm chart] | No | Yes | Yes | No | +| **Clustering** | [Yes][clustering] | No | No | No | No | +| **Prometheus rules** | [Yes][rules] | No | No | No | No | +| **Native Vault support** | [Yes][vault] | No | No | No | No | + +#### Grafana Cloud solutions + +| | Grafana Agent Flow mode | Grafana Agent Static mode | Grafana Agent Operator | OpenTelemetry Collector | Prometheus Agent mode | +|-------------------------------|-------------------------|---------------------------|------------------------|-------------------------|-----------------------| +| **Official vendor support** | [Yes][sla] | Yes | Yes | No | No | +| **Cloud integrations** | Some | Yes | Some | No | No | +| **Kubernetes monitoring** | [Yes][helm chart] | Yes, custom | Yes | No | Yes, custom | +| **Application observability** | [Yes][observability] | No | No | Yes | No | + ### Static mode -[Static mode][] is the original variant of Grafana Agent, first introduced on -March 3, 2020. Static mode is the most mature variant of Grafana Agent. +[Static mode][] is the original variant of Grafana Agent, introduced on March 3, 2020. +Static mode is the most mature variant of Grafana Agent. You should run Static mode when: @@ -61,12 +105,15 @@ You should run Static mode when: ### Static mode Kubernetes operator -The [Static mode Kubernetes operator][] is a variant of Grafana Agent first -introduced on June 17, 2021. It is currently in beta. +{{% admonition type="note" %}} +Grafana Agent version 0.37 and newer provides Prometheus Operator compatibility in Flow mode. +You should use Grafana Agent Flow mode for all new Grafana Agent deployments. +{{% /admonition %}} -The Static mode Kubernetes operator was introduced for compatibility with -Prometheus Operator, allowing static mode to support resources from Prometheus -Operator, such as ServiceMonitors, PodMonitors, and Probes. +The [Static mode Kubernetes operator][] is a variant of Grafana Agent introduced on June 17, 2021. It's currently in beta. + +The Static mode Kubernetes operator provides compatibility with Prometheus Operator, +allowing static mode to support resources from Prometheus Operator, such as ServiceMonitors, PodMonitors, and Probes. You should run the Static mode Kubernetes operator when: @@ -76,34 +123,24 @@ You should run the Static mode Kubernetes operator when: ### Flow mode -[Flow mode][] is a stable variant of Grafana Agent first introduced on -September 29, 2022. - -Flow mode was introduced as a re-imagining of Grafana Agent with a focus on -vendor neutrality, ease-of-use, improved debuggability, and ability to adapt to -the needs of power users by adopting a configuration-as-code model. +[Flow mode][] is a stable variant of Grafana Agent, introduced on September 29, 2022. -Flow mode is considered to be the future of the Grafana Agent project. +Grafana Agent Flow mode focuses on vendor neutrality, ease-of-use, +improved debugging, and ability to adapt to the needs of power users by adopting a configuration-as-code model. You should run Flow mode when: * You need functionality unique to Flow mode: - * **Debuggability**: You need to more easily debug configuration issues using - a UI. - - * **Full OpenTelemetry support**: Support for collecting OpenTelemetry - metrics, logs, and traces. + * **Improved debugging**: You need to more easily debug configuration issues using a UI. - * **PrometheusRule support**: Support for the PrometheusRule resource from - the Prometheus Operator project for configuring Grafana Mimir. + * **Full OpenTelemetry support**: Support for collecting OpenTelemetry metrics, logs, and traces. - * **Ecosystem transformation**: You need to be able to convert Prometheus and - Loki pipelines to and from OpenTelmetry Collector pipelines. + * **PrometheusRule support**: Support for the PrometheusRule resource from the Prometheus Operator project for configuring Grafana Mimir. - * **Grafana Pyroscope support**: Support for collecting profiles for Grafana - Pyroscope. + * **Ecosystem transformation**: You need to be able to convert Prometheus and Loki pipelines to and from OpenTelmetry Collector pipelines. + * **Grafana Pyroscope support**: Support for collecting profiles for Grafana Pyroscope. ### BoringCrypto From 950870ad82635c87f102ec0ae2aac0097d965d77 Mon Sep 17 00:00:00 2001 From: Robert Fratto Date: Thu, 16 Nov 2023 14:29:49 -0500 Subject: [PATCH 038/166] misc: prepare for release v0.38.0-rc.0 (#5794) --- CHANGELOG.md | 3 +++ docs/sources/_index.md | 2 +- pkg/operator/defaults.go | 2 +- tools/gen-versioned-files/agent-version.txt | 2 +- tools/gen-versioned-files/gen-versioned-files.sh | 4 ++-- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5dd878676da2..0c4b5dc5b418 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,9 @@ internal API changes are not present. Main (unreleased) ----------------- +v0.38.0-rc.0 (2023-11-16) +------------------------- + ### Breaking changes - Remove `otelcol.exporter.jaeger` component (@hainenber) diff --git a/docs/sources/_index.md b/docs/sources/_index.md index 865c936bba1c..ecbe02c29237 100644 --- a/docs/sources/_index.md +++ b/docs/sources/_index.md @@ -9,7 +9,7 @@ title: Grafana Agent description: Grafana Agent is a flexible, performant, vendor-neutral, telemetry collector weight: 350 cascade: - AGENT_RELEASE: v0.37.4 + AGENT_RELEASE: v0.38.0-rc.0 OTEL_VERSION: v0.87.0 --- diff --git a/pkg/operator/defaults.go b/pkg/operator/defaults.go index 68842b412f42..d1da8136fa40 100644 --- a/pkg/operator/defaults.go +++ b/pkg/operator/defaults.go @@ -2,7 +2,7 @@ package operator // Supported versions of the Grafana Agent. var ( - DefaultAgentVersion = "v0.37.4" + DefaultAgentVersion = "v0.38.0-rc.0" DefaultAgentBaseImage = "grafana/agent" DefaultAgentImage = DefaultAgentBaseImage + ":" + DefaultAgentVersion ) diff --git a/tools/gen-versioned-files/agent-version.txt b/tools/gen-versioned-files/agent-version.txt index f3d8baac63b3..0419d9c65489 100644 --- a/tools/gen-versioned-files/agent-version.txt +++ b/tools/gen-versioned-files/agent-version.txt @@ -1 +1 @@ -v0.37.4 +v0.38.0-rc.0 diff --git a/tools/gen-versioned-files/gen-versioned-files.sh b/tools/gen-versioned-files/gen-versioned-files.sh index 39d25a006d07..fff14df68d4b 100755 --- a/tools/gen-versioned-files/gen-versioned-files.sh +++ b/tools/gen-versioned-files/gen-versioned-files.sh @@ -6,10 +6,10 @@ if [ -z "$AGENT_VERSION" ]; then exit 1 fi -versionMatcher='^v[0-9]+\.[0-9]+\.[0-9]+(-rc[0-9]+)?$' +versionMatcher='^v[0-9]+\.[0-9]+\.[0-9]+(-rc\.[0-9]+)?$' if ! echo "$AGENT_VERSION" | grep -Eq "$versionMatcher"; then - echo "AGENT_VERSION env var is not in the correct format. It should be in the format of vX.Y.Z or vX.Y.Z-rcN" + echo "AGENT_VERSION env var is not in the correct format. It should be in the format of vX.Y.Z or vX.Y.Z-rc.N" exit 1 fi From eac661ff0b2f85c1baeb0e2d2bf52a7770a1fd0c Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Mon, 20 Nov 2023 09:52:18 +0100 Subject: [PATCH 039/166] packaging: fix grafana-agent-flow.river (#5802) (#5809) * packaging: fix grafana-agent-flow.river (#5802) Add needed label in default `grafana-agent-flow.river` default configuration used in downstream packages. * Update CHANGELOG.md --- CHANGELOG.md | 2 ++ packaging/grafana-agent-flow/grafana-agent-flow.river | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c4b5dc5b418..06c54181de8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -108,6 +108,8 @@ v0.38.0-rc.0 (2023-11-16) ### Bugfixes +- Fix default configuration file `grafana-agent-flow.river` used in downstream packages. (@bricewge) + - Set exit code 1 on grafana-agentctl non-runnable command. (@fgouteroux) - Fixed an issue where `loki.process` validation for stage `metric.counter` was diff --git a/packaging/grafana-agent-flow/grafana-agent-flow.river b/packaging/grafana-agent-flow/grafana-agent-flow.river index b965ff0599e1..4d74fc7aa9cb 100644 --- a/packaging/grafana-agent-flow/grafana-agent-flow.river +++ b/packaging/grafana-agent-flow/grafana-agent-flow.river @@ -5,14 +5,14 @@ logging { level = "warn" } -prometheus.exporter.unix { +prometheus.exporter.unix "default" { include_exporter_metrics = true disable_collectors = ["mdadm"] } prometheus.scrape "default" { targets = concat( - prometheus.exporter.unix.targets, + prometheus.exporter.unix.default.targets, [{ // Self-collect metrics job = "agent", From bc3babc3b6c9f31792f5997c5e4c9ddb271c223b Mon Sep 17 00:00:00 2001 From: Robert Fratto Date: Mon, 20 Nov 2023 09:51:47 -0500 Subject: [PATCH 040/166] misc: fix changelog entry (#5812) PR #5802 accidentally added the changelog entry to a published release. --- CHANGELOG.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 06c54181de8e..15df9feae598 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,10 @@ internal API changes are not present. Main (unreleased) ----------------- +### Bugfixes + +- Fix default configuration file `grafana-agent-flow.river` used in downstream packages. (@bricewge) + v0.38.0-rc.0 (2023-11-16) ------------------------- @@ -108,8 +112,6 @@ v0.38.0-rc.0 (2023-11-16) ### Bugfixes -- Fix default configuration file `grafana-agent-flow.river` used in downstream packages. (@bricewge) - - Set exit code 1 on grafana-agentctl non-runnable command. (@fgouteroux) - Fixed an issue where `loki.process` validation for stage `metric.counter` was From 39b78a8cf967679018fe8e1da6e684155da4d684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=E1=BB=97=20Tr=E1=BB=8Dng=20H=E1=BA=A3i?= <41283691+hainenber@users.noreply.github.com> Date: Tue, 21 Nov 2023 01:59:55 +0700 Subject: [PATCH 041/166] feat(module/git): allow module.git use cached content when failed to fetch (#5712) Signed-off-by: hainenber --- CHANGELOG.md | 2 ++ component/module/git/git.go | 18 +++++++++++++-- component/module/git/internal/vcs/git.go | 28 +++++++++++++++--------- 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 15df9feae598..d71aeae69605 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -110,6 +110,8 @@ v0.38.0-rc.0 (2023-11-16) - Updated windows exporter to use prometheus-community/windows_exporter commit 1836cd1. (@mattdurham) +- Allow agent to start with `module.git` config if cached before. (@hainenber) + ### Bugfixes - Set exit code 1 on grafana-agentctl non-runnable command. (@fgouteroux) diff --git a/component/module/git/git.go b/component/module/git/git.go index 42ac468477de..6a211fdc8843 100644 --- a/component/module/git/git.go +++ b/component/module/git/git.go @@ -3,6 +3,7 @@ package git import ( "context" + "errors" "path/filepath" "reflect" "sync" @@ -91,8 +92,15 @@ func New(o component.Options, args Arguments) (*Component, error) { argsChanged: make(chan struct{}, 1), } + // Only acknowledge the error from Update if it's not a + // vcs.UpdateFailedError; vcs.UpdateFailedError means that the Git repo + // exists but we were just unable to update it. if err := c.Update(args); err != nil { - return nil, err + if errors.As(err, &vcs.UpdateFailedError{}) { + level.Error(c.log).Log("msg", "failed to update repository", "err", err) + } else { + return nil, err + } } return c, nil } @@ -193,10 +201,16 @@ func (c *Component) Update(args component.Arguments) (err error) { } // Create or update the repo field. + // Failure to update repository makes the module loader temporarily use cached contents on disk if c.repo == nil || !reflect.DeepEqual(repoOpts, c.repoOpts) { r, err := vcs.NewGitRepo(context.Background(), repoPath, repoOpts) if err != nil { - return err + if errors.As(err, &vcs.UpdateFailedError{}) { + level.Error(c.log).Log("msg", "failed to update repository", "err", err) + c.updateHealth(err) + } else { + return err + } } c.repo = r c.repoOpts = repoOpts diff --git a/component/module/git/internal/vcs/git.go b/component/module/git/internal/vcs/git.go index 8209190b90da..dece43c10b2f 100644 --- a/component/module/git/internal/vcs/git.go +++ b/component/module/git/internal/vcs/git.go @@ -58,16 +58,24 @@ func NewGitRepo(ctx context.Context, storagePath string, opts GitRepoOptions) (* } // Fetch the latest contents. This may be a no-op if we just did a clone. - err = repo.FetchContext(ctx, &git.FetchOptions{ + fetchRepoErr := repo.FetchContext(ctx, &git.FetchOptions{ RemoteName: "origin", Force: true, Auth: opts.Auth.Convert(), }) - if err != nil && !errors.Is(err, git.NoErrAlreadyUpToDate) { - return nil, UpdateFailedError{ - Repository: opts.Repository, - Inner: err, + if fetchRepoErr != nil && !errors.Is(fetchRepoErr, git.NoErrAlreadyUpToDate) { + workTree, err := repo.Worktree() + if err != nil { + return nil, err } + return &GitRepo{ + opts: opts, + repo: repo, + workTree: workTree, + }, UpdateFailedError{ + Repository: opts.Repository, + Inner: fetchRepoErr, + } } // Finally, hard reset to our requested revision. @@ -92,7 +100,7 @@ func NewGitRepo(ctx context.Context, storagePath string, opts GitRepoOptions) (* opts: opts, repo: repo, workTree: workTree, - }, nil + }, err } func isRepoCloned(dir string) bool { @@ -103,15 +111,16 @@ func isRepoCloned(dir string) bool { // Update updates the repository by fetching new content and re-checking out to // latest version of Revision. func (repo *GitRepo) Update(ctx context.Context) error { - err := repo.repo.FetchContext(ctx, &git.FetchOptions{ + var err error + fetchRepoErr := repo.repo.FetchContext(ctx, &git.FetchOptions{ RemoteName: "origin", Force: true, Auth: repo.opts.Auth.Convert(), }) - if err != nil && !errors.Is(err, git.NoErrAlreadyUpToDate) { + if fetchRepoErr != nil && !errors.Is(fetchRepoErr, git.NoErrAlreadyUpToDate) { return UpdateFailedError{ Repository: repo.opts.Repository, - Inner: err, + Inner: fetchRepoErr, } } @@ -120,7 +129,6 @@ func (repo *GitRepo) Update(ctx context.Context) error { if err != nil { return InvalidRevisionError{Revision: repo.opts.Revision} } - err = repo.workTree.Reset(&git.ResetOptions{ Commit: hash, Mode: git.HardReset, From 165914bc6c83b2b097375071ccef5fd2f5286833 Mon Sep 17 00:00:00 2001 From: Erik Baranowski <39704712+erikbaranowski@users.noreply.github.com> Date: Mon, 20 Nov 2023 15:32:19 -0500 Subject: [PATCH 042/166] Fix converter output for prometheus.exporter.windows to not unnecessarily add empty blocks (#5817) --- CHANGELOG.md | 2 ++ .../staticconvert/internal/build/windows_exporter.go | 10 ++++++---- .../testdata-v2_windows/integrations_v2.river | 8 +------- .../staticconvert/testdata_windows/integrations.river | 8 +------- 4 files changed, 10 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d71aeae69605..18e9f662d575 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,8 @@ Main (unreleased) - Fix default configuration file `grafana-agent-flow.river` used in downstream packages. (@bricewge) +- Fix converter output for prometheus.exporter.windows to not unnecessarily add empty blocks. (@erikbaranowski) + v0.38.0-rc.0 (2023-11-16) ------------------------- diff --git a/converter/internal/staticconvert/internal/build/windows_exporter.go b/converter/internal/staticconvert/internal/build/windows_exporter.go index 100a8761ccfc..27e9679887b8 100644 --- a/converter/internal/staticconvert/internal/build/windows_exporter.go +++ b/converter/internal/staticconvert/internal/build/windows_exporter.go @@ -1,6 +1,8 @@ package build import ( + "strings" + "github.com/grafana/agent/component/discovery" "github.com/grafana/agent/component/prometheus/exporter/windows" "github.com/grafana/agent/pkg/integrations/windows_exporter" @@ -13,12 +15,12 @@ func (b *IntegrationsConfigBuilder) appendWindowsExporter(config *windows_export func toWindowsExporter(config *windows_exporter.Config) *windows.Arguments { return &windows.Arguments{ - EnabledCollectors: splitByCommaNullOnEmpty(config.EnabledCollectors), + EnabledCollectors: strings.Split(config.EnabledCollectors, ","), Dfsr: windows.DfsrConfig{ - SourcesEnabled: splitByCommaNullOnEmpty(config.Dfsr.SourcesEnabled), + SourcesEnabled: strings.Split(config.Dfsr.SourcesEnabled, ","), }, Exchange: windows.ExchangeConfig{ - EnabledList: splitByCommaNullOnEmpty(config.Exchange.EnabledList), + EnabledList: strings.Split(config.Exchange.EnabledList, ","), }, IIS: windows.IISConfig{ AppBlackList: config.IIS.AppBlackList, @@ -40,7 +42,7 @@ func toWindowsExporter(config *windows_exporter.Config) *windows.Arguments { Where: config.MSMQ.Where, }, MSSQL: windows.MSSQLConfig{ - EnabledClasses: splitByCommaNullOnEmpty(config.MSSQL.EnabledClasses), + EnabledClasses: strings.Split(config.MSSQL.EnabledClasses, ","), }, Network: windows.NetworkConfig{ BlackList: config.Network.BlackList, diff --git a/converter/internal/staticconvert/testdata-v2_windows/integrations_v2.river b/converter/internal/staticconvert/testdata-v2_windows/integrations_v2.river index e01818b3faad..903d7f0c9a9c 100644 --- a/converter/internal/staticconvert/testdata-v2_windows/integrations_v2.river +++ b/converter/internal/staticconvert/testdata-v2_windows/integrations_v2.river @@ -9,13 +9,7 @@ prometheus.remote_write "metrics_default" { } } -prometheus.exporter.windows "integrations_windows_exporter" { - exchange { } - - network { - exclude = ".+" - } -} +prometheus.exporter.windows "integrations_windows_exporter" { } prometheus.scrape "integrations_windows" { targets = prometheus.exporter.windows.integrations_windows_exporter.targets diff --git a/converter/internal/staticconvert/testdata_windows/integrations.river b/converter/internal/staticconvert/testdata_windows/integrations.river index d550abac368e..14c12b899530 100644 --- a/converter/internal/staticconvert/testdata_windows/integrations.river +++ b/converter/internal/staticconvert/testdata_windows/integrations.river @@ -22,13 +22,7 @@ http { } } -prometheus.exporter.windows "integrations_windows_exporter" { - exchange { } - - network { - exclude = ".+" - } -} +prometheus.exporter.windows "integrations_windows_exporter" { } prometheus.scrape "integrations_windows_exporter" { targets = prometheus.exporter.windows.integrations_windows_exporter.targets From 26f49155e289cb957b01550212c2ad2c78ec73ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Otto=20Kr=C3=B6pke?= Date: Mon, 20 Nov 2023 21:39:11 +0100 Subject: [PATCH 043/166] docs: fix example in prometheus.exporter.agent (#5816) --- .../flow/reference/components/prometheus.exporter.agent.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sources/flow/reference/components/prometheus.exporter.agent.md b/docs/sources/flow/reference/components/prometheus.exporter.agent.md index e9a5c3061e95..7b2245fbd652 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.agent.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.agent.md @@ -45,7 +45,7 @@ This example uses a [`prometheus.scrape` component][scrape] to collect metrics from `prometheus.exporter.agent`: ```river -prometheus.exporter.agent "agent" {} +prometheus.exporter.agent "example" {} // Configure a prometheus.scrape component to collect agent metrics. prometheus.scrape "demo" { @@ -69,4 +69,4 @@ Replace the following: - `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" >}} \ No newline at end of file +[scrape]: {{< relref "./prometheus.scrape.md" >}} From bcbc7abfa5da407fedc01e30be5037d0504386f0 Mon Sep 17 00:00:00 2001 From: Erik Baranowski <39704712+erikbaranowski@users.noreply.github.com> Date: Mon, 20 Nov 2023 15:39:48 -0500 Subject: [PATCH 044/166] delete obsolete broken windows test (#5818) --- .../windows_exporter/config_windows_test.go | 70 ------------------- 1 file changed, 70 deletions(-) delete mode 100644 pkg/integrations/windows_exporter/config_windows_test.go diff --git a/pkg/integrations/windows_exporter/config_windows_test.go b/pkg/integrations/windows_exporter/config_windows_test.go deleted file mode 100644 index 5546426c9e0f..000000000000 --- a/pkg/integrations/windows_exporter/config_windows_test.go +++ /dev/null @@ -1,70 +0,0 @@ -//go:build windows - -package windows_exporter - -import ( - "testing" - - "github.com/alecthomas/kingpin/v2" - "github.com/prometheus-community/windows_exporter/pkg/collector" - "github.com/stretchr/testify/require" - "gopkg.in/yaml.v2" -) - -func TestConfig(t *testing.T) { - built, total := testConfig(t, "") - // Default which is windows_exporter defaults minus textfile - require.Len(t, built, 7) - // Total should be 50 - require.Len(t, total, 50) -} - -func TestMultipleConfig(t *testing.T) { - cfg1 := ` -enabled_collectors: "mssql,os" -mssql: - enabled_classes: "accessmethods,availreplica" -` - cfg2 := ` -enabled_collectors: "mssql,os,cpu" -mssql: - enabled_classes: "accessmethods,availreplica,bufman" -` - cfg3 := ` -enabled_collectors: "mssql,os" -mssql: {} -` - built1, total1 := testConfig(t, cfg1) - built2, total2 := testConfig(t, cfg2) - built3, total3 := testConfig(t, cfg3) - require.Len(t, built1, 2) - require.Len(t, built2, 3) - require.Len(t, built3, 2) - total1mssql := "accessmethods,availreplica" - require.True(t, *total1["mssql"].Settings.(*collector.MSSqlSettings).ClassesEnabled == total1mssql) - total2mssql := "accessmethods,availreplica,bufman" - require.True(t, *total2["mssql"].Settings.(*collector.MSSqlSettings).ClassesEnabled == total2mssql) - total3mssql := "accessmethods,availreplica,bufman,databases,dbreplica,genstats,locks,memmgr,sqlstats,sqlerrors,transactions,waitstats" - require.True(t, *total3["mssql"].Settings.(*collector.MSSqlSettings).ClassesEnabled == total3mssql) -} - -func testConfig(t *testing.T, cfg string) (map[string]collector.Collector, map[string]*collector.Initializer) { - c := DefaultConfig - err := yaml.Unmarshal([]byte(cfg), &c) - require.NoError(t, err) - collectors := collector.CreateInitializers() - windowsExporter := kingpin.New("", "") - // We only need this to fill in the appropriate settings structs so we can override them. - collector.RegisterCollectorsFlags(collectors, windowsExporter) - // Override the settings structs with our own - err = c.toExporterConfig(collectors) - require.NoError(t, err) - // Register the performance monitors - collector.RegisterCollectors(collectors) - // Filter down to the enabled collectors - enabledCollectorNames := enabledCollectors(c.EnabledCollectors) - // Finally build the collectors that we need to run. - builtCollectors, err := buildCollectors(collectors, enabledCollectorNames) - require.NoError(t, err) - return builtCollectors, collectors -} From 7d775c1fb9ef35a6556c6ffa3f9e876b73aabd45 Mon Sep 17 00:00:00 2001 From: Robert Fratto Date: Mon, 20 Nov 2023 15:57:17 -0500 Subject: [PATCH 045/166] prepare for release v0.38.0-rc.1 (#5821) --- CHANGELOG.md | 9 +++++++-- docs/sources/_index.md | 2 +- pkg/operator/defaults.go | 2 +- tools/gen-versioned-files/agent-version.txt | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18e9f662d575..2da23f2e9b75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,13 @@ internal API changes are not present. Main (unreleased) ----------------- +v0.38.0-rc.1 (2023-11-20) +------------------------- + +### Enhancements + +- Allow agent to start with `module.git` config if cached before. (@hainenber) + ### Bugfixes - Fix default configuration file `grafana-agent-flow.river` used in downstream packages. (@bricewge) @@ -112,8 +119,6 @@ v0.38.0-rc.0 (2023-11-16) - Updated windows exporter to use prometheus-community/windows_exporter commit 1836cd1. (@mattdurham) -- Allow agent to start with `module.git` config if cached before. (@hainenber) - ### Bugfixes - Set exit code 1 on grafana-agentctl non-runnable command. (@fgouteroux) diff --git a/docs/sources/_index.md b/docs/sources/_index.md index ecbe02c29237..15df6d9c3174 100644 --- a/docs/sources/_index.md +++ b/docs/sources/_index.md @@ -9,7 +9,7 @@ title: Grafana Agent description: Grafana Agent is a flexible, performant, vendor-neutral, telemetry collector weight: 350 cascade: - AGENT_RELEASE: v0.38.0-rc.0 + AGENT_RELEASE: v0.38.0-rc.1 OTEL_VERSION: v0.87.0 --- diff --git a/pkg/operator/defaults.go b/pkg/operator/defaults.go index d1da8136fa40..27d19feb218d 100644 --- a/pkg/operator/defaults.go +++ b/pkg/operator/defaults.go @@ -2,7 +2,7 @@ package operator // Supported versions of the Grafana Agent. var ( - DefaultAgentVersion = "v0.38.0-rc.0" + DefaultAgentVersion = "v0.38.0-rc.1" DefaultAgentBaseImage = "grafana/agent" DefaultAgentImage = DefaultAgentBaseImage + ":" + DefaultAgentVersion ) diff --git a/tools/gen-versioned-files/agent-version.txt b/tools/gen-versioned-files/agent-version.txt index 0419d9c65489..840190248a93 100644 --- a/tools/gen-versioned-files/agent-version.txt +++ b/tools/gen-versioned-files/agent-version.txt @@ -1 +1 @@ -v0.38.0-rc.0 +v0.38.0-rc.1 From 6c028c0565d64bdceb418e4e007f0ee46b2421fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Tudur=C3=AD?= Date: Tue, 21 Nov 2023 13:44:44 +0100 Subject: [PATCH 046/166] Add metrics and resource attribute config options from vcentereceiver in docs and tests (#5813) Co-authored-by: Paulin Todev --- .../otelcol/receiver/vcenter/vcenter_test.go | 190 +++++++++++++++++- .../components/otelcol.receiver.vcenter.md | 78 +++++++ 2 files changed, 265 insertions(+), 3 deletions(-) diff --git a/component/otelcol/receiver/vcenter/vcenter_test.go b/component/otelcol/receiver/vcenter/vcenter_test.go index 934d87d0798c..bcc6896dc4b2 100644 --- a/component/otelcol/receiver/vcenter/vcenter_test.go +++ b/component/otelcol/receiver/vcenter/vcenter_test.go @@ -16,6 +16,144 @@ func TestArguments_UnmarshalRiver(t *testing.T) { password = "pass" collection_interval = "2m" + resource_attributes { + vcenter.cluster.name { + enabled = true + } + vcenter.datastore.name { + enabled = true + } + vcenter.host.name { + enabled = true + } + vcenter.resource_pool.inventory_path { + enabled = false + } + vcenter.resource_pool.name { + enabled = true + } + vcenter.vm.name { + enabled = true + } + } + + metrics { + vcenter.cluster.cpu.effective { + enabled = false + } + vcenter.cluster.cpu.limit { + enabled = true + } + vcenter.cluster.host.count { + enabled = true + } + vcenter.cluster.memory.effective { + enabled = true + } + vcenter.cluster.memory.limit { + enabled = true + } + vcenter.cluster.memory.used { + enabled = true + } + vcenter.cluster.vm.count { + enabled = true + } + vcenter.datastore.disk.usage { + enabled = true + } + vcenter.datastore.disk.utilization { + enabled = true + } + vcenter.host.cpu.usage { + enabled = true + } + vcenter.host.cpu.utilization { + enabled = true + } + vcenter.host.disk.latency.avg { + enabled = true + } + vcenter.host.disk.latency.max { + enabled = true + } + vcenter.host.disk.throughput { + enabled = true + } + vcenter.host.memory.usage { + enabled = true + } + vcenter.host.memory.utilization { + enabled = true + } + vcenter.host.network.packet.count { + enabled = true + } + vcenter.host.network.packet.errors { + enabled = true + } + vcenter.host.network.throughput { + enabled = true + } + vcenter.host.network.usage { + enabled = true + } + vcenter.resource_pool.cpu.shares { + enabled = true + } + vcenter.resource_pool.cpu.usage { + enabled = true + } + vcenter.resource_pool.memory.shares { + enabled = true + } + vcenter.resource_pool.memory.usage { + enabled = true + } + vcenter.vm.cpu.usage { + enabled = true + } + vcenter.vm.cpu.utilization { + enabled = true + } + vcenter.vm.disk.latency.avg { + enabled = true + } + vcenter.vm.disk.latency.max { + enabled = true + } + vcenter.vm.disk.throughput { + enabled = true + } + vcenter.vm.disk.usage { + enabled = true + } + vcenter.vm.disk.utilization { + enabled = true + } + vcenter.vm.memory.ballooned { + enabled = true + } + vcenter.vm.memory.swapped { + enabled = true + } + vcenter.vm.memory.swapped_ssd { + enabled = true + } + vcenter.vm.memory.usage { + enabled = true + } + vcenter.vm.network.packet.count { + enabled = true + } + vcenter.vm.network.throughput { + enabled = true + } + vcenter.vm.network.usage { + enabled = true + } + } + output { /* no-op */ } ` @@ -36,7 +174,53 @@ func TestArguments_UnmarshalRiver(t *testing.T) { require.Equal(t, time.Second, otelArgs.ScraperControllerSettings.InitialDelay) require.Equal(t, 0*time.Second, otelArgs.ScraperControllerSettings.Timeout) - require.Equal(t, true, otelArgs.Metrics.VcenterClusterCPUEffective.Enabled) - require.Equal(t, false, otelArgs.Metrics.VcenterVMMemoryUtilization.Enabled) - require.Equal(t, true, otelArgs.ResourceAttributes.VcenterClusterName.Enabled) + // Verify ResourceAttributesConfig fields + require.True(t, otelArgs.ResourceAttributes.VcenterClusterName.Enabled) + require.True(t, otelArgs.ResourceAttributes.VcenterDatastoreName.Enabled) + require.True(t, otelArgs.ResourceAttributes.VcenterHostName.Enabled) + require.False(t, otelArgs.ResourceAttributes.VcenterResourcePoolInventoryPath.Enabled) + require.True(t, otelArgs.ResourceAttributes.VcenterResourcePoolName.Enabled) + require.True(t, otelArgs.ResourceAttributes.VcenterVMName.Enabled) + require.True(t, otelArgs.ResourceAttributes.VcenterVMID.Enabled) + + // Verify MetricsConfig fields + require.False(t, otelArgs.Metrics.VcenterClusterCPUEffective.Enabled) + require.True(t, otelArgs.Metrics.VcenterClusterCPULimit.Enabled) + require.True(t, otelArgs.Metrics.VcenterClusterHostCount.Enabled) + require.True(t, otelArgs.Metrics.VcenterClusterMemoryEffective.Enabled) + require.True(t, otelArgs.Metrics.VcenterClusterMemoryLimit.Enabled) + require.True(t, otelArgs.Metrics.VcenterClusterMemoryUsed.Enabled) + require.True(t, otelArgs.Metrics.VcenterClusterVMCount.Enabled) + require.True(t, otelArgs.Metrics.VcenterDatastoreDiskUsage.Enabled) + require.True(t, otelArgs.Metrics.VcenterDatastoreDiskUtilization.Enabled) + require.True(t, otelArgs.Metrics.VcenterHostCPUUsage.Enabled) + require.True(t, otelArgs.Metrics.VcenterHostCPUUtilization.Enabled) + require.True(t, otelArgs.Metrics.VcenterHostDiskLatencyAvg.Enabled) + require.True(t, otelArgs.Metrics.VcenterHostDiskLatencyMax.Enabled) + require.True(t, otelArgs.Metrics.VcenterHostDiskThroughput.Enabled) + require.True(t, otelArgs.Metrics.VcenterHostMemoryUsage.Enabled) + require.True(t, otelArgs.Metrics.VcenterHostMemoryUtilization.Enabled) + require.True(t, otelArgs.Metrics.VcenterHostNetworkPacketCount.Enabled) + require.True(t, otelArgs.Metrics.VcenterHostNetworkPacketErrors.Enabled) + require.True(t, otelArgs.Metrics.VcenterHostNetworkThroughput.Enabled) + require.True(t, otelArgs.Metrics.VcenterHostNetworkUsage.Enabled) + require.True(t, otelArgs.Metrics.VcenterResourcePoolCPUShares.Enabled) + require.True(t, otelArgs.Metrics.VcenterResourcePoolCPUUsage.Enabled) + require.True(t, otelArgs.Metrics.VcenterResourcePoolMemoryShares.Enabled) + require.True(t, otelArgs.Metrics.VcenterResourcePoolMemoryUsage.Enabled) + require.True(t, otelArgs.Metrics.VcenterVMCPUUsage.Enabled) + require.True(t, otelArgs.Metrics.VcenterVMCPUUtilization.Enabled) + require.True(t, otelArgs.Metrics.VcenterVMDiskLatencyAvg.Enabled) + require.True(t, otelArgs.Metrics.VcenterVMDiskLatencyMax.Enabled) + require.True(t, otelArgs.Metrics.VcenterVMDiskThroughput.Enabled) + require.True(t, otelArgs.Metrics.VcenterVMDiskUsage.Enabled) + require.True(t, otelArgs.Metrics.VcenterVMDiskUtilization.Enabled) + require.True(t, otelArgs.Metrics.VcenterVMMemoryBallooned.Enabled) + require.True(t, otelArgs.Metrics.VcenterVMMemorySwapped.Enabled) + require.True(t, otelArgs.Metrics.VcenterVMMemorySwappedSsd.Enabled) + require.True(t, otelArgs.Metrics.VcenterVMMemoryUsage.Enabled) + require.False(t, otelArgs.Metrics.VcenterVMMemoryUtilization.Enabled) + require.True(t, otelArgs.Metrics.VcenterVMNetworkPacketCount.Enabled) + require.True(t, otelArgs.Metrics.VcenterVMNetworkThroughput.Enabled) + require.True(t, otelArgs.Metrics.VcenterVMNetworkUsage.Enabled) } diff --git a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md index c5d9ef68563b..2e1f465878e2 100644 --- a/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md +++ b/docs/sources/flow/reference/components/otelcol.receiver.vcenter.md @@ -78,11 +78,15 @@ The following blocks are supported inside the definition of Hierarchy | Block | Description | Required --------- | ----- | ----------- | -------- tls | [tls][] | Configures TLS for the HTTP client. | no +metrics | [metrics][] | Configures which metrics will be sent to downstream components. | no +resource_attributes | [resource_attributes][] | Configures resource attributes for metrics sent to downstream components. | no debug_metrics | [debug_metrics][] | Configures the metrics that this component generates to monitor its state. | no output | [output][] | Configures where to send received telemetry data. | yes [tls]: #tls-block [debug_metrics]: #debug_metrics-block +[metrics]: #metrics-block +[resource_attributes]: #resource_attributes-block [output]: #output-block ### tls block @@ -92,6 +96,80 @@ isn't provided, TLS won't be used for connections to the server. {{< docs/shared lookup="flow/reference/components/otelcol-tls-config-block.md" source="agent" version="" >}} +### metrics block + +Name | Type | Description | Default | Required +---- | ---- | ----------- | ------- | -------- +`vcenter.cluster.cpu.effective` | [metric][] | Enables the `vcenter.cluster.cpu.effective` metric. | `true` | no +`vcenter.cluster.cpu.usage` | [metric][] | Enables the `vcenter.cluster.cpu.usage` metric. | `true` | no +`vcenter.cluster.host.count` | [metric][] | Enables the `vcenter.cluster.host.count` metric. | `true` | no +`vcenter.cluster.memory.effective` | [metric][] | Enables the `vcenter.cluster.memory.effective` metric. | `true` | no +`vcenter.cluster.memory.limit` | [metric][] | Enables the `vcenter.cluster.memory.limit` metric. | `true` | no +`vcenter.cluster.memory.used` | [metric][] | Enables the `vcenter.cluster.memory.used` metric. | `true` | no +`vcenter.cluster.vm.count` | [metric][] | Enables the `vcenter.cluster.vm.count` metric. | `true` | no +`vcenter.datastore.disk.usage` | [metric][] | Enables the `vcenter.datastore.disk.usage` metric. | `true` | no +`vcenter.datastore.disk.utilization` | [metric][] | Enables the `vcenter.datastore.disk.utilization` metric. | `true` | no +`vcenter.host.cpu.usage` | [metric][] | Enables the `vcenter.host.cpu.usage` metric. | `true` | no +`vcenter.host.cpu.utilization` | [metric][] | Enables the `vcenter.host.cpu.utilization` metric. | `true` | no +`vcenter.host.disk.latency.avg` | [metric][] | Enables the `vcenter.host.disk.latency.avg` metric. | `true` | no +`vcenter.host.disk.latency.max` | [metric][] | Enables the `vcenter.host.disk.latency.max` metric. | `true` | no +`vcenter.host.disk.throughput` | [metric][] | Enables the `vcenter.host.disk.throughput` metric. | `true` | no +`vcenter.host.memory.usage` | [metric][] | Enables the `vcenter.host.memory.usage` metric. | `true` | no +`vcenter.host.memory.utilization` | [metric][] | Enables the `vcenter.host.memory.utilization` metric. | `true` | no +`vcenter.host.network.packet.count` | [metric][] | Enables the `vcenter.host.network.packet.count` metric. | `true` | no +`vcenter.host.network.packet.errors` | [metric][] | Enables the `vcenter.host.network.packet.errors` metric. | `true` | no +`vcenter.host.network.throughput` | [metric][] | Enables the `vcenter.host.network.throughput` metric. | `true` | no +`vcenter.host.network.usage` | [metric][] | Enables the `vcenter.host.network.usage` metric. | `true` | no +`vcenter.resource_pool.cpu.shares` | [metric][] | Enables the `vcenter.resource_pool.cpu.shares` metric. | `true` | no +`vcenter.resource_pool.cpu.usage` | [metric][] | Enables the `vcenter.resource_pool.cpu.usage` metric. | `true` | no +`vcenter.resource_pool.memory.shares` | [metric][] | Enables the `vcenter.resource_pool.memory.shares` metric. | `true` | no +`vcenter.resource_pool.memory.usage` | [metric][] | Enables the `vcenter.resource_pool.memory.usage` metric. | `true` | no +`vcenter.vm.cpu.usage` | [metric][] | Enables the `vcenter.vm.cpu.usage` metric. | `true` | no +`vcenter.vm.cpu.utilization` | [metric][] | Enables the `vcenter.vm.cpu.utilization` metric. | `true` | no +`vcenter.vm.disk.latency.avg` | [metric][] | Enables the `vcenter.vm.disk.latency.avg` metric. | `true` | no +`vcenter.vm.disk.latency.max` | [metric][] | Enables the `vcenter.vm.disk.latency.max` metric. | `true` | no +`vcenter.vm.disk.throughput` | [metric][] | Enables the `vcenter.vm.disk.throughput` metric. | `true` | no +`vcenter.vm.disk.usage` | [metric][] | Enables the `vcenter.vm.disk.usage` metric. | `true` | no +`vcenter.vm.disk.utilization` | [metric][] | Enables the `vcenter.vm.disk.utilization` metric. | `true` | no +`vcenter.vm.memory.ballooned` | [metric][] | Enables the `vcenter.vm.memory.ballooned` metric. | `true` | no +`vcenter.vm.memory.swapped` | [metric][] | Enables the `vcenter.vm.memory.swapped` metric. | `true` | no +`vcenter.vm.memory.swapped_ssd` | [metric][] | Enables the `vcenter.vm.memory.swapped_ssd` metric. | `true` | no +`vcenter.vm.memory.usage` | [metric][] | Enables the `vcenter.vm.memory.usage` metric. | `true` | no +`vcenter.vm.memory.utilization` | [metric][] | Enables the `vcenter.vm.memory.utilization` metric. | `false` | no +`vcenter.vm.network.packet.count` | [metric][] | Enables the `vcenter.vm.network.packet.count` metric. | `true` | no +`vcenter.vm.network.throughput` | [metric][] | Enables the `vcenter.vm.network.throughput` metric. | `true` | no +`vcenter.vm.network.usage` | [metric][] | Enables the `vcenter.vm.network.usage` metric. | `true` | no + +[metric]: #metric-block + +#### metric block + +Name | Type | Description | Default | Required +---- | ---- | ----------- | ------- | -------- +`enabled` | `boolean` | Whether to enable the metric. | `true` | no + + +### resource_attributes block + +Name | Type | Description | Default | Required +---- | ---- | ----------- | ------- | -------- +`vcenter.cluster.name` | [resource_attribute][] | Enables the `vcenter.cluster.name` resource attribute. | `true` | no +`vcenter.datastore.name` | [resource_attribute][] | Enables the `vcenter.cluster.resource_pool` resource attribute. | `true` | no +`vcenter.host.name` | [resource_attribute][] | Enables the `vcenter.host.name` resource attribute. | `true` | no +`vcenter.resource_pool.inventory_path` | [resource_attribute][] | Enables the `vcenter.resource_pool.inventory_path` resource attribute. | `true` | no +`vcenter.resource_pool.name` | [resource_attribute][] | Enables the `vcenter.resource_pool.name` resource attribute. | `true` | no +`vcenter.vm.id` | [resource_attribute][] | Enables the `vcenter.vm.id` resource attribute. | `true` | no +`vcenter.vm.name` | [resource_attribute][] | Enables the `vcenter.vm.name` resource attribute. | `true` | no + +[resource_attribute]: #resource_attribute-block + +#### resource_attribute block + +Name | Type | Description | Default | Required +---- | ---- | ----------- | ------- | -------- +`enabled` | `boolean` | Whether to enable the resource attribute. | `true` | no + + ### debug_metrics block {{< docs/shared lookup="flow/reference/components/otelcol-debug-metrics-block.md" source="agent" version="" >}} From 4681f0c543752ae4d7b02a5bd4e351a0dee64bbf Mon Sep 17 00:00:00 2001 From: Robert Fratto Date: Tue, 21 Nov 2023 08:35:21 -0500 Subject: [PATCH 047/166] misc: prepare for the v0.38.0 release (#5826) --- CHANGELOG.md | 25 +++++++++------------ docs/sources/_index.md | 2 +- pkg/operator/defaults.go | 2 +- tools/gen-versioned-files/agent-version.txt | 2 +- 4 files changed, 13 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2da23f2e9b75..78652c614c94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,21 +10,8 @@ internal API changes are not present. Main (unreleased) ----------------- -v0.38.0-rc.1 (2023-11-20) -------------------------- - -### Enhancements - -- Allow agent to start with `module.git` config if cached before. (@hainenber) - -### Bugfixes - -- Fix default configuration file `grafana-agent-flow.river` used in downstream packages. (@bricewge) - -- Fix converter output for prometheus.exporter.windows to not unnecessarily add empty blocks. (@erikbaranowski) - -v0.38.0-rc.0 (2023-11-16) -------------------------- +v0.38.0 (2023-11-21) +-------------------- ### Breaking changes @@ -119,6 +106,8 @@ v0.38.0-rc.0 (2023-11-16) - Updated windows exporter to use prometheus-community/windows_exporter commit 1836cd1. (@mattdurham) +- Allow agent to start with `module.git` config if cached before. (@hainenber) + ### Bugfixes - Set exit code 1 on grafana-agentctl non-runnable command. (@fgouteroux) @@ -170,6 +159,12 @@ v0.38.0-rc.0 (2023-11-16) - Added Kubernetes service resolver to static node's loadbalancing exporter and to Flow's `otelcol.exporter.loadbalancing`. (@ptodev) +- Fix default configuration file `grafana-agent-flow.river` used in downstream + packages. (@bricewge) + +- Fix converter output for prometheus.exporter.windows to not unnecessarily add + empty blocks. (@erikbaranowski) + ### Other changes - Bump `mysqld_exporter` version to v0.15.0. (@marctc) diff --git a/docs/sources/_index.md b/docs/sources/_index.md index 15df6d9c3174..f744311514c5 100644 --- a/docs/sources/_index.md +++ b/docs/sources/_index.md @@ -9,7 +9,7 @@ title: Grafana Agent description: Grafana Agent is a flexible, performant, vendor-neutral, telemetry collector weight: 350 cascade: - AGENT_RELEASE: v0.38.0-rc.1 + AGENT_RELEASE: v0.38.0 OTEL_VERSION: v0.87.0 --- diff --git a/pkg/operator/defaults.go b/pkg/operator/defaults.go index 27d19feb218d..72aa6b12d6a3 100644 --- a/pkg/operator/defaults.go +++ b/pkg/operator/defaults.go @@ -2,7 +2,7 @@ package operator // Supported versions of the Grafana Agent. var ( - DefaultAgentVersion = "v0.38.0-rc.1" + DefaultAgentVersion = "v0.38.0" DefaultAgentBaseImage = "grafana/agent" DefaultAgentImage = DefaultAgentBaseImage + ":" + DefaultAgentVersion ) diff --git a/tools/gen-versioned-files/agent-version.txt b/tools/gen-versioned-files/agent-version.txt index 840190248a93..765098dc40e9 100644 --- a/tools/gen-versioned-files/agent-version.txt +++ b/tools/gen-versioned-files/agent-version.txt @@ -1 +1 @@ -v0.38.0-rc.1 +v0.38.0 From f1871dfd2a0acf5832d5f9d4aa155be34705b529 Mon Sep 17 00:00:00 2001 From: Robert Fratto Date: Tue, 21 Nov 2023 09:34:11 -0500 Subject: [PATCH 048/166] helm: update chart to use Grafana Agent v0.38.0 (#5830) --- operations/helm/charts/grafana-agent/CHANGELOG.md | 7 ++++++- operations/helm/charts/grafana-agent/Chart.yaml | 4 ++-- operations/helm/charts/grafana-agent/README.md | 2 +- .../grafana-agent/templates/controllers/statefulset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/deployment.yaml | 2 +- .../grafana-agent/templates/controllers/deployment.yaml | 2 +- .../grafana-agent/templates/controllers/statefulset.yaml | 2 +- .../grafana-agent/templates/controllers/statefulset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- .../grafana-agent/templates/controllers/daemonset.yaml | 2 +- 26 files changed, 32 insertions(+), 27 deletions(-) diff --git a/operations/helm/charts/grafana-agent/CHANGELOG.md b/operations/helm/charts/grafana-agent/CHANGELOG.md index 6b82c54edf9d..a664b5ef6598 100644 --- a/operations/helm/charts/grafana-agent/CHANGELOG.md +++ b/operations/helm/charts/grafana-agent/CHANGELOG.md @@ -10,11 +10,16 @@ internal API changes are not present. Unreleased ---------- +0.28.0 (2023-11-21) +------------------- + ### Enhancements -- Ensure that `app.kubernetes.io/version` label accounts for any +- Ensure that `app.kubernetes.io/version` label accounts for any image tag overrides supplied to the chart Values. (@tristanburgess) +- Update Grafana Agent version to v0.38.0. (@rfratto) + 0.27.2 (2023-11-07) ---------- diff --git a/operations/helm/charts/grafana-agent/Chart.yaml b/operations/helm/charts/grafana-agent/Chart.yaml index d73883aeae7d..935664274889 100644 --- a/operations/helm/charts/grafana-agent/Chart.yaml +++ b/operations/helm/charts/grafana-agent/Chart.yaml @@ -2,8 +2,8 @@ apiVersion: v2 name: grafana-agent description: 'Grafana Agent' type: application -version: 0.27.2 -appVersion: 'v0.37.4' +version: 0.28.0 +appVersion: 'v0.38.0' dependencies: - name: crds diff --git a/operations/helm/charts/grafana-agent/README.md b/operations/helm/charts/grafana-agent/README.md index f85c05a0b40b..d3e17c822582 100644 --- a/operations/helm/charts/grafana-agent/README.md +++ b/operations/helm/charts/grafana-agent/README.md @@ -1,6 +1,6 @@ # Grafana Agent Helm chart -![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![Version: 0.27.2](https://img.shields.io/badge/Version-0.27.2-informational?style=flat-square) ![AppVersion: v0.37.4](https://img.shields.io/badge/AppVersion-v0.37.4-informational?style=flat-square) +![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![Version: 0.28.0](https://img.shields.io/badge/Version-0.28.0-informational?style=flat-square) ![AppVersion: v0.38.0](https://img.shields.io/badge/AppVersion-v0.38.0-informational?style=flat-square) Helm chart for deploying [Grafana Agent][] to Kubernetes. diff --git a/operations/helm/tests/clustering/grafana-agent/templates/controllers/statefulset.yaml b/operations/helm/tests/clustering/grafana-agent/templates/controllers/statefulset.yaml index 69354494639f..ff1d21ceba8a 100644 --- a/operations/helm/tests/clustering/grafana-agent/templates/controllers/statefulset.yaml +++ b/operations/helm/tests/clustering/grafana-agent/templates/controllers/statefulset.yaml @@ -28,7 +28,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/controller-volumes-extra/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/controller-volumes-extra/grafana-agent/templates/controllers/daemonset.yaml index de0c1e307bc6..e89c55f50d58 100644 --- a/operations/helm/tests/controller-volumes-extra/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/controller-volumes-extra/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/create-daemonset-hostnetwork/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/create-daemonset-hostnetwork/grafana-agent/templates/controllers/daemonset.yaml index 0921197e38ef..a35f7494f9d3 100644 --- a/operations/helm/tests/create-daemonset-hostnetwork/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/create-daemonset-hostnetwork/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/create-daemonset/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/create-daemonset/grafana-agent/templates/controllers/daemonset.yaml index 640801c35de4..a116d5a38f58 100644 --- a/operations/helm/tests/create-daemonset/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/create-daemonset/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/create-deployment-autoscaling/grafana-agent/templates/controllers/deployment.yaml b/operations/helm/tests/create-deployment-autoscaling/grafana-agent/templates/controllers/deployment.yaml index c5383a670125..78fc02f1d2fa 100644 --- a/operations/helm/tests/create-deployment-autoscaling/grafana-agent/templates/controllers/deployment.yaml +++ b/operations/helm/tests/create-deployment-autoscaling/grafana-agent/templates/controllers/deployment.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/create-deployment/grafana-agent/templates/controllers/deployment.yaml b/operations/helm/tests/create-deployment/grafana-agent/templates/controllers/deployment.yaml index 37fcf8fc0dc6..03b2aded2fe9 100644 --- a/operations/helm/tests/create-deployment/grafana-agent/templates/controllers/deployment.yaml +++ b/operations/helm/tests/create-deployment/grafana-agent/templates/controllers/deployment.yaml @@ -26,7 +26,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/create-statefulset-autoscaling/grafana-agent/templates/controllers/statefulset.yaml b/operations/helm/tests/create-statefulset-autoscaling/grafana-agent/templates/controllers/statefulset.yaml index bc9d31d9cf75..5a207ec50a7c 100644 --- a/operations/helm/tests/create-statefulset-autoscaling/grafana-agent/templates/controllers/statefulset.yaml +++ b/operations/helm/tests/create-statefulset-autoscaling/grafana-agent/templates/controllers/statefulset.yaml @@ -27,7 +27,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/create-statefulset/grafana-agent/templates/controllers/statefulset.yaml b/operations/helm/tests/create-statefulset/grafana-agent/templates/controllers/statefulset.yaml index 7a641636bc13..b5098dfc5a4c 100644 --- a/operations/helm/tests/create-statefulset/grafana-agent/templates/controllers/statefulset.yaml +++ b/operations/helm/tests/create-statefulset/grafana-agent/templates/controllers/statefulset.yaml @@ -28,7 +28,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/custom-config/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/custom-config/grafana-agent/templates/controllers/daemonset.yaml index 640801c35de4..a116d5a38f58 100644 --- a/operations/helm/tests/custom-config/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/custom-config/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/default-values/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/default-values/grafana-agent/templates/controllers/daemonset.yaml index 640801c35de4..a116d5a38f58 100644 --- a/operations/helm/tests/default-values/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/default-values/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/enable-servicemonitor/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/enable-servicemonitor/grafana-agent/templates/controllers/daemonset.yaml index 640801c35de4..a116d5a38f58 100644 --- a/operations/helm/tests/enable-servicemonitor/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/enable-servicemonitor/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/envFrom/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/envFrom/grafana-agent/templates/controllers/daemonset.yaml index ab153416d599..6b3cb1de8285 100644 --- a/operations/helm/tests/envFrom/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/envFrom/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/existing-config/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/existing-config/grafana-agent/templates/controllers/daemonset.yaml index 39cf2262d661..77603a03b875 100644 --- a/operations/helm/tests/existing-config/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/existing-config/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/extra-env/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/extra-env/grafana-agent/templates/controllers/daemonset.yaml index 2b4663c47d86..b10a389bb354 100644 --- a/operations/helm/tests/extra-env/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/extra-env/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/extra-ports/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/extra-ports/grafana-agent/templates/controllers/daemonset.yaml index 388eb68a16eb..6c7a61831ea4 100644 --- a/operations/helm/tests/extra-ports/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/extra-ports/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/faro-ingress/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/faro-ingress/grafana-agent/templates/controllers/daemonset.yaml index 840b64e244cd..941f0eacc25b 100644 --- a/operations/helm/tests/faro-ingress/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/faro-ingress/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/global-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/global-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml index 93e08d06f66b..45278301718f 100644 --- a/operations/helm/tests/global-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/global-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml @@ -30,7 +30,7 @@ spec: - name: global-cred containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/global-image-registry/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/global-image-registry/grafana-agent/templates/controllers/daemonset.yaml index 83d83473d371..e5fe82219698 100644 --- a/operations/helm/tests/global-image-registry/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/global-image-registry/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: quay.io/grafana/agent:v0.37.4 + image: quay.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/initcontainers/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/initcontainers/grafana-agent/templates/controllers/daemonset.yaml index dea955f56900..2d4dfe42438b 100644 --- a/operations/helm/tests/initcontainers/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/initcontainers/grafana-agent/templates/controllers/daemonset.yaml @@ -43,7 +43,7 @@ spec: name: geoip containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/local-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/local-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml index 8be0679577ea..0c2770ce63f5 100644 --- a/operations/helm/tests/local-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/local-image-pullsecrets/grafana-agent/templates/controllers/daemonset.yaml @@ -27,7 +27,7 @@ spec: - name: local-cred containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/local-image-registry/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/local-image-registry/grafana-agent/templates/controllers/daemonset.yaml index 83d83473d371..e5fe82219698 100644 --- a/operations/helm/tests/local-image-registry/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/local-image-registry/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: quay.io/grafana/agent:v0.37.4 + image: quay.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/nodeselectors-and-tolerations/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/nodeselectors-and-tolerations/grafana-agent/templates/controllers/daemonset.yaml index a9d14c8e2d29..8002413ce8f4 100644 --- a/operations/helm/tests/nodeselectors-and-tolerations/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/nodeselectors-and-tolerations/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - run diff --git a/operations/helm/tests/static-mode/grafana-agent/templates/controllers/daemonset.yaml b/operations/helm/tests/static-mode/grafana-agent/templates/controllers/daemonset.yaml index 5fc4e67fd107..0b53a3db5e3f 100644 --- a/operations/helm/tests/static-mode/grafana-agent/templates/controllers/daemonset.yaml +++ b/operations/helm/tests/static-mode/grafana-agent/templates/controllers/daemonset.yaml @@ -25,7 +25,7 @@ spec: serviceAccountName: grafana-agent containers: - name: grafana-agent - image: docker.io/grafana/agent:v0.37.4 + image: docker.io/grafana/agent:v0.38.0 imagePullPolicy: IfNotPresent args: - -config.file=/etc/agent/config.yaml From cc7cb3716ed4106326bb064882ee235694cbf9b2 Mon Sep 17 00:00:00 2001 From: Cedric Ziel Date: Wed, 22 Nov 2023 12:23:26 +0100 Subject: [PATCH 049/166] Allow x-faro-session-id header for faro receiver (#5835) --- component/faro/receiver/handler.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component/faro/receiver/handler.go b/component/faro/receiver/handler.go index fb8511e0bbde..636f00859e2b 100644 --- a/component/faro/receiver/handler.go +++ b/component/faro/receiver/handler.go @@ -69,7 +69,7 @@ func (h *handler) Update(args ServerArguments) { if len(args.CORSAllowedOrigins) > 0 { h.cors = cors.New(cors.Options{ AllowedOrigins: args.CORSAllowedOrigins, - AllowedHeaders: []string{apiKeyHeader, "content-type"}, + AllowedHeaders: []string{apiKeyHeader, "content-type", "x-faro-session-id"}, }) } else { h.cors = nil // Disable cors. From 7da5726b2794dcc10d5330ce976dd53a21313a12 Mon Sep 17 00:00:00 2001 From: Robert Fratto Date: Wed, 22 Nov 2023 09:04:47 -0500 Subject: [PATCH 050/166] misc: follow up on #5835 (#5837) * Add missing CHANGELOG entry * Mirror fix to static mode --- CHANGELOG.md | 6 ++++++ pkg/integrations/v2/app_agent_receiver/handler.go | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 78652c614c94..8203fedb4b5f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,12 @@ internal API changes are not present. Main (unreleased) ----------------- +### Bugfixes + +- Permit `X-Faro-Session-ID` header in CORS requests for the `faro.receiver` + component (flow mode) and the `app_agent_receiver` integration (static mode). + (@cedricziel) + v0.38.0 (2023-11-21) -------------------- diff --git a/pkg/integrations/v2/app_agent_receiver/handler.go b/pkg/integrations/v2/app_agent_receiver/handler.go index 6831885cb51b..c430e9099312 100644 --- a/pkg/integrations/v2/app_agent_receiver/handler.go +++ b/pkg/integrations/v2/app_agent_receiver/handler.go @@ -117,7 +117,7 @@ func (ar *AppAgentReceiverHandler) HTTPHandler(logger log.Logger) http.Handler { if len(ar.config.Server.CORSAllowedOrigins) > 0 { c := cors.New(cors.Options{ AllowedOrigins: ar.config.Server.CORSAllowedOrigins, - AllowedHeaders: []string{apiKeyHeader, "content-type"}, + AllowedHeaders: []string{apiKeyHeader, "content-type", "x-faro-session-id"}, }) handler = c.Handler(handler) } From d388f94a6bce953895dc5a61e6882f092fb198b8 Mon Sep 17 00:00:00 2001 From: Jorge Creixell Date: Wed, 22 Nov 2023 18:24:20 +0100 Subject: [PATCH 051/166] Agent Management: Introduce support for template variables (#5788) * Agent Management: Introduce support for template variables - This change allows managing template variables for remote configuration on a per-agent basis. - Both base configurations and snippets can be interpreted as templates and evaluated at load time with the provided template variables. - Templates must follow go's `text/template` syntax. - This greatly increases the flexibility and reusability of snippets. - Template evaluation has been tested in different scenarios and seems really robust. If the variables defined in the template cannot be resolved (even nested ones), and empty string is rendered instead. - Note: templates are only evaluated when the `template_variables` field within the `agent_metadata` remote config field is non-empty. - Note: this feature only applies to static mode. * Improve naming * Check error for template execution * Add tests - Tests different scenarios, including: - Referencing non existing nested objects - Conditionals - Ranges - Character escaping * Update CHANGELOG * Always evaluate templates - This is required because certain agents might start before their labels are synced. If some of the snippets assigned to them contain template variables, loading the config will fail. * Add test for template inside a template - Templates inside templates must be escaped using backticks to avoid them being evaluated by the snippet template execution * Move feature to the next release in CHANGELOG * Document templating functionality * Fix doc --- CHANGELOG.md | 4 + .../static/configuration/agent-management.md | 7 +- .../agent_management_remote_config_test.go | 77 +++++++++++++++++++ pkg/config/agentmanagement_remote_config.go | 39 ++++++++-- 4 files changed, 121 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8203fedb4b5f..37b204161473 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,10 @@ internal API changes are not present. Main (unreleased) ----------------- +### Features + +- Agent Management: Introduce support for templated configuration. (@jcreixell) + ### Bugfixes - Permit `X-Faro-Session-ID` header in CORS requests for the `faro.receiver` diff --git a/docs/sources/static/configuration/agent-management.md b/docs/sources/static/configuration/agent-management.md index 0feb5c78def1..af327bb17b6e 100644 --- a/docs/sources/static/configuration/agent-management.md +++ b/docs/sources/static/configuration/agent-management.md @@ -123,7 +123,6 @@ selector: > **Note:** Snippet selection is currently done in the API server. This behaviour is subject to change in the future. - ### Example response body ```yaml @@ -164,3 +163,9 @@ snippets: os: linux app: app1 ``` + +> **Note:** Base configurations and snippets can contain go's [text/template](https://pkg.go.dev/text/template) actions. If you need preserve the literal value of a template action, you can escape it using backticks. For example: + +``` +{{ `{{ .template_var }}` }} +``` diff --git a/pkg/config/agent_management_remote_config_test.go b/pkg/config/agent_management_remote_config_test.go index af97bd70190a..834375bda3ce 100644 --- a/pkg/config/agent_management_remote_config_test.go +++ b/pkg/config/agent_management_remote_config_test.go @@ -4,6 +4,7 @@ import ( "testing" "time" + process_exporter "github.com/grafana/agent/pkg/integrations/process_exporter" "github.com/grafana/agent/pkg/metrics/instance" "github.com/prometheus/common/model" "github.com/prometheus/prometheus/model/labels" @@ -182,6 +183,82 @@ integration_configs: require.Equal(t, 5*time.Second, c.Integrations.ConfigV1.IntegrationRestartBackoff) }) + t.Run("template variables provided", func(t *testing.T) { + baseConfig := ` +server: + log_level: {{.log_level}} +` + templateInsideTemplate := "`{{ .template_inside_template }}`" + snippet := Snippet{ + Config: ` +integration_configs: + process_exporter: + enabled: true + process_names: + - name: "grafana-agent" + cmdline: + - 'grafana-agent' + - name: "{{.nonexistent.foo.bar.baz.bat}}" + cmdline: + - "{{ ` + templateInsideTemplate + ` }}" + # Custom process monitors + {{- range $key, $value := .process_exporter_processes }} + - name: "{{ $value.name }}" + cmdline: + - "{{ $value.cmdline }}" + {{if $value.exe}} + exe: + - "{{ $value.exe }}" + {{end}} + {{- end }} +`, + } + + rc := RemoteConfig{ + BaseConfig: BaseConfigContent(baseConfig), + Snippets: []Snippet{snippet}, + AgentMetadata: AgentMetadata{ + TemplateVariables: map[string]any{ + "log_level": "debug", + "process_exporter_processes": []map[string]string{ + { + "name": "java_processes", + "cmdline": ".*/java", + }, + { + "name": "{{.ExeFull}}:{{.Matches.Cfgfile}}", + "cmdline": `-config.path\\s+(?P\\S+)`, + "exe": "/usr/local/bin/process-exporter", + }, + }, + }, + }, + } + + c, err := rc.BuildAgentConfig() + require.NoError(t, err) + require.Equal(t, 1, len(c.Integrations.ConfigV1.Integrations)) + processExporterConfig := c.Integrations.ConfigV1.Integrations[0].Config.(*process_exporter.Config) + + require.Equal(t, 4, len(processExporterConfig.ProcessExporter)) + + require.Equal(t, "grafana-agent", processExporterConfig.ProcessExporter[0].Name) + require.Equal(t, "grafana-agent", processExporterConfig.ProcessExporter[0].CmdlineRules[0]) + require.Equal(t, 0, len(processExporterConfig.ProcessExporter[0].ExeRules)) + + require.Equal(t, "", processExporterConfig.ProcessExporter[1].Name) + require.Equal(t, "{{ .template_inside_template }}", processExporterConfig.ProcessExporter[1].CmdlineRules[0]) + require.Equal(t, 0, len(processExporterConfig.ProcessExporter[1].ExeRules)) + + require.Equal(t, "java_processes", processExporterConfig.ProcessExporter[2].Name) + require.Equal(t, ".*/java", processExporterConfig.ProcessExporter[2].CmdlineRules[0]) + require.Equal(t, 0, len(processExporterConfig.ProcessExporter[2].ExeRules)) + + require.Equal(t, "{{.ExeFull}}:{{.Matches.Cfgfile}}", processExporterConfig.ProcessExporter[3].Name) + require.Equal(t, `-config.path\s+(?P\S+)`, processExporterConfig.ProcessExporter[3].CmdlineRules[0]) + require.Equal(t, "/usr/local/bin/process-exporter", processExporterConfig.ProcessExporter[3].ExeRules[0]) + }) + t.Run("no external labels provided", func(t *testing.T) { rc := RemoteConfig{ BaseConfig: BaseConfigContent(baseConfig), diff --git a/pkg/config/agentmanagement_remote_config.go b/pkg/config/agentmanagement_remote_config.go index c1f87615930d..8b5093861381 100644 --- a/pkg/config/agentmanagement_remote_config.go +++ b/pkg/config/agentmanagement_remote_config.go @@ -1,6 +1,9 @@ package config import ( + "bytes" + "text/template" + "github.com/grafana/agent/pkg/integrations" "github.com/grafana/agent/pkg/logs" "github.com/grafana/agent/pkg/metrics/instance" @@ -28,7 +31,8 @@ type ( } AgentMetadata struct { - ExternalLabels map[string]string `json:"external_labels,omitempty" yaml:"external_labels,omitempty"` + ExternalLabels map[string]string `json:"external_labels,omitempty" yaml:"external_labels,omitempty"` + TemplateVariables map[string]any `json:"template_variables,omitempty" yaml:"template_variables,omitempty"` } // SnippetContent defines the internal structure of a snippet configuration. @@ -55,8 +59,13 @@ func NewRemoteConfig(buf []byte) (*RemoteConfig, error) { // BuildAgentConfig builds an agent configuration from a base config and a list of snippets func (rc *RemoteConfig) BuildAgentConfig() (*Config, error) { + baseConfig, err := evaluateTemplate(string(rc.BaseConfig), rc.AgentMetadata.TemplateVariables) + if err != nil { + return nil, err + } + c := DefaultConfig() - err := yaml.Unmarshal([]byte(rc.BaseConfig), &c) + err = yaml.Unmarshal([]byte(baseConfig), &c) if err != nil { return nil, err } @@ -66,7 +75,7 @@ func (rc *RemoteConfig) BuildAgentConfig() (*Config, error) { return nil, err } - err = appendSnippets(&c, rc.Snippets) + err = appendSnippets(&c, rc.Snippets, rc.AgentMetadata.TemplateVariables) if err != nil { return nil, err } @@ -74,7 +83,7 @@ func (rc *RemoteConfig) BuildAgentConfig() (*Config, error) { return &c, nil } -func appendSnippets(c *Config, snippets []Snippet) error { +func appendSnippets(c *Config, snippets []Snippet, templateVars map[string]any) error { metricsConfigs := instance.DefaultConfig metricsConfigs.Name = "snippets" logsConfigs := logs.InstanceConfig{ @@ -91,8 +100,13 @@ func appendSnippets(c *Config, snippets []Snippet) error { } for _, snippet := range snippets { + snippetConfig, err := evaluateTemplate(snippet.Config, templateVars) + if err != nil { + return err + } + var snippetContent SnippetContent - err := yaml.Unmarshal([]byte(snippet.Config), &snippetContent) + err = yaml.Unmarshal([]byte(snippetConfig), &snippetContent) if err != nil { return err } @@ -148,3 +162,18 @@ func appendExternalLabels(c *Config, externalLabels map[string]string) { c.Logs.Global.ClientConfigs[i].ExternalLabels.LabelSet = logsExternalLabels.Merge(cc.ExternalLabels.LabelSet) } } + +func evaluateTemplate(config string, templateVariables map[string]any) (string, error) { + tpl, err := template.New("config").Parse(config) + if err != nil { + return "", err + } + + var buf bytes.Buffer + err = tpl.Execute(&buf, templateVariables) + if err != nil { + return "", err + } + + return buf.String(), nil +} From 8f5a8aa9f2c0062486c5a3ac45f40b8536a75c26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Otto=20Kr=C3=B6pke?= Date: Wed, 22 Nov 2023 21:58:11 +0100 Subject: [PATCH 052/166] Flow Windows service: Support environment variables (#5762) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Implement windows service environment variabls Signed-off-by: Jan-Otto Kröpke * Changelog Signed-off-by: Jan-Otto Kröpke * Add NSIS argument * Always override Environment, since its an expected user input Signed-off-by: Jan-Otto Kröpke * Update cmd/grafana-agent-service/config_windows.go Co-authored-by: Robert Fratto * Update cmd/grafana-agent-service/config_windows.go * Update docs/sources/flow/setup/install/windows.md Co-authored-by: Clayton Cornell <131809008+clayton-cornell@users.noreply.github.com> * Update CHANGELOG.md --------- Signed-off-by: Jan-Otto Kröpke Co-authored-by: mattdurham Co-authored-by: Robert Fratto Co-authored-by: Clayton Cornell <131809008+clayton-cornell@users.noreply.github.com> --- CHANGELOG.md | 4 ++++ cmd/grafana-agent-service/config_windows.go | 11 +++++++++++ cmd/grafana-agent-service/main_windows.go | 7 ++++--- cmd/grafana-agent-service/service.go | 5 +++++ cmd/grafana-agent-service/service_test.go | 11 +++++++++-- cmd/grafana-agent-service/testdata/example_service.go | 4 ++++ docs/sources/flow/setup/install/windows.md | 8 ++++++++ .../grafana-agent-flow/windows/install_script.nsis | 7 +++++++ 8 files changed, 52 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 37b204161473..67478fd28990 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,10 @@ Main (unreleased) - Agent Management: Introduce support for templated configuration. (@jcreixell) +### Enhancements + +- Flow Windows service: Support environment variables. (@jkroepke) + ### Bugfixes - Permit `X-Faro-Session-ID` header in CORS requests for the `faro.receiver` diff --git a/cmd/grafana-agent-service/config_windows.go b/cmd/grafana-agent-service/config_windows.go index 961e95ad5e51..e4d712585986 100644 --- a/cmd/grafana-agent-service/config_windows.go +++ b/cmd/grafana-agent-service/config_windows.go @@ -16,6 +16,11 @@ type config struct { // not included. Args []string + // Environment holds environment variables for the Grafana Agent service. + // Each item represents an environment variable in form "key=value". + // All environments variables from the current process with be merged into Environment + Environment []string + // WorkingDirectory points to the working directory to run the Grafana Agent // binary from. WorkingDirectory string @@ -42,9 +47,15 @@ func loadConfig() (*config, error) { return nil, fmt.Errorf("failed to retrieve key Arguments: %w", err) } + env, _, err := agentKey.GetStringsValue("Environment") + if err != nil { + return nil, fmt.Errorf("failed to retrieve key Environment: %w", err) + } + return &config{ ServicePath: servicePath, Args: args, + Environment: env, WorkingDirectory: filepath.Dir(servicePath), }, nil } diff --git a/cmd/grafana-agent-service/main_windows.go b/cmd/grafana-agent-service/main_windows.go index f3660f73e7cc..a94a71228516 100644 --- a/cmd/grafana-agent-service/main_windows.go +++ b/cmd/grafana-agent-service/main_windows.go @@ -29,9 +29,10 @@ func main() { } cfg := serviceManagerConfig{ - Path: managerConfig.ServicePath, - Args: managerConfig.Args, - Dir: managerConfig.WorkingDirectory, + Path: managerConfig.ServicePath, + Args: managerConfig.Args, + Environment: managerConfig.Environment, + Dir: managerConfig.WorkingDirectory, // Send logs directly to the event logger. Stdout: logger, diff --git a/cmd/grafana-agent-service/service.go b/cmd/grafana-agent-service/service.go index 10060e19cc28..c302a98a1a36 100644 --- a/cmd/grafana-agent-service/service.go +++ b/cmd/grafana-agent-service/service.go @@ -24,6 +24,9 @@ type serviceManagerConfig struct { // Args of the binary to run, not including the command itself. Args []string + // Environment of the binary to run, including the command environment itself. + Environment []string + // Dir specifies the working directory to run the binary from. If Dir is // empty, the working directory of the current process is used. Dir string @@ -84,5 +87,7 @@ func (svc *serviceManager) buildCommand(ctx context.Context) *exec.Cmd { cmd.Dir = svc.cfg.Dir cmd.Stdout = svc.cfg.Stdout cmd.Stderr = svc.cfg.Stderr + cmd.Env = os.Environ() + cmd.Env = append(cmd.Env, svc.cfg.Environment...) return cmd } diff --git a/cmd/grafana-agent-service/service_test.go b/cmd/grafana-agent-service/service_test.go index d6389132071b..a1d3124b034c 100644 --- a/cmd/grafana-agent-service/service_test.go +++ b/cmd/grafana-agent-service/service_test.go @@ -30,8 +30,9 @@ func Test_serviceManager(t *testing.T) { listenHost := getListenHost(t) mgr := newServiceManager(l, serviceManagerConfig{ - Path: serviceBinary, - Args: []string{"-listen-addr", listenHost}, + Path: serviceBinary, + Args: []string{"-listen-addr", listenHost}, + Environment: []string{"LISTEN=" + listenHost}, }) go mgr.Run(componenttest.TestContext(t)) @@ -40,6 +41,12 @@ func Test_serviceManager(t *testing.T) { require.NoError(t, err) require.Equal(t, []byte("Hello, world!"), resp) }) + + util.Eventually(t, func(t require.TestingT) { + resp, err := makeServiceRequest(listenHost, "/echo/env", nil) + require.NoError(t, err) + require.Contains(t, string(resp), "LISTEN="+listenHost) + }) }) t.Run("terminates service binary", func(t *testing.T) { diff --git a/cmd/grafana-agent-service/testdata/example_service.go b/cmd/grafana-agent-service/testdata/example_service.go index ff11e61dfd85..64808b1b8608 100644 --- a/cmd/grafana-agent-service/testdata/example_service.go +++ b/cmd/grafana-agent-service/testdata/example_service.go @@ -7,6 +7,7 @@ import ( "net" "net/http" "os" + "strings" ) func main() { @@ -46,6 +47,9 @@ func run() error { mux.HandleFunc("/echo/response", func(w http.ResponseWriter, r *http.Request) { _, _ = io.Copy(w, r.Body) }) + mux.HandleFunc("/echo/env", func(w http.ResponseWriter, r *http.Request) { + _, _ = w.Write([]byte(strings.Join(os.Environ(), "\n"))) + }) srv := &http.Server{Handler: mux} _ = srv.Serve(lis) diff --git a/docs/sources/flow/setup/install/windows.md b/docs/sources/flow/setup/install/windows.md index 84b0607e139b..f9106e5f936f 100644 --- a/docs/sources/flow/setup/install/windows.md +++ b/docs/sources/flow/setup/install/windows.md @@ -57,6 +57,14 @@ To do a silent install of Grafana Agent on Windows, perform the following steps. * `/CONFIG=` Path to the configuration file. Default: `$INSTDIR\config.river` * `/DISABLEREPORTING=` Disable [data collection][]. Default: `no` * `/DISABLEPROFILING=` Disable profiling endpoint. Default: `no` +* `/ENVIRONMENT="KEY=VALUE\0KEY2=VALUE2"` Define environment variables for Windows Service. Default: `` + +## Service Configuration + +Grafana Agent uses the Windows Registry `HKLM\Software\Grafana\Grafana Agent Flow` for service configuration. + +* `Arguments` (Type `REG_MULTI_SZ`) Each value represents a binary argument for grafana-agent-flow binary. +* `Environment` (Type `REG_MULTI_SZ`) Each value represents a environment value `KEY=VALUE` for grafana-agent-flow binary. ## Uninstall diff --git a/packaging/grafana-agent-flow/windows/install_script.nsis b/packaging/grafana-agent-flow/windows/install_script.nsis index 19f3fc6cd668..011e6b59c121 100644 --- a/packaging/grafana-agent-flow/windows/install_script.nsis +++ b/packaging/grafana-agent-flow/windows/install_script.nsis @@ -31,6 +31,7 @@ OutFile "${OUT}" Var PassedInParameters Var Config Var ConfigFlag +Var Environment Var DisableReporting Var DisableReportingFlag Var DisableProfiling @@ -51,6 +52,7 @@ Section "install" ${GetParameters} $PassedInParameters ${GetOptions} $PassedInParameters "/DISABLEPROFILING=" $DisableProfiling ${GetOptions} $PassedInParameters "/DISABLEREPORTING=" $DisableReporting + ${GetOptions} $PassedInParameters "/ENVIRONMENT=" $Environment ${GetOptions} $PassedInParameters "/CONFIG=" $Config # Calls to functions like nsExec::ExecToLog below push the exit code to the @@ -146,6 +148,11 @@ Function InitializeRegistry Pop $0 # Ignore return result ${EndIf} + # Define the environment key, which holds environment variables to pass to the + # service. + nsExec::ExecToLog 'Reg.exe add "${REGKEY}" /reg:64 /v Environment /t REG_MULTI_SZ /d "$Environment"' + Pop $0 # Ignore return result + Return FunctionEnd From 22daea3bbbbac4f9b0cbb5f1191bce214af6e224 Mon Sep 17 00:00:00 2001 From: William Dumont Date: Thu, 23 Nov 2023 09:53:10 +0100 Subject: [PATCH 053/166] Improve otel integration tests (#5753) * improve otel integration tests * improve otlp integration test code * apply same test refactor for prom tests * lint --- .github/workflows/integration-tests.yml | 2 +- .../otel-collector-contrib.yaml | 27 --- .../configs/otel-gen-client/main.go | 205 ------------------ .../configs/otel-gen-server/Dockerfile | 11 - .../configs/otel-gen-server/main.go | 155 ------------- .../Dockerfile | 4 +- .../configs/otel-metrics-gen/main.go | 91 ++++++++ integration-tests/docker-compose.yaml | 38 +--- .../tests/otlp-metrics/config.river | 4 +- .../tests/otlp-metrics/otlp_metrics_test.go | 73 ++++++- .../scrape_prom_metrics_test.go | 41 ++-- integration-tests/utils.go | 29 +-- 12 files changed, 207 insertions(+), 473 deletions(-) delete mode 100644 integration-tests/configs/otel-collector-contrib/otel-collector-contrib.yaml delete mode 100644 integration-tests/configs/otel-gen-client/main.go delete mode 100644 integration-tests/configs/otel-gen-server/Dockerfile delete mode 100644 integration-tests/configs/otel-gen-server/main.go rename integration-tests/configs/{otel-gen-client => otel-metrics-gen}/Dockerfile (60%) create mode 100644 integration-tests/configs/otel-metrics-gen/main.go diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index b27dfa59319e..80540ae4848e 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -18,6 +18,6 @@ jobs: with: go-version: "1.21" - name: Set OTEL Exporter Endpoint - run: echo "OTEL_EXPORTER_ENDPOINT=http://172.17.0.1:8080" >> $GITHUB_ENV + run: echo "OTEL_EXPORTER_ENDPOINT=172.17.0.1:4318" >> $GITHUB_ENV - name: Run tests run: make integration-test diff --git a/integration-tests/configs/otel-collector-contrib/otel-collector-contrib.yaml b/integration-tests/configs/otel-collector-contrib/otel-collector-contrib.yaml deleted file mode 100644 index 7359cfb35215..000000000000 --- a/integration-tests/configs/otel-collector-contrib/otel-collector-contrib.yaml +++ /dev/null @@ -1,27 +0,0 @@ -receivers: - otlp: - protocols: - grpc: - -exporters: - logging: - - otlphttp: - endpoint: ${OTEL_EXPORTER_ENDPOINT} - - -connectors: - spanmetrics: - namespace: span.metrics - exemplars: - enabled: true - metrics_flush_interval: 1s - -service: - pipelines: - traces: - receivers: [otlp] - exporters: [spanmetrics] - metrics: - receivers: [spanmetrics] - exporters: [otlphttp] diff --git a/integration-tests/configs/otel-gen-client/main.go b/integration-tests/configs/otel-gen-client/main.go deleted file mode 100644 index 7066daccf26d..000000000000 --- a/integration-tests/configs/otel-gen-client/main.go +++ /dev/null @@ -1,205 +0,0 @@ -// This file was copied with minor modifications from https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/b0be5c98325ec71f35b82e278a3fc3e6f3fe4954/examples/demo/client/main.go - -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -// Sample contains a simple client that periodically makes a simple http request -// to a server and exports to the OpenTelemetry service. -package main - -import ( - "context" - "log" - "math/rand" - "net/http" - "os" - "time" - - "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" - "go.opentelemetry.io/otel" - "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/baggage" - "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc" - "go.opentelemetry.io/otel/exporters/otlp/otlptrace" - "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc" - "go.opentelemetry.io/otel/metric" - "go.opentelemetry.io/otel/propagation" - sdkmetric "go.opentelemetry.io/otel/sdk/metric" - "go.opentelemetry.io/otel/sdk/resource" - sdktrace "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.4.0" - "google.golang.org/grpc" -) - -const ( - otelExporterOtlpEndpoint = "OTEL_EXPORTER_OTLP_ENDPOINT" - demoServerEndpoint = "DEMO_SERVER_ENDPOINT" -) - -// Initializes an OTLP exporter, and configures the corresponding trace and -// metric providers. -func initProvider() func() { - ctx := context.Background() - - res, err := resource.New(ctx, - resource.WithFromEnv(), - resource.WithProcess(), - resource.WithTelemetrySDK(), - resource.WithHost(), - resource.WithAttributes( - // the service name used to display traces in backends - semconv.ServiceNameKey.String("demo-client"), - ), - ) - handleErr(err, "failed to create resource") - - otelAgentAddr, ok := os.LookupEnv(otelExporterOtlpEndpoint) - if !ok { - otelAgentAddr = "0.0.0.0:4317" - } - - metricExp, err := otlpmetricgrpc.New( - ctx, - otlpmetricgrpc.WithInsecure(), - otlpmetricgrpc.WithEndpoint(otelAgentAddr), - ) - handleErr(err, "Failed to create the collector metric exporter") - - meterProvider := sdkmetric.NewMeterProvider( - sdkmetric.WithResource(res), - sdkmetric.WithReader( - sdkmetric.NewPeriodicReader( - metricExp, - sdkmetric.WithInterval(2*time.Second), - ), - ), - ) - otel.SetMeterProvider(meterProvider) - - traceClient := otlptracegrpc.NewClient( - otlptracegrpc.WithInsecure(), - otlptracegrpc.WithEndpoint(otelAgentAddr), - otlptracegrpc.WithDialOption(grpc.WithBlock())) - sctx, cancel := context.WithTimeout(ctx, time.Second) - defer cancel() - traceExp, err := otlptrace.New(sctx, traceClient) - handleErr(err, "Failed to create the collector trace exporter") - - bsp := sdktrace.NewBatchSpanProcessor(traceExp) - tracerProvider := sdktrace.NewTracerProvider( - sdktrace.WithSampler(sdktrace.AlwaysSample()), - sdktrace.WithResource(res), - sdktrace.WithSpanProcessor(bsp), - ) - - // set global propagator to tracecontext (the default is no-op). - otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{})) - otel.SetTracerProvider(tracerProvider) - - return func() { - cxt, cancel := context.WithTimeout(ctx, time.Second) - defer cancel() - if err := traceExp.Shutdown(cxt); err != nil { - otel.Handle(err) - } - // pushes any last exports to the receiver - if err := meterProvider.Shutdown(cxt); err != nil { - otel.Handle(err) - } - } -} - -func handleErr(err error, message string) { - if err != nil { - log.Fatalf("%s: %v", message, err) - } -} - -func main() { - shutdown := initProvider() - defer shutdown() - - tracer := otel.Tracer("demo-client-tracer") - meter := otel.Meter("demo-client-meter") - - method, _ := baggage.NewMember("method", "repl") - client, _ := baggage.NewMember("client", "cli") - bag, _ := baggage.New(method, client) - - // labels represent additional key-value descriptors that can be bound to a - // metric observer or recorder. - // TODO: Use baggage when supported to extract labels from baggage. - commonLabels := []attribute.KeyValue{ - attribute.String("method", "repl"), - attribute.String("client", "cli"), - } - - // Recorder metric example - requestLatency, _ := meter.Float64Histogram( - "demo_client/request_latency", - metric.WithDescription("The latency of requests processed"), - ) - - // TODO: Use a view to just count number of measurements for requestLatency when available. - requestCount, _ := meter.Int64Counter( - "demo_client/request_counts", - metric.WithDescription("The number of requests processed"), - ) - - lineLengths, _ := meter.Int64Histogram( - "demo_client/line_lengths", - metric.WithDescription("The lengths of the various lines in"), - ) - - // TODO: Use a view to just count number of measurements for lineLengths when available. - lineCounts, _ := meter.Int64Counter( - "demo_client/line_counts", - metric.WithDescription("The counts of the lines in"), - ) - - defaultCtx := baggage.ContextWithBaggage(context.Background(), bag) - rng := rand.New(rand.NewSource(time.Now().UnixNano())) - for { - startTime := time.Now() - ctx, span := tracer.Start(defaultCtx, "ExecuteRequest") - makeRequest(ctx) - span.End() - latencyMs := float64(time.Since(startTime)) / 1e6 - nr := int(rng.Int31n(7)) - for i := 0; i < nr; i++ { - randLineLength := rng.Int63n(999) - lineCounts.Add(ctx, 1, metric.WithAttributes(commonLabels...)) - lineLengths.Record(ctx, randLineLength, metric.WithAttributes(commonLabels...)) - } - - requestLatency.Record(ctx, latencyMs, metric.WithAttributes(commonLabels...)) - requestCount.Add(ctx, 1, metric.WithAttributes(commonLabels...)) - - time.Sleep(time.Duration(1) * time.Second) - } -} - -func makeRequest(ctx context.Context) { - demoServerAddr, ok := os.LookupEnv(demoServerEndpoint) - if !ok { - demoServerAddr = "http://0.0.0.0:7080/hello" - } - - // Trace an HTTP client by wrapping the transport - client := http.Client{ - Transport: otelhttp.NewTransport(http.DefaultTransport), - } - - // Make sure we pass the context to the request to avoid broken traces. - req, err := http.NewRequestWithContext(ctx, "GET", demoServerAddr, nil) - if err != nil { - handleErr(err, "failed to http request") - } - - // All requests made with this client will create spans. - res, err := client.Do(req) - if err != nil { - panic(err) - } - res.Body.Close() -} diff --git a/integration-tests/configs/otel-gen-server/Dockerfile b/integration-tests/configs/otel-gen-server/Dockerfile deleted file mode 100644 index bc6bc1c6d136..000000000000 --- a/integration-tests/configs/otel-gen-server/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright The OpenTelemetry Authors -# SPDX-License-Identifier: Apache-2.0 -FROM golang:1.21 as build -WORKDIR /app/ -COPY go.mod go.sum ./ -RUN go mod download -COPY ./integration-tests/configs/otel-gen-server/ ./ -RUN CGO_ENABLED=0 go build -o main main.go -FROM alpine:3.18 -COPY --from=build /app/main /app/main -CMD ["/app/main"] diff --git a/integration-tests/configs/otel-gen-server/main.go b/integration-tests/configs/otel-gen-server/main.go deleted file mode 100644 index 97bfb1ca2ef7..000000000000 --- a/integration-tests/configs/otel-gen-server/main.go +++ /dev/null @@ -1,155 +0,0 @@ -// This file was copied with minor modifications from https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/b0be5c98325ec71f35b82e278a3fc3e6f3fe4954/examples/demo/server/main.go - -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -// Sample contains a simple http server that exports to the OpenTelemetry agent. - -package main - -import ( - "context" - "log" - "net/http" - "os" - "time" - - "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" - "go.opentelemetry.io/otel" - "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/baggage" - "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc" - "go.opentelemetry.io/otel/exporters/otlp/otlptrace" - "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc" - "go.opentelemetry.io/otel/metric" - "go.opentelemetry.io/otel/propagation" - sdkmetric "go.opentelemetry.io/otel/sdk/metric" - "go.opentelemetry.io/otel/sdk/resource" - sdktrace "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.4.0" - "go.opentelemetry.io/otel/trace" - "google.golang.org/grpc" -) - -const otelExporterOtlpEndpoint = "OTEL_EXPORTER_OTLP_ENDPOINT" - -// Initializes an OTLP exporter, and configures the corresponding trace and -// metric providers. -func initProvider() func() { - ctx := context.Background() - - res, err := resource.New(ctx, - resource.WithFromEnv(), - resource.WithProcess(), - resource.WithTelemetrySDK(), - resource.WithHost(), - resource.WithAttributes( - // the service name used to display traces in backends - semconv.ServiceNameKey.String("demo-server"), - ), - ) - handleErr(err, "failed to create resource") - - otelAgentAddr, ok := os.LookupEnv(otelExporterOtlpEndpoint) - if !ok { - otelAgentAddr = "0.0.0.0:4317" - } - - metricExp, err := otlpmetricgrpc.New( - ctx, - otlpmetricgrpc.WithInsecure(), - otlpmetricgrpc.WithEndpoint(otelAgentAddr)) - handleErr(err, "Failed to create the collector metric exporter") - - meterProvider := sdkmetric.NewMeterProvider( - sdkmetric.WithResource(res), - sdkmetric.WithReader( - sdkmetric.NewPeriodicReader( - metricExp, - sdkmetric.WithInterval(2*time.Second), - ), - ), - ) - otel.SetMeterProvider(meterProvider) - - traceClient := otlptracegrpc.NewClient( - otlptracegrpc.WithInsecure(), - otlptracegrpc.WithEndpoint(otelAgentAddr), - otlptracegrpc.WithDialOption(grpc.WithBlock())) - traceExp, err := otlptrace.New(ctx, traceClient) - handleErr(err, "Failed to create the collector trace exporter") - - bsp := sdktrace.NewBatchSpanProcessor(traceExp) - tracerProvider := sdktrace.NewTracerProvider( - sdktrace.WithSampler(sdktrace.AlwaysSample()), - sdktrace.WithResource(res), - sdktrace.WithSpanProcessor(bsp), - ) - - // set global propagator to tracecontext (the default is no-op). - otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{})) - otel.SetTracerProvider(tracerProvider) - - return func() { - cxt, cancel := context.WithTimeout(ctx, time.Second) - defer cancel() - if err := traceExp.Shutdown(cxt); err != nil { - otel.Handle(err) - } - // pushes any last exports to the receiver - if err := meterProvider.Shutdown(cxt); err != nil { - otel.Handle(err) - } - } -} - -func handleErr(err error, message string) { - if err != nil { - log.Fatalf("%s: %v", message, err) - } -} - -func main() { - shutdown := initProvider() - defer shutdown() - - meter := otel.Meter("demo-server-meter") - serverAttribute := attribute.String("server-attribute", "foo") - commonLabels := []attribute.KeyValue{serverAttribute} - requestCount, _ := meter.Int64Counter( - "demo_server/request_counts", - metric.WithDescription("The number of requests received"), - ) - - // create a handler wrapped in OpenTelemetry instrumentation - handler := http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - time.Sleep(time.Duration(100) * time.Millisecond) - ctx := req.Context() - requestCount.Add(ctx, 1, metric.WithAttributes(commonLabels...)) - span := trace.SpanFromContext(ctx) - bag := baggage.FromContext(ctx) - - var baggageAttributes []attribute.KeyValue - baggageAttributes = append(baggageAttributes, serverAttribute) - for _, member := range bag.Members() { - baggageAttributes = append(baggageAttributes, attribute.String("baggage key:"+member.Key(), member.Value())) - } - span.SetAttributes(baggageAttributes...) - - if _, err := w.Write([]byte("Hello World")); err != nil { - http.Error(w, "write operation failed.", http.StatusInternalServerError) - return - } - }) - - mux := http.NewServeMux() - mux.Handle("/hello", otelhttp.NewHandler(handler, "/hello")) - server := &http.Server{ - Addr: ":7080", - Handler: mux, - ReadHeaderTimeout: 20 * time.Second, - } - if err := server.ListenAndServe(); err != http.ErrServerClosed { - handleErr(err, "server failed to serve") - } -} diff --git a/integration-tests/configs/otel-gen-client/Dockerfile b/integration-tests/configs/otel-metrics-gen/Dockerfile similarity index 60% rename from integration-tests/configs/otel-gen-client/Dockerfile rename to integration-tests/configs/otel-metrics-gen/Dockerfile index aae9f646067b..8bf00387660e 100644 --- a/integration-tests/configs/otel-gen-client/Dockerfile +++ b/integration-tests/configs/otel-metrics-gen/Dockerfile @@ -1,10 +1,8 @@ -# Copyright The OpenTelemetry Authors -# SPDX-License-Identifier: Apache-2.0 FROM golang:1.21 as build WORKDIR /app/ COPY go.mod go.sum ./ RUN go mod download -COPY ./integration-tests/configs/otel-gen-client/ ./ +COPY ./integration-tests/configs/otel-metrics-gen/ ./ RUN CGO_ENABLED=0 go build -o main main.go FROM alpine:3.18 COPY --from=build /app/main /app/main diff --git a/integration-tests/configs/otel-metrics-gen/main.go b/integration-tests/configs/otel-metrics-gen/main.go new file mode 100644 index 000000000000..6f88d7725b46 --- /dev/null +++ b/integration-tests/configs/otel-metrics-gen/main.go @@ -0,0 +1,91 @@ +package main + +import ( + "context" + "log" + "os" + "time" + + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp" + "go.opentelemetry.io/otel/sdk/metric" + sdkmetric "go.opentelemetry.io/otel/sdk/metric" + "go.opentelemetry.io/otel/sdk/resource" + semconv "go.opentelemetry.io/otel/semconv/v1.7.0" +) + +const otelExporterOtlpEndpoint = "OTEL_EXPORTER_ENDPOINT" + +func main() { + ctx := context.Background() + otlpExporterEndpoint, ok := os.LookupEnv(otelExporterOtlpEndpoint) + if !ok { + otlpExporterEndpoint = "localhost:4318" + } + exporter, err := otlpmetrichttp.New(ctx, + otlpmetrichttp.WithInsecure(), + otlpmetrichttp.WithEndpoint(otlpExporterEndpoint), + ) + if err != nil { + log.Fatalf("failed to create exporter: %v", err) + } + + resource, err := resource.New(ctx, + resource.WithAttributes( + semconv.ServiceNameKey.String("otel-metrics-gen"), + ), + ) + if err != nil { + log.Fatalf("failed to create resource: %v", err) + } + + exponentialHistogramView := metric.NewView( + metric.Instrument{ + Name: "example_exponential_*", + }, + metric.Stream{ + Aggregation: metric.AggregationBase2ExponentialHistogram{ + MaxSize: 160, + MaxScale: 20, + }, + }, + ) + + provider := sdkmetric.NewMeterProvider( + sdkmetric.WithReader(sdkmetric.NewPeriodicReader(exporter, sdkmetric.WithInterval(1*time.Second))), + sdkmetric.WithResource(resource), + metric.WithView(exponentialHistogramView), + ) + otel.SetMeterProvider(provider) + defer func() { + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + + if err := provider.Shutdown(ctx); err != nil { + log.Fatalf("Server shutdown error: %v", err) + } + }() + + meter := otel.Meter("example-meter") + counter, _ := meter.Int64Counter("example_counter") + floatCounter, _ := meter.Float64Counter("example_float_counter") + upDownCounter, _ := meter.Int64UpDownCounter("example_updowncounter") + floatUpDownCounter, _ := meter.Float64UpDownCounter("example_float_updowncounter") + histogram, _ := meter.Int64Histogram("example_histogram") + floatHistogram, _ := meter.Float64Histogram("example_float_histogram") + exponentialHistogram, _ := meter.Int64Histogram("example_exponential_histogram") + exponentialFloatHistogram, _ := meter.Float64Histogram("example_exponential_float_histogram") + + for { + counter.Add(ctx, 10) + floatCounter.Add(ctx, 2.5) + upDownCounter.Add(ctx, -5) + floatUpDownCounter.Add(ctx, 3.5) + histogram.Record(ctx, 2) + floatHistogram.Record(ctx, 6.5) + exponentialHistogram.Record(ctx, 5) + exponentialFloatHistogram.Record(ctx, 1.5) + + time.Sleep(200 * time.Millisecond) + } +} diff --git a/integration-tests/docker-compose.yaml b/integration-tests/docker-compose.yaml index b576a425fa68..a94a05db21d9 100644 --- a/integration-tests/docker-compose.yaml +++ b/integration-tests/docker-compose.yaml @@ -2,7 +2,7 @@ version: "3" services: mimir: - image: grafana/mimir:latest + image: grafana/mimir:2.10.4 volumes: - ./configs/mimir:/etc/mimir-config entrypoint: @@ -12,45 +12,17 @@ services: - "9009:9009" loki: - image: grafana/loki:2.8.3 + image: grafana/loki:latest command: -config.file=/etc/loki/local-config.yaml ports: - "3100:3100" - otel-collector: - image: otel/opentelemetry-collector-contrib:0.85.0 - restart: always - command: ["--config=/etc/otel-collector-contrib.yaml", ""] - volumes: - - ./configs/otel-collector-contrib/otel-collector-contrib.yaml:/etc/otel-collector-contrib.yaml - ports: - - "4317:4317" # OTLP gRPC receiver - - "4318:4318" # OTLP HTTP exporter - environment: - - OTEL_EXPORTER_ENDPOINT=${OTEL_EXPORTER_ENDPOINT:-http://host.docker.internal:8080} - - demo-client: + otel-metrics-gen: build: - dockerfile: ./integration-tests/configs/otel-gen-client/Dockerfile + dockerfile: ./integration-tests/configs/otel-metrics-gen/Dockerfile context: .. - restart: always environment: - - OTEL_EXPORTER_OTLP_ENDPOINT=otel-collector:4317 - - DEMO_SERVER_ENDPOINT=http://demo-server:7080/hello - depends_on: - - demo-server - - demo-server: - build: - dockerfile: ./integration-tests/configs/otel-gen-server/Dockerfile - context: .. - restart: always - environment: - - OTEL_EXPORTER_OTLP_ENDPOINT=otel-collector:4317 - ports: - - "7080" - depends_on: - - otel-collector + - OTEL_EXPORTER_ENDPOINT=${OTEL_EXPORTER_ENDPOINT:-host.docker.internal:4318} prom-gen: build: diff --git a/integration-tests/tests/otlp-metrics/config.river b/integration-tests/tests/otlp-metrics/config.river index 8c4f0ebc96e6..26a6212a3c11 100644 --- a/integration-tests/tests/otlp-metrics/config.river +++ b/integration-tests/tests/otlp-metrics/config.river @@ -1,7 +1,5 @@ otelcol.receiver.otlp "otlp_metrics" { - http { - endpoint="0.0.0.0:8080" - } + http {} output { metrics = [otelcol.processor.attributes.otlp_metrics.input] diff --git a/integration-tests/tests/otlp-metrics/otlp_metrics_test.go b/integration-tests/tests/otlp-metrics/otlp_metrics_test.go index a4bdd887c50c..03575e742b2d 100644 --- a/integration-tests/tests/otlp-metrics/otlp_metrics_test.go +++ b/integration-tests/tests/otlp-metrics/otlp_metrics_test.go @@ -1,23 +1,90 @@ package main import ( + "fmt" + "strconv" "testing" "github.com/grafana/agent/integration-tests/common" "github.com/stretchr/testify/assert" ) -const query = "http://localhost:9009/prometheus/api/v1/query?query=span_metrics_duration_bucket{test_name='otlp_metrics'}" +const promURL = "http://localhost:9009/prometheus/api/v1/query?query=" -func TestOtlpMetrics(t *testing.T) { +func metricQuery(metricName string) string { + return fmt.Sprintf("%s%s{test_name='otlp_metrics'}", promURL, metricName) +} + +func TestOTLPMetrics(t *testing.T) { + tests := []struct { + metric string + }{ + // TODO: better differentiate these metric types? + {"example_counter"}, + {"example_float_counter"}, + {"example_updowncounter"}, + {"example_float_updowncounter"}, + {"example_histogram_bucket"}, + {"example_float_histogram_bucket"}, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.metric, func(t *testing.T) { + t.Parallel() + assertMetricData(t, metricQuery(tt.metric), tt.metric) + }) + } + + histogramTests := []string{ + "example_exponential_histogram", + "example_exponential_float_histogram", + } + + for _, metric := range histogramTests { + metric := metric + t.Run(metric, func(t *testing.T) { + t.Parallel() + assertHistogramData(t, metricQuery(metric), metric) + }) + } +} + +func assertHistogramData(t *testing.T, query string, expectedMetric string) { + var metricResponse common.MetricResponse + assert.EventuallyWithT(t, func(c *assert.CollectT) { + err := common.FetchDataFromURL(query, &metricResponse) + assert.NoError(c, err) + if assert.NotEmpty(c, metricResponse.Data.Result) { + assert.Equal(c, metricResponse.Data.Result[0].Metric.Name, expectedMetric) + assert.Equal(c, metricResponse.Data.Result[0].Metric.TestName, "otlp_metrics") + if assert.NotNil(c, metricResponse.Data.Result[0].Histogram) { + histogram := metricResponse.Data.Result[0].Histogram + if assert.NotEmpty(c, histogram.Data.Count) { + count, _ := strconv.Atoi(histogram.Data.Count) + assert.Greater(c, count, 10, "Count should be at some point greater than 10.") + } + if assert.NotEmpty(c, histogram.Data.Sum) { + sum, _ := strconv.Atoi(histogram.Data.Sum) + assert.Greater(c, sum, 10, "Sum should be at some point greater than 10.") + } + assert.NotEmpty(c, histogram.Data.Buckets) + assert.Nil(c, metricResponse.Data.Result[0].Value) + } + } + }, common.DefaultTimeout, common.DefaultRetryInterval, "Histogram data did not satisfy the conditions within the time limit") +} + +func assertMetricData(t *testing.T, query, expectedMetric string) { var metricResponse common.MetricResponse assert.EventuallyWithT(t, func(c *assert.CollectT) { err := common.FetchDataFromURL(query, &metricResponse) assert.NoError(c, err) if assert.NotEmpty(c, metricResponse.Data.Result) { - assert.Equal(c, metricResponse.Data.Result[0].Metric.Name, "span_metrics_duration_bucket") + assert.Equal(c, metricResponse.Data.Result[0].Metric.Name, expectedMetric) assert.Equal(c, metricResponse.Data.Result[0].Metric.TestName, "otlp_metrics") assert.NotEmpty(c, metricResponse.Data.Result[0].Value.Value) + assert.Nil(c, metricResponse.Data.Result[0].Histogram) } }, common.DefaultTimeout, common.DefaultRetryInterval, "Data did not satisfy the conditions within the time limit") } diff --git a/integration-tests/tests/scrape-prom-metrics/scrape_prom_metrics_test.go b/integration-tests/tests/scrape-prom-metrics/scrape_prom_metrics_test.go index f57e1ca37b3c..467147846e67 100644 --- a/integration-tests/tests/scrape-prom-metrics/scrape_prom_metrics_test.go +++ b/integration-tests/tests/scrape-prom-metrics/scrape_prom_metrics_test.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "strconv" "testing" "github.com/grafana/agent/integration-tests/common" @@ -15,28 +16,26 @@ func metricQuery(metricName string) string { } func TestScrapePromMetrics(t *testing.T) { - tests := []struct { - query string - metric string - }{ + metrics := []string{ // TODO: better differentiate these metric types? - {metricQuery("golang_counter"), "golang_counter"}, - {metricQuery("golang_gauge"), "golang_gauge"}, - {metricQuery("golang_histogram_bucket"), "golang_histogram_bucket"}, - {metricQuery("golang_summary"), "golang_summary"}, + "golang_counter", + "golang_gauge", + "golang_histogram_bucket", + "golang_summary", + "golang_native_histogram", } - for _, tt := range tests { - tt := tt - t.Run(tt.metric, func(t *testing.T) { + for _, metric := range metrics { + metric := metric + t.Run(metric, func(t *testing.T) { t.Parallel() - assertMetricData(t, tt.query, tt.metric) + if metric == "golang_native_histogram" { + assertHistogramData(t, metricQuery(metric), metric) + } else { + assertMetricData(t, metricQuery(metric), metric) + } }) } - t.Run("golang_native_histogram", func(t *testing.T) { - t.Parallel() - assertHistogramData(t, metricQuery("golang_native_histogram"), "golang_native_histogram") - }) } func assertHistogramData(t *testing.T, query string, expectedMetric string) { @@ -49,8 +48,14 @@ func assertHistogramData(t *testing.T, query string, expectedMetric string) { assert.Equal(c, metricResponse.Data.Result[0].Metric.TestName, "scrape_prom_metrics") if assert.NotNil(c, metricResponse.Data.Result[0].Histogram) { histogram := metricResponse.Data.Result[0].Histogram - assert.NotEmpty(c, histogram.Data.Count) - assert.NotEmpty(c, histogram.Data.Sum) + if assert.NotEmpty(c, histogram.Data.Count) { + count, _ := strconv.Atoi(histogram.Data.Count) + assert.Greater(c, count, 10, "Count should be at some point greater than 10.") + } + if assert.NotEmpty(c, histogram.Data.Sum) { + sum, _ := strconv.ParseFloat(histogram.Data.Sum, 64) + assert.Greater(c, sum, 10., "Sum should be at some point greater than 10.") + } assert.NotEmpty(c, histogram.Data.Buckets) assert.Nil(c, metricResponse.Data.Result[0].Value) } diff --git a/integration-tests/utils.go b/integration-tests/utils.go index 06aba877203c..d723a235235c 100644 --- a/integration-tests/utils.go +++ b/integration-tests/utils.go @@ -3,6 +3,7 @@ package main import ( "bytes" "fmt" + "log" "os" "os/exec" "path/filepath" @@ -10,9 +11,7 @@ import ( ) const ( - agentBinaryPath = "../../../build/grafana-agent-flow" - dockerComposeCmd = "docker-compose" - makeCmd = "make" + agentBinaryPath = "../../../build/grafana-agent-flow" ) type TestLog struct { @@ -23,20 +22,22 @@ type TestLog struct { var logChan chan TestLog -func buildAgent() { - fmt.Println("Building agent...") - cmd := exec.Command(makeCmd, "-C", "..", "agent-flow") +func executeCommand(command string, args []string, taskDescription string) { + fmt.Printf("%s...\n", taskDescription) + cmd := exec.Command(command, args...) + var stderr bytes.Buffer + cmd.Stderr = &stderr if err := cmd.Run(); err != nil { - panic(err) + log.Fatalf("Error: %s\n", stderr.String()) } } +func buildAgent() { + executeCommand("make", []string{"-C", "..", "agent-flow"}, "Building agent") +} + func setupEnvironment() { - fmt.Println("Setting up environment with Docker Compose...") - cmd := exec.Command(dockerComposeCmd, "up", "-d") - if err := cmd.Run(); err != nil { - panic(err) - } + executeCommand("docker-compose", []string{"up", "-d"}, "Setting up environment with Docker Compose") } func runSingleTest(testDir string) { @@ -105,18 +106,18 @@ func runAllTests() { }(testDir) } wg.Wait() + close(logChan) } func cleanUpEnvironment() { fmt.Println("Cleaning up Docker environment...") - err := exec.Command(dockerComposeCmd, "down", "--volumes", "--rmi", "all").Run() + err := exec.Command("docker-compose", "down", "--volumes", "--rmi", "all").Run() if err != nil { panic(err) } } func reportResults() { - close(logChan) testsFailed := 0 for log := range logChan { fmt.Printf("Failure detected in %s:\n", log.TestDir) From 2242e4a40d5b8a742dfe6835b97e0e85d9a53624 Mon Sep 17 00:00:00 2001 From: Tolya Korniltsev Date: Thu, 23 Nov 2023 18:11:36 +0700 Subject: [PATCH 054/166] pyroscope.scrape: change error log level to not swallow errors (#5840) --- component/pyroscope/scrape/scrape_loop.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component/pyroscope/scrape/scrape_loop.go b/component/pyroscope/scrape/scrape_loop.go index 2b74930ed191..a1f7d2a6c1b7 100644 --- a/component/pyroscope/scrape/scrape_loop.go +++ b/component/pyroscope/scrape/scrape_loop.go @@ -228,7 +228,7 @@ func (t *scrapeLoop) scrape() { } } if err := t.fetchProfile(scrapeCtx, profileType, buf); err != nil { - level.Debug(t.logger).Log("msg", "fetch profile failed", "target", t.Labels().String(), "err", err) + level.Error(t.logger).Log("msg", "fetch profile failed", "target", t.Labels().String(), "err", err) t.updateTargetStatus(start, err) return } From 15d3d9f43c86c8583c9f94ec43f5f7585a92aea8 Mon Sep 17 00:00:00 2001 From: mattdurham Date: Thu, 23 Nov 2023 09:52:35 -0500 Subject: [PATCH 055/166] Update windows defaults to use upstream defaults except for enabled collectors. (#5832) Fix #5831 and use the defaults from windows. --- CHANGELOG.md | 2 + .../prometheus/exporter/windows/config.go | 71 ------------------ .../windows/config_default_windows_test.go | 46 ++++++------ .../exporter/windows/config_windows.go | 75 +++++++++++++++++++ .../internal/build/windows_exporter.go | 4 +- pkg/integrations/windows_exporter/config.go | 73 ------------------ .../windows_exporter/config_windows.go | 74 +++++++++++++++++- 7 files changed, 174 insertions(+), 171 deletions(-) create mode 100644 component/prometheus/exporter/windows/config_windows.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 67478fd28990..d0ed32af3bb1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,8 @@ Main (unreleased) component (flow mode) and the `app_agent_receiver` integration (static mode). (@cedricziel) +- Fix issue with windows_exporter defaults not being set correctly. (@mattdurham) + v0.38.0 (2023-11-21) -------------------- diff --git a/component/prometheus/exporter/windows/config.go b/component/prometheus/exporter/windows/config.go index 674d355011c5..cc4cb20e4b17 100644 --- a/component/prometheus/exporter/windows/config.go +++ b/component/prometheus/exporter/windows/config.go @@ -6,72 +6,6 @@ import ( windows_integration "github.com/grafana/agent/pkg/integrations/windows_exporter" ) -// DefaultArguments holds non-zero default options for Arguments when it is -// unmarshaled from YAML. -// -// Some defaults are populated from init functions in the github.com/grafana/agent/pkg/integrations/windows_exporter package. - -var DefaultArguments = Arguments{ - EnabledCollectors: strings.Split(windows_integration.DefaultConfig.EnabledCollectors, ","), - Dfsr: DfsrConfig{ - SourcesEnabled: strings.Split(windows_integration.DefaultConfig.Dfsr.SourcesEnabled, ","), - }, - Exchange: ExchangeConfig{ - EnabledList: strings.Split(windows_integration.DefaultConfig.Exchange.EnabledList, ","), - }, - IIS: IISConfig{ - AppBlackList: windows_integration.DefaultConfig.IIS.AppBlackList, - AppWhiteList: windows_integration.DefaultConfig.IIS.AppWhiteList, - SiteBlackList: windows_integration.DefaultConfig.IIS.SiteBlackList, - SiteWhiteList: windows_integration.DefaultConfig.IIS.SiteWhiteList, - AppInclude: windows_integration.DefaultConfig.IIS.AppInclude, - AppExclude: windows_integration.DefaultConfig.IIS.AppExclude, - SiteInclude: windows_integration.DefaultConfig.IIS.SiteInclude, - SiteExclude: windows_integration.DefaultConfig.IIS.SiteExclude, - }, - LogicalDisk: LogicalDiskConfig{ - BlackList: windows_integration.DefaultConfig.LogicalDisk.BlackList, - WhiteList: windows_integration.DefaultConfig.LogicalDisk.WhiteList, - Include: windows_integration.DefaultConfig.LogicalDisk.Include, - Exclude: windows_integration.DefaultConfig.LogicalDisk.Exclude, - }, - MSMQ: MSMQConfig{ - Where: windows_integration.DefaultConfig.MSMQ.Where, - }, - MSSQL: MSSQLConfig{ - EnabledClasses: strings.Split(windows_integration.DefaultConfig.MSSQL.EnabledClasses, ","), - }, - Network: NetworkConfig{ - BlackList: windows_integration.DefaultConfig.Network.BlackList, - WhiteList: windows_integration.DefaultConfig.Network.WhiteList, - Include: windows_integration.DefaultConfig.Network.Include, - Exclude: windows_integration.DefaultConfig.Network.Exclude, - }, - Process: ProcessConfig{ - BlackList: windows_integration.DefaultConfig.Process.BlackList, - WhiteList: windows_integration.DefaultConfig.Process.WhiteList, - Include: windows_integration.DefaultConfig.Process.Include, - Exclude: windows_integration.DefaultConfig.Process.Exclude, - }, - ScheduledTask: ScheduledTaskConfig{ - Include: windows_integration.DefaultConfig.ScheduledTask.Include, - Exclude: windows_integration.DefaultConfig.ScheduledTask.Exclude, - }, - Service: ServiceConfig{ - UseApi: windows_integration.DefaultConfig.Service.UseApi, - Where: windows_integration.DefaultConfig.Service.Where, - }, - SMTP: SMTPConfig{ - BlackList: windows_integration.DefaultConfig.SMTP.BlackList, - WhiteList: windows_integration.DefaultConfig.SMTP.WhiteList, - Include: windows_integration.DefaultConfig.SMTP.Include, - Exclude: windows_integration.DefaultConfig.SMTP.Exclude, - }, - TextFile: TextFileConfig{ - TextFileDirectory: windows_integration.DefaultConfig.TextFile.TextFileDirectory, - }, -} - // Arguments is used for controlling for this exporter. type Arguments struct { // Collectors to mark as enabled @@ -92,11 +26,6 @@ type Arguments struct { TextFile TextFileConfig `river:"text_file,block,optional"` } -// SetToDefault implements river.Defaulter. -func (a *Arguments) SetToDefault() { - *a = DefaultArguments -} - // Convert converts the component's Arguments to the integration's Config. func (a *Arguments) Convert() *windows_integration.Config { return &windows_integration.Config{ diff --git a/component/prometheus/exporter/windows/config_default_windows_test.go b/component/prometheus/exporter/windows/config_default_windows_test.go index c17f6e33fa60..9fddd1d635eb 100644 --- a/component/prometheus/exporter/windows/config_default_windows_test.go +++ b/component/prometheus/exporter/windows/config_default_windows_test.go @@ -1,10 +1,8 @@ package windows import ( - "strings" "testing" - windows_integration "github.com/grafana/agent/pkg/integrations/windows_exporter" "github.com/grafana/river" "github.com/stretchr/testify/require" ) @@ -14,26 +12,26 @@ func TestRiverUnmarshalWithDefaultConfig(t *testing.T) { err := river.Unmarshal([]byte(""), &args) require.NoError(t, err) - require.Equal(t, strings.Split(windows_integration.DefaultConfig.EnabledCollectors, ","), args.EnabledCollectors) - require.Equal(t, strings.Split(windows_integration.DefaultConfig.Dfsr.SourcesEnabled, ","), args.Dfsr.SourcesEnabled) - require.Equal(t, strings.Split(windows_integration.DefaultConfig.Exchange.EnabledList, ","), args.Exchange.EnabledList) - require.Equal(t, windows_integration.DefaultConfig.IIS.AppExclude, args.IIS.AppExclude) - require.Equal(t, windows_integration.DefaultConfig.IIS.AppInclude, args.IIS.AppInclude) - require.Equal(t, windows_integration.DefaultConfig.IIS.SiteExclude, args.IIS.SiteExclude) - require.Equal(t, windows_integration.DefaultConfig.IIS.SiteInclude, args.IIS.SiteInclude) - require.Equal(t, windows_integration.DefaultConfig.LogicalDisk.Exclude, args.LogicalDisk.Exclude) - require.Equal(t, windows_integration.DefaultConfig.LogicalDisk.Include, args.LogicalDisk.Include) - require.Equal(t, windows_integration.DefaultConfig.MSMQ.Where, args.MSMQ.Where) - require.Equal(t, strings.Split(windows_integration.DefaultConfig.MSSQL.EnabledClasses, ","), args.MSSQL.EnabledClasses) - require.Equal(t, windows_integration.DefaultConfig.Network.Exclude, args.Network.Exclude) - require.Equal(t, windows_integration.DefaultConfig.Network.Include, args.Network.Include) - require.Equal(t, windows_integration.DefaultConfig.Process.Exclude, args.Process.Exclude) - require.Equal(t, windows_integration.DefaultConfig.Process.Include, args.Process.Include) - require.Equal(t, windows_integration.DefaultConfig.ScheduledTask.Exclude, args.ScheduledTask.Exclude) - require.Equal(t, windows_integration.DefaultConfig.ScheduledTask.Include, args.ScheduledTask.Include) - require.Equal(t, windows_integration.DefaultConfig.Service.UseApi, args.Service.UseApi) - require.Equal(t, windows_integration.DefaultConfig.Service.Where, args.Service.Where) - require.Equal(t, windows_integration.DefaultConfig.SMTP.Exclude, args.SMTP.Exclude) - require.Equal(t, windows_integration.DefaultConfig.SMTP.Include, args.SMTP.Include) - require.Equal(t, windows_integration.DefaultConfig.TextFile.TextFileDirectory, args.TextFile.TextFileDirectory) + require.Equal(t, DefaultArguments.EnabledCollectors, args.EnabledCollectors) + require.Equal(t, DefaultArguments.Dfsr.SourcesEnabled, args.Dfsr.SourcesEnabled) + require.Equal(t, DefaultArguments.Exchange.EnabledList, args.Exchange.EnabledList) + require.Equal(t, DefaultArguments.IIS.AppExclude, args.IIS.AppExclude) + require.Equal(t, DefaultArguments.IIS.AppInclude, args.IIS.AppInclude) + require.Equal(t, DefaultArguments.IIS.SiteExclude, args.IIS.SiteExclude) + require.Equal(t, DefaultArguments.IIS.SiteInclude, args.IIS.SiteInclude) + require.Equal(t, DefaultArguments.LogicalDisk.Exclude, args.LogicalDisk.Exclude) + require.Equal(t, DefaultArguments.LogicalDisk.Include, args.LogicalDisk.Include) + require.Equal(t, DefaultArguments.MSMQ.Where, args.MSMQ.Where) + require.Equal(t, DefaultArguments.MSSQL.EnabledClasses, args.MSSQL.EnabledClasses) + require.Equal(t, DefaultArguments.Network.Exclude, args.Network.Exclude) + require.Equal(t, DefaultArguments.Network.Include, args.Network.Include) + require.Equal(t, DefaultArguments.Process.Exclude, args.Process.Exclude) + require.Equal(t, DefaultArguments.Process.Include, args.Process.Include) + require.Equal(t, DefaultArguments.ScheduledTask.Exclude, args.ScheduledTask.Exclude) + require.Equal(t, DefaultArguments.ScheduledTask.Include, args.ScheduledTask.Include) + require.Equal(t, DefaultArguments.Service.UseApi, args.Service.UseApi) + require.Equal(t, DefaultArguments.Service.Where, args.Service.Where) + require.Equal(t, DefaultArguments.SMTP.Exclude, args.SMTP.Exclude) + require.Equal(t, DefaultArguments.SMTP.Include, args.SMTP.Include) + require.Equal(t, DefaultArguments.TextFile.TextFileDirectory, args.TextFile.TextFileDirectory) } diff --git a/component/prometheus/exporter/windows/config_windows.go b/component/prometheus/exporter/windows/config_windows.go new file mode 100644 index 000000000000..b634788eda8c --- /dev/null +++ b/component/prometheus/exporter/windows/config_windows.go @@ -0,0 +1,75 @@ +package windows + +import ( + windows_integration "github.com/grafana/agent/pkg/integrations/windows_exporter" + col "github.com/prometheus-community/windows_exporter/pkg/collector" + "strings" +) + +// DefaultArguments holds non-zero default options for Arguments when it is +// unmarshaled from YAML. +var DefaultArguments = Arguments{ + EnabledCollectors: strings.Split(windows_integration.DefaultConfig.EnabledCollectors, ","), + Dfsr: DfsrConfig{ + SourcesEnabled: strings.Split(col.ConfigDefaults.Dfsr.DfsrEnabledCollectors, ","), + }, + Exchange: ExchangeConfig{ + EnabledList: strings.Split(col.ConfigDefaults.Exchange.CollectorsEnabled, ","), + }, + IIS: IISConfig{ + AppBlackList: col.ConfigDefaults.Iis.AppExclude, + AppWhiteList: col.ConfigDefaults.Iis.AppInclude, + SiteBlackList: col.ConfigDefaults.Iis.SiteExclude, + SiteWhiteList: col.ConfigDefaults.Iis.SiteInclude, + AppInclude: col.ConfigDefaults.Iis.AppInclude, + AppExclude: col.ConfigDefaults.Iis.AppExclude, + SiteInclude: col.ConfigDefaults.Iis.SiteInclude, + SiteExclude: col.ConfigDefaults.Iis.SiteExclude, + }, + LogicalDisk: LogicalDiskConfig{ + BlackList: col.ConfigDefaults.LogicalDisk.VolumeExclude, + WhiteList: col.ConfigDefaults.LogicalDisk.VolumeInclude, + Include: col.ConfigDefaults.LogicalDisk.VolumeInclude, + Exclude: col.ConfigDefaults.LogicalDisk.VolumeExclude, + }, + MSMQ: MSMQConfig{ + Where: col.ConfigDefaults.Msmq.QueryWhereClause, + }, + MSSQL: MSSQLConfig{ + EnabledClasses: strings.Split(col.ConfigDefaults.Mssql.EnabledCollectors, ","), + }, + Network: NetworkConfig{ + BlackList: col.ConfigDefaults.Net.NicExclude, + WhiteList: col.ConfigDefaults.Net.NicInclude, + Include: col.ConfigDefaults.Net.NicInclude, + Exclude: col.ConfigDefaults.Net.NicExclude, + }, + Process: ProcessConfig{ + BlackList: col.ConfigDefaults.Process.ProcessExclude, + WhiteList: col.ConfigDefaults.Process.ProcessInclude, + Include: col.ConfigDefaults.Process.ProcessInclude, + Exclude: col.ConfigDefaults.Process.ProcessExclude, + }, + ScheduledTask: ScheduledTaskConfig{ + Include: col.ConfigDefaults.ScheduledTask.TaskInclude, + Exclude: col.ConfigDefaults.ScheduledTask.TaskExclude, + }, + Service: ServiceConfig{ + UseApi: "false", + Where: col.ConfigDefaults.Service.ServiceWhereClause, + }, + SMTP: SMTPConfig{ + BlackList: col.ConfigDefaults.Smtp.ServerExclude, + WhiteList: col.ConfigDefaults.Smtp.ServerInclude, + Include: col.ConfigDefaults.Smtp.ServerInclude, + Exclude: col.ConfigDefaults.Smtp.ServerExclude, + }, + TextFile: TextFileConfig{ + TextFileDirectory: col.ConfigDefaults.Textfile.TextFileDirectories, + }, +} + +// SetToDefault implements river.Defaulter. +func (a *Arguments) SetToDefault() { + *a = DefaultArguments +} diff --git a/converter/internal/staticconvert/internal/build/windows_exporter.go b/converter/internal/staticconvert/internal/build/windows_exporter.go index 27e9679887b8..73aa706e8235 100644 --- a/converter/internal/staticconvert/internal/build/windows_exporter.go +++ b/converter/internal/staticconvert/internal/build/windows_exporter.go @@ -47,8 +47,8 @@ func toWindowsExporter(config *windows_exporter.Config) *windows.Arguments { Network: windows.NetworkConfig{ BlackList: config.Network.BlackList, WhiteList: config.Network.WhiteList, - Exclude: config.Network.Include, - Include: config.Network.Exclude, + Exclude: config.Network.Exclude, + Include: config.Network.Include, }, Process: windows.ProcessConfig{ BlackList: config.Process.BlackList, diff --git a/pkg/integrations/windows_exporter/config.go b/pkg/integrations/windows_exporter/config.go index 37f4e249a8fa..006bc5426d72 100644 --- a/pkg/integrations/windows_exporter/config.go +++ b/pkg/integrations/windows_exporter/config.go @@ -7,71 +7,6 @@ import ( "github.com/grafana/agent/pkg/integrations/v2/metricsutils" ) -// DefaultConfig holds the default settings for the windows_exporter integration. -var DefaultConfig = Config{ - // NOTE(rfratto): there is an init function in config_windows.go that - // populates defaults for collectors based on the exporter defaults. - EnabledCollectors: "cpu,cs,logical_disk,net,os,service,system", - - Dfsr: DfsrConfig{ - SourcesEnabled: "", - }, - Exchange: ExchangeConfig{ - EnabledList: "", - }, - IIS: IISConfig{ - AppBlackList: "", - AppWhiteList: "", - SiteBlackList: "", - SiteWhiteList: "", - AppInclude: "", - AppExclude: "", - SiteInclude: "", - SiteExclude: "", - }, - LogicalDisk: LogicalDiskConfig{ - BlackList: "", - WhiteList: "", - Include: "", - Exclude: "", - }, - MSMQ: MSMQConfig{ - Where: "", - }, - MSSQL: MSSQLConfig{ - EnabledClasses: "", - }, - Network: NetworkConfig{ - BlackList: "", - WhiteList: "", - Include: "", - Exclude: "", - }, - Process: ProcessConfig{ - BlackList: "", - WhiteList: "", - Include: "", - Exclude: "", - }, - ScheduledTask: ScheduledTaskConfig{ - Include: "", - Exclude: "", - }, - Service: ServiceConfig{ - UseApi: "", - Where: "", - }, - SMTP: SMTPConfig{ - BlackList: "", - WhiteList: "", - Include: "", - Exclude: "", - }, - TextFile: TextFileConfig{ - TextFileDirectory: "", - }, -} - func init() { integrations.RegisterIntegration(&Config{}) integrations_v2.RegisterLegacy(&Config{}, integrations_v2.TypeSingleton, metricsutils.NewNamedShim("windows")) @@ -96,14 +31,6 @@ type Config struct { ScheduledTask ScheduledTaskConfig `yaml:"scheduled_task,omitempty"` } -// 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 used, "windows_explorer" func (c *Config) Name() string { return "windows_exporter" diff --git a/pkg/integrations/windows_exporter/config_windows.go b/pkg/integrations/windows_exporter/config_windows.go index cb556363d084..17fd03d4f80c 100644 --- a/pkg/integrations/windows_exporter/config_windows.go +++ b/pkg/integrations/windows_exporter/config_windows.go @@ -1,6 +1,8 @@ package windows_exporter -import "github.com/prometheus-community/windows_exporter/pkg/collector" +import ( + "github.com/prometheus-community/windows_exporter/pkg/collector" +) func (c *Config) ToWindowsExporterConfig() collector.Config { cfg := collector.ConfigDefaults @@ -47,3 +49,73 @@ func coalesceString(v ...string) string { } return "" } + +// DefaultConfig holds the default settings for the windows_exporter integration. +var DefaultConfig = Config{ + EnabledCollectors: "cpu,cs,logical_disk,net,os,service,system", + Dfsr: DfsrConfig{ + SourcesEnabled: collector.ConfigDefaults.Dfsr.DfsrEnabledCollectors, + }, + Exchange: ExchangeConfig{ + EnabledList: collector.ConfigDefaults.Exchange.CollectorsEnabled, + }, + IIS: IISConfig{ + AppBlackList: collector.ConfigDefaults.Iis.AppExclude, + AppWhiteList: collector.ConfigDefaults.Iis.AppInclude, + SiteBlackList: collector.ConfigDefaults.Iis.SiteExclude, + SiteWhiteList: collector.ConfigDefaults.Iis.SiteInclude, + AppInclude: collector.ConfigDefaults.Iis.AppInclude, + AppExclude: collector.ConfigDefaults.Iis.AppExclude, + SiteInclude: collector.ConfigDefaults.Iis.SiteInclude, + SiteExclude: collector.ConfigDefaults.Iis.SiteExclude, + }, + LogicalDisk: LogicalDiskConfig{ + BlackList: collector.ConfigDefaults.LogicalDisk.VolumeExclude, + WhiteList: collector.ConfigDefaults.LogicalDisk.VolumeInclude, + Include: collector.ConfigDefaults.LogicalDisk.VolumeInclude, + Exclude: collector.ConfigDefaults.LogicalDisk.VolumeExclude, + }, + MSMQ: MSMQConfig{ + Where: collector.ConfigDefaults.Msmq.QueryWhereClause, + }, + MSSQL: MSSQLConfig{ + EnabledClasses: collector.ConfigDefaults.Mssql.EnabledCollectors, + }, + Network: NetworkConfig{ + BlackList: collector.ConfigDefaults.Net.NicExclude, + WhiteList: collector.ConfigDefaults.Net.NicInclude, + Include: collector.ConfigDefaults.Net.NicInclude, + Exclude: collector.ConfigDefaults.Net.NicExclude, + }, + Process: ProcessConfig{ + BlackList: collector.ConfigDefaults.Process.ProcessExclude, + WhiteList: collector.ConfigDefaults.Process.ProcessInclude, + Include: collector.ConfigDefaults.Process.ProcessInclude, + Exclude: collector.ConfigDefaults.Process.ProcessExclude, + }, + ScheduledTask: ScheduledTaskConfig{ + Include: collector.ConfigDefaults.ScheduledTask.TaskInclude, + Exclude: collector.ConfigDefaults.ScheduledTask.TaskExclude, + }, + Service: ServiceConfig{ + UseApi: "false", + Where: collector.ConfigDefaults.Service.ServiceWhereClause, + }, + SMTP: SMTPConfig{ + BlackList: collector.ConfigDefaults.Smtp.ServerExclude, + WhiteList: collector.ConfigDefaults.Smtp.ServerInclude, + Include: collector.ConfigDefaults.Smtp.ServerInclude, + Exclude: collector.ConfigDefaults.Smtp.ServerExclude, + }, + TextFile: TextFileConfig{ + TextFileDirectory: collector.ConfigDefaults.Textfile.TextFileDirectories, + }, +} + +// UnmarshalYAML implements yaml.Unmarshaler for Config. +func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error { + *c = DefaultConfig + + type plain Config + return unmarshal((*plain)(c)) +} From 6404d29b95d546aedbb11e8260104d34ccd4d81e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=E1=BB=97=20Tr=E1=BB=8Dng=20H=E1=BA=A3i?= <41283691+hainenber@users.noreply.github.com> Date: Thu, 23 Nov 2023 21:58:55 +0700 Subject: [PATCH 056/166] chore: rename doc ref of container.securityContext (#5808) Signed-off-by: hainenber --- operations/helm/charts/grafana-agent/CHANGELOG.md | 4 ++++ operations/helm/charts/grafana-agent/README.md | 8 ++++---- operations/helm/charts/grafana-agent/README.md.gotmpl | 8 ++++---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/operations/helm/charts/grafana-agent/CHANGELOG.md b/operations/helm/charts/grafana-agent/CHANGELOG.md index a664b5ef6598..26cc9a4948a6 100644 --- a/operations/helm/charts/grafana-agent/CHANGELOG.md +++ b/operations/helm/charts/grafana-agent/CHANGELOG.md @@ -10,6 +10,10 @@ internal API changes are not present. Unreleased ---------- +### Other changes + +- Update `container.securityContext` Helm value reference to renamed `agent.securityContext`. (@hainenber) + 0.28.0 (2023-11-21) ------------------- diff --git a/operations/helm/charts/grafana-agent/README.md b/operations/helm/charts/grafana-agent/README.md index d3e17c822582..d9d577e871d4 100644 --- a/operations/helm/charts/grafana-agent/README.md +++ b/operations/helm/charts/grafana-agent/README.md @@ -168,9 +168,9 @@ used. When provided, `agent.configMap.content` must hold a valid River configura [default-config]: ./config/example.river -### controller.securityContext +### agent.securityContext -`controller.securityContext` sets the securityContext passed to the Grafana +`agent.securityContext` sets the securityContext passed to the Grafana Agent container. By default, Grafana Agent containers are not able to collect telemetry from the @@ -241,7 +241,7 @@ This capability is disabled by default. To expose logs from other containers to Grafana Agent: * Set `agent.mounts.dockercontainers` to `true`. -* Set `controller.securityContext` to: +* Set `agent.securityContext` to: ```yaml privileged: true runAsUser: 0 @@ -256,7 +256,7 @@ To expose this information to Grafana Agent for telemetry collection: * Set `agent.mounts.dockercontainers` to `true`. * Mount `/proc` and `/sys` from the host into the container. -* Set `controller.securityContext` to: +* Set `agent.securityContext` to: ```yaml privileged: true runAsUser: 0 diff --git a/operations/helm/charts/grafana-agent/README.md.gotmpl b/operations/helm/charts/grafana-agent/README.md.gotmpl index fd34da2a962a..e9bbe8ece543 100644 --- a/operations/helm/charts/grafana-agent/README.md.gotmpl +++ b/operations/helm/charts/grafana-agent/README.md.gotmpl @@ -80,9 +80,9 @@ used. When provided, `agent.configMap.content` must hold a valid River configura [default-config]: ./config/example.river -### controller.securityContext +### agent.securityContext -`controller.securityContext` sets the securityContext passed to the Grafana +`agent.securityContext` sets the securityContext passed to the Grafana Agent container. By default, Grafana Agent containers are not able to collect telemetry from the @@ -153,7 +153,7 @@ This capability is disabled by default. To expose logs from other containers to Grafana Agent: * Set `agent.mounts.dockercontainers` to `true`. -* Set `controller.securityContext` to: +* Set `agent.securityContext` to: ```yaml privileged: true runAsUser: 0 @@ -168,7 +168,7 @@ To expose this information to Grafana Agent for telemetry collection: * Set `agent.mounts.dockercontainers` to `true`. * Mount `/proc` and `/sys` from the host into the container. -* Set `controller.securityContext` to: +* Set `agent.securityContext` to: ```yaml privileged: true runAsUser: 0 From 35f7f6acf5bb4908c35beec9d7a7701587b9d38d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=E1=BB=97=20Tr=E1=BB=8Dng=20H=E1=BA=A3i?= <41283691+hainenber@users.noreply.github.com> Date: Thu, 23 Nov 2023 22:54:30 +0700 Subject: [PATCH 057/166] feat(comp/cadvisor): allow user to disable collecting root Cgroup stats (#5713) Signed-off-by: hainenber --- CHANGELOG.md | 6 +++++- component/prometheus/exporter/cadvisor/cadvisor.go | 5 ++++- .../staticconvert/internal/build/cadvisor_exporter.go | 1 + .../reference/components/prometheus.exporter.cadvisor.md | 1 + .../static/configuration/integrations/cadvisor-config.md | 3 +++ go.mod | 2 +- go.sum | 4 ++-- pkg/integrations/cadvisor/cadvisor.go | 3 ++- pkg/integrations/cadvisor/common.go | 5 +++++ 9 files changed, 24 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0ed32af3bb1..f5b55b8aa66d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,9 +15,13 @@ Main (unreleased) - Agent Management: Introduce support for templated configuration. (@jcreixell) ### Enhancements - + - Flow Windows service: Support environment variables. (@jkroepke) +- Allow disabling collection of root Cgroup stats in + `prometheus.exporter.cadvisor` (flow mode) and the `cadvisor` integration + (static mode). (@hainenber) + ### Bugfixes - Permit `X-Faro-Session-ID` header in CORS requests for the `faro.receiver` diff --git a/component/prometheus/exporter/cadvisor/cadvisor.go b/component/prometheus/exporter/cadvisor/cadvisor.go index 79542dbf0087..14e60493930e 100644 --- a/component/prometheus/exporter/cadvisor/cadvisor.go +++ b/component/prometheus/exporter/cadvisor/cadvisor.go @@ -44,7 +44,8 @@ var DefaultArguments = Arguments{ DockerTLSKey: "key.pem", DockerTLSCA: "ca.pem", - DockerOnly: false, + DockerOnly: false, + DisableRootCgroupStats: false, } // Arguments configures the prometheus.exporter.cadvisor component. @@ -66,6 +67,7 @@ type Arguments struct { DockerTLSKey string `river:"docker_tls_key,attr,optional"` DockerTLSCA string `river:"docker_tls_ca,attr,optional"` DockerOnly bool `river:"docker_only,attr,optional"` + DisableRootCgroupStats bool `river:"disable_root_cgroup_stats,attr,optional"` } // SetToDefault implements river.Defaulter. @@ -103,6 +105,7 @@ func (a *Arguments) Convert() *cadvisor.Config { DockerTLSKey: a.DockerTLSKey, DockerTLSCA: a.DockerTLSCA, DockerOnly: a.DockerOnly, + DisableRootCgroupStats: a.DisableRootCgroupStats, } return cfg diff --git a/converter/internal/staticconvert/internal/build/cadvisor_exporter.go b/converter/internal/staticconvert/internal/build/cadvisor_exporter.go index dbedebfb2967..0c6445c5376f 100644 --- a/converter/internal/staticconvert/internal/build/cadvisor_exporter.go +++ b/converter/internal/staticconvert/internal/build/cadvisor_exporter.go @@ -33,5 +33,6 @@ func toCadvisorExporter(config *cadvisor_integration.Config) *cadvisor.Arguments DockerTLSKey: config.DockerTLSKey, DockerTLSCA: config.DockerTLSCA, DockerOnly: config.DockerOnly, + DisableRootCgroupStats: config.DisableRootCgroupStats, } } diff --git a/docs/sources/flow/reference/components/prometheus.exporter.cadvisor.md b/docs/sources/flow/reference/components/prometheus.exporter.cadvisor.md index 567783c38702..845a0fe0adec 100644 --- a/docs/sources/flow/reference/components/prometheus.exporter.cadvisor.md +++ b/docs/sources/flow/reference/components/prometheus.exporter.cadvisor.md @@ -43,6 +43,7 @@ Name | Type | Description | Default | Required `docker_tls_key` | `string` | Path to private key for TLS connection to docker. | `key.pem` | no `docker_tls_ca` | `string` | Path to a trusted CA for TLS connection to docker. | `ca.pem` | no `docker_only` | `bool` | Only report docker containers in addition to root stats. | `false` | no +`disable_root_cgroup_stats` | `bool` | Disable collecting root Cgroup stats. | `false` | no For `allowlisted_container_labels` to take effect, `store_container_labels` must be set to `false`. diff --git a/docs/sources/static/configuration/integrations/cadvisor-config.md b/docs/sources/static/configuration/integrations/cadvisor-config.md index 16dedf0a5205..adf92dcff827 100644 --- a/docs/sources/static/configuration/integrations/cadvisor-config.md +++ b/docs/sources/static/configuration/integrations/cadvisor-config.md @@ -115,4 +115,7 @@ Full reference of options: # Only report docker containers in addition to root stats [docker_only: | default = false] + + # Disable collecting root Cgroup stats + [disable_root_cgroup_stats: | default = false] ``` diff --git a/go.mod b/go.mod index 891de83235af..9362ef24beb5 100644 --- a/go.mod +++ b/go.mod @@ -695,7 +695,7 @@ replace ( // TODO(tpaschalis) this is to remove global instantiation of plugins // and allow non-singleton components. // https://github.com/grafana/cadvisor/tree/grafana-v0.47-noglobals - github.com/google/cadvisor => github.com/grafana/cadvisor v0.0.0-20230927082732-0d72868a513e + github.com/google/cadvisor => github.com/grafana/cadvisor v0.0.0-20231110094609-5f7917925dea // TODO(mattdurham): this is so you can debug on windows, when PR is merged into perflib, can you use that // and eventually remove if windows_exporter shifts to it. https://github.com/leoluk/perflib_exporter/pull/43 diff --git a/go.sum b/go.sum index 0384745ab682..3678215219aa 100644 --- a/go.sum +++ b/go.sum @@ -1038,8 +1038,8 @@ github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/gosnmp/gosnmp v1.36.0 h1:1Si+MImHcKIqFc3/kJEs2LOULP1nlFKlzPFyrMOk5Qk= github.com/gosnmp/gosnmp v1.36.0/go.mod h1:iLcZxN2MxKhH0jPQDVMZaSNypw1ykqVi27O79koQj6w= github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= -github.com/grafana/cadvisor v0.0.0-20230927082732-0d72868a513e h1:hCYDh2cmnNFAjwcMlrSuptDZqjXUc3he4h61/xL/ANY= -github.com/grafana/cadvisor v0.0.0-20230927082732-0d72868a513e/go.mod h1:XjiOCFjmxXIWwauV5p39Mr2Yxlpyk72uKQH1UZvd4fQ= +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= 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/pkg/integrations/cadvisor/cadvisor.go b/pkg/integrations/cadvisor/cadvisor.go index b0c854e692de..cfe8380eb3b6 100644 --- a/pkg/integrations/cadvisor/cadvisor.go +++ b/pkg/integrations/cadvisor/cadvisor.go @@ -114,7 +114,8 @@ func New(logger log.Logger, c *Config) (integrations.Integration, error) { } rawOpts := raw.Options{ - DockerOnly: c.DockerOnly, + DockerOnly: c.DockerOnly, + DisableRootCgroupStats: c.DisableRootCgroupStats, } rm, err := manager.New(plugins, memoryStorage, sysFs, manager.HousekeepingConfigFlags, includedMetrics, &collectorHTTPClient, c.RawCgroupPrefixAllowlist, c.EnvMetadataAllowlist, c.PerfEventsConfig, time.Duration(c.ResctrlInterval), rawOpts) if err != nil { diff --git a/pkg/integrations/cadvisor/common.go b/pkg/integrations/cadvisor/common.go index 1ff7bc658f1b..0ce16d6c4907 100644 --- a/pkg/integrations/cadvisor/common.go +++ b/pkg/integrations/cadvisor/common.go @@ -32,6 +32,8 @@ var DefaultConfig = Config{ // Raw config defaults DockerOnly: false, + + DisableRootCgroupStats: false, } // Config controls cadvisor @@ -91,6 +93,9 @@ type Config struct { // DockerOnly only report docker containers in addition to root stats DockerOnly bool `yaml:"docker_only,omitempty"` + // DisableRootCgroupStats informs the exporter not collecting stats from the root cgroup. + DisableRootCgroupStats bool `yaml:"disable_root_cgroup_stats,omitempty"` + // Hold on to the logger passed to config.NewIntegration, to be passed to klog, as yet another unsafe global that needs to be set. logger log.Logger //nolint:unused,structcheck // logger is only used on linux } From 9034963a0f985545dcd92421f8978fb06301e8d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=E1=BB=97=20Tr=E1=BB=8Dng=20H=E1=BA=A3i?= <41283691+hainenber@users.noreply.github.com> Date: Thu, 23 Nov 2023 23:17:31 +0700 Subject: [PATCH 058/166] feat(packaging/windows): specify agent restart when getting failure on Windows (#5833) * feat(packaging/windows): specify agent restart when getting failure on Windows Signed-off-by: hainenber --- CHANGELOG.md | 2 ++ packaging/grafana-agent-flow/windows/install_script.nsis | 4 ++++ packaging/grafana-agent/windows/install_script.nsis | 3 +++ 3 files changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5b55b8aa66d..23546b149a7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,8 @@ Main (unreleased) `prometheus.exporter.cadvisor` (flow mode) and the `cadvisor` integration (static mode). (@hainenber) +- Grafana Agent on Windows now automatically restarts on failure. (@hainenber) + ### Bugfixes - Permit `X-Faro-Session-ID` header in CORS requests for the `faro.receiver` diff --git a/packaging/grafana-agent-flow/windows/install_script.nsis b/packaging/grafana-agent-flow/windows/install_script.nsis index 011e6b59c121..a333807c1196 100644 --- a/packaging/grafana-agent-flow/windows/install_script.nsis +++ b/packaging/grafana-agent-flow/windows/install_script.nsis @@ -97,6 +97,10 @@ Section "install" # Start the service. nsExec::ExecToLog 'sc start "Grafana Agent Flow"' Pop $0 + + # Auto-restart agent on failure. Reset failure counter after 60 seconds without failure + nsExec::ExecToLog `sc failure "Grafana Agent Flow" reset= 60 actions= restart/5000 reboot= "Grafana Agent Flow has failed. Restarting in 5 seconds"` + Pop $0 SectionEnd Function CreateConfig diff --git a/packaging/grafana-agent/windows/install_script.nsis b/packaging/grafana-agent/windows/install_script.nsis index 235ab1af402d..07f8986026da 100644 --- a/packaging/grafana-agent/windows/install_script.nsis +++ b/packaging/grafana-agent/windows/install_script.nsis @@ -132,6 +132,9 @@ Function Install Pop $0 nsExec::ExecToLog `sc start "Grafana Agent"` Pop $0 + # Auto-restart agent on failure. Reset failure counter after 60 seconds without failure + nsExec::ExecToLog `sc failure "Grafana Agent" reset= 60 actions= restart/5000 reboot= "Grafana Agent has failed. Restarting in 5 seconds"` + Pop $0 FunctionEnd Function WriteConfig From fa26058882c247875c978ce300990c74f0f3fe73 Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Thu, 23 Nov 2023 17:55:13 +0000 Subject: [PATCH 059/166] Improve visibility of slow component evaluations & failed components in general (#5843) * Improve visibility of slow component evaluations * rename metric * Add alerts and dash * fix-name * fix queries to > 0 * changelog * goimport --- CHANGELOG.md | 3 ++ operations/agent-flow-mixin/alerts.libsonnet | 1 + .../alerts/controller.libsonnet | 22 +++++++++++ .../dashboards/controller.libsonnet | 26 ++++++++++++- pkg/flow/internal/controller/loader.go | 7 +--- pkg/flow/internal/controller/metrics.go | 39 ++++++++++++++++--- .../grafana-agent-mixin/debugging.libsonnet | 1 + 7 files changed, 87 insertions(+), 12 deletions(-) create mode 100644 operations/agent-flow-mixin/alerts/controller.libsonnet diff --git a/CHANGELOG.md b/CHANGELOG.md index 23546b149a7d..b2fcaa2089ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,9 @@ Main (unreleased) - Grafana Agent on Windows now automatically restarts on failure. (@hainenber) +- Added metrics, alerts and dashboard visualisations to help diagnose issues + with unhealthy components and components that take too long to evaluate. (@thampiotr) + ### Bugfixes - Permit `X-Faro-Session-ID` header in CORS requests for the `faro.receiver` diff --git a/operations/agent-flow-mixin/alerts.libsonnet b/operations/agent-flow-mixin/alerts.libsonnet index 92555dc89d5e..d1473e605ed4 100644 --- a/operations/agent-flow-mixin/alerts.libsonnet +++ b/operations/agent-flow-mixin/alerts.libsonnet @@ -2,6 +2,7 @@ prometheusAlerts+: { groups+: [ (import './alerts/clustering.libsonnet'), + (import './alerts/controller.libsonnet'), ], }, } diff --git a/operations/agent-flow-mixin/alerts/controller.libsonnet b/operations/agent-flow-mixin/alerts/controller.libsonnet new file mode 100644 index 000000000000..b6451db76292 --- /dev/null +++ b/operations/agent-flow-mixin/alerts/controller.libsonnet @@ -0,0 +1,22 @@ +local alert = import './utils/alert.jsonnet'; + +alert.newGroup( + 'agent_controller', + [ + // Component evaluations are taking too long, which can lead to e.g. stale targets. + alert.newRule( + 'SlowComponentEvaluations', + 'sum by (cluster, namespace, component_id) (rate(agent_component_evaluation_slow_seconds[10m])) > 0', + 'Flow component evaluations are taking too long.', + '15m', + ), + + // Unhealthy components detected. + alert.newRule( + 'UnhealthyComponents', + 'sum(agent_component_controller_running_components{health_type!="healthy"}) > 0', + 'Unhealthy Flow components detected.', + '15m', + ), + ] +) diff --git a/operations/agent-flow-mixin/dashboards/controller.libsonnet b/operations/agent-flow-mixin/dashboards/controller.libsonnet index 1dcfcd3c9ab3..3876d612a77b 100644 --- a/operations/agent-flow-mixin/dashboards/controller.libsonnet +++ b/operations/agent-flow-mixin/dashboards/controller.libsonnet @@ -233,6 +233,28 @@ local filename = 'agent-flow-controller.json'; ]) ), + // Slow components evaluation time % + ( + panel.new(title='Slow components evaluation times', type='timeseries') + + panel.withUnit('percentunit') + + panel.withDescription(||| + The percentage of time spent evaluating 'slow' components - components that took longer than 1 minute to evaluate. + + Ideally, no component should take more than 1 minute to evaluate. The components displayed in this chart + may be a sign of a problem with the pipeline. + |||) + + panel.withPosition({ x: 16, y: 12, w: 8, h: 10 }) + + panel.withQueries([ + panel.newQuery( + expr=||| + sum by (component_id) (rate(agent_component_evaluation_slow_seconds{cluster="$cluster", namespace="$namespace"}[$__rate_interval])) + / scalar(sum(rate(agent_component_evaluation_seconds_sum{cluster="$cluster", namespace="$namespace"}[$__rate_interval]))) + |||, + legendFormat='{{component_id}}', + ), + ]) + ), + // Component evaluation histogram ( panel.newHeatmap('Component evaluation histogram') + @@ -242,7 +264,7 @@ local filename = 'agent-flow-controller.json'; The goal is to design your config so that evaluations take as little time as possible; under 100ms is a good goal. |||) + - panel.withPosition({ x: 16, y: 12, w: 8, h: 10 }) + + panel.withPosition({ x: 0, y: 22, w: 8, h: 10 }) + panel.withQueries([ panel.newQuery( expr='sum by (le) (increase(agent_component_evaluation_seconds_bucket{cluster="$cluster", namespace="$namespace"}[$__rate_interval]))', @@ -261,7 +283,7 @@ local filename = 'agent-flow-controller.json'; The goal is to design your config so that most of the time components do not queue for long; under 10ms is a good goal. |||) + - panel.withPosition({ x: 0, y: 22, w: 8, h: 10 }) + + panel.withPosition({ x: 8, y: 22, w: 8, h: 10 }) + panel.withQueries([ panel.newQuery( expr='sum by (le) (increase(agent_component_dependencies_wait_seconds_bucket{cluster="$cluster", namespace="$namespace"}[$__rate_interval]))', diff --git a/pkg/flow/internal/controller/loader.go b/pkg/flow/internal/controller/loader.go index a0954f82333f..d44a2a5062eb 100644 --- a/pkg/flow/internal/controller/loader.go +++ b/pkg/flow/internal/controller/loader.go @@ -149,9 +149,7 @@ func (l *Loader) Apply(args map[string]any, componentBlocks []*ast.BlockStmt, co defer func() { span.SetStatus(codes.Ok, "") - duration := time.Since(start) - level.Info(logger).Log("msg", "finished complete graph evaluation", "duration", duration) - l.cm.componentEvaluationTime.Observe(duration.Seconds()) + level.Info(logger).Log("msg", "finished complete graph evaluation", "duration", time.Since(start)) }() l.cache.ClearModuleExports() @@ -234,7 +232,6 @@ func (l *Loader) Apply(args map[string]any, componentBlocks []*ast.BlockStmt, co l.graph = &newGraph l.cache.SyncIDs(componentIDs) l.blocks = componentBlocks - l.cm.componentEvaluationTime.Observe(time.Since(start).Seconds()) if l.globals.OnExportsChange != nil && l.cache.ExportChangeIndex() != l.moduleExportIndex { l.moduleExportIndex = l.cache.ExportChangeIndex() l.globals.OnExportsChange(l.cache.CreateModuleExports()) @@ -652,8 +649,8 @@ func (l *Loader) concurrentEvalFn(n dag.Node, spanCtx context.Context, tracer tr defer func() { duration := time.Since(start) + l.cm.onComponentEvaluationDone(n.NodeID(), duration) level.Info(l.log).Log("msg", "finished node evaluation", "node_id", n.NodeID(), "duration", duration) - l.cm.componentEvaluationTime.Observe(duration.Seconds()) }() var err error diff --git a/pkg/flow/internal/controller/metrics.go b/pkg/flow/internal/controller/metrics.go index ff6c427d7e96..1c5a558ccc1b 100644 --- a/pkg/flow/internal/controller/metrics.go +++ b/pkg/flow/internal/controller/metrics.go @@ -1,20 +1,32 @@ package controller import ( + "fmt" + "time" + "github.com/prometheus/client_golang/prometheus" ) // controllerMetrics contains the metrics for components controller type controllerMetrics struct { - controllerEvaluation prometheus.Gauge - componentEvaluationTime prometheus.Histogram - dependenciesWaitTime prometheus.Histogram - evaluationQueueSize prometheus.Gauge + controllerEvaluation prometheus.Gauge + componentEvaluationTime prometheus.Histogram + dependenciesWaitTime prometheus.Histogram + evaluationQueueSize prometheus.Gauge + slowComponentThreshold time.Duration + slowComponentEvaluationTime *prometheus.CounterVec } // newControllerMetrics inits the metrics for the components controller func newControllerMetrics(id string) *controllerMetrics { - cm := &controllerMetrics{} + cm := &controllerMetrics{ + slowComponentThreshold: 1 * time.Minute, + } + + // The evaluation time becomes particularly problematic in the range of 30s+, so add more buckets + // that can help spot issues in that range. + // Use the following buckets: 5ms, 25ms, 100ms, 500ms, 1s, 5s, 10s, 30s, 1m, 2m, 5m, 10m + evaluationTimesBuckets := []float64{.005, .025, .1, .5, 1, 5, 10, 30, 60, 120, 300, 600} cm.controllerEvaluation = prometheus.NewGauge(prometheus.GaugeOpts{ Name: "agent_component_controller_evaluating", @@ -27,6 +39,7 @@ func newControllerMetrics(id string) *controllerMetrics { Name: "agent_component_evaluation_seconds", Help: "Time spent performing component evaluation", ConstLabels: map[string]string{"controller_id": id}, + Buckets: evaluationTimesBuckets, }, ) cm.dependenciesWaitTime = prometheus.NewHistogram( @@ -34,6 +47,7 @@ func newControllerMetrics(id string) *controllerMetrics { Name: "agent_component_dependencies_wait_seconds", Help: "Time spent by components waiting to be evaluated after their dependency is updated.", ConstLabels: map[string]string{"controller_id": id}, + Buckets: evaluationTimesBuckets, }, ) @@ -43,14 +57,28 @@ func newControllerMetrics(id string) *controllerMetrics { ConstLabels: map[string]string{"controller_id": id}, }) + cm.slowComponentEvaluationTime = prometheus.NewCounterVec(prometheus.CounterOpts{ + Name: "agent_component_evaluation_slow_seconds", + Help: fmt.Sprintf("Number of seconds spent evaluating components that take longer than %v to evaluate", cm.slowComponentThreshold), + ConstLabels: map[string]string{"controller_id": id}, + }, []string{"component_id"}) + return cm } +func (cm *controllerMetrics) onComponentEvaluationDone(name string, duration time.Duration) { + cm.componentEvaluationTime.Observe(duration.Seconds()) + if duration >= cm.slowComponentThreshold { + cm.slowComponentEvaluationTime.WithLabelValues(name).Add(duration.Seconds()) + } +} + func (cm *controllerMetrics) Collect(ch chan<- prometheus.Metric) { cm.componentEvaluationTime.Collect(ch) cm.controllerEvaluation.Collect(ch) cm.dependenciesWaitTime.Collect(ch) cm.evaluationQueueSize.Collect(ch) + cm.slowComponentEvaluationTime.Collect(ch) } func (cm *controllerMetrics) Describe(ch chan<- *prometheus.Desc) { @@ -58,6 +86,7 @@ func (cm *controllerMetrics) Describe(ch chan<- *prometheus.Desc) { cm.controllerEvaluation.Describe(ch) cm.dependenciesWaitTime.Describe(ch) cm.evaluationQueueSize.Describe(ch) + cm.slowComponentEvaluationTime.Describe(ch) } type controllerCollector struct { diff --git a/production/grafana-agent-mixin/debugging.libsonnet b/production/grafana-agent-mixin/debugging.libsonnet index be2ab983c8ef..711184d333f7 100644 --- a/production/grafana-agent-mixin/debugging.libsonnet +++ b/production/grafana-agent-mixin/debugging.libsonnet @@ -125,3 +125,4 @@ local g = import 'grafana-builder/grafana.libsonnet'; ), }, } + From adba793fa0996867eab12fbca88f9b03c3826aae Mon Sep 17 00:00:00 2001 From: Robert Fratto Date: Fri, 24 Nov 2023 08:10:59 -0500 Subject: [PATCH 060/166] Remove NeedsServices from components (#5780) * service/cluster: stop using dependant components Update the cluster service to stop looking at dependant components when notifying clustered components of a cluster update. Related to #5777, as components will no longer be able to declare a dependancy on a service. * service: add soft requirement that data must not rely on runtime config Change the doc comment of service.Data to note that the returned data must not rely on runtime config. Related to #5777, as components will no longer directly depend on services. If service.Data relied on the runtime config, it would open the door for hidden circular dependencies. * flow: remove dependency from components to services This commit fully removes the dependency from components to services, leaving the NeedsServices field in component.Registration ignored. Related to #5777. * component: remove NeedsServices field Remove the unused NeedsServices field. Related to #5777. * misc: update CHANGELOG and docs for #5777 Update the CHANGELOG and docs to reflect the dropped requirement that components must depend on consumed services. Closes #5777. --- CHANGELOG.md | 7 + .../loki/source/kubernetes/kubernetes.go | 5 +- component/loki/source/podlogs/podlogs.go | 5 +- component/module/file/file.go | 11 +- component/module/git/git.go | 11 +- component/module/http/http.go | 11 +- component/module/string/string.go | 11 +- component/otelcol/auth/basic/basic.go | 8 +- component/otelcol/auth/bearer/bearer.go | 8 +- component/otelcol/auth/headers/headers.go | 8 +- component/otelcol/auth/oauth2/oauth2.go | 8 +- component/otelcol/auth/sigv4/sigv4.go | 8 +- .../connector/servicegraph/servicegraph.go | 8 +- .../connector/spanmetrics/spanmetrics.go | 8 +- .../exporter/loadbalancing/loadbalancing.go | 8 +- component/otelcol/exporter/logging/logging.go | 8 +- component/otelcol/exporter/otlp/otlp.go | 8 +- .../otelcol/exporter/otlphttp/otlphttp.go | 8 +- .../otelcol/exporter/prometheus/prometheus.go | 8 +- .../processor/attributes/attributes.go | 8 +- component/otelcol/processor/batch/batch.go | 8 +- component/otelcol/processor/filter/filter.go | 8 +- .../processor/memorylimiter/memorylimiter.go | 8 +- .../probabilistic_sampler.go | 8 +- component/otelcol/processor/span/span.go | 8 +- .../processor/tail_sampling/tail_sampling.go | 8 +- .../otelcol/processor/transform/transform.go | 8 +- component/otelcol/receiver/jaeger/jaeger.go | 6 +- component/otelcol/receiver/kafka/kafka.go | 6 +- .../otelcol/receiver/opencensus/opencensus.go | 6 +- component/otelcol/receiver/otlp/otlp.go | 6 +- .../otelcol/receiver/prometheus/prometheus.go | 8 +- component/otelcol/receiver/vcenter/vcenter.go | 6 +- component/otelcol/receiver/zipkin/zipkin.go | 6 +- component/prometheus/exporter/agent/agent.go | 10 +- .../prometheus/exporter/apache/apache.go | 10 +- component/prometheus/exporter/azure/azure.go | 10 +- .../prometheus/exporter/blackbox/blackbox.go | 10 +- .../prometheus/exporter/cadvisor/cadvisor.go | 10 +- .../exporter/cloudwatch/cloudwatch.go | 10 +- .../prometheus/exporter/consul/consul.go | 10 +- .../prometheus/exporter/dnsmasq/dnsmasq.go | 10 +- .../exporter/elasticsearch/elasticsearch.go | 10 +- component/prometheus/exporter/gcp/gcp.go | 10 +- .../prometheus/exporter/github/github.go | 10 +- component/prometheus/exporter/kafka/kafka.go | 10 +- .../exporter/memcached/memcached.go | 10 +- .../prometheus/exporter/mongodb/mongodb.go | 10 +- component/prometheus/exporter/mssql/mssql.go | 10 +- component/prometheus/exporter/mysql/mysql.go | 10 +- .../prometheus/exporter/oracledb/oracledb.go | 10 +- .../prometheus/exporter/postgres/postgres.go | 10 +- .../prometheus/exporter/process/process.go | 10 +- component/prometheus/exporter/redis/redis.go | 10 +- component/prometheus/exporter/services.go | 20 --- component/prometheus/exporter/snmp/snmp.go | 10 +- .../exporter/snowflake/snowflake.go | 10 +- component/prometheus/exporter/squid/squid.go | 10 +- .../prometheus/exporter/statsd/statsd.go | 10 +- component/prometheus/exporter/unix/unix.go | 10 +- .../prometheus/exporter/vsphere/vsphere.go | 10 +- .../prometheus/exporter/windows/windows.go | 10 +- .../operator/podmonitors/operator.go | 8 +- .../prometheus/operator/probes/probes.go | 8 +- .../servicemonitors/servicemonitors.go | 8 +- .../prometheus/receive_http/receive_http.go | 6 +- component/prometheus/relabel/relabel.go | 8 +- .../prometheus/remotewrite/remote_write.go | 8 +- component/prometheus/scrape/scrape.go | 6 +- component/pyroscope/scrape/scrape.go | 5 +- component/registry.go | 12 +- .../flow/reference/config-blocks/http.md | 11 +- pkg/flow/flow.go | 4 +- pkg/flow/flow_services.go | 9 -- pkg/flow/flow_services_test.go | 129 +++--------------- pkg/flow/internal/controller/loader.go | 16 --- pkg/flow/internal/controller/loader_test.go | 4 +- .../internal/controller/node_component.go | 28 ++-- .../controller/node_component_test.go | 4 +- service/cluster/cluster.go | 9 +- service/service.go | 18 +-- 81 files changed, 307 insertions(+), 549 deletions(-) delete mode 100644 component/prometheus/exporter/services.go diff --git a/CHANGELOG.md b/CHANGELOG.md index b2fcaa2089ab..b394bce2533c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,10 @@ Main (unreleased) - Added metrics, alerts and dashboard visualisations to help diagnose issues with unhealthy components and components that take too long to evaluate. (@thampiotr) +- The `http` config block may now reference exports from any component. + Previously, only `remote.*` and `local.*` components could be referenced + without a circular dependency. (@rfratto) + ### Bugfixes - Permit `X-Faro-Session-ID` header in CORS requests for the `faro.receiver` @@ -216,6 +220,9 @@ v0.37.4 (2023-11-06) - Fix a bug where reloading the configuration of a `loki.write` component lead to a panic. (@tpaschalis) +- Added Kubernetes service resolver to static node's loadbalancing exporter + and to Flow's `otelcol.exporter.loadbalancing`. (@ptodev) + v0.37.3 (2023-10-26) ----------------- diff --git a/component/loki/source/kubernetes/kubernetes.go b/component/loki/source/kubernetes/kubernetes.go index ce11017c6f87..80792520e9c3 100644 --- a/component/loki/source/kubernetes/kubernetes.go +++ b/component/loki/source/kubernetes/kubernetes.go @@ -24,9 +24,8 @@ import ( func init() { component.Register(component.Registration{ - Name: "loki.source.kubernetes", - Args: Arguments{}, - NeedsServices: []string{cluster.ServiceName}, + Name: "loki.source.kubernetes", + Args: Arguments{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { return New(opts, args.(Arguments)) diff --git a/component/loki/source/podlogs/podlogs.go b/component/loki/source/podlogs/podlogs.go index 8fa4b48b96c0..f7a194e4b79a 100644 --- a/component/loki/source/podlogs/podlogs.go +++ b/component/loki/source/podlogs/podlogs.go @@ -26,9 +26,8 @@ import ( func init() { component.Register(component.Registration{ - Name: "loki.source.podlogs", - Args: Arguments{}, - NeedsServices: []string{cluster.ServiceName}, + Name: "loki.source.podlogs", + Args: Arguments{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { return New(opts, args.(Arguments)) diff --git a/component/module/file/file.go b/component/module/file/file.go index 68b20760d5f4..e40c5dc9ca48 100644 --- a/component/module/file/file.go +++ b/component/module/file/file.go @@ -9,19 +9,14 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/local/file" "github.com/grafana/agent/component/module" - "github.com/grafana/agent/service/cluster" - "github.com/grafana/agent/service/http" - "github.com/grafana/agent/service/labelstore" - otel_service "github.com/grafana/agent/service/otel" "github.com/grafana/river/rivertypes" ) func init() { component.Register(component.Registration{ - Name: "module.file", - Args: Arguments{}, - Exports: module.Exports{}, - NeedsServices: []string{http.ServiceName, cluster.ServiceName, otel_service.ServiceName, labelstore.ServiceName}, + Name: "module.file", + Args: Arguments{}, + Exports: module.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { return New(opts, args.(Arguments)) diff --git a/component/module/git/git.go b/component/module/git/git.go index 6a211fdc8843..dfe17ef2cb4a 100644 --- a/component/module/git/git.go +++ b/component/module/git/git.go @@ -14,18 +14,13 @@ import ( "github.com/grafana/agent/component/module" "github.com/grafana/agent/component/module/git/internal/vcs" "github.com/grafana/agent/pkg/flow/logging/level" - "github.com/grafana/agent/service/cluster" - "github.com/grafana/agent/service/http" - "github.com/grafana/agent/service/labelstore" - otel_service "github.com/grafana/agent/service/otel" ) func init() { component.Register(component.Registration{ - Name: "module.git", - Args: Arguments{}, - Exports: module.Exports{}, - NeedsServices: []string{http.ServiceName, cluster.ServiceName, otel_service.ServiceName, labelstore.ServiceName}, + Name: "module.git", + Args: Arguments{}, + Exports: module.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { return New(opts, args.(Arguments)) diff --git a/component/module/http/http.go b/component/module/http/http.go index a2d48f6f53b8..bc1be2158fdb 100644 --- a/component/module/http/http.go +++ b/component/module/http/http.go @@ -9,19 +9,14 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/module" remote_http "github.com/grafana/agent/component/remote/http" - "github.com/grafana/agent/service/cluster" - http_service "github.com/grafana/agent/service/http" - "github.com/grafana/agent/service/labelstore" - otel_service "github.com/grafana/agent/service/otel" "github.com/grafana/river/rivertypes" ) func init() { component.Register(component.Registration{ - Name: "module.http", - Args: Arguments{}, - Exports: module.Exports{}, - NeedsServices: []string{http_service.ServiceName, cluster.ServiceName, otel_service.ServiceName, labelstore.ServiceName}, + Name: "module.http", + Args: Arguments{}, + Exports: module.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { return New(opts, args.(Arguments)) diff --git a/component/module/string/string.go b/component/module/string/string.go index 7305abd75073..bd3e6193f441 100644 --- a/component/module/string/string.go +++ b/component/module/string/string.go @@ -5,19 +5,14 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/module" - "github.com/grafana/agent/service/cluster" - "github.com/grafana/agent/service/http" - "github.com/grafana/agent/service/labelstore" - otel_service "github.com/grafana/agent/service/otel" "github.com/grafana/river/rivertypes" ) func init() { component.Register(component.Registration{ - Name: "module.string", - Args: Arguments{}, - Exports: module.Exports{}, - NeedsServices: []string{http.ServiceName, cluster.ServiceName, otel_service.ServiceName, labelstore.ServiceName}, + Name: "module.string", + Args: Arguments{}, + Exports: module.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { return New(opts, args.(Arguments)) diff --git a/component/otelcol/auth/basic/basic.go b/component/otelcol/auth/basic/basic.go index b82209e388a3..ceae037d7f40 100644 --- a/component/otelcol/auth/basic/basic.go +++ b/component/otelcol/auth/basic/basic.go @@ -4,7 +4,6 @@ package basic import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol/auth" - otel_service "github.com/grafana/agent/service/otel" "github.com/grafana/river/rivertypes" "github.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextension" otelcomponent "go.opentelemetry.io/collector/component" @@ -14,10 +13,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.auth.basic", - Args: Arguments{}, - Exports: auth.Exports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.auth.basic", + Args: Arguments{}, + Exports: auth.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := basicauthextension.NewFactory() diff --git a/component/otelcol/auth/bearer/bearer.go b/component/otelcol/auth/bearer/bearer.go index bfcb40e6b55d..d99ea1b7cee9 100644 --- a/component/otelcol/auth/bearer/bearer.go +++ b/component/otelcol/auth/bearer/bearer.go @@ -4,7 +4,6 @@ package bearer import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol/auth" - otel_service "github.com/grafana/agent/service/otel" "github.com/grafana/river/rivertypes" "github.com/open-telemetry/opentelemetry-collector-contrib/extension/bearertokenauthextension" otelcomponent "go.opentelemetry.io/collector/component" @@ -14,10 +13,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.auth.bearer", - Args: Arguments{}, - Exports: auth.Exports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.auth.bearer", + Args: Arguments{}, + Exports: auth.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := bearertokenauthextension.NewFactory() diff --git a/component/otelcol/auth/headers/headers.go b/component/otelcol/auth/headers/headers.go index 56156759cac4..b0530639b8b4 100644 --- a/component/otelcol/auth/headers/headers.go +++ b/component/otelcol/auth/headers/headers.go @@ -8,7 +8,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol/auth" - otel_service "github.com/grafana/agent/service/otel" "github.com/grafana/river" "github.com/grafana/river/rivertypes" "github.com/open-telemetry/opentelemetry-collector-contrib/extension/headerssetterextension" @@ -18,10 +17,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.auth.headers", - Args: Arguments{}, - Exports: auth.Exports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.auth.headers", + Args: Arguments{}, + Exports: auth.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := headerssetterextension.NewFactory() diff --git a/component/otelcol/auth/oauth2/oauth2.go b/component/otelcol/auth/oauth2/oauth2.go index 3396dca94d06..6007bd59236a 100644 --- a/component/otelcol/auth/oauth2/oauth2.go +++ b/component/otelcol/auth/oauth2/oauth2.go @@ -7,7 +7,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/auth" - otel_service "github.com/grafana/agent/service/otel" "github.com/grafana/river/rivertypes" "github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension" otelcomponent "go.opentelemetry.io/collector/component" @@ -17,10 +16,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.auth.oauth2", - Args: Arguments{}, - Exports: auth.Exports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.auth.oauth2", + Args: Arguments{}, + Exports: auth.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := oauth2clientauthextension.NewFactory() diff --git a/component/otelcol/auth/sigv4/sigv4.go b/component/otelcol/auth/sigv4/sigv4.go index 81336757fb6b..0a3db55c546b 100644 --- a/component/otelcol/auth/sigv4/sigv4.go +++ b/component/otelcol/auth/sigv4/sigv4.go @@ -3,7 +3,6 @@ package sigv4 import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol/auth" - otel_service "github.com/grafana/agent/service/otel" "github.com/open-telemetry/opentelemetry-collector-contrib/extension/sigv4authextension" otelcomponent "go.opentelemetry.io/collector/component" otelextension "go.opentelemetry.io/collector/extension" @@ -11,10 +10,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.auth.sigv4", - Args: Arguments{}, - Exports: auth.Exports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.auth.sigv4", + Args: Arguments{}, + Exports: auth.Exports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := sigv4authextension.NewFactory() diff --git a/component/otelcol/connector/servicegraph/servicegraph.go b/component/otelcol/connector/servicegraph/servicegraph.go index ce171700569f..e5370d89f620 100644 --- a/component/otelcol/connector/servicegraph/servicegraph.go +++ b/component/otelcol/connector/servicegraph/servicegraph.go @@ -7,7 +7,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/connector" - otel_service "github.com/grafana/agent/service/otel" "github.com/grafana/river" "github.com/open-telemetry/opentelemetry-collector-contrib/connector/servicegraphconnector" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/servicegraphprocessor" @@ -17,10 +16,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.connector.servicegraph", - Args: Arguments{}, - Exports: otelcol.ConsumerExports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.connector.servicegraph", + Args: Arguments{}, + Exports: otelcol.ConsumerExports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := servicegraphconnector.NewFactory() diff --git a/component/otelcol/connector/spanmetrics/spanmetrics.go b/component/otelcol/connector/spanmetrics/spanmetrics.go index 45b8b1f4bd0a..2a32c9b49642 100644 --- a/component/otelcol/connector/spanmetrics/spanmetrics.go +++ b/component/otelcol/connector/spanmetrics/spanmetrics.go @@ -8,7 +8,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/connector" - otel_service "github.com/grafana/agent/service/otel" "github.com/grafana/river" "github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector" otelcomponent "go.opentelemetry.io/collector/component" @@ -17,10 +16,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.connector.spanmetrics", - Args: Arguments{}, - Exports: otelcol.ConsumerExports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.connector.spanmetrics", + Args: Arguments{}, + Exports: otelcol.ConsumerExports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := spanmetricsconnector.NewFactory() diff --git a/component/otelcol/exporter/loadbalancing/loadbalancing.go b/component/otelcol/exporter/loadbalancing/loadbalancing.go index 35a42df3a328..3455318fef38 100644 --- a/component/otelcol/exporter/loadbalancing/loadbalancing.go +++ b/component/otelcol/exporter/loadbalancing/loadbalancing.go @@ -10,7 +10,6 @@ import ( "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/auth" "github.com/grafana/agent/component/otelcol/exporter" - otel_service "github.com/grafana/agent/service/otel" "github.com/grafana/river" "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter" otelcomponent "go.opentelemetry.io/collector/component" @@ -24,10 +23,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.exporter.loadbalancing", - Args: Arguments{}, - Exports: otelcol.ConsumerExports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.exporter.loadbalancing", + Args: Arguments{}, + Exports: otelcol.ConsumerExports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := loadbalancingexporter.NewFactory() diff --git a/component/otelcol/exporter/logging/logging.go b/component/otelcol/exporter/logging/logging.go index c4dc735c4fca..13d12fbf312e 100644 --- a/component/otelcol/exporter/logging/logging.go +++ b/component/otelcol/exporter/logging/logging.go @@ -5,7 +5,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/exporter" - otel_service "github.com/grafana/agent/service/otel" otelcomponent "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config/configtelemetry" loggingexporter "go.opentelemetry.io/collector/exporter/loggingexporter" @@ -14,10 +13,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.exporter.logging", - Args: Arguments{}, - Exports: otelcol.ConsumerExports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.exporter.logging", + Args: Arguments{}, + Exports: otelcol.ConsumerExports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := loggingexporter.NewFactory() diff --git a/component/otelcol/exporter/otlp/otlp.go b/component/otelcol/exporter/otlp/otlp.go index c58d434d992a..7ca10d2c2c0b 100644 --- a/component/otelcol/exporter/otlp/otlp.go +++ b/component/otelcol/exporter/otlp/otlp.go @@ -7,7 +7,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/exporter" - otel_service "github.com/grafana/agent/service/otel" otelcomponent "go.opentelemetry.io/collector/component" otelpexporterhelper "go.opentelemetry.io/collector/exporter/exporterhelper" "go.opentelemetry.io/collector/exporter/otlpexporter" @@ -16,10 +15,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.exporter.otlp", - Args: Arguments{}, - Exports: otelcol.ConsumerExports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.exporter.otlp", + Args: Arguments{}, + Exports: otelcol.ConsumerExports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := otlpexporter.NewFactory() diff --git a/component/otelcol/exporter/otlphttp/otlphttp.go b/component/otelcol/exporter/otlphttp/otlphttp.go index d70d0f7f8e98..0508ec2e6289 100644 --- a/component/otelcol/exporter/otlphttp/otlphttp.go +++ b/component/otelcol/exporter/otlphttp/otlphttp.go @@ -8,7 +8,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/exporter" - otel_service "github.com/grafana/agent/service/otel" otelcomponent "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/exporter/otlphttpexporter" otelextension "go.opentelemetry.io/collector/extension" @@ -16,10 +15,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.exporter.otlphttp", - Args: Arguments{}, - Exports: otelcol.ConsumerExports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.exporter.otlphttp", + Args: Arguments{}, + Exports: otelcol.ConsumerExports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := otlphttpexporter.NewFactory() diff --git a/component/otelcol/exporter/prometheus/prometheus.go b/component/otelcol/exporter/prometheus/prometheus.go index 0dd9ef49e69f..77e894dc6321 100644 --- a/component/otelcol/exporter/prometheus/prometheus.go +++ b/component/otelcol/exporter/prometheus/prometheus.go @@ -19,10 +19,10 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.exporter.prometheus", - Args: Arguments{}, - Exports: otelcol.ConsumerExports{}, - NeedsServices: []string{labelstore.ServiceName}, + Name: "otelcol.exporter.prometheus", + Args: Arguments{}, + Exports: otelcol.ConsumerExports{}, + Build: func(o component.Options, a component.Arguments) (component.Component, error) { return New(o, a.(Arguments)) }, diff --git a/component/otelcol/processor/attributes/attributes.go b/component/otelcol/processor/attributes/attributes.go index c71eec8e1415..93f774e54b55 100644 --- a/component/otelcol/processor/attributes/attributes.go +++ b/component/otelcol/processor/attributes/attributes.go @@ -7,7 +7,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/processor" - otel_service "github.com/grafana/agent/service/otel" "github.com/mitchellh/mapstructure" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor" otelcomponent "go.opentelemetry.io/collector/component" @@ -16,10 +15,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.processor.attributes", - Args: Arguments{}, - Exports: otelcol.ConsumerExports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.processor.attributes", + Args: Arguments{}, + Exports: otelcol.ConsumerExports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := attributesprocessor.NewFactory() diff --git a/component/otelcol/processor/batch/batch.go b/component/otelcol/processor/batch/batch.go index 6cc54fa5f333..3c205a0e4320 100644 --- a/component/otelcol/processor/batch/batch.go +++ b/component/otelcol/processor/batch/batch.go @@ -8,7 +8,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/processor" - otel_service "github.com/grafana/agent/service/otel" otelcomponent "go.opentelemetry.io/collector/component" otelextension "go.opentelemetry.io/collector/extension" "go.opentelemetry.io/collector/processor/batchprocessor" @@ -16,10 +15,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.processor.batch", - Args: Arguments{}, - Exports: otelcol.ConsumerExports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.processor.batch", + Args: Arguments{}, + Exports: otelcol.ConsumerExports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := batchprocessor.NewFactory() diff --git a/component/otelcol/processor/filter/filter.go b/component/otelcol/processor/filter/filter.go index 864e9887688e..fe0927569558 100644 --- a/component/otelcol/processor/filter/filter.go +++ b/component/otelcol/processor/filter/filter.go @@ -4,7 +4,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/processor" - otel_service "github.com/grafana/agent/service/otel" "github.com/mitchellh/mapstructure" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor" @@ -14,10 +13,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.processor.filter", - Args: Arguments{}, - Exports: otelcol.ConsumerExports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.processor.filter", + Args: Arguments{}, + Exports: otelcol.ConsumerExports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := filterprocessor.NewFactory() diff --git a/component/otelcol/processor/memorylimiter/memorylimiter.go b/component/otelcol/processor/memorylimiter/memorylimiter.go index 0321d41cb5c4..edf3bb1016d0 100644 --- a/component/otelcol/processor/memorylimiter/memorylimiter.go +++ b/component/otelcol/processor/memorylimiter/memorylimiter.go @@ -9,7 +9,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/processor" - otel_service "github.com/grafana/agent/service/otel" otelcomponent "go.opentelemetry.io/collector/component" otelextension "go.opentelemetry.io/collector/extension" "go.opentelemetry.io/collector/processor/memorylimiterprocessor" @@ -17,10 +16,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.processor.memory_limiter", - Args: Arguments{}, - Exports: otelcol.ConsumerExports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.processor.memory_limiter", + Args: Arguments{}, + Exports: otelcol.ConsumerExports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := memorylimiterprocessor.NewFactory() diff --git a/component/otelcol/processor/probabilistic_sampler/probabilistic_sampler.go b/component/otelcol/processor/probabilistic_sampler/probabilistic_sampler.go index 72b8430de5e1..13321e6af49e 100644 --- a/component/otelcol/processor/probabilistic_sampler/probabilistic_sampler.go +++ b/component/otelcol/processor/probabilistic_sampler/probabilistic_sampler.go @@ -5,7 +5,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/processor" - otel_service "github.com/grafana/agent/service/otel" "github.com/grafana/river" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/probabilisticsamplerprocessor" otelcomponent "go.opentelemetry.io/collector/component" @@ -14,10 +13,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.processor.probabilistic_sampler", - Args: Arguments{}, - Exports: otelcol.ConsumerExports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.processor.probabilistic_sampler", + Args: Arguments{}, + Exports: otelcol.ConsumerExports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := probabilisticsamplerprocessor.NewFactory() diff --git a/component/otelcol/processor/span/span.go b/component/otelcol/processor/span/span.go index c62e8e108527..833a899d2c25 100644 --- a/component/otelcol/processor/span/span.go +++ b/component/otelcol/processor/span/span.go @@ -7,7 +7,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/processor" - otel_service "github.com/grafana/agent/service/otel" "github.com/mitchellh/mapstructure" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor" otelcomponent "go.opentelemetry.io/collector/component" @@ -17,10 +16,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.processor.span", - Args: Arguments{}, - Exports: otelcol.ConsumerExports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.processor.span", + Args: Arguments{}, + Exports: otelcol.ConsumerExports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := spanprocessor.NewFactory() diff --git a/component/otelcol/processor/tail_sampling/tail_sampling.go b/component/otelcol/processor/tail_sampling/tail_sampling.go index 0a17a49bd3da..dc2f33bb661d 100644 --- a/component/otelcol/processor/tail_sampling/tail_sampling.go +++ b/component/otelcol/processor/tail_sampling/tail_sampling.go @@ -8,7 +8,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/processor" - otel_service "github.com/grafana/agent/service/otel" tsp "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor" otelcomponent "go.opentelemetry.io/collector/component" otelextension "go.opentelemetry.io/collector/extension" @@ -16,10 +15,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.processor.tail_sampling", - Args: Arguments{}, - Exports: otelcol.ConsumerExports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.processor.tail_sampling", + Args: Arguments{}, + Exports: otelcol.ConsumerExports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := tsp.NewFactory() diff --git a/component/otelcol/processor/transform/transform.go b/component/otelcol/processor/transform/transform.go index 85f86e5ac1ca..222e7c3289a8 100644 --- a/component/otelcol/processor/transform/transform.go +++ b/component/otelcol/processor/transform/transform.go @@ -8,7 +8,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/processor" - otel_service "github.com/grafana/agent/service/otel" "github.com/mitchellh/mapstructure" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor" @@ -18,10 +17,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.processor.transform", - Args: Arguments{}, - Exports: otelcol.ConsumerExports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.processor.transform", + Args: Arguments{}, + Exports: otelcol.ConsumerExports{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := transformprocessor.NewFactory() diff --git a/component/otelcol/receiver/jaeger/jaeger.go b/component/otelcol/receiver/jaeger/jaeger.go index 1858f7a909ba..2cebb37b9114 100644 --- a/component/otelcol/receiver/jaeger/jaeger.go +++ b/component/otelcol/receiver/jaeger/jaeger.go @@ -8,7 +8,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/receiver" - otel_service "github.com/grafana/agent/service/otel" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver" otelcomponent "go.opentelemetry.io/collector/component" otelconfiggrpc "go.opentelemetry.io/collector/config/configgrpc" @@ -18,9 +17,8 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.receiver.jaeger", - Args: Arguments{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.receiver.jaeger", + Args: Arguments{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := jaegerreceiver.NewFactory() diff --git a/component/otelcol/receiver/kafka/kafka.go b/component/otelcol/receiver/kafka/kafka.go index 2a41159b103b..2111f04c2579 100644 --- a/component/otelcol/receiver/kafka/kafka.go +++ b/component/otelcol/receiver/kafka/kafka.go @@ -7,7 +7,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/receiver" - otel_service "github.com/grafana/agent/service/otel" "github.com/grafana/river/rivertypes" "github.com/mitchellh/mapstructure" "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter" @@ -18,9 +17,8 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.receiver.kafka", - Args: Arguments{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.receiver.kafka", + Args: Arguments{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := kafkareceiver.NewFactory() diff --git a/component/otelcol/receiver/opencensus/opencensus.go b/component/otelcol/receiver/opencensus/opencensus.go index 63df3da32118..7f4c64ee0ace 100644 --- a/component/otelcol/receiver/opencensus/opencensus.go +++ b/component/otelcol/receiver/opencensus/opencensus.go @@ -6,7 +6,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/receiver" - otel_service "github.com/grafana/agent/service/otel" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusreceiver" otelcomponent "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/extension" @@ -14,9 +13,8 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.receiver.opencensus", - Args: Arguments{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.receiver.opencensus", + Args: Arguments{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := opencensusreceiver.NewFactory() diff --git a/component/otelcol/receiver/otlp/otlp.go b/component/otelcol/receiver/otlp/otlp.go index 4ca6106551e3..bfdb20365ef8 100644 --- a/component/otelcol/receiver/otlp/otlp.go +++ b/component/otelcol/receiver/otlp/otlp.go @@ -9,7 +9,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/receiver" - otel_service "github.com/grafana/agent/service/otel" otelcomponent "go.opentelemetry.io/collector/component" otelextension "go.opentelemetry.io/collector/extension" "go.opentelemetry.io/collector/receiver/otlpreceiver" @@ -17,9 +16,8 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.receiver.otlp", - Args: Arguments{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.receiver.otlp", + Args: Arguments{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := otlpreceiver.NewFactory() diff --git a/component/otelcol/receiver/prometheus/prometheus.go b/component/otelcol/receiver/prometheus/prometheus.go index 7928f504287b..5a54de7337b8 100644 --- a/component/otelcol/receiver/prometheus/prometheus.go +++ b/component/otelcol/receiver/prometheus/prometheus.go @@ -15,7 +15,6 @@ import ( "github.com/grafana/agent/component/otelcol/receiver/prometheus/internal" "github.com/grafana/agent/pkg/build" "github.com/grafana/agent/pkg/util/zapadapter" - otel_service "github.com/grafana/agent/service/otel" "github.com/prometheus/prometheus/model/labels" "github.com/prometheus/prometheus/storage" otelcomponent "go.opentelemetry.io/collector/component" @@ -26,10 +25,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.receiver.prometheus", - Args: Arguments{}, - Exports: Exports{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.receiver.prometheus", + Args: Arguments{}, + Exports: Exports{}, Build: func(o component.Options, a component.Arguments) (component.Component, error) { return New(o, a.(Arguments)) diff --git a/component/otelcol/receiver/vcenter/vcenter.go b/component/otelcol/receiver/vcenter/vcenter.go index 88efd9402940..346110da1ecd 100644 --- a/component/otelcol/receiver/vcenter/vcenter.go +++ b/component/otelcol/receiver/vcenter/vcenter.go @@ -8,7 +8,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/receiver" - otel_service "github.com/grafana/agent/service/otel" "github.com/grafana/river/rivertypes" "github.com/mitchellh/mapstructure" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver" @@ -19,9 +18,8 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.receiver.vcenter", - Args: Arguments{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.receiver.vcenter", + Args: Arguments{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := vcenterreceiver.NewFactory() diff --git a/component/otelcol/receiver/zipkin/zipkin.go b/component/otelcol/receiver/zipkin/zipkin.go index 50ac8fb23cb7..1727d38a0d05 100644 --- a/component/otelcol/receiver/zipkin/zipkin.go +++ b/component/otelcol/receiver/zipkin/zipkin.go @@ -5,7 +5,6 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/otelcol" "github.com/grafana/agent/component/otelcol/receiver" - otel_service "github.com/grafana/agent/service/otel" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver" otelcomponent "go.opentelemetry.io/collector/component" otelextension "go.opentelemetry.io/collector/extension" @@ -13,9 +12,8 @@ import ( func init() { component.Register(component.Registration{ - Name: "otelcol.receiver.zipkin", - Args: Arguments{}, - NeedsServices: []string{otel_service.ServiceName}, + Name: "otelcol.receiver.zipkin", + Args: Arguments{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { fact := zipkinreceiver.NewFactory() diff --git a/component/prometheus/exporter/agent/agent.go b/component/prometheus/exporter/agent/agent.go index 6d8064d2771b..5a02005c92b1 100644 --- a/component/prometheus/exporter/agent/agent.go +++ b/component/prometheus/exporter/agent/agent.go @@ -9,11 +9,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.agent", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "agent"), + Name: "prometheus.exporter.agent", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "agent"), }) } diff --git a/component/prometheus/exporter/apache/apache.go b/component/prometheus/exporter/apache/apache.go index 802792f545bd..4ba9d8166832 100644 --- a/component/prometheus/exporter/apache/apache.go +++ b/component/prometheus/exporter/apache/apache.go @@ -9,11 +9,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.apache", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "apache"), + Name: "prometheus.exporter.apache", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "apache"), }) } diff --git a/component/prometheus/exporter/azure/azure.go b/component/prometheus/exporter/azure/azure.go index 0b2d8483e6a9..9f454d40ce11 100644 --- a/component/prometheus/exporter/azure/azure.go +++ b/component/prometheus/exporter/azure/azure.go @@ -9,11 +9,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.azure", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "azure"), + Name: "prometheus.exporter.azure", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "azure"), }) } diff --git a/component/prometheus/exporter/blackbox/blackbox.go b/component/prometheus/exporter/blackbox/blackbox.go index 206ac1f1d12b..0388560443a8 100644 --- a/component/prometheus/exporter/blackbox/blackbox.go +++ b/component/prometheus/exporter/blackbox/blackbox.go @@ -19,11 +19,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.blackbox", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.NewWithTargetBuilder(createExporter, "blackbox", buildBlackboxTargets), + Name: "prometheus.exporter.blackbox", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.NewWithTargetBuilder(createExporter, "blackbox", buildBlackboxTargets), }) } diff --git a/component/prometheus/exporter/cadvisor/cadvisor.go b/component/prometheus/exporter/cadvisor/cadvisor.go index 14e60493930e..2e19f82cf469 100644 --- a/component/prometheus/exporter/cadvisor/cadvisor.go +++ b/component/prometheus/exporter/cadvisor/cadvisor.go @@ -11,11 +11,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.cadvisor", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "cadvisor"), + Name: "prometheus.exporter.cadvisor", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "cadvisor"), }) } diff --git a/component/prometheus/exporter/cloudwatch/cloudwatch.go b/component/prometheus/exporter/cloudwatch/cloudwatch.go index 6d8dc2b6d83c..aa957ce56562 100644 --- a/component/prometheus/exporter/cloudwatch/cloudwatch.go +++ b/component/prometheus/exporter/cloudwatch/cloudwatch.go @@ -11,11 +11,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.cloudwatch", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "cloudwatch"), + Name: "prometheus.exporter.cloudwatch", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "cloudwatch"), }) } diff --git a/component/prometheus/exporter/consul/consul.go b/component/prometheus/exporter/consul/consul.go index 862dc7042017..ce301f8ddc6b 100644 --- a/component/prometheus/exporter/consul/consul.go +++ b/component/prometheus/exporter/consul/consul.go @@ -11,11 +11,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.consul", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "consul"), + Name: "prometheus.exporter.consul", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "consul"), }) } diff --git a/component/prometheus/exporter/dnsmasq/dnsmasq.go b/component/prometheus/exporter/dnsmasq/dnsmasq.go index 5daaf17df4c0..f856fc4bd7df 100644 --- a/component/prometheus/exporter/dnsmasq/dnsmasq.go +++ b/component/prometheus/exporter/dnsmasq/dnsmasq.go @@ -9,11 +9,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.dnsmasq", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "dnsmasq"), + Name: "prometheus.exporter.dnsmasq", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "dnsmasq"), }) } diff --git a/component/prometheus/exporter/elasticsearch/elasticsearch.go b/component/prometheus/exporter/elasticsearch/elasticsearch.go index 84904e6e3fee..89123359cb9f 100644 --- a/component/prometheus/exporter/elasticsearch/elasticsearch.go +++ b/component/prometheus/exporter/elasticsearch/elasticsearch.go @@ -11,11 +11,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.elasticsearch", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "elasticsearch"), + Name: "prometheus.exporter.elasticsearch", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "elasticsearch"), }) } diff --git a/component/prometheus/exporter/gcp/gcp.go b/component/prometheus/exporter/gcp/gcp.go index b5581b7884c4..0147b72819b3 100644 --- a/component/prometheus/exporter/gcp/gcp.go +++ b/component/prometheus/exporter/gcp/gcp.go @@ -11,11 +11,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.gcp", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "gcp"), + Name: "prometheus.exporter.gcp", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "gcp"), }) } diff --git a/component/prometheus/exporter/github/github.go b/component/prometheus/exporter/github/github.go index 354005b4e692..4d3dab5a0f2f 100644 --- a/component/prometheus/exporter/github/github.go +++ b/component/prometheus/exporter/github/github.go @@ -11,11 +11,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.github", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "github"), + Name: "prometheus.exporter.github", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "github"), }) } diff --git a/component/prometheus/exporter/kafka/kafka.go b/component/prometheus/exporter/kafka/kafka.go index 1fa01bf4d614..f146c40bae3c 100644 --- a/component/prometheus/exporter/kafka/kafka.go +++ b/component/prometheus/exporter/kafka/kafka.go @@ -50,11 +50,11 @@ type Arguments struct { func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.kafka", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.NewWithTargetBuilder(createExporter, "kafka", customizeTarget), + Name: "prometheus.exporter.kafka", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.NewWithTargetBuilder(createExporter, "kafka", customizeTarget), }) } diff --git a/component/prometheus/exporter/memcached/memcached.go b/component/prometheus/exporter/memcached/memcached.go index de5213a273a2..09d5214855fc 100644 --- a/component/prometheus/exporter/memcached/memcached.go +++ b/component/prometheus/exporter/memcached/memcached.go @@ -12,11 +12,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.memcached", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "memcached"), + Name: "prometheus.exporter.memcached", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "memcached"), }) } diff --git a/component/prometheus/exporter/mongodb/mongodb.go b/component/prometheus/exporter/mongodb/mongodb.go index 6905865285bd..0c0064c5b5c1 100644 --- a/component/prometheus/exporter/mongodb/mongodb.go +++ b/component/prometheus/exporter/mongodb/mongodb.go @@ -11,11 +11,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.mongodb", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "mongodb"), + Name: "prometheus.exporter.mongodb", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "mongodb"), }) } diff --git a/component/prometheus/exporter/mssql/mssql.go b/component/prometheus/exporter/mssql/mssql.go index 819be78a8927..3e9770fb8892 100644 --- a/component/prometheus/exporter/mssql/mssql.go +++ b/component/prometheus/exporter/mssql/mssql.go @@ -14,11 +14,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.mssql", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "mssql"), + Name: "prometheus.exporter.mssql", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "mssql"), }) } diff --git a/component/prometheus/exporter/mysql/mysql.go b/component/prometheus/exporter/mysql/mysql.go index 90201a450a36..b23f3e170394 100644 --- a/component/prometheus/exporter/mysql/mysql.go +++ b/component/prometheus/exporter/mysql/mysql.go @@ -12,11 +12,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.mysql", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "mysql"), + Name: "prometheus.exporter.mysql", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "mysql"), }) } diff --git a/component/prometheus/exporter/oracledb/oracledb.go b/component/prometheus/exporter/oracledb/oracledb.go index de3fd28ac90b..60926d445fbb 100644 --- a/component/prometheus/exporter/oracledb/oracledb.go +++ b/component/prometheus/exporter/oracledb/oracledb.go @@ -15,11 +15,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.oracledb", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "oracledb"), + Name: "prometheus.exporter.oracledb", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "oracledb"), }) } diff --git a/component/prometheus/exporter/postgres/postgres.go b/component/prometheus/exporter/postgres/postgres.go index 97f940f910bf..9a3f170c1734 100644 --- a/component/prometheus/exporter/postgres/postgres.go +++ b/component/prometheus/exporter/postgres/postgres.go @@ -15,11 +15,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.postgres", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "postgres"), + Name: "prometheus.exporter.postgres", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "postgres"), }) } diff --git a/component/prometheus/exporter/process/process.go b/component/prometheus/exporter/process/process.go index 89aa613d1fae..6d8109d76fd8 100644 --- a/component/prometheus/exporter/process/process.go +++ b/component/prometheus/exporter/process/process.go @@ -10,11 +10,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.process", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createIntegration, "process"), + Name: "prometheus.exporter.process", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createIntegration, "process"), }) } diff --git a/component/prometheus/exporter/redis/redis.go b/component/prometheus/exporter/redis/redis.go index c6fc45822bf3..3522b07fb78e 100644 --- a/component/prometheus/exporter/redis/redis.go +++ b/component/prometheus/exporter/redis/redis.go @@ -15,11 +15,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.redis", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "redis"), + Name: "prometheus.exporter.redis", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "redis"), }) } diff --git a/component/prometheus/exporter/services.go b/component/prometheus/exporter/services.go deleted file mode 100644 index 272c1fde2590..000000000000 --- a/component/prometheus/exporter/services.go +++ /dev/null @@ -1,20 +0,0 @@ -package exporter - -import ( - "github.com/grafana/agent/service/http" - "golang.org/x/exp/maps" -) - -// RequiredServices returns the set of services needed by all -// prometheus.exporter components. Callers may optionally pass in additional -// services to add to the returned list. -func RequiredServices(additionalServices ...string) []string { - services := map[string]struct{}{ - http.ServiceName: {}, - } - for _, svc := range additionalServices { - services[svc] = struct{}{} - } - - return maps.Keys(services) -} diff --git a/component/prometheus/exporter/snmp/snmp.go b/component/prometheus/exporter/snmp/snmp.go index e34feff275db..a050c331a85b 100644 --- a/component/prometheus/exporter/snmp/snmp.go +++ b/component/prometheus/exporter/snmp/snmp.go @@ -17,11 +17,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.snmp", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.NewWithTargetBuilder(createExporter, "snmp", buildSNMPTargets), + Name: "prometheus.exporter.snmp", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.NewWithTargetBuilder(createExporter, "snmp", buildSNMPTargets), }) } diff --git a/component/prometheus/exporter/snowflake/snowflake.go b/component/prometheus/exporter/snowflake/snowflake.go index 4b2314036062..0da475d356d5 100644 --- a/component/prometheus/exporter/snowflake/snowflake.go +++ b/component/prometheus/exporter/snowflake/snowflake.go @@ -11,11 +11,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.snowflake", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "snowflake"), + Name: "prometheus.exporter.snowflake", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "snowflake"), }) } diff --git a/component/prometheus/exporter/squid/squid.go b/component/prometheus/exporter/squid/squid.go index 00449a8cba00..4af71e076a1c 100644 --- a/component/prometheus/exporter/squid/squid.go +++ b/component/prometheus/exporter/squid/squid.go @@ -13,11 +13,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.squid", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "squid"), + Name: "prometheus.exporter.squid", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "squid"), }) } diff --git a/component/prometheus/exporter/statsd/statsd.go b/component/prometheus/exporter/statsd/statsd.go index 10c308077e23..3d7b2c0dafa1 100644 --- a/component/prometheus/exporter/statsd/statsd.go +++ b/component/prometheus/exporter/statsd/statsd.go @@ -8,11 +8,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.statsd", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "statsd"), + Name: "prometheus.exporter.statsd", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "statsd"), }) } diff --git a/component/prometheus/exporter/unix/unix.go b/component/prometheus/exporter/unix/unix.go index e33fa9a63136..b1c3af6cb859 100644 --- a/component/prometheus/exporter/unix/unix.go +++ b/component/prometheus/exporter/unix/unix.go @@ -8,11 +8,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.unix", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "unix"), + Name: "prometheus.exporter.unix", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "unix"), }) } diff --git a/component/prometheus/exporter/vsphere/vsphere.go b/component/prometheus/exporter/vsphere/vsphere.go index d50894b5e446..e8cd625c3cdf 100644 --- a/component/prometheus/exporter/vsphere/vsphere.go +++ b/component/prometheus/exporter/vsphere/vsphere.go @@ -13,11 +13,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.vsphere", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "vsphere"), + Name: "prometheus.exporter.vsphere", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "vsphere"), }) } diff --git a/component/prometheus/exporter/windows/windows.go b/component/prometheus/exporter/windows/windows.go index 214302748aee..5f05d3cc63e7 100644 --- a/component/prometheus/exporter/windows/windows.go +++ b/component/prometheus/exporter/windows/windows.go @@ -8,11 +8,11 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.exporter.windows", - Args: Arguments{}, - Exports: exporter.Exports{}, - NeedsServices: exporter.RequiredServices(), - Build: exporter.New(createExporter, "windows"), + Name: "prometheus.exporter.windows", + Args: Arguments{}, + Exports: exporter.Exports{}, + + Build: exporter.New(createExporter, "windows"), }) } diff --git a/component/prometheus/operator/podmonitors/operator.go b/component/prometheus/operator/podmonitors/operator.go index 41fb781f5db4..ea41d6f0fe27 100644 --- a/component/prometheus/operator/podmonitors/operator.go +++ b/component/prometheus/operator/podmonitors/operator.go @@ -4,16 +4,12 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/prometheus/operator" "github.com/grafana/agent/component/prometheus/operator/common" - "github.com/grafana/agent/service/cluster" - "github.com/grafana/agent/service/http" - "github.com/grafana/agent/service/labelstore" ) func init() { component.Register(component.Registration{ - Name: "prometheus.operator.podmonitors", - Args: operator.Arguments{}, - NeedsServices: []string{cluster.ServiceName, http.ServiceName, labelstore.ServiceName}, + Name: "prometheus.operator.podmonitors", + Args: operator.Arguments{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { return common.New(opts, args, common.KindPodMonitor) diff --git a/component/prometheus/operator/probes/probes.go b/component/prometheus/operator/probes/probes.go index 00dad3fd9821..a8d96b428489 100644 --- a/component/prometheus/operator/probes/probes.go +++ b/component/prometheus/operator/probes/probes.go @@ -4,16 +4,12 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/prometheus/operator" "github.com/grafana/agent/component/prometheus/operator/common" - "github.com/grafana/agent/service/cluster" - "github.com/grafana/agent/service/http" - "github.com/grafana/agent/service/labelstore" ) func init() { component.Register(component.Registration{ - Name: "prometheus.operator.probes", - Args: operator.Arguments{}, - NeedsServices: []string{cluster.ServiceName, http.ServiceName, labelstore.ServiceName}, + Name: "prometheus.operator.probes", + Args: operator.Arguments{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { return common.New(opts, args, common.KindProbe) diff --git a/component/prometheus/operator/servicemonitors/servicemonitors.go b/component/prometheus/operator/servicemonitors/servicemonitors.go index 8df947f10883..55c1e34c2bbe 100644 --- a/component/prometheus/operator/servicemonitors/servicemonitors.go +++ b/component/prometheus/operator/servicemonitors/servicemonitors.go @@ -4,16 +4,12 @@ import ( "github.com/grafana/agent/component" "github.com/grafana/agent/component/prometheus/operator" "github.com/grafana/agent/component/prometheus/operator/common" - "github.com/grafana/agent/service/cluster" - "github.com/grafana/agent/service/http" - "github.com/grafana/agent/service/labelstore" ) func init() { component.Register(component.Registration{ - Name: "prometheus.operator.servicemonitors", - Args: operator.Arguments{}, - NeedsServices: []string{cluster.ServiceName, http.ServiceName, labelstore.ServiceName}, + Name: "prometheus.operator.servicemonitors", + Args: operator.Arguments{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { return common.New(opts, args, common.KindServiceMonitor) diff --git a/component/prometheus/receive_http/receive_http.go b/component/prometheus/receive_http/receive_http.go index 5fc0abb91b1c..3e78e1e7472c 100644 --- a/component/prometheus/receive_http/receive_http.go +++ b/component/prometheus/receive_http/receive_http.go @@ -21,9 +21,9 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.receive_http", - Args: Arguments{}, - NeedsServices: []string{labelstore.ServiceName}, + Name: "prometheus.receive_http", + Args: Arguments{}, + Build: func(opts component.Options, args component.Arguments) (component.Component, error) { return New(opts, args.(Arguments)) }, diff --git a/component/prometheus/relabel/relabel.go b/component/prometheus/relabel/relabel.go index 2f8fd5ab077c..c7b39ad6b0f4 100644 --- a/component/prometheus/relabel/relabel.go +++ b/component/prometheus/relabel/relabel.go @@ -26,10 +26,10 @@ import ( func init() { component.Register(component.Registration{ - Name: "prometheus.relabel", - Args: Arguments{}, - Exports: Exports{}, - NeedsServices: []string{labelstore.ServiceName}, + Name: "prometheus.relabel", + Args: Arguments{}, + Exports: Exports{}, + Build: func(opts component.Options, args component.Arguments) (component.Component, error) { return New(opts, args.(Arguments)) }, diff --git a/component/prometheus/remotewrite/remote_write.go b/component/prometheus/remotewrite/remote_write.go index ed6ec0089b39..e337ff8f8cca 100644 --- a/component/prometheus/remotewrite/remote_write.go +++ b/component/prometheus/remotewrite/remote_write.go @@ -38,10 +38,10 @@ func init() { remote.UserAgent = useragent.Get() component.Register(component.Registration{ - Name: "prometheus.remote_write", - Args: Arguments{}, - Exports: Exports{}, - NeedsServices: []string{labelstore.ServiceName}, + Name: "prometheus.remote_write", + Args: Arguments{}, + Exports: Exports{}, + Build: func(o component.Options, c component.Arguments) (component.Component, error) { return New(o, c.(Arguments)) }, diff --git a/component/prometheus/scrape/scrape.go b/component/prometheus/scrape/scrape.go index d700221d1a15..8db6fc27d47e 100644 --- a/component/prometheus/scrape/scrape.go +++ b/component/prometheus/scrape/scrape.go @@ -30,9 +30,9 @@ func init() { scrape.UserAgent = useragent.Get() component.Register(component.Registration{ - Name: "prometheus.scrape", - Args: Arguments{}, - NeedsServices: []string{http.ServiceName, cluster.ServiceName, labelstore.ServiceName}, + Name: "prometheus.scrape", + Args: Arguments{}, + Build: func(opts component.Options, args component.Arguments) (component.Component, error) { return New(opts, args.(Arguments)) }, diff --git a/component/pyroscope/scrape/scrape.go b/component/pyroscope/scrape/scrape.go index 846fee049e5e..bf84c1567e4f 100644 --- a/component/pyroscope/scrape/scrape.go +++ b/component/pyroscope/scrape/scrape.go @@ -33,9 +33,8 @@ const ( func init() { component.Register(component.Registration{ - Name: "pyroscope.scrape", - Args: Arguments{}, - NeedsServices: []string{cluster.ServiceName}, + Name: "pyroscope.scrape", + Args: Arguments{}, Build: func(opts component.Options, args component.Arguments) (component.Component, error) { return New(opts, args.(Arguments)) diff --git a/component/registry.go b/component/registry.go index 20a364be81c4..79b8bff2b574 100644 --- a/component/registry.go +++ b/component/registry.go @@ -97,8 +97,7 @@ type Options struct { // GetServiceData retrieves data for a service by calling // [service.Service.Data] for the specified service. // - // GetServiceData will return an error if the service does not exist or was - // not listed as a dependency with the registration of the component. + // GetServiceData will return an error if the service does not exist. // // The result of GetServiceData may be cached as the value will not change at // runtime. @@ -127,15 +126,6 @@ type Registration struct { // A component which does not expose exports must leave this set to nil. Exports Exports - // NeedsServices holds the set of service names which this component depends - // on to run. If NeedsServices includes an invalid service name (either - // because of a cyclic dependency or the named service doesn't exist), - // components will fail to evaluate. - // - // Modules which are loaded by the registered component will only be able to - // access services in this list. - NeedsServices []string - // Build should construct a new component from an initial Arguments and set // of options. Build func(opts Options, args Arguments) (Component, error) diff --git a/docs/sources/flow/reference/config-blocks/http.md b/docs/sources/flow/reference/config-blocks/http.md index 9f56dc9fc5bd..9ee6de41187f 100644 --- a/docs/sources/flow/reference/config-blocks/http.md +++ b/docs/sources/flow/reference/config-blocks/http.md @@ -16,15 +16,6 @@ title: http block HTTP server functions. `http` is specified without a label and can only be provided once per configuration file. -{{% admonition type="note" %}} -While the `http` block can reference component exports, some components that -rely on the HTTP server have a hidden dependency on the `http` block that may -result in a circular dependency error. - -Only references to components named `remote.*` or `local.*` are guaranteed to -work without any circular dependency errors. -{{% /admonition %}} - ## Example ```river @@ -184,7 +175,7 @@ will serve the found certificate even if it is not compatible with the specified ### server block -The `server` block is used to find the certificate to check the signer. If multiple certificates are found the +The `server` block is used to find the certificate to check the signer. If multiple certificates are found the `windows_certificate_filter` will choose the certificate with the expiration farthest in the future. Name | Type | Description | Default | Required diff --git a/pkg/flow/flow.go b/pkg/flow/flow.go index 9b2294718f61..ec16333568ee 100644 --- a/pkg/flow/flow.go +++ b/pkg/flow/flow.go @@ -192,7 +192,7 @@ func newController(o controllerOptions) *Flow { OnExportsChange: o.OnExportsChange, Registerer: o.Reg, ControllerID: o.ControllerID, - NewModuleController: func(id string, availableServices []string) controller.ModuleController { + NewModuleController: func(id string) controller.ModuleController { return newModuleController(&moduleControllerOptions{ ComponentRegistry: o.ComponentRegistry, ModuleRegistry: o.ModuleRegistry, @@ -201,7 +201,7 @@ func newController(o controllerOptions) *Flow { Reg: o.Reg, DataPath: o.DataPath, ID: id, - ServiceMap: serviceMap.FilterByName(availableServices), + ServiceMap: serviceMap, WorkerPool: workerPool, }) }, diff --git a/pkg/flow/flow_services.go b/pkg/flow/flow_services.go index 76496fb7acc6..46a1c3526128 100644 --- a/pkg/flow/flow_services.go +++ b/pkg/flow/flow_services.go @@ -35,15 +35,6 @@ func serviceConsumersForGraph(graph *dag.Graph, serviceName string, includePeerS for _, consumer := range dependants { // Only return instances of component.Component and service.Service. switch consumer := consumer.(type) { - case *controller.ComponentNode: - if component := consumer.Component(); component != nil { - consumers = append(consumers, service.Consumer{ - Type: service.ConsumerTypeComponent, - ID: consumer.NodeID(), - Value: component, - }) - } - case *controller.ServiceNode: if !includePeerServices { continue diff --git a/pkg/flow/flow_services_test.go b/pkg/flow/flow_services_test.go index 7639daea8144..a4bf2b4cb848 100644 --- a/pkg/flow/flow_services_test.go +++ b/pkg/flow/flow_services_test.go @@ -178,82 +178,6 @@ func TestFlow_GetServiceConsumers(t *testing.T) { require.Equal(t, expectConsumers, ctrl.GetServiceConsumers("svc_a")) } -func TestFlow_GetServiceConsumers_Modules(t *testing.T) { - defer verifyNoGoroutineLeaks(t) - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - componentRunning := util.NewWaitTrigger() - - var ( - svc = &testservices.Fake{ - DefinitionFunc: func() service.Definition { - return service.Definition{Name: "service"} - }, - } - - registry = controller.RegistryMap{ - "module_loader": component.Registration{ - Name: "module_loader", - Args: struct{}{}, - NeedsServices: []string{"service"}, - Build: func(opts component.Options, _ component.Arguments) (component.Component, error) { - mod, err := opts.ModuleController.NewModule("", nil) - require.NoError(t, err, "Failed to create module") - - err = mod.LoadConfig([]byte(`service_consumer "example" {}`), nil) - require.NoError(t, err, "Failed to load module config") - - return &testcomponents.Fake{ - RunFunc: func(ctx context.Context) error { - mod.Run(ctx) - <-ctx.Done() - return nil - }, - }, nil - }, - }, - - "service_consumer": component.Registration{ - Name: "service_consumer", - Args: struct{}{}, - NeedsServices: []string{"service"}, - Build: func(o component.Options, _ component.Arguments) (component.Component, error) { - return &testcomponents.Fake{ - RunFunc: func(ctx context.Context) error { - componentRunning.Trigger() - <-ctx.Done() - return nil - }, - }, nil - }, - }, - } - ) - - cfg := `module_loader "example" {}` - - f, err := ParseSource(t.Name(), []byte(cfg)) - require.NoError(t, err) - require.NotNil(t, f) - - opts := testOptions(t) - opts.Services = append(opts.Services, svc) - - ctrl := newController(controllerOptions{ - Options: opts, - ComponentRegistry: registry, - ModuleRegistry: newModuleRegistry(), - }) - require.NoError(t, ctrl.LoadSource(f, nil)) - go ctrl.Run(ctx) - - require.NoError(t, componentRunning.Wait(5*time.Second), "Component should have been built") - - consumers := ctrl.GetServiceConsumers("service") - require.Len(t, consumers, 2, "There should be a consumer for the module loader and the module's component") -} - func TestComponents_Using_Services(t *testing.T) { defer verifyNoGoroutineLeaks(t) ctx, cancel := context.WithCancel(context.Background()) @@ -267,9 +191,9 @@ func TestComponents_Using_Services(t *testing.T) { ) var ( - dependencySvc = &testservices.Fake{ + existsSvc = &testservices.Fake{ DefinitionFunc: func() service.Definition { - return service.Definition{Name: "dependency"} + return service.Definition{Name: "exists"} }, RunFunc: func(ctx context.Context, host service.Host) error { @@ -284,27 +208,18 @@ func TestComponents_Using_Services(t *testing.T) { }, } - nonDependencySvc = &testservices.Fake{ - DefinitionFunc: func() service.Definition { - return service.Definition{Name: "non_dependency"} - }, - } - registry = controller.RegistryMap{ "service_consumer": component.Registration{ - Name: "service_consumer", - Args: struct{}{}, - NeedsServices: []string{"dependency"}, + Name: "service_consumer", + Args: struct{}{}, + Build: func(opts component.Options, args component.Arguments) (component.Component, error) { // Call Trigger in a defer so we can make some extra assertions before // the test exits. defer componentBuilt.Trigger() - _, err := opts.GetServiceData("dependency") - require.NoError(t, err, "component should be able to access services it depends on") - - _, err = opts.GetServiceData("non_dependency") - require.Error(t, err, "component should not be able to access services it doesn't depend on") + _, err := opts.GetServiceData("exists") + require.NoError(t, err, "component should be able to access services which exist") _, err = opts.GetServiceData("does_not_exist") require.Error(t, err, "component should not be able to access non-existent service") @@ -324,7 +239,7 @@ func TestComponents_Using_Services(t *testing.T) { require.NotNil(t, f) opts := testOptions(t) - opts.Services = append(opts.Services, dependencySvc, nonDependencySvc) + opts.Services = append(opts.Services, existsSvc) ctrl := newController(controllerOptions{ Options: opts, @@ -346,23 +261,17 @@ func TestComponents_Using_Services_In_Modules(t *testing.T) { componentBuilt := util.NewWaitTrigger() var ( - propagatedSvc = &testservices.Fake{ + existsSvc = &testservices.Fake{ DefinitionFunc: func() service.Definition { - return service.Definition{Name: "propagated_service"} - }, - } - - nonPropagatedSvc = &testservices.Fake{ - DefinitionFunc: func() service.Definition { - return service.Definition{Name: "non_propagated_service"} + return service.Definition{Name: "exists"} }, } registry = controller.RegistryMap{ "module_loader": component.Registration{ - Name: "module_loader", - Args: struct{}{}, - NeedsServices: []string{"propagated_service"}, + Name: "module_loader", + Args: struct{}{}, + Build: func(opts component.Options, _ component.Arguments) (component.Component, error) { mod, err := opts.ModuleController.NewModule("", nil) require.NoError(t, err, "Failed to create module") @@ -381,16 +290,16 @@ func TestComponents_Using_Services_In_Modules(t *testing.T) { }, "service_consumer": component.Registration{ - Name: "service_consumer", - Args: struct{}{}, - NeedsServices: []string{"propagated_service"}, + Name: "service_consumer", + Args: struct{}{}, + Build: func(opts component.Options, _ component.Arguments) (component.Component, error) { // Call Trigger in a defer so we can make some extra assertions before // the test exits. defer componentBuilt.Trigger() - _, err := opts.GetServiceData("propagated_service") - require.NoError(t, err, "component should be able to access services that were propagated to it") + _, err := opts.GetServiceData("exists") + require.NoError(t, err, "component should be able to access services which exist") return &testcomponents.Fake{}, nil }, @@ -405,7 +314,7 @@ func TestComponents_Using_Services_In_Modules(t *testing.T) { require.NotNil(t, f) opts := testOptions(t) - opts.Services = append(opts.Services, propagatedSvc, nonPropagatedSvc) + opts.Services = append(opts.Services, existsSvc) ctrl := newController(controllerOptions{ Options: opts, diff --git a/pkg/flow/internal/controller/loader.go b/pkg/flow/internal/controller/loader.go index d44a2a5062eb..e968e8102fe0 100644 --- a/pkg/flow/internal/controller/loader.go +++ b/pkg/flow/internal/controller/loader.go @@ -493,22 +493,6 @@ func (l *Loader) wireGraphEdges(g *dag.Graph) diag.Diagnostics { continue } - g.AddEdge(dag.Edge{From: n, To: dep}) - } - - case *ComponentNode: // Component depending on service. - for _, depName := range n.Registration().NeedsServices { - dep := g.GetByID(depName) - if dep == nil { - diags.Add(diag.Diagnostic{ - Severity: diag.SeverityLevelError, - Message: fmt.Sprintf("%s component depends on undefined service %q; please report this issue to project maintainers", n.NodeID(), depName), - StartPos: ast.StartPos(n.Block()).Position(), - EndPos: ast.EndPos(n.Block()).Position(), - }) - continue - } - g.AddEdge(dag.Edge{From: n, To: dep}) } } diff --git a/pkg/flow/internal/controller/loader_test.go b/pkg/flow/internal/controller/loader_test.go index c6b491f4c899..fee35ec587b5 100644 --- a/pkg/flow/internal/controller/loader_test.go +++ b/pkg/flow/internal/controller/loader_test.go @@ -75,7 +75,7 @@ func TestLoader(t *testing.T) { DataPath: t.TempDir(), OnComponentUpdate: func(cn *controller.ComponentNode) { /* no-op */ }, Registerer: prometheus.NewRegistry(), - NewModuleController: func(id string, availableServices []string) controller.ModuleController { + NewModuleController: func(id string) controller.ModuleController { return nil }, }, @@ -209,7 +209,7 @@ func TestScopeWithFailingComponent(t *testing.T) { DataPath: t.TempDir(), OnComponentUpdate: func(cn *controller.ComponentNode) { /* no-op */ }, Registerer: prometheus.NewRegistry(), - NewModuleController: func(id string, availableServices []string) controller.ModuleController { + NewModuleController: func(id string) controller.ModuleController { return fakeModuleController{} }, }, diff --git a/pkg/flow/internal/controller/node_component.go b/pkg/flow/internal/controller/node_component.go index e86ac1af3dd6..b99597809d4b 100644 --- a/pkg/flow/internal/controller/node_component.go +++ b/pkg/flow/internal/controller/node_component.go @@ -63,15 +63,15 @@ type DialFunc func(ctx context.Context, network, address string) (net.Conn, erro // ComponentGlobals are used by ComponentNodes to build managed components. All // ComponentNodes should use the same ComponentGlobals. type ComponentGlobals struct { - Logger *logging.Logger // Logger shared between all managed components. - TraceProvider trace.TracerProvider // Tracer shared between all managed components. - DataPath string // Shared directory where component data may be stored - OnComponentUpdate func(cn *ComponentNode) // Informs controller that we need to reevaluate - OnExportsChange func(exports map[string]any) // Invoked when the managed component updated its exports - Registerer prometheus.Registerer // Registerer for serving agent and component metrics - ControllerID string // ID of controller. - NewModuleController func(id string, availableServices []string) ModuleController // Func to generate a module controller. - GetServiceData func(name string) (interface{}, error) // Get data for a service. + Logger *logging.Logger // Logger shared between all managed components. + TraceProvider trace.TracerProvider // Tracer shared between all managed components. + DataPath string // Shared directory where component data may be stored + OnComponentUpdate func(cn *ComponentNode) // Informs controller that we need to reevaluate + OnExportsChange func(exports map[string]any) // Invoked when the managed component updated its exports + Registerer prometheus.Registerer // Registerer for serving agent and component metrics + ControllerID string // ID of controller. + NewModuleController func(id string) ModuleController // Func to generate a module controller. + GetServiceData func(name string) (interface{}, error) // Get data for a service. } // ComponentNode is a controller node which manages a user-defined component. @@ -145,7 +145,7 @@ func NewComponentNode(globals ComponentGlobals, reg component.Registration, b *a componentName: strings.Join(b.Name, "."), reg: reg, exportsType: getExportsType(reg), - moduleController: globals.NewModuleController(globalID, reg.NeedsServices), + moduleController: globals.NewModuleController(globalID), OnComponentUpdate: globals.OnComponentUpdate, block: b, @@ -164,11 +164,6 @@ func NewComponentNode(globals ComponentGlobals, reg component.Registration, b *a } func getManagedOptions(globals ComponentGlobals, cn *ComponentNode) component.Options { - allowedServices := make(map[string]struct{}, len(cn.Registration().NeedsServices)) - for _, svc := range cn.Registration().NeedsServices { - allowedServices[svc] = struct{}{} - } - cn.registry = prometheus.NewRegistry() return component.Options{ ID: cn.globalID, @@ -184,9 +179,6 @@ func getManagedOptions(globals ComponentGlobals, cn *ComponentNode) component.Op ModuleController: cn.moduleController, GetServiceData: func(name string) (interface{}, error) { - if _, allowed := allowedServices[name]; !allowed { - return nil, fmt.Errorf("cannot access service data for service %q because it was not listed as a dependency", name) - } return globals.GetServiceData(name) }, } diff --git a/pkg/flow/internal/controller/node_component_test.go b/pkg/flow/internal/controller/node_component_test.go index ced3067f7e7d..6eb46f004601 100644 --- a/pkg/flow/internal/controller/node_component_test.go +++ b/pkg/flow/internal/controller/node_component_test.go @@ -11,7 +11,7 @@ func TestGlobalID(t *testing.T) { mo := getManagedOptions(ComponentGlobals{ DataPath: "/data/", ControllerID: "module.file", - NewModuleController: func(id string, availableServices []string) ModuleController { + NewModuleController: func(id string) ModuleController { return nil }, }, &ComponentNode{ @@ -25,7 +25,7 @@ func TestLocalID(t *testing.T) { mo := getManagedOptions(ComponentGlobals{ DataPath: "/data/", ControllerID: "", - NewModuleController: func(id string, availableServices []string) ModuleController { + NewModuleController: func(id string) ModuleController { return nil }, }, &ComponentNode{ diff --git a/service/cluster/cluster.go b/service/cluster/cluster.go index 398a0db92979..23b8ea4f293a 100644 --- a/service/cluster/cluster.go +++ b/service/cluster/cluster.go @@ -216,21 +216,22 @@ func (s *Service) Run(ctx context.Context, host service.Host) error { } level.Info(s.log).Log("msg", "peers changed", "new_peers", strings.Join(names, ",")) - // Notify dependant components about the clustering change. - for _, consumer := range host.GetServiceConsumers(ServiceName) { + // Notify all components about the clustering change. + components := component.GetAllComponents(host, component.InfoOptions{}) + for _, component := range components { if ctx.Err() != nil { // Stop early if we exited so we don't do unnecessary work notifying // consumers that do not need to be notified. break } - clusterComponent, ok := consumer.Value.(Component) + clusterComponent, ok := component.Component.(Component) if !ok { continue } _, span := tracer.Start(spanCtx, "NotifyClusterChange", trace.WithSpanKind(trace.SpanKindInternal)) - span.SetAttributes(attribute.String("consumer_id", consumer.ID)) + span.SetAttributes(attribute.String("component_id", component.ID.String())) clusterComponent.NotifyClusterChange() diff --git a/service/service.go b/service/service.go index 1da511a91c0f..564bb23b86b9 100644 --- a/service/service.go +++ b/service/service.go @@ -51,8 +51,8 @@ type Host interface { // exist. ListComponents(moduleID string, opts component.InfoOptions) ([]*component.Info, error) - // GetServiceConsumers gets the list of components and services which depend - // on a service by name. + // GetServiceConsumers gets the list of services which depend on a service by + // name. GetServiceConsumers(serviceName string) []Consumer } @@ -73,8 +73,7 @@ const ( // ConsumerTypeInvalid is the default value for ConsumerType. ConsumerTypeInvalid ConsumerType = iota - ConsumerTypeComponent // ConsumerTypeComponent represents a component which uses a service. - ConsumerTypeService // ConsumerTypeService represents a serviec which uses another service. + ConsumerTypeService // ConsumerTypeService represents a service which uses another service. ) // String returns a string representation of the ConsumerType. @@ -82,8 +81,6 @@ func (ct ConsumerType) String() string { switch ct { case ConsumerTypeInvalid: return "invalid" - case ConsumerTypeComponent: - return "component" case ConsumerTypeService: return "service" } @@ -113,9 +110,12 @@ type Service interface { // while Run is active. Update(newConfig any) error - // Data returns the Data associated with a Service. Data - // must always return the same value across multiple calls, - // as callers are expected to be able to cache the result. + // Data returns the Data associated with a Service. Data must always return + // the same value across multiple calls, as callers are expected to be able + // to cache the result. + // + // The return result of Data must not rely on the runtime config of the + // service. // // Data may be invoked before Run. Data() any From de6d8861b9a529c7f8a5720d296cb304d11463ba Mon Sep 17 00:00:00 2001 From: Lam Tran Date: Fri, 24 Nov 2023 20:14:39 +0700 Subject: [PATCH 061/166] fix: use official hashicorp consul image (#5846) Signed-off-by: Lam Tran --- example/docker-compose/docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/docker-compose/docker-compose.yaml b/example/docker-compose/docker-compose.yaml index 3a8c3d6d5ed9..c3b278b4d402 100644 --- a/example/docker-compose/docker-compose.yaml +++ b/example/docker-compose/docker-compose.yaml @@ -162,7 +162,7 @@ services: consul: profiles: [integrations,consul] - image: consul + image: hashicorp/consul ports: - "8500:8500" From b18609d75e33d809de7fe2ab4d001409382fa7ac Mon Sep 17 00:00:00 2001 From: Helder Costa <54836608+htcosta@users.noreply.github.com> Date: Fri, 24 Nov 2023 22:06:55 +0100 Subject: [PATCH 062/166] Fixed the url links (#5850) Backticks should be used inside the link text, to properly be displayed as inline code style, while still preserving the url link. --- docs/sources/operator/helm-getting-started.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sources/operator/helm-getting-started.md b/docs/sources/operator/helm-getting-started.md index bc2f516e10fa..78245505d859 100644 --- a/docs/sources/operator/helm-getting-started.md +++ b/docs/sources/operator/helm-getting-started.md @@ -20,8 +20,8 @@ In this guide, you'll learn how to deploy [Grafana Agent Operator]({{< relref ". To deploy Agent Operator with Helm, make sure that you have the following: - A Kubernetes cluster -- The `[kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)` command-line client installed and configured on your machine -- The `[helm](https://helm.sh/docs/intro/install/)` command-line client installed and configured on your machine +- The [`kubectl`](https://kubernetes.io/docs/tasks/tools/#kubectl) command-line client installed and configured on your machine +- The [`helm`](https://helm.sh/docs/intro/install/) command-line client installed and configured on your machine > **Note:** Agent Operator is currently in beta and its custom resources are subject to change. From b0de873affc95d4d0170ea5e4a10a1690a6c884e Mon Sep 17 00:00:00 2001 From: Tolya Korniltsev Date: Mon, 27 Nov 2023 15:53:42 +0700 Subject: [PATCH 063/166] fix(pyroscope.ebpf): add python arm64 support (#5856) * fix(pyroscope.ebpf): add python arm64 support, add musl libc arm64 support * changelog --- CHANGELOG.md | 2 ++ go.mod | 14 +++++++------- go.sum | 12 ++++++------ 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b394bce2533c..cbe4952c8291 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,8 @@ Main (unreleased) Previously, only `remote.*` and `local.*` components could be referenced without a circular dependency. (@rfratto) +- `pyroscope.ebpf` support python on arm64 platforms. (@korniltsev) + ### Bugfixes - Permit `X-Faro-Session-ID` header in CORS requests for the `faro.receiver` diff --git a/go.mod b/go.mod index 9362ef24beb5..76f5ba8c6e08 100644 --- a/go.mod +++ b/go.mod @@ -47,7 +47,7 @@ require ( github.com/google/dnsmasq_exporter v0.2.1-0.20230620100026-44b14480804a github.com/google/go-cmp v0.5.9 github.com/google/go-jsonnet v0.18.0 - github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 + github.com/google/pprof v0.0.0-20230926050212-f7f687d19a98 github.com/google/renameio/v2 v2.0.0 github.com/google/uuid v1.3.1 github.com/gorilla/mux v1.8.0 @@ -59,7 +59,7 @@ require ( github.com/grafana/loki v1.6.2-0.20231004111112-07cbef92268a github.com/grafana/pyroscope-go/godeltaprof v0.1.3 github.com/grafana/pyroscope/api v0.2.0 - github.com/grafana/pyroscope/ebpf v0.3.2 + github.com/grafana/pyroscope/ebpf v0.3.3 github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db github.com/grafana/river v0.3.0 github.com/grafana/snowflake-prometheus-exporter v0.0.0-20221213150626-862cad8e9538 @@ -86,7 +86,7 @@ require ( github.com/jaegertracing/jaeger v1.50.0 github.com/jmespath/go-jmespath v0.4.0 github.com/json-iterator/go v1.1.12 - github.com/klauspost/compress v1.17.0 + github.com/klauspost/compress v1.17.1 github.com/lib/pq v1.10.7 github.com/mackerelio/go-osstat v0.2.3 github.com/miekg/dns v1.1.55 @@ -582,7 +582,7 @@ require ( go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/collector/config/internal v0.87.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.45.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 // indirect go.opentelemetry.io/contrib/propagators/b3 v1.19.0 // indirect go.opentelemetry.io/otel/bridge/opencensus v0.42.0 // indirect go4.org/netipx v0.0.0-20230125063823-8449b0a6169f // indirect @@ -616,8 +616,7 @@ require ( github.com/natefinch/atomic v1.0.1 github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.87.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver v0.87.0 - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.42.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.42.0 ) require ( @@ -641,7 +640,8 @@ require ( github.com/sercand/kuberesolver/v4 v4.0.0 // indirect github.com/sony/gobreaker v0.5.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.42.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.42.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.42.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 // indirect go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.42.0 // indirect go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.19.0 // indirect diff --git a/go.sum b/go.sum index 3678215219aa..c80cb90ef4ca 100644 --- a/go.sum +++ b/go.sum @@ -985,8 +985,8 @@ github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= -github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 h1:n6vlPhxsA+BW/XsS5+uqi7GyzaLa5MH7qlSLBZtRdiA= -github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= +github.com/google/pprof v0.0.0-20230926050212-f7f687d19a98 h1:pUa4ghanp6q4IJHwE9RwLgmVFfReJN+KbQ8ExNEUUoQ= +github.com/google/pprof v0.0.0-20230926050212-f7f687d19a98/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/renameio/v2 v2.0.0 h1:UifI23ZTGY8Tt29JbYFiuyIU3eX+RNFtUwefq9qAhxg= github.com/google/renameio/v2 v2.0.0/go.mod h1:BtmJXm5YlszgC+TD4HOEEUFgkJP3nLxehU6hfe7jRt4= @@ -1071,8 +1071,8 @@ github.com/grafana/pyroscope-go/godeltaprof v0.1.3 h1:eunWpv1B3Z7ZK9o4499EmQGlY+ github.com/grafana/pyroscope-go/godeltaprof v0.1.3/go.mod h1:1HSPtjU8vLG0jE9JrTdzjgFqdJ/VgN7fvxBNq3luJko= github.com/grafana/pyroscope/api v0.2.0 h1:TzOxL0s6SiaLEy944ZAKgHcx/JDRJXu4O8ObwkqR6p4= github.com/grafana/pyroscope/api v0.2.0/go.mod h1:nhH+xai9cYFgs6lMy/+L0pKj0d5yCMwji/QAiQFCP+U= -github.com/grafana/pyroscope/ebpf v0.3.2 h1:o2Ib5Syot/GeYchPpr4bu091WML70g2L+D5LHWjZZT4= -github.com/grafana/pyroscope/ebpf v0.3.2/go.mod h1:n6KfoTGMietvw4+vhhU1X8WiBOVxn5p8YxDy9BORUvY= +github.com/grafana/pyroscope/ebpf v0.3.3 h1:BAdrZfxGn5QuGrVOTK6oIsjRGHoIguBlWehAWaCAshM= +github.com/grafana/pyroscope/ebpf v0.3.3/go.mod h1:WK4a+9QTRDOh6imvPgglbwblfxkvyS2cYGWF9jlKTI0= github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db h1:7aN5cccjIqCLTzedH7MZzRZt5/lsAHch6Z3L2ZGn5FA= github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= github.com/grafana/river v0.3.0 h1:6TsaR/vkkcppUM9I0muGbPIUedCtpPu6OWreE5+CE6g= @@ -1441,8 +1441,8 @@ github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j github.com/klauspost/compress v1.11.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.12/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJwgrqM= -github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.1 h1:NE3C767s2ak2bweCZo3+rdP4U/HoyVXLv/X9f2gPS5g= +github.com/klauspost/compress v1.17.1/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/knadh/koanf v1.5.0 h1:q2TSd/3Pyc/5yP9ldIrSdIz26MCcyNQzW0pEAugLPNs= From 9fdb57cb0d37158efd3784b4734b181e7a2f625a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=E1=BB=97=20Tr=E1=BB=8Dng=20H=E1=BA=A3i?= <41283691+hainenber@users.noreply.github.com> Date: Mon, 27 Nov 2023 17:21:03 +0700 Subject: [PATCH 064/166] feat(otelcol/exp/prom): add support for resource_to_telemetry_conversion (#5807) * feat(otelcol/exp/prom): add support for resource_to_telemetry_conversion Signed-off-by: hainenber * Update otelcol.exporter.prometheus.md Co-authored-by: Clayton Cornell <131809008+clayton-cornell@users.noreply.github.com> * Update docs/sources/flow/reference/components/otelcol.exporter.prometheus.md Co-authored-by: Paulin Todev * feat(otelcol/exp/prom): test case when resourceToTelemetryConversion is false Signed-off-by: hainenber * Apply suggestions from code review --------- Signed-off-by: hainenber Co-authored-by: Clayton Cornell <131809008+clayton-cornell@users.noreply.github.com> Co-authored-by: Paulin Todev --- CHANGELOG.md | 5 +- .../prometheus/internal/convert/convert.go | 50 ++- .../internal/convert/convert_test.go | 290 +++++++++++++++++- .../otelcol/exporter/prometheus/prometheus.go | 31 +- .../exporter/prometheus/prometheus_test.go | 27 +- .../components/otelcol.exporter.prometheus.md | 1 + 6 files changed, 355 insertions(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cbe4952c8291..162ec02a8d88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,7 +31,10 @@ Main (unreleased) Previously, only `remote.*` and `local.*` components could be referenced without a circular dependency. (@rfratto) -- `pyroscope.ebpf` support python on arm64 platforms. (@korniltsev) +- Add a `resource_to_telemetry_conversion` argument to `otelcol.exporter.prometheus` + for converting resource attributes to Prometheus labels. (@hainenber) + +- `pyroscope.ebpf` support python on arm64 platforms. (@korniltsev) ### Bugfixes diff --git a/component/otelcol/exporter/prometheus/internal/convert/convert.go b/component/otelcol/exporter/prometheus/internal/convert/convert.go index 3e2a2578c5a4..0a7039e7195e 100644 --- a/component/otelcol/exporter/prometheus/internal/convert/convert.go +++ b/component/otelcol/exporter/prometheus/internal/convert/convert.go @@ -65,6 +65,8 @@ type Options struct { IncludeScopeLabels bool // AddMetricSuffixes controls whether suffixes are added to metric names. Defaults to true. AddMetricSuffixes bool + // ResourceToTelemetryConversion controls whether to convert resource attributes to Prometheus-compatible datapoint attributes + ResourceToTelemetryConversion bool } var _ consumer.Metrics = (*Converter)(nil) @@ -131,6 +133,7 @@ func (conv *Converter) consumeResourceMetrics(app storage.Appender, rm pmetric.R Type: textparse.MetricTypeGauge, Help: "Target metadata", }) + resAttrs := rm.Resource().Attributes() memResource := conv.getOrCreateResource(rm.Resource()) if conv.getOpts().IncludeTargetInfo { @@ -144,7 +147,7 @@ func (conv *Converter) consumeResourceMetrics(app storage.Appender, rm pmetric.R for smcount := 0; smcount < rm.ScopeMetrics().Len(); smcount++ { sm := rm.ScopeMetrics().At(smcount) - conv.consumeScopeMetrics(app, memResource, sm) + conv.consumeScopeMetrics(app, memResource, sm, resAttrs) } } @@ -219,7 +222,7 @@ func (conv *Converter) getOrCreateResource(res pcommon.Resource) *memorySeries { return entry } -func (conv *Converter) consumeScopeMetrics(app storage.Appender, memResource *memorySeries, sm pmetric.ScopeMetrics) { +func (conv *Converter) consumeScopeMetrics(app storage.Appender, memResource *memorySeries, sm pmetric.ScopeMetrics, resAttrs pcommon.Map) { scopeMD := conv.createOrUpdateMetadata("otel_scope_info", metadata.Metadata{ Type: textparse.MetricTypeGauge, }) @@ -236,7 +239,7 @@ func (conv *Converter) consumeScopeMetrics(app storage.Appender, memResource *me for mcount := 0; mcount < sm.Metrics().Len(); mcount++ { m := sm.Metrics().At(mcount) - conv.consumeMetric(app, memResource, memScope, m) + conv.consumeMetric(app, memResource, memScope, m, resAttrs) } } @@ -274,20 +277,27 @@ func (conv *Converter) getOrCreateScope(res *memorySeries, scope pcommon.Instrum return entry } -func (conv *Converter) consumeMetric(app storage.Appender, memResource *memorySeries, memScope *memorySeries, m pmetric.Metric) { +func (conv *Converter) consumeMetric(app storage.Appender, memResource *memorySeries, memScope *memorySeries, m pmetric.Metric, resAttrs pcommon.Map) { switch m.Type() { case pmetric.MetricTypeGauge: - conv.consumeGauge(app, memResource, memScope, m) + conv.consumeGauge(app, memResource, memScope, m, resAttrs) case pmetric.MetricTypeSum: - conv.consumeSum(app, memResource, memScope, m) + conv.consumeSum(app, memResource, memScope, m, resAttrs) case pmetric.MetricTypeHistogram: - conv.consumeHistogram(app, memResource, memScope, m) + conv.consumeHistogram(app, memResource, memScope, m, resAttrs) case pmetric.MetricTypeSummary: - conv.consumeSummary(app, memResource, memScope, m) + conv.consumeSummary(app, memResource, memScope, m, resAttrs) } } -func (conv *Converter) consumeGauge(app storage.Appender, memResource *memorySeries, memScope *memorySeries, m pmetric.Metric) { +func joinAttributeMaps(from, to pcommon.Map) { + from.Range(func(k string, v pcommon.Value) bool { + v.CopyTo(to.PutEmpty(k)) + return true + }) +} + +func (conv *Converter) consumeGauge(app storage.Appender, memResource *memorySeries, memScope *memorySeries, m pmetric.Metric, resAttrs pcommon.Map) { metricName := prometheus.BuildCompliantName(m, "", conv.opts.AddMetricSuffixes) metricMD := conv.createOrUpdateMetadata(metricName, metadata.Metadata{ @@ -302,6 +312,10 @@ func (conv *Converter) consumeGauge(app storage.Appender, memResource *memorySer for dpcount := 0; dpcount < m.Gauge().DataPoints().Len(); dpcount++ { dp := m.Gauge().DataPoints().At(dpcount) + if conv.getOpts().ResourceToTelemetryConversion { + joinAttributeMaps(resAttrs, dp.Attributes()) + } + memSeries := conv.getOrCreateSeries(memResource, memScope, metricName, dp.Attributes()) if err := writeSeries(app, memSeries, dp, getNumberDataPointValue(dp)); err != nil { level.Error(conv.log).Log("msg", "failed to write metric sample", metricName, "err", err) @@ -389,7 +403,7 @@ func getNumberDataPointValue(dp pmetric.NumberDataPoint) float64 { return 0 } -func (conv *Converter) consumeSum(app storage.Appender, memResource *memorySeries, memScope *memorySeries, m pmetric.Metric) { +func (conv *Converter) consumeSum(app storage.Appender, memResource *memorySeries, memScope *memorySeries, m pmetric.Metric, resAttrs pcommon.Map) { metricName := prometheus.BuildCompliantName(m, "", conv.opts.AddMetricSuffixes) // Excerpt from the spec: @@ -430,6 +444,10 @@ func (conv *Converter) consumeSum(app storage.Appender, memResource *memorySerie for dpcount := 0; dpcount < m.Sum().DataPoints().Len(); dpcount++ { dp := m.Sum().DataPoints().At(dpcount) + if conv.getOpts().ResourceToTelemetryConversion { + joinAttributeMaps(resAttrs, dp.Attributes()) + } + memSeries := conv.getOrCreateSeries(memResource, memScope, metricName, dp.Attributes()) val := getNumberDataPointValue(dp) @@ -447,7 +465,7 @@ func (conv *Converter) consumeSum(app storage.Appender, memResource *memorySerie } } -func (conv *Converter) consumeHistogram(app storage.Appender, memResource *memorySeries, memScope *memorySeries, m pmetric.Metric) { +func (conv *Converter) consumeHistogram(app storage.Appender, memResource *memorySeries, memScope *memorySeries, m pmetric.Metric, resAttrs pcommon.Map) { metricName := prometheus.BuildCompliantName(m, "", conv.opts.AddMetricSuffixes) if m.Histogram().AggregationTemporality() != pmetric.AggregationTemporalityCumulative { @@ -469,6 +487,10 @@ func (conv *Converter) consumeHistogram(app storage.Appender, memResource *memor for dpcount := 0; dpcount < m.Histogram().DataPoints().Len(); dpcount++ { dp := m.Histogram().DataPoints().At(dpcount) + if conv.getOpts().ResourceToTelemetryConversion { + joinAttributeMaps(resAttrs, dp.Attributes()) + } + // Sum metric if dp.HasSum() { sumMetric := conv.getOrCreateSeries(memResource, memScope, metricName+"_sum", dp.Attributes()) @@ -606,7 +628,7 @@ func (conv *Converter) convertExemplar(otelExemplar pmetric.Exemplar, ts time.Ti } } -func (conv *Converter) consumeSummary(app storage.Appender, memResource *memorySeries, memScope *memorySeries, m pmetric.Metric) { +func (conv *Converter) consumeSummary(app storage.Appender, memResource *memorySeries, memScope *memorySeries, m pmetric.Metric, resAttrs pcommon.Map) { metricName := prometheus.BuildCompliantName(m, "", conv.opts.AddMetricSuffixes) metricMD := conv.createOrUpdateMetadata(metricName, metadata.Metadata{ @@ -621,6 +643,10 @@ func (conv *Converter) consumeSummary(app storage.Appender, memResource *memoryS for dpcount := 0; dpcount < m.Summary().DataPoints().Len(); dpcount++ { dp := m.Summary().DataPoints().At(dpcount) + if conv.getOpts().ResourceToTelemetryConversion { + joinAttributeMaps(resAttrs, dp.Attributes()) + } + // Sum metric { sumMetric := conv.getOrCreateSeries(memResource, memScope, metricName+"_sum", dp.Attributes()) diff --git a/component/otelcol/exporter/prometheus/internal/convert/convert_test.go b/component/otelcol/exporter/prometheus/internal/convert/convert_test.go index 80a6bce1a55b..dcace6574b6c 100644 --- a/component/otelcol/exporter/prometheus/internal/convert/convert_test.go +++ b/component/otelcol/exporter/prometheus/internal/convert/convert_test.go @@ -18,12 +18,13 @@ func TestConverter(t *testing.T) { input string expect string - showTimestamps bool - includeTargetInfo bool - includeScopeInfo bool - includeScopeLabels bool - addMetricSuffixes bool - enableOpenMetrics bool + showTimestamps bool + includeTargetInfo bool + includeScopeInfo bool + includeScopeLabels bool + addMetricSuffixes bool + enableOpenMetrics bool + resourceToTelemetryConversion bool }{ { name: "Gauge", @@ -838,6 +839,274 @@ func TestConverter(t *testing.T) { addMetricSuffixes: true, enableOpenMetrics: true, }, + { + name: "Gauge: convert resource attributes to metric label", + input: `{ + "resource_metrics": [{ + "resource": { + "attributes": [{ + "key": "service.name", + "value": { "stringValue": "myservice" } + }, { + "key": "service.instance.id", + "value": { "stringValue": "instance" } + }, { + "key": "raw", + "value": { "stringValue": "test" } + },{ + "key": "foo.one", + "value": { "stringValue": "foo" } + }, { + "key": "bar.one", + "value": { "stringValue": "bar" } + }] + }, + "scope_metrics": [{ + "metrics": [{ + "name": "test_metric_gauge", + "gauge": { + "data_points": [{ + "as_double": 1234.56 + }] + } + }] + }] + }] + }`, + expect: ` + # TYPE test_metric_gauge gauge + test_metric_gauge{bar_one="bar",foo_one="foo",instance="instance",service_instance_id="instance",job="myservice",service_name="myservice",raw="test"} 1234.56 + `, + enableOpenMetrics: true, + resourceToTelemetryConversion: true, + }, + { + name: "Gauge: NOT convert resource attributes to metric label", + input: `{ + "resource_metrics": [{ + "resource": { + "attributes": [{ + "key": "service.name", + "value": { "stringValue": "myservice" } + }, { + "key": "service.instance.id", + "value": { "stringValue": "instance" } + }, { + "key": "raw", + "value": { "stringValue": "test" } + },{ + "key": "foo.one", + "value": { "stringValue": "foo" } + }, { + "key": "bar.one", + "value": { "stringValue": "bar" } + }] + }, + "scope_metrics": [{ + "metrics": [{ + "name": "test_metric_gauge", + "gauge": { + "data_points": [{ + "as_double": 1234.56 + }] + } + }] + }] + }] + }`, + expect: ` + # TYPE test_metric_gauge gauge + test_metric_gauge{instance="instance",job="myservice"} 1234.56 + `, + enableOpenMetrics: true, + resourceToTelemetryConversion: false, + }, + { + name: "Summary: convert resource attributes to metric label", + input: `{ + "resource_metrics": [{ + "resource": { + "attributes": [{ + "key": "service.name", + "value": { "stringValue": "myservice" } + }, { + "key": "service.instance.id", + "value": { "stringValue": "instance" } + }, { + "key": "raw", + "value": { "stringValue": "test" } + },{ + "key": "foo.one", + "value": { "stringValue": "foo" } + }, { + "key": "bar.one", + "value": { "stringValue": "bar" } + }] + }, + "scope_metrics": [{ + "metrics": [{ + "name": "test_metric_summary", + "unit": "seconds", + "summary": { + "data_points": [{ + "start_time_unix_nano": 1000000000, + "time_unix_nano": 1000000000, + "count": 333, + "sum": 100, + "quantile_values": [ + { "quantile": 0, "value": 100 }, + { "quantile": 0.5, "value": 400 }, + { "quantile": 1, "value": 500 } + ] + }] + } + }] + }] + }] + }`, + expect: ` + # TYPE test_metric_summary summary + test_metric_summary{bar_one="bar",foo_one="foo",instance="instance",service_instance_id="instance",job="myservice",service_name="myservice",raw="test",quantile="0.0"} 100.0 + test_metric_summary{bar_one="bar",foo_one="foo",instance="instance",service_instance_id="instance",job="myservice",service_name="myservice",raw="test",quantile="0.5"} 400.0 + test_metric_summary{bar_one="bar",foo_one="foo",instance="instance",service_instance_id="instance",job="myservice",service_name="myservice",raw="test",quantile="1.0"} 500.0 + test_metric_summary_sum{bar_one="bar",foo_one="foo",instance="instance",service_instance_id="instance",job="myservice",service_name="myservice",raw="test"} 100.0 + test_metric_summary_count{bar_one="bar",foo_one="foo",instance="instance",service_instance_id="instance",job="myservice",service_name="myservice",raw="test"} 333 + `, + enableOpenMetrics: true, + resourceToTelemetryConversion: true, + }, + { + name: "Histogram: convert resource attributes to metric label", + input: `{ + "resource_metrics": [{ + "resource": { + "attributes": [{ + "key": "service.name", + "value": { "stringValue": "myservice" } + }, { + "key": "service.instance.id", + "value": { "stringValue": "instance" } + }, { + "key": "raw", + "value": { "stringValue": "test" } + },{ + "key": "foo.one", + "value": { "stringValue": "foo" } + }, { + "key": "bar.one", + "value": { "stringValue": "bar" } + }] + }, + "scope_metrics": [{ + "metrics": [ + { + "name": "test_metric_histogram", + "unit": "seconds", + "histogram": { + "aggregation_temporality": 2, + "data_points": [{ + "start_time_unix_nano": 1000000000, + "time_unix_nano": 1000000000, + "count": 333, + "sum": 100, + "bucket_counts": [0, 111, 0, 222], + "explicit_bounds": [0.25, 0.5, 0.75, 1.0], + "exemplars":[ + { + "time_unix_nano": 1000000001, + "as_double": 0.3, + "span_id": "aaaaaaaaaaaaaaaa", + "trace_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + }, + { + "time_unix_nano": 1000000003, + "as_double": 1.5, + "span_id": "cccccccccccccccc", + "trace_id": "cccccccccccccccccccccccccccccccc" + }, + { + "time_unix_nano": 1000000002, + "as_double": 0.5, + "span_id": "bbbbbbbbbbbbbbbb", + "trace_id": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" + } + ] + }] + } + } + ] + }] + }] + }`, + expect: ` + # TYPE test_metric_histogram histogram + test_metric_histogram_bucket{bar_one="bar",foo_one="foo",instance="instance",service_instance_id="instance",job="myservice",service_name="myservice",raw="test",le="0.25"} 0 + test_metric_histogram_bucket{bar_one="bar",foo_one="foo",instance="instance",service_instance_id="instance",job="myservice",service_name="myservice",raw="test",le="0.5"} 111 # {span_id="aaaaaaaaaaaaaaaa",trace_id="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} 0.3 + test_metric_histogram_bucket{bar_one="bar",foo_one="foo",instance="instance",service_instance_id="instance",job="myservice",service_name="myservice",raw="test",le="0.75"} 111 # {span_id="bbbbbbbbbbbbbbbb",trace_id="bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"} 0.5 + test_metric_histogram_bucket{bar_one="bar",foo_one="foo",instance="instance",service_instance_id="instance",job="myservice",service_name="myservice",raw="test",le="1.0"} 333 + test_metric_histogram_bucket{bar_one="bar",foo_one="foo",instance="instance",service_instance_id="instance",job="myservice",service_name="myservice",raw="test",le="+Inf"} 333 # {span_id="cccccccccccccccc",trace_id="cccccccccccccccccccccccccccccccc"} 1.5 + test_metric_histogram_sum{bar_one="bar",foo_one="foo",instance="instance",service_instance_id="instance",job="myservice",service_name="myservice",raw="test"} 100.0 + test_metric_histogram_count{bar_one="bar",foo_one="foo",instance="instance",service_instance_id="instance",job="myservice",service_name="myservice",raw="test"} 333 + `, + enableOpenMetrics: true, + resourceToTelemetryConversion: true, + }, + { + name: "Monotonic sum: convert resource attributes to metric label", + input: `{ + "resource_metrics": [{ + "resource": { + "attributes": [{ + "key": "service.name", + "value": { "stringValue": "myservice" } + }, { + "key": "service.instance.id", + "value": { "stringValue": "instance" } + }, { + "key": "raw", + "value": { "stringValue": "test" } + },{ + "key": "foo.one", + "value": { "stringValue": "foo" } + }, { + "key": "bar.one", + "value": { "stringValue": "bar" } + }] + }, + "scope_metrics": [{ + "metrics": [ + { + "name": "test_metric_mono_sum_total", + "unit": "seconds", + "sum": { + "aggregation_temporality": 2, + "is_monotonic": true, + "data_points": [{ + "start_time_unix_nano": 1000000000, + "time_unix_nano": 1000000000, + "as_double": 15, + "exemplars":[ + { + "time_unix_nano": 1000000001, + "as_double": 0.3, + "span_id": "aaaaaaaaaaaaaaaa", + "trace_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + } + ] + }] + } + } + ] + }] + }] + }`, + expect: ` + # TYPE test_metric_mono_sum counter + test_metric_mono_sum_total{bar_one="bar",foo_one="foo",instance="instance",service_instance_id="instance",job="myservice",service_name="myservice",raw="test"} 15.0 # {span_id="aaaaaaaaaaaaaaaa",trace_id="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} 0.3 + `, + enableOpenMetrics: true, + resourceToTelemetryConversion: true, + }, } decoder := &pmetric.JSONUnmarshaler{} @@ -851,10 +1120,11 @@ func TestConverter(t *testing.T) { l := util.TestLogger(t) conv := convert.New(l, appenderAppendable{Inner: &app}, convert.Options{ - IncludeTargetInfo: tc.includeTargetInfo, - IncludeScopeInfo: tc.includeScopeInfo, - IncludeScopeLabels: tc.includeScopeLabels, - AddMetricSuffixes: tc.addMetricSuffixes, + IncludeTargetInfo: tc.includeTargetInfo, + IncludeScopeInfo: tc.includeScopeInfo, + IncludeScopeLabels: tc.includeScopeLabels, + AddMetricSuffixes: tc.addMetricSuffixes, + ResourceToTelemetryConversion: tc.resourceToTelemetryConversion, }) require.NoError(t, conv.ConsumeMetrics(context.Background(), payload)) diff --git a/component/otelcol/exporter/prometheus/prometheus.go b/component/otelcol/exporter/prometheus/prometheus.go index 77e894dc6321..7da1c03868ea 100644 --- a/component/otelcol/exporter/prometheus/prometheus.go +++ b/component/otelcol/exporter/prometheus/prometheus.go @@ -31,21 +31,23 @@ func init() { // Arguments configures the otelcol.exporter.prometheus component. type Arguments struct { - IncludeTargetInfo bool `river:"include_target_info,attr,optional"` - IncludeScopeInfo bool `river:"include_scope_info,attr,optional"` - IncludeScopeLabels bool `river:"include_scope_labels,attr,optional"` - GCFrequency time.Duration `river:"gc_frequency,attr,optional"` - ForwardTo []storage.Appendable `river:"forward_to,attr"` - AddMetricSuffixes bool `river:"add_metric_suffixes,attr,optional"` + IncludeTargetInfo bool `river:"include_target_info,attr,optional"` + IncludeScopeInfo bool `river:"include_scope_info,attr,optional"` + IncludeScopeLabels bool `river:"include_scope_labels,attr,optional"` + GCFrequency time.Duration `river:"gc_frequency,attr,optional"` + ForwardTo []storage.Appendable `river:"forward_to,attr"` + AddMetricSuffixes bool `river:"add_metric_suffixes,attr,optional"` + ResourceToTelemetryConversion bool `river:"resource_to_telemetry_conversion,attr,optional"` } // DefaultArguments holds defaults values. var DefaultArguments = Arguments{ - IncludeTargetInfo: true, - IncludeScopeInfo: false, - IncludeScopeLabels: true, - GCFrequency: 5 * time.Minute, - AddMetricSuffixes: true, + IncludeTargetInfo: true, + IncludeScopeInfo: false, + IncludeScopeLabels: true, + GCFrequency: 5 * time.Minute, + AddMetricSuffixes: true, + ResourceToTelemetryConversion: false, } // SetToDefault implements river.Defaulter. @@ -151,8 +153,9 @@ func (c *Component) Update(newConfig component.Arguments) error { func convertArgumentsToConvertOptions(args Arguments) convert.Options { return convert.Options{ - IncludeTargetInfo: args.IncludeTargetInfo, - IncludeScopeInfo: args.IncludeScopeInfo, - AddMetricSuffixes: args.AddMetricSuffixes, + IncludeTargetInfo: args.IncludeTargetInfo, + IncludeScopeInfo: args.IncludeScopeInfo, + AddMetricSuffixes: args.AddMetricSuffixes, + ResourceToTelemetryConversion: args.ResourceToTelemetryConversion, } } diff --git a/component/otelcol/exporter/prometheus/prometheus_test.go b/component/otelcol/exporter/prometheus/prometheus_test.go index 2939c8962346..7e642ff9b585 100644 --- a/component/otelcol/exporter/prometheus/prometheus_test.go +++ b/component/otelcol/exporter/prometheus/prometheus_test.go @@ -23,12 +23,13 @@ func TestArguments_UnmarshalRiver(t *testing.T) { forward_to = [] `, expected: prometheus.Arguments{ - IncludeTargetInfo: true, - IncludeScopeInfo: false, - IncludeScopeLabels: true, - GCFrequency: 5 * time.Minute, - AddMetricSuffixes: true, - ForwardTo: []storage.Appendable{}, + IncludeTargetInfo: true, + IncludeScopeInfo: false, + IncludeScopeLabels: true, + GCFrequency: 5 * time.Minute, + AddMetricSuffixes: true, + ForwardTo: []storage.Appendable{}, + ResourceToTelemetryConversion: false, }, }, { @@ -39,15 +40,17 @@ func TestArguments_UnmarshalRiver(t *testing.T) { include_scope_labels = false gc_frequency = "1s" add_metric_suffixes = false + resource_to_telemetry_conversion = true forward_to = [] `, expected: prometheus.Arguments{ - IncludeTargetInfo: false, - IncludeScopeInfo: true, - IncludeScopeLabels: false, - GCFrequency: 1 * time.Second, - AddMetricSuffixes: false, - ForwardTo: []storage.Appendable{}, + IncludeTargetInfo: false, + IncludeScopeInfo: true, + IncludeScopeLabels: false, + GCFrequency: 1 * time.Second, + AddMetricSuffixes: false, + ForwardTo: []storage.Appendable{}, + ResourceToTelemetryConversion: true, }, }, { diff --git a/docs/sources/flow/reference/components/otelcol.exporter.prometheus.md b/docs/sources/flow/reference/components/otelcol.exporter.prometheus.md index 8c8f81d133d1..584b30bd97e4 100644 --- a/docs/sources/flow/reference/components/otelcol.exporter.prometheus.md +++ b/docs/sources/flow/reference/components/otelcol.exporter.prometheus.md @@ -46,6 +46,7 @@ Name | Type | Description | Defaul `add_metric_suffixes` | `boolean` | Whether to add type and unit suffixes to metrics names. | `true` | no `gc_frequency` | `duration` | How often to clean up stale metrics from memory. | `"5m"` | no `forward_to` | `list(receiver)` | Where to forward converted Prometheus metrics. | | yes +`resource_to_telemetry_conversion` | `boolean` | Whether to convert OTel resource attributes to Prometheus labels. | `false` | no By default, OpenTelemetry resources are converted into `target_info` metrics. OpenTelemetry instrumentation scopes are converted into `otel_scope_info` From a2348a0f4b928a32720b279a425f6223835d5038 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=E1=BB=97=20Tr=E1=BB=8Dng=20H=E1=BA=A3i?= <41283691+hainenber@users.noreply.github.com> Date: Mon, 27 Nov 2023 17:45:00 +0700 Subject: [PATCH 065/166] Bump otelgrpc to fix CVE 2023 47108 (#5806) * Fix CVE-2023-47108 by updating `otelgrpc` from v0.45.0 to v0.46.0. * Stop using the deprecated trace.NewNoopTracerProvider. Using noop.NewTracerProvider from "go.opentelemetry.io/otel/trace/noop" instead. * Reorder changelog Comply with the ordering in: https://github.com/grafana/agent/blob/main/docs/developer/contributing.md#updating-the-changelog --------- Signed-off-by: hainenber Co-authored-by: Paulin Todev --- CHANGELOG.md | 4 +++ .../otelcol/receiver/prometheus/prometheus.go | 8 +++--- go.mod | 14 +++++----- go.sum | 27 ++++++++++--------- pkg/flow/componenttest/componenttest.go | 4 +-- pkg/flow/internal/controller/loader_test.go | 6 ++--- pkg/flow/tracing/tracing.go | 1 + pkg/flow/tracing/wrap_tracer.go | 22 +++++++-------- pkg/traces/instance.go | 4 +-- pkg/traces/traceutils/server.go | 4 +-- service/cluster/cluster.go | 3 ++- service/http/http.go | 3 ++- service/http/http_test.go | 4 +-- 13 files changed, 56 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 162ec02a8d88..048ba98797bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,10 @@ internal API changes are not present. Main (unreleased) ----------------- +### Security fixes + +- Fix CVE-2023-47108 by updating `otelgrpc` from v0.45.0 to v0.46.0. (@hainenber) + ### Features - Agent Management: Introduce support for templated configuration. (@jcreixell) diff --git a/component/otelcol/receiver/prometheus/prometheus.go b/component/otelcol/receiver/prometheus/prometheus.go index 5a54de7337b8..b0493f4d6982 100644 --- a/component/otelcol/receiver/prometheus/prometheus.go +++ b/component/otelcol/receiver/prometheus/prometheus.go @@ -19,8 +19,8 @@ import ( "github.com/prometheus/prometheus/storage" otelcomponent "go.opentelemetry.io/collector/component" otelreceiver "go.opentelemetry.io/collector/receiver" - "go.opentelemetry.io/otel/metric/noop" - "go.opentelemetry.io/otel/trace" + metricNoop "go.opentelemetry.io/otel/metric/noop" + traceNoop "go.opentelemetry.io/otel/trace/noop" ) func init() { @@ -107,8 +107,8 @@ func (c *Component) Update(newConfig component.Arguments) error { Logger: zapadapter.New(c.opts.Logger), // TODO(tpaschalis): expose tracing and logging statistics. - TracerProvider: trace.NewNoopTracerProvider(), - MeterProvider: noop.NewMeterProvider(), + TracerProvider: traceNoop.NewTracerProvider(), + MeterProvider: metricNoop.NewMeterProvider(), ReportComponentStatus: func(*otelcomponent.StatusEvent) error { return nil diff --git a/go.mod b/go.mod index 76f5ba8c6e08..198f271eb81e 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( github.com/go-git/go-git/v5 v5.4.2 github.com/go-kit/log v0.2.1 github.com/go-logfmt/logfmt v0.6.0 - github.com/go-logr/logr v1.2.4 + github.com/go-logr/logr v1.3.0 github.com/go-sourcemap/sourcemap v2.1.3+incompatible github.com/go-sql-driver/mysql v1.7.1 github.com/gogo/protobuf v1.3.2 @@ -45,7 +45,7 @@ require ( github.com/golang/snappy v0.0.4 github.com/google/cadvisor v0.47.0 github.com/google/dnsmasq_exporter v0.2.1-0.20230620100026-44b14480804a - github.com/google/go-cmp v0.5.9 + github.com/google/go-cmp v0.6.0 github.com/google/go-jsonnet v0.18.0 github.com/google/pprof v0.0.0-20230926050212-f7f687d19a98 github.com/google/renameio/v2 v2.0.0 @@ -201,13 +201,13 @@ require ( go.opentelemetry.io/collector/semconv v0.87.0 go.opentelemetry.io/collector/service v0.87.0 go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux v0.45.0 - go.opentelemetry.io/otel v1.19.0 + go.opentelemetry.io/otel v1.21.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 go.opentelemetry.io/otel/exporters/prometheus v0.42.0 - go.opentelemetry.io/otel/metric v1.19.0 - go.opentelemetry.io/otel/sdk v1.19.0 + go.opentelemetry.io/otel/metric v1.21.0 + go.opentelemetry.io/otel/sdk v1.21.0 go.opentelemetry.io/otel/sdk/metric v1.19.0 - go.opentelemetry.io/otel/trace v1.19.0 + go.opentelemetry.io/otel/trace v1.21.0 go.opentelemetry.io/proto/otlp v1.0.0 go.uber.org/atomic v1.11.0 go.uber.org/goleak v1.2.1 @@ -581,7 +581,7 @@ require ( go.mongodb.org/mongo-driver v1.12.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/collector/config/internal v0.87.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.45.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 // indirect go.opentelemetry.io/contrib/propagators/b3 v1.19.0 // indirect go.opentelemetry.io/otel/bridge/opencensus v0.42.0 // indirect diff --git a/go.sum b/go.sum index c80cb90ef4ca..1c65e8cf4249 100644 --- a/go.sum +++ b/go.sum @@ -732,8 +732,8 @@ github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KE github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= @@ -949,8 +949,9 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-github/v32 v32.1.0/go.mod h1:rIEpZD9CTDQwDK9GDrtMTycQNA4JU3qBsCizh3q2WCI= github.com/google/go-jsonnet v0.18.0 h1:/6pTy6g+Jh1a1I2UMoAODkqELFiVIdOxbNwv0DDzoOg= @@ -2378,16 +2379,16 @@ go.opentelemetry.io/collector/semconv v0.87.0 h1:BsG1jdLLRCBRlvUujk4QA86af7r/ZXn go.opentelemetry.io/collector/semconv v0.87.0/go.mod h1:j/8THcqVxFna1FpvA2zYIsUperEtOaRaqoLYIN4doWw= go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux v0.45.0 h1:CaagQrotQLgtDlHU6u9pE/Mf4mAwiLD8wrReIVt06lY= go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux v0.45.0/go.mod h1:LOjFy00/ZMyMYfKFPta6kZe2cDUc1sNo/qtv1pSORWA= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.45.0 h1:RsQi0qJ2imFfCvZabqzM9cNXBG8k6gXMv1A0cXRmH6A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.45.0/go.mod h1:vsh3ySueQCiKPxFLvjWC4Z135gIa34TQ/NSqkDTZYUM= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.0 h1:PzIubN4/sjByhDRHLviCjJuweBXWFZWhghjg7cS28+M= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.0/go.mod h1:Ct6zzQEuGK3WpJs2n4dn+wfJYzd/+hNnxMRTWjGn30M= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 h1:x8Z78aZx8cOF0+Kkazoc7lwUNMGy0LrzEMxTm4BbTxg= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0/go.mod h1:62CPTSry9QZtOaSsE3tOzhx6LzDhHnXJ6xHeMNNiM6Q= go.opentelemetry.io/contrib/propagators/b3 v1.19.0 h1:ulz44cpm6V5oAeg5Aw9HyqGFMS6XM7untlMEhD7YzzA= go.opentelemetry.io/contrib/propagators/b3 v1.19.0/go.mod h1:OzCmE2IVS+asTI+odXQstRGVfXQ4bXv9nMBRK0nNyqQ= go.opentelemetry.io/contrib/zpages v0.45.0 h1:jIwHHGoWzJoZdbIUtWdErjL85Gni6BignnAFqDtMRL4= go.opentelemetry.io/contrib/zpages v0.45.0/go.mod h1:4mIdA5hqH6hEx9sZgV50qKfQO8aIYolUZboHmz+G7vw= -go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs= -go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= +go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc= +go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= go.opentelemetry.io/otel/bridge/opencensus v0.42.0 h1:QvC+bcZkWMphWPiVqRQygMj6M0/3TOuJEO+erRA7kI8= go.opentelemetry.io/otel/bridge/opencensus v0.42.0/go.mod h1:XJojP7g5DqYdiyArix/H9i1XzPPlIUc9dGLKtF9copI= go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.42.0 h1:ZtfnDL+tUrs1F0Pzfwbg2d59Gru9NCH3bgSHBM6LDwU= @@ -2408,14 +2409,14 @@ go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.42.0 h1:4jJuoeOo9W6hZn go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.42.0/go.mod h1:/MtYTE1SfC2QIcE0bDot6fIX+h+WvXjgTqgn9P0LNPE= go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.19.0 h1:Nw7Dv4lwvGrI68+wULbcq7su9K2cebeCUrDjVrUJHxM= go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.19.0/go.mod h1:1MsF6Y7gTqosgoZvHlzcaaM8DIMNZgJh87ykokoNH7Y= -go.opentelemetry.io/otel/metric v1.19.0 h1:aTzpGtV0ar9wlV4Sna9sdJyII5jTVJEvKETPiOKwvpE= -go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= -go.opentelemetry.io/otel/sdk v1.19.0 h1:6USY6zH+L8uMH8L3t1enZPR3WFEmSTADlqldyHtJi3o= -go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= +go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4= +go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= +go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= +go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= go.opentelemetry.io/otel/sdk/metric v1.19.0 h1:EJoTO5qysMsYCa+w4UghwFV/ptQgqSL/8Ni+hx+8i1k= go.opentelemetry.io/otel/sdk/metric v1.19.0/go.mod h1:XjG0jQyFJrv2PbMvwND7LwCEhsJzCzV5210euduKcKY= -go.opentelemetry.io/otel/trace v1.19.0 h1:DFVQmlVbfVeOuBRrwdtaehRrWiL1JoVs9CPIQ1Dzxpg= -go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= +go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc= +go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= diff --git a/pkg/flow/componenttest/componenttest.go b/pkg/flow/componenttest/componenttest.go index b545db4bf3f4..f8af382a70df 100644 --- a/pkg/flow/componenttest/componenttest.go +++ b/pkg/flow/componenttest/componenttest.go @@ -11,12 +11,12 @@ import ( "github.com/grafana/agent/service/labelstore" "github.com/prometheus/client_golang/prometheus" - "go.opentelemetry.io/otel/trace" "go.uber.org/atomic" "github.com/go-kit/log" "github.com/grafana/agent/component" "github.com/grafana/agent/pkg/flow/logging" + "go.opentelemetry.io/otel/trace/noop" ) // A Controller is a testing controller which controls a single component. @@ -155,7 +155,7 @@ func (c *Controller) buildComponent(dataPath string, args component.Arguments) ( opts := component.Options{ ID: c.reg.Name + ".test", Logger: l, - Tracer: trace.NewNoopTracerProvider(), + Tracer: noop.NewTracerProvider(), DataPath: dataPath, OnStateChange: c.onStateChange, Registerer: prometheus.NewRegistry(), diff --git a/pkg/flow/internal/controller/loader_test.go b/pkg/flow/internal/controller/loader_test.go index fee35ec587b5..e93f757b1a2f 100644 --- a/pkg/flow/internal/controller/loader_test.go +++ b/pkg/flow/internal/controller/loader_test.go @@ -15,7 +15,7 @@ import ( "github.com/grafana/river/parser" "github.com/prometheus/client_golang/prometheus" "github.com/stretchr/testify/require" - "go.opentelemetry.io/otel/trace" + "go.opentelemetry.io/otel/trace/noop" _ "github.com/grafana/agent/pkg/flow/internal/testcomponents" // Include test components ) @@ -71,7 +71,7 @@ func TestLoader(t *testing.T) { return controller.LoaderOptions{ ComponentGlobals: controller.ComponentGlobals{ Logger: l, - TraceProvider: trace.NewNoopTracerProvider(), + TraceProvider: noop.NewTracerProvider(), DataPath: t.TempDir(), OnComponentUpdate: func(cn *controller.ComponentNode) { /* no-op */ }, Registerer: prometheus.NewRegistry(), @@ -205,7 +205,7 @@ func TestScopeWithFailingComponent(t *testing.T) { return controller.LoaderOptions{ ComponentGlobals: controller.ComponentGlobals{ Logger: l, - TraceProvider: trace.NewNoopTracerProvider(), + TraceProvider: noop.NewTracerProvider(), DataPath: t.TempDir(), OnComponentUpdate: func(cn *controller.ComponentNode) { /* no-op */ }, Registerer: prometheus.NewRegistry(), diff --git a/pkg/flow/tracing/tracing.go b/pkg/flow/tracing/tracing.go index 9cf5466dab29..12247d477a40 100644 --- a/pkg/flow/tracing/tracing.go +++ b/pkg/flow/tracing/tracing.go @@ -76,6 +76,7 @@ func (opts *JaegerRemoteSamplerOptions) SetToDefault() { // [trace.TracerProvider] and can be used to forward internally generated // traces to a OpenTelemetry Collector-compatible Flow component. type Tracer struct { + trace.TracerProvider sampler *lazySampler client *client exp *otlptrace.Exporter diff --git a/pkg/flow/tracing/wrap_tracer.go b/pkg/flow/tracing/wrap_tracer.go index 197e7ce3200b..5f166d874a9c 100644 --- a/pkg/flow/tracing/wrap_tracer.go +++ b/pkg/flow/tracing/wrap_tracer.go @@ -18,9 +18,9 @@ var ( // componentID as an attribute to each span. func WrapTracer(inner trace.TracerProvider, componentID string) trace.TracerProvider { return &wrappedProvider{ - inner: inner, - id: componentID, - spanName: componentIDAttributeKey, + TracerProvider: inner, + id: componentID, + spanName: componentIDAttributeKey, } } @@ -28,14 +28,14 @@ func WrapTracer(inner trace.TracerProvider, componentID string) trace.TracerProv // controller id as an attribute to each span. func WrapTracerForLoader(inner trace.TracerProvider, componentID string) trace.TracerProvider { return &wrappedProvider{ - inner: inner, - id: componentID, - spanName: controllerIDAttributeKey, + TracerProvider: inner, + id: componentID, + spanName: controllerIDAttributeKey, } } type wrappedProvider struct { - inner trace.TracerProvider + trace.TracerProvider id string spanName string } @@ -49,16 +49,16 @@ func (wp *wrappedProvider) Tracer(name string, options ...trace.TracerOption) tr otelComponentName := strings.TrimSuffix(wp.id, filepath.Ext(wp.id)) options = append(options, trace.WithInstrumentationAttributes(attribute.String(wp.spanName, otelComponentName))) } - innerTracer := wp.inner.Tracer(name, options...) + innerTracer := wp.TracerProvider.Tracer(name, options...) return &wrappedTracer{ - inner: innerTracer, + Tracer: innerTracer, id: wp.id, spanName: wp.spanName, } } type wrappedTracer struct { - inner trace.Tracer + trace.Tracer id string spanName string } @@ -66,7 +66,7 @@ type wrappedTracer struct { var _ trace.Tracer = (*wrappedTracer)(nil) func (tp *wrappedTracer) Start(ctx context.Context, spanName string, opts ...trace.SpanStartOption) (context.Context, trace.Span) { - ctx, span := tp.inner.Start(ctx, spanName, opts...) + ctx, span := tp.Tracer.Start(ctx, spanName, opts...) if tp.id != "" { span.SetAttributes( attribute.String(tp.spanName, tp.id), diff --git a/pkg/traces/instance.go b/pkg/traces/instance.go index 855b5b81a133..bf35e31ccb14 100644 --- a/pkg/traces/instance.go +++ b/pkg/traces/instance.go @@ -26,7 +26,7 @@ import ( "github.com/grafana/agent/pkg/traces/traceutils" "github.com/grafana/agent/pkg/util" prom_client "github.com/prometheus/client_golang/prometheus" - "go.opentelemetry.io/otel/trace" + "go.opentelemetry.io/otel/trace/noop" ) // Instance wraps the OpenTelemetry collector to enable tracing pipelines @@ -153,7 +153,7 @@ func (i *Instance) buildAndStartPipeline(ctx context.Context, cfg InstanceConfig OtelMetricReader: promExporter, DisableProcessMetrics: true, UseExternalMetricsServer: true, - TracerProvider: trace.NewNoopTracerProvider(), + TracerProvider: noop.NewTracerProvider(), //TODO: Plug in an AsyncErrorChannel to shut down the Agent in case of a fatal event LoggingOptions: []zap.Option{ zap.WrapCore(func(zapcore.Core) zapcore.Core { diff --git a/pkg/traces/traceutils/server.go b/pkg/traces/traceutils/server.go index 4889e873df42..2c484e3c086b 100644 --- a/pkg/traces/traceutils/server.go +++ b/pkg/traces/traceutils/server.go @@ -23,7 +23,7 @@ import ( "go.opentelemetry.io/collector/receiver" "go.opentelemetry.io/collector/receiver/otlpreceiver" "go.opentelemetry.io/collector/service" - "go.opentelemetry.io/otel/trace" + "go.opentelemetry.io/otel/trace/noop" "gopkg.in/yaml.v3" ) @@ -153,7 +153,7 @@ func newServer(addr string, callback func(ptrace.Traces)) (*server, error) { Connectors: connector.NewBuilder(otelCfg.Connectors, factories.Connectors), Extensions: extension.NewBuilder(otelCfg.Extensions, factories.Extensions), UseExternalMetricsServer: false, - TracerProvider: trace.NewNoopTracerProvider(), + TracerProvider: noop.NewTracerProvider(), }, otelCfg.Service) if err != nil { return nil, fmt.Errorf("failed to create Otel service: %w", err) diff --git a/service/cluster/cluster.go b/service/cluster/cluster.go index 23b8ea4f293a..2ea23e26017d 100644 --- a/service/cluster/cluster.go +++ b/service/cluster/cluster.go @@ -24,6 +24,7 @@ import ( "github.com/prometheus/client_golang/prometheus" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" + "go.opentelemetry.io/otel/trace/noop" "golang.org/x/net/http2" ) @@ -94,7 +95,7 @@ func New(opts Options) (*Service, error) { l = log.NewNopLogger() } if t == nil { - t = trace.NewNoopTracerProvider() + t = noop.NewTracerProvider() } ckitConfig := ckit.Config{ diff --git a/service/http/http.go b/service/http/http.go index cf703f942474..a8608f4dfcb5 100644 --- a/service/http/http.go +++ b/service/http/http.go @@ -26,6 +26,7 @@ import ( "github.com/prometheus/client_golang/prometheus/promhttp" "go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux" "go.opentelemetry.io/otel/trace" + "go.opentelemetry.io/otel/trace/noop" "golang.org/x/net/http2" "golang.org/x/net/http2/h2c" ) @@ -93,7 +94,7 @@ func New(opts Options) *Service { l = log.NewNopLogger() } if t == nil { - t = trace.NewNoopTracerProvider() + t = noop.NewTracerProvider() } if r == nil { r = prometheus.NewRegistry() diff --git a/service/http/http_test.go b/service/http/http_test.go index b341a677f129..660e0deee43a 100644 --- a/service/http/http_test.go +++ b/service/http/http_test.go @@ -16,7 +16,7 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/common/config" "github.com/stretchr/testify/require" - "go.opentelemetry.io/otel/trace" + "go.opentelemetry.io/otel/trace/noop" ) func TestHTTP(t *testing.T) { @@ -168,7 +168,7 @@ func newTestEnvironment(t *testing.T) (*testEnvironment, error) { svc := New(Options{ Logger: util.TestLogger(t), - Tracer: trace.NewNoopTracerProvider(), + Tracer: noop.NewTracerProvider(), Gatherer: prometheus.NewRegistry(), ReadyFunc: func() bool { return true }, From 84344fb1a273ed1c25423e46a654f9af273636f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=E1=BB=97=20Tr=E1=BB=8Dng=20H=E1=BA=A3i?= <41283691+hainenber@users.noreply.github.com> Date: Mon, 27 Nov 2023 21:22:08 +0700 Subject: [PATCH 066/166] fix(otelcol/fanoutconsumer): nil check during fanout consumer creation (#5854) Signed-off-by: hainenber --- CHANGELOG.md | 2 ++ component/otelcol/internal/fanoutconsumer/logs.go | 14 ++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 048ba98797bb..1f2e8bcd2680 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,6 +48,8 @@ Main (unreleased) - Fix issue with windows_exporter defaults not being set correctly. (@mattdurham) +- Fix agent crash when process null OTel's fan out consumers. (@hainenber) + v0.38.0 (2023-11-21) -------------------- diff --git a/component/otelcol/internal/fanoutconsumer/logs.go b/component/otelcol/internal/fanoutconsumer/logs.go index a01202686e01..a8ee4df45b7f 100644 --- a/component/otelcol/internal/fanoutconsumer/logs.go +++ b/component/otelcol/internal/fanoutconsumer/logs.go @@ -29,6 +29,10 @@ func Logs(in []otelcol.Consumer) otelconsumer.Logs { for i := 0; i < len(in)-1; i++ { consumer := in[i] + if consumer == nil { + continue + } + if consumer.Capabilities().MutatesData { clone = append(clone, consumer) } else { @@ -40,10 +44,12 @@ func Logs(in []otelcol.Consumer) otelconsumer.Logs { // The final consumer can be given to the passthrough list regardless of // whether it mutates as long as there's no other read-only consumers. - if len(passthrough) == 0 || !last.Capabilities().MutatesData { - passthrough = append(passthrough, last) - } else { - clone = append(clone, last) + if last != nil { + if len(passthrough) == 0 || !last.Capabilities().MutatesData { + passthrough = append(passthrough, last) + } else { + clone = append(clone, last) + } } return &logsFanout{ From f232fb476c84cee7c2c04a2f3b7cc28b5907b429 Mon Sep 17 00:00:00 2001 From: Craig Peterson <192540+captncraig@users.noreply.github.com> Date: Mon, 27 Nov 2023 14:15:30 -0500 Subject: [PATCH 067/166] prometheus.operator.* - Fix issue with missing targets when one monitor's name is a prefix of another (#5862) Co-authored-by: Paul Bormans <1399350+Paul424@users.noreply.github.com> --- CHANGELOG.md | 2 + .../prometheus/operator/common/crdmanager.go | 44 +++-- .../operator/common/crdmanager_test.go | 168 ++++++++++++++++++ .../prometheus/operator/common/interfaces.go | 23 +++ 4 files changed, 224 insertions(+), 13 deletions(-) create mode 100644 component/prometheus/operator/common/crdmanager_test.go create mode 100644 component/prometheus/operator/common/interfaces.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f2e8bcd2680..a60a93219a85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -50,6 +50,8 @@ Main (unreleased) - Fix agent crash when process null OTel's fan out consumers. (@hainenber) +- Fix issue in `prometheus.operator.*` where targets would be dropped if two crds share a common prefix in their names. (@Paul424, @captncraig) + v0.38.0 (2023-11-21) -------------------- diff --git a/component/prometheus/operator/common/crdmanager.go b/component/prometheus/operator/common/crdmanager.go index 9f8bd55f79f6..85f13719e970 100644 --- a/component/prometheus/operator/common/crdmanager.go +++ b/component/prometheus/operator/common/crdmanager.go @@ -42,12 +42,19 @@ const informerSyncTimeout = 10 * time.Second // crdManager is all of the fields required to run a crd based component. // on update, this entire thing should be recreated and restarted type crdManager struct { - mut sync.Mutex - discoveryConfigs map[string]discovery.Configs - scrapeConfigs map[string]*config.ScrapeConfig - debugInfo map[string]*operator.DiscoveredResource - discoveryManager *discovery.Manager - scrapeManager *scrape.Manager + mut sync.Mutex + + // these maps are keyed by job name + discoveryConfigs map[string]discovery.Configs + scrapeConfigs map[string]*config.ScrapeConfig + + // list of keys to the above maps for a given resource by `ns/name` + crdsToMapKeys map[string][]string + // debug info by `kind/ns/name` + debugInfo map[string]*operator.DiscoveredResource + + discoveryManager discoveryManager + scrapeManager scrapeManager clusteringUpdated chan struct{} ls labelstore.LabelStore @@ -80,6 +87,7 @@ func newCrdManager(opts component.Options, cluster cluster.Cluster, logger log.L cluster: cluster, discoveryConfigs: map[string]discovery.Configs{}, scrapeConfigs: map[string]*config.ScrapeConfig{}, + crdsToMapKeys: map[string][]string{}, debugInfo: map[string]*operator.DiscoveredResource{}, kind: kind, clusteringUpdated: make(chan struct{}, 1), @@ -392,6 +400,7 @@ func (c *crdManager) addPodMonitor(pm *promopv1.PodMonitor) { AdditionalRelabelConfigs: c.args.RelabelConfigs, ScrapeOptions: c.args.Scrape, } + mapKeys := []string{} for i, ep := range pm.Spec.PodMetricsEndpoints { var scrapeConfig *config.ScrapeConfig scrapeConfig, err = gen.GeneratePodMonitorConfig(pm, ep, i) @@ -400,6 +409,7 @@ func (c *crdManager) addPodMonitor(pm *promopv1.PodMonitor) { level.Error(c.logger).Log("name", pm.Name, "err", err, "msg", "error generating scrapeconfig from podmonitor") break } + mapKeys = append(mapKeys, scrapeConfig.JobName) c.mut.Lock() c.discoveryConfigs[scrapeConfig.JobName] = scrapeConfig.ServiceDiscoveryConfigs c.scrapeConfigs[scrapeConfig.JobName] = scrapeConfig @@ -409,6 +419,9 @@ func (c *crdManager) addPodMonitor(pm *promopv1.PodMonitor) { c.addDebugInfo(pm.Namespace, pm.Name, err) return } + c.mut.Lock() + c.crdsToMapKeys[fmt.Sprintf("%s/%s", pm.Namespace, pm.Name)] = mapKeys + c.mut.Unlock() if err = c.apply(); err != nil { level.Error(c.logger).Log("name", pm.Name, "err", err, "msg", "error applying scrape configs from "+c.kind) } @@ -442,6 +455,8 @@ func (c *crdManager) addServiceMonitor(sm *promopv1.ServiceMonitor) { AdditionalRelabelConfigs: c.args.RelabelConfigs, ScrapeOptions: c.args.Scrape, } + + mapKeys := []string{} for i, ep := range sm.Spec.Endpoints { var scrapeConfig *config.ScrapeConfig scrapeConfig, err = gen.GenerateServiceMonitorConfig(sm, ep, i) @@ -450,6 +465,7 @@ func (c *crdManager) addServiceMonitor(sm *promopv1.ServiceMonitor) { level.Error(c.logger).Log("name", sm.Name, "err", err, "msg", "error generating scrapeconfig from serviceMonitor") break } + mapKeys = append(mapKeys, scrapeConfig.JobName) c.mut.Lock() c.discoveryConfigs[scrapeConfig.JobName] = scrapeConfig.ServiceDiscoveryConfigs c.scrapeConfigs[scrapeConfig.JobName] = scrapeConfig @@ -459,6 +475,9 @@ func (c *crdManager) addServiceMonitor(sm *promopv1.ServiceMonitor) { c.addDebugInfo(sm.Namespace, sm.Name, err) return } + c.mut.Lock() + c.crdsToMapKeys[fmt.Sprintf("%s/%s", sm.Namespace, sm.Name)] = mapKeys + c.mut.Unlock() if err = c.apply(); err != nil { level.Error(c.logger).Log("name", sm.Name, "err", err, "msg", "error applying scrape configs from "+c.kind) } @@ -503,6 +522,7 @@ func (c *crdManager) addProbe(p *promopv1.Probe) { c.mut.Lock() c.discoveryConfigs[pmc.JobName] = pmc.ServiceDiscoveryConfigs c.scrapeConfigs[pmc.JobName] = pmc + c.crdsToMapKeys[fmt.Sprintf("%s/%s", p.Namespace, p.Name)] = []string{pmc.JobName} c.mut.Unlock() if err = c.apply(); err != nil { @@ -533,12 +553,10 @@ func (c *crdManager) onDeleteProbe(obj interface{}) { func (c *crdManager) clearConfigs(ns, name string) { c.mut.Lock() defer c.mut.Unlock() - prefix := fmt.Sprintf("%s/%s/%s", c.kind, ns, name) - for k := range c.discoveryConfigs { - if strings.HasPrefix(k, prefix) { - delete(c.discoveryConfigs, k) - delete(c.scrapeConfigs, k) - } + + for _, k := range c.crdsToMapKeys[fmt.Sprintf("%s/%s", ns, name)] { + delete(c.discoveryConfigs, k) + delete(c.scrapeConfigs, k) } - delete(c.debugInfo, prefix) + delete(c.debugInfo, fmt.Sprintf("%s/%s/%s", c.kind, ns, name)) } diff --git a/component/prometheus/operator/common/crdmanager_test.go b/component/prometheus/operator/common/crdmanager_test.go new file mode 100644 index 000000000000..7e3cd75fbd37 --- /dev/null +++ b/component/prometheus/operator/common/crdmanager_test.go @@ -0,0 +1,168 @@ +package common + +import ( + "testing" + + "golang.org/x/exp/maps" + + "github.com/go-kit/log" + "github.com/grafana/agent/component" + "github.com/grafana/agent/component/prometheus/operator" + "github.com/grafana/agent/service/cluster" + "github.com/grafana/agent/service/labelstore" + "github.com/prometheus/prometheus/config" + "github.com/prometheus/prometheus/discovery" + "github.com/prometheus/prometheus/discovery/targetgroup" + "github.com/prometheus/prometheus/scrape" + "k8s.io/apimachinery/pkg/util/intstr" + + promopv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/stretchr/testify/require" +) + +func TestClearConfigsSameNsSamePrefix(t *testing.T) { + logger := log.NewNopLogger() + m := newCrdManager( + component.Options{ + Logger: logger, + GetServiceData: func(name string) (interface{}, error) { return nil, nil }, + }, + cluster.Mock(), + logger, + &operator.DefaultArguments, + KindServiceMonitor, + labelstore.New(logger), + ) + + m.discoveryManager = newMockDiscoveryManager() + m.scrapeManager = newMockScrapeManager() + + targetPort := intstr.FromInt(9090) + m.onAddServiceMonitor(&promopv1.ServiceMonitor{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: "monitoring", + Name: "svcmonitor", + }, + Spec: promopv1.ServiceMonitorSpec{ + Selector: metav1.LabelSelector{ + MatchLabels: map[string]string{ + "group": "my-group", + }, + }, + Endpoints: []promopv1.Endpoint{ + { + TargetPort: &targetPort, + ScrapeTimeout: "5s", + Interval: "10s", + }, + }, + }, + }) + m.onAddServiceMonitor(&promopv1.ServiceMonitor{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: "monitoring", + Name: "svcmonitor-another", + }, + Spec: promopv1.ServiceMonitorSpec{ + Selector: metav1.LabelSelector{ + MatchLabels: map[string]string{ + "group": "my-group", + }, + }, + Endpoints: []promopv1.Endpoint{ + { + TargetPort: &targetPort, + ScrapeTimeout: "5s", + Interval: "10s", + }, + }, + }}) + + require.ElementsMatch(t, []string{"serviceMonitor/monitoring/svcmonitor-another/0", "serviceMonitor/monitoring/svcmonitor/0"}, maps.Keys(m.discoveryConfigs)) + m.clearConfigs("monitoring", "svcmonitor") + require.ElementsMatch(t, []string{"monitoring/svcmonitor", "monitoring/svcmonitor-another"}, maps.Keys(m.crdsToMapKeys)) + require.ElementsMatch(t, []string{"serviceMonitor/monitoring/svcmonitor-another/0"}, maps.Keys(m.discoveryConfigs)) + require.ElementsMatch(t, []string{"serviceMonitor/monitoring/svcmonitor-another"}, maps.Keys(m.debugInfo)) +} + +func TestClearConfigsProbe(t *testing.T) { + logger := log.NewNopLogger() + m := newCrdManager( + component.Options{ + Logger: logger, + GetServiceData: func(name string) (interface{}, error) { return nil, nil }, + }, + cluster.Mock(), + logger, + &operator.DefaultArguments, + KindProbe, + labelstore.New(logger), + ) + + m.discoveryManager = newMockDiscoveryManager() + m.scrapeManager = newMockScrapeManager() + + m.onAddProbe(&promopv1.Probe{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: "monitoring", + Name: "probe", + }, + Spec: promopv1.ProbeSpec{}, + }) + m.onAddProbe(&promopv1.Probe{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: "monitoring", + Name: "probe-another", + }, + Spec: promopv1.ProbeSpec{}}) + + require.ElementsMatch(t, []string{"probe/monitoring/probe-another", "probe/monitoring/probe"}, maps.Keys(m.discoveryConfigs)) + m.clearConfigs("monitoring", "probe") + require.ElementsMatch(t, []string{"monitoring/probe", "monitoring/probe-another"}, maps.Keys(m.crdsToMapKeys)) + require.ElementsMatch(t, []string{"probe/monitoring/probe-another"}, maps.Keys(m.discoveryConfigs)) + require.ElementsMatch(t, []string{"probe/monitoring/probe-another"}, maps.Keys(m.debugInfo)) +} + +type mockDiscoveryManager struct { +} + +func newMockDiscoveryManager() *mockDiscoveryManager { + return &mockDiscoveryManager{} +} + +func (m *mockDiscoveryManager) Run() error { + return nil +} + +func (m *mockDiscoveryManager) SyncCh() <-chan map[string][]*targetgroup.Group { + return nil +} + +func (m *mockDiscoveryManager) ApplyConfig(cfg map[string]discovery.Configs) error { + return nil +} + +type mockScrapeManager struct { +} + +func newMockScrapeManager() *mockScrapeManager { + return &mockScrapeManager{} +} + +func (m *mockScrapeManager) Run(tsets <-chan map[string][]*targetgroup.Group) error { + return nil +} + +func (m *mockScrapeManager) Stop() { + +} + +func (m *mockScrapeManager) TargetsActive() map[string][]*scrape.Target { + return nil +} + +func (m *mockScrapeManager) ApplyConfig(cfg *config.Config) error { + return nil +} diff --git a/component/prometheus/operator/common/interfaces.go b/component/prometheus/operator/common/interfaces.go new file mode 100644 index 000000000000..4652154f6dc6 --- /dev/null +++ b/component/prometheus/operator/common/interfaces.go @@ -0,0 +1,23 @@ +package common + +import ( + "github.com/prometheus/prometheus/config" + "github.com/prometheus/prometheus/discovery" + "github.com/prometheus/prometheus/discovery/targetgroup" + "github.com/prometheus/prometheus/scrape" +) + +// discoveryManager is an interface around discovery.Manager +type discoveryManager interface { + Run() error + SyncCh() <-chan map[string][]*targetgroup.Group + ApplyConfig(cfg map[string]discovery.Configs) error +} + +// scrapeManager is an interface around scrape.Manager +type scrapeManager interface { + Run(tsets <-chan map[string][]*targetgroup.Group) error + Stop() + TargetsActive() map[string][]*scrape.Target + ApplyConfig(cfg *config.Config) error +} From dcfdce56a167beba9840251313804f392ef299c1 Mon Sep 17 00:00:00 2001 From: Clayton Cornell <131809008+clayton-cornell@users.noreply.github.com> Date: Mon, 27 Nov 2023 11:46:56 -0800 Subject: [PATCH 068/166] Update shared content topics (#5845) * Update layout and syntax in shared topics * Updates to language passive voice use etc * General updates to words syntax and voice * Fix sorting in table * Fix table spacing * Correct capitalization of boolean * Apply suggestions from code review Co-authored-by: Robert Fratto * Update docs/sources/shared/flow/reference/components/otelcol-debug-metrics-block.md --------- Co-authored-by: Robert Fratto --- .../components/authorization-block.md | 13 +++--- .../reference/components/azuread-block.md | 6 +-- .../reference/components/basic-auth-block.md | 13 +++--- .../components/exporter-component-exports.md | 9 ++-- .../components/extract-field-block.md | 33 ++++++------- .../components/field-filter-block.md | 18 ++++---- .../components/http-client-config-block.md | 18 ++++---- .../components/local-file-arguments-text.md | 25 ++++------ .../reference/components/loki-server-grpc.md | 25 +++++----- .../reference/components/loki-server-http.md | 19 ++++---- .../components/managed_identity-block.md | 10 ++-- .../components/match-properties-block.md | 18 ++++---- .../flow/reference/components/oauth2-block.md | 23 +++++----- .../components/otelcol-compression-field.md | 7 ++- .../components/otelcol-debug-metrics-block.md | 12 ++--- .../otelcol-filter-attribute-block.md | 10 ++-- .../otelcol-filter-library-block.md | 12 ++--- .../otelcol-filter-log-severity-block.md | 13 +++--- .../components/otelcol-filter-regexp-block.md | 8 ++-- .../otelcol-filter-resource-block.md | 12 ++--- .../components/otelcol-grpc-authority.md | 7 ++- .../components/otelcol-grpc-balancer-name.md | 8 ++-- .../components/otelcol-queue-block.md | 29 +++++------- .../components/otelcol-retry-block.md | 34 ++++++-------- .../components/otelcol-tls-config-block.md | 41 ++++++++--------- .../reference/components/output-block-logs.md | 15 +++--- .../components/output-block-metrics.md | 9 ++-- .../components/output-block-traces.md | 15 +++--- .../flow/reference/components/output-block.md | 19 ++++---- .../components/prom-operator-scrape.md | 8 ++-- .../reference/components/rule-block-logs.md | 46 +++++++++---------- .../flow/reference/components/rule-block.md | 42 ++++++++--------- .../flow/reference/components/sigv4-block.md | 14 +++--- .../reference/components/tls-config-block.md | 25 +++++----- 34 files changed, 286 insertions(+), 330 deletions(-) diff --git a/docs/sources/shared/flow/reference/components/authorization-block.md b/docs/sources/shared/flow/reference/components/authorization-block.md index 190cd11f8bb9..11a74326f997 100644 --- a/docs/sources/shared/flow/reference/components/authorization-block.md +++ b/docs/sources/shared/flow/reference/components/authorization-block.md @@ -10,11 +10,10 @@ description: Shared content, authorization block headless: true --- -Name | Type | Description | Default | Required ----- | ---- | ----------- | ------- | -------- -`type` | `string` | Authorization type, for example, "Bearer". | | no -`credentials` | `secret` | Secret value. | | no -`credentials_file` | `string` | File containing the secret value. | | no +Name | Type | Description | Default | Required +-------------------|----------|--------------------------------------------|---------|--------- +`credentials_file` | `string` | File containing the secret value. | | no +`credentials` | `secret` | Secret value. | | no +`type` | `string` | Authorization type, for example, "Bearer". | | no -`credential` and `credentials_file` are mutually exclusive and only one can be -provided inside of an `authorization` block. +`credential` and `credentials_file` are mutually exclusive, and only one can be provided inside an `authorization` block. diff --git a/docs/sources/shared/flow/reference/components/azuread-block.md b/docs/sources/shared/flow/reference/components/azuread-block.md index ebdf436d02fe..07d974385134 100644 --- a/docs/sources/shared/flow/reference/components/azuread-block.md +++ b/docs/sources/shared/flow/reference/components/azuread-block.md @@ -10,11 +10,11 @@ description: Shared content, azuread block headless: true --- -Name | Type | Description | Default | Required ----- | ---- | ----------- | ------- | -------- +Name | Type | Description | Default | Required +--------|----------|------------------|-----------------|--------- `cloud` | `string` | The Azure Cloud. | `"AzurePublic"` | no The supported values for `cloud` are: * `"AzurePublic"` * `"AzureChina"` -* `"AzureGovernment"` \ No newline at end of file +* `"AzureGovernment"` diff --git a/docs/sources/shared/flow/reference/components/basic-auth-block.md b/docs/sources/shared/flow/reference/components/basic-auth-block.md index 06c81f660e3c..62f7e0a25d61 100644 --- a/docs/sources/shared/flow/reference/components/basic-auth-block.md +++ b/docs/sources/shared/flow/reference/components/basic-auth-block.md @@ -10,11 +10,10 @@ description: Shared content, basic auth block headless: true --- -Name | Type | Description | Default | Required ----- | ---- | ----------- | ------- | -------- -`username` | `string` | Basic auth username. | | no -`password` | `secret` | Basic auth password. | | no -`password_file` | `string` | File containing the basic auth password. | | no +Name | Type | Description | Default | Required +----------------|----------|------------------------------------------|---------|--------- +`password_file` | `string` | File containing the basic auth password. | | no +`password` | `secret` | Basic auth password. | | no +`username` | `string` | Basic auth username. | | no -`password` and `password_file` are mutually exclusive and only one can be -provided inside of a `basic_auth` block. +`password` and `password_file` are mutually exclusive, and only one can be provided inside a `basic_auth` block. diff --git a/docs/sources/shared/flow/reference/components/exporter-component-exports.md b/docs/sources/shared/flow/reference/components/exporter-component-exports.md index beb717a13fae..f1a8ca440cd9 100644 --- a/docs/sources/shared/flow/reference/components/exporter-component-exports.md +++ b/docs/sources/shared/flow/reference/components/exporter-component-exports.md @@ -13,15 +13,12 @@ headless: true 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 exporter metrics. -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. +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 will use the configured [in-memory traffic][] address -specified by the [run command][]. +The exported targets use the configured [in-memory traffic][] address specified by the [run command][]. [in-memory traffic]: {{< relref "../../../../flow/concepts/component_controller.md#in-memory-traffic" >}} [run command]: {{< relref "../../../../flow/reference/cli/run.md" >}} diff --git a/docs/sources/shared/flow/reference/components/extract-field-block.md b/docs/sources/shared/flow/reference/components/extract-field-block.md index 5036097d155f..207f2bc6053d 100644 --- a/docs/sources/shared/flow/reference/components/extract-field-block.md +++ b/docs/sources/shared/flow/reference/components/extract-field-block.md @@ -12,31 +12,28 @@ headless: true The following attributes are supported: -Name | Type | Description | Default | Required ----- |----------------|----------------------------------------------------------------------------------------------------------|---------| -------- -`tag_name` | `string` | The name of the resource attribute that will be added to logs, metrics, or spans. | `""` | no -`key` | `string` | The annotation (or label) name. This must exactly match an annotation (or label) name. | `""` | no -`key_regex` | `string` | A regular expression used to extract a key that matches the regex. | `""` | no -`regex` | `string` | An optional field used to extract a sub-string from a complex field value. | `""` | no -`from` | `string` | The source of the labels or annotations. Allowed values are `pod` and `namespace`. | `pod` | no - -When `tag_name` is not specified, a default tag name will be used with the format: +Name | Type | Description | Default | Required +------------|----------|----------------------------------------------------------------------------------------|---------|--------- +`from` | `string` | The source of the labels or annotations. Allowed values are `pod` and `namespace`. | `pod` | no +`key_regex` | `string` | A regular expression used to extract a key that matches the regular expression. | `""` | no +`key` | `string` | The annotation or label name. This key must exactly match an annotation or label name. | `""` | no +`regex` | `string` | An optional field used to extract a sub-string from a complex field value. | `""` | no +`tag_name` | `string` | The name of the resource attribute added to logs, metrics, or spans. | `""` | no + +When you don't specify the `tag_name`, a default tag name is used with the format: * `k8s.pod.annotations.` * `k8s.pod.labels.