func()

in apps/vault.go [78:178]


func (r MetricsReceiverVault) Pipelines(_ context.Context) ([]otel.ReceiverPipeline, error) {
	if r.Endpoint == "" {
		r.Endpoint = defaultVaultEndpoint
	}
	if r.MetricsPath == "" {
		r.MetricsPath = defaultVaultMetricsPath
	}

	if r.Scheme == "" {
		r.Scheme = defaultVaultScheme
	}

	tlsConfig := r.TLSConfig(true)

	scrapeConfig := map[string]interface{}{
		"job_name":        "vault",
		"scrape_interval": r.CollectionIntervalString(),
		"metrics_path":    r.MetricsPath,
		"static_configs": []map[string]interface{}{{
			"targets": []string{r.Endpoint},
		}},
		"scheme": r.Scheme,
	}

	if r.Token != "" {
		scrapeConfig["authorization"] = map[string]interface{}{
			"credentials": r.Token.SecretValue(),
			"type":        "Bearer",
		}
	}
	if tlsConfig["insecure"] == false {
		scrapeConfig["scheme"] = "https"
	}
	delete(tlsConfig, "insecure")
	scrapeConfig["tls_config"] = tlsConfig

	includeMetrics := []string{}
	queries := []otel.TransformQuery{}

	storageMetricTransforms, newStorageMetricNames := r.addStorageMetrics()
	metricRenewRevokeTransforms, newRenewRevokeNames := r.getSummarySumMetricsTransforms()
	metricDetailTransforms, newMetricNames := r.getMetricTransforms()

	includeMetrics = append(includeMetrics, newStorageMetricNames...)
	includeMetrics = append(includeMetrics, newMetricNames...)
	includeMetrics = append(includeMetrics, newRenewRevokeNames...)

	queries = append(queries, storageMetricTransforms...)
	queries = append(queries, metricRenewRevokeTransforms...)
	queries = append(queries, metricDetailTransforms...)

	return []otel.ReceiverPipeline{{
		Receiver: otel.Component{
			Type: "prometheus",
			Config: map[string]interface{}{
				"config": map[string]interface{}{
					"scrape_configs": []map[string]interface{}{
						scrapeConfig,
					},
				},
			},
		},
		Processors: map[string][]otel.Component{"metrics": {
			otel.TransformationMetrics(queries...),
			otel.MetricsFilter(
				"include",
				"strict",
				includeMetrics...,
			),
			// This is currently needed along side the newer transform processor as the new processor doesn't currently support toggling scalar data types.
			// Issue: https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/11810
			otel.MetricsTransform(
				otel.UpdateMetric(
					"vault.audit.response.failed",
					otel.ToggleScalarDataType,
				),
				otel.UpdateMetric(
					"vault.audit.request.failed",
					otel.ToggleScalarDataType,
				),
				otel.UpdateMetric(
					"vault.token.lease.count",
					otel.ToggleScalarDataType,
				),
				otel.UpdateMetric(
					"vault.token.count",
					otel.ToggleScalarDataType,
				),
				otel.UpdateMetric(
					"vault.core.request.count",
					otel.ToggleScalarDataType,
				),
			),
			otel.NormalizeSums(),
			otel.MetricsTransform(
				otel.AddPrefix("workload.googleapis.com"),
			),
			otel.ModifyInstrumentationScope(r.Type(), "1.0"),
		}},
	}}, nil
}