Skip to content

Commit

Permalink
wire up gcp exporter for integrations v2 converter
Browse files Browse the repository at this point in the history
Signed-off-by: erikbaranowski <[email protected]>
  • Loading branch information
erikbaranowski committed Nov 2, 2023
1 parent 2447691 commit 77d0f47
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 14 deletions.
4 changes: 3 additions & 1 deletion converter/internal/staticconvert/internal/build/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ func (b *IntegrationsConfigBuilder) appendV1Integrations() {
case *elasticsearch_exporter.Config:
exports = b.appendElasticsearchExporter(itg, nil)
case *gcp_exporter.Config:
exports = b.appendGcpExporter(itg)
exports = b.appendGcpExporter(itg, nil)
case *github_exporter.Config:
exports = b.appendGithubExporter(itg)
case *kafka_exporter.Config:
Expand Down Expand Up @@ -224,6 +224,8 @@ func (b *IntegrationsConfigBuilder) appendV2Integrations() {
exports = b.appendDnsmasqExporter(v1_itg, itg.Common.InstanceKey)
case *elasticsearch_exporter.Config:
exports = b.appendElasticsearchExporter(v1_itg, itg.Common.InstanceKey)
case *gcp_exporter.Config:
exports = b.appendGcpExporter(v1_itg, itg.Common.InstanceKey)
}
}

Expand Down
14 changes: 2 additions & 12 deletions converter/internal/staticconvert/internal/build/gcp_exporter.go
Original file line number Diff line number Diff line change
@@ -1,24 +1,14 @@
package build

import (
"fmt"

"github.com/grafana/agent/component/discovery"
"github.com/grafana/agent/component/prometheus/exporter/gcp"
"github.com/grafana/agent/converter/internal/common"
"github.com/grafana/agent/pkg/integrations/gcp_exporter"
)

func (b *IntegrationsConfigBuilder) appendGcpExporter(config *gcp_exporter.Config) discovery.Exports {
func (b *IntegrationsConfigBuilder) appendGcpExporter(config *gcp_exporter.Config, instanceKey *string) discovery.Exports {
args := toGcpExporter(config)
compLabel := common.LabelForParts(b.globalCtx.LabelPrefix, config.Name())
b.f.Body().AppendBlock(common.NewBlockWithOverride(
[]string{"prometheus", "exporter", "gcp"},
compLabel,
args,
))

return common.NewDiscoveryExports(fmt.Sprintf("prometheus.exporter.gcp.%s.targets", compLabel))
return b.appendExporterBlock(args, config.Name(), instanceKey, "gcp")
}

func toGcpExporter(config *gcp_exporter.Config) *gcp.Arguments {
Expand Down
12 changes: 12 additions & 0 deletions converter/internal/staticconvert/testdata-v2/integrations_v2.river
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,18 @@ prometheus.scrape "integrations_elasticsearch" {
job_name = "integrations/elasticsearch"
}

prometheus.exporter.gcp "integrations_gcp_exporter" {
project_ids = ["<project_id>"]
metrics_prefixes = ["loadbalancing.googleapis.com/https/request_bytes_count", "loadbalancing.googleapis.com/https/total_latencies"]
extra_filters = ["loadbalancing.googleapis.com:resource.labels.backend_target_name=\"sample-value\""]
}

prometheus.scrape "integrations_gcp" {
targets = prometheus.exporter.gcp.integrations_gcp_exporter.targets
forward_to = [prometheus.remote_write.metrics_default.receiver]
job_name = "integrations/gcp"
}

prometheus.exporter.agent "integrations_agent" { }

discovery.relabel "integrations_agent" {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,4 +99,12 @@ integrations:
replacement: dnsmasq-a
elasticsearch_configs:
- autoscrape:
metrics_instance: "default"
metrics_instance: "default"
gcp_configs:
- project_ids:
- <project_id>
metrics_prefixes:
- loadbalancing.googleapis.com/https/request_bytes_count
- loadbalancing.googleapis.com/https/total_latencies
extra_filters:
- loadbalancing.googleapis.com:resource.labels.backend_target_name="sample-value"
1 change: 1 addition & 0 deletions converter/internal/staticconvert/validate.go
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ func validateIntegrationsV2(integrationsConfig *v2.SubsystemOptions) diag.Diagno
case *consul_exporter.Config:
case *dnsmasq_exporter.Config:
case *elasticsearch_exporter.Config:
case *gcp_exporter.Config:
default:
diags.Add(diag.SeverityLevelError, fmt.Sprintf("The converter does not support converting the provided %s integration.", v1_itg.Name()))
}
Expand Down

0 comments on commit 77d0f47

Please sign in to comment.