Skip to content

Commit 2185bba

Browse files
Merge pull request #1348 from vimalk78/log-2263-prom-exporter
LOG-2263: Vector: Added prometheus_exporter sink
2 parents 5bd1dbb + a8682f3 commit 2185bba

File tree

4 files changed

+92
-0
lines changed

4 files changed

+92
-0
lines changed

internal/generator/vector/conf_test.go

+25
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,9 @@ type = "file"
118118
ignore_older_secs = 600
119119
include = ["/var/log/oauth-apiserver.audit.log"]
120120
121+
[sources.internal_metrics]
122+
type = "internal_metrics"
123+
121124
[transforms.container_logs]
122125
type = "remap"
123126
inputs = ["raw_container_logs"]
@@ -233,6 +236,12 @@ key_file = "/var/run/ocp-collector/secrets/kafka-receiver-1/tls.key"
233236
crt_file = "/var/run/ocp-collector/secrets/kafka-receiver-1/tls.crt"
234237
ca_file = "/var/run/ocp-collector/secrets/kafka-receiver-1/ca-bundle.crt"
235238
enabled = true
239+
240+
[sinks.prometheus_output]
241+
type = "prometheus_exporter"
242+
inputs = ["internal_metrics"]
243+
address = "0.0.0.0:24231"
244+
default_namespace = "collector"
236245
`,
237246
}),
238247
Entry("with complex spec for elastic-search", generator.ConfGenerateTest{
@@ -313,6 +322,9 @@ type = "file"
313322
ignore_older_secs = 600
314323
include = ["/var/log/oauth-apiserver.audit.log"]
315324
325+
[sources.internal_metrics]
326+
type = "internal_metrics"
327+
316328
[transforms.container_logs]
317329
type = "remap"
318330
inputs = ["raw_container_logs"]
@@ -563,6 +575,11 @@ id_key = "_id"
563575
key_file = "/var/run/ocp-collector/secrets/es-2/tls.key"
564576
crt_file = "/var/run/ocp-collector/secrets/es-2/tls.crt"
565577
ca_file = "/var/run/ocp-collector/secrets/es-2/ca-bundle.crt"
578+
[sinks.prometheus_output]
579+
type = "prometheus_exporter"
580+
inputs = ["internal_metrics"]
581+
address = "0.0.0.0:24231"
582+
default_namespace = "collector"
566583
`,
567584
}),
568585
Entry("with multiple pipelines for elastic-search", generator.ConfGenerateTest{
@@ -649,6 +666,9 @@ type = "file"
649666
ignore_older_secs = 600
650667
include = ["/var/log/oauth-apiserver.audit.log"]
651668
669+
[sources.internal_metrics]
670+
type = "internal_metrics"
671+
652672
[transforms.container_logs]
653673
type = "remap"
654674
inputs = ["raw_container_logs"]
@@ -907,6 +927,11 @@ id_key = "_id"
907927
key_file = "/var/run/ocp-collector/secrets/es-2/tls.key"
908928
crt_file = "/var/run/ocp-collector/secrets/es-2/tls.crt"
909929
ca_file = "/var/run/ocp-collector/secrets/es-2/ca-bundle.crt"
930+
[sinks.prometheus_output]
931+
type = "prometheus_exporter"
932+
inputs = ["internal_metrics"]
933+
address = "0.0.0.0:24231"
934+
default_namespace = "collector"
910935
`,
911936
}),
912937
)

internal/generator/vector/metrics.go

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package vector
2+
3+
const (
4+
InternalMetricsSourceName = "internal_metrics"
5+
PrometheusOutputSinkName = "prometheus_output"
6+
PrometheusExporterAddress = "0.0.0.0:24231"
7+
)
8+
9+
type InternalMetrics struct {
10+
ID string
11+
ScrapeIntervalSec int
12+
}
13+
14+
func (InternalMetrics) Name() string {
15+
return "internalMetricsTemplate"
16+
}
17+
18+
//#namespace = "collector"
19+
//#scrape_interval_secs = {{.ScrapeIntervalSec}}
20+
func (i InternalMetrics) Template() string {
21+
return `
22+
{{define "` + i.Name() + `" -}}
23+
[sources.{{.ID}}]
24+
type = "internal_metrics"
25+
{{end}}
26+
`
27+
}
28+
29+
type PrometheusExporter struct {
30+
ID string
31+
Inputs string
32+
Address string
33+
}
34+
35+
func (p PrometheusExporter) Name() string {
36+
return "PrometheusExporterTemplate"
37+
}
38+
39+
func (p PrometheusExporter) Template() string {
40+
return `{{define "` + p.Name() + `" -}}
41+
[sinks.{{.ID}}]
42+
type = "prometheus_exporter"
43+
inputs = {{.Inputs}}
44+
address = "{{.Address}}"
45+
default_namespace = "collector"
46+
{{end}}`
47+
}

internal/generator/vector/outputs.go

+10
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package vector
33
import (
44
logging "github.com/openshift/cluster-logging-operator/apis/logging/v1"
55
"github.com/openshift/cluster-logging-operator/internal/generator"
6+
"github.com/openshift/cluster-logging-operator/internal/generator/vector/helpers"
67
"github.com/openshift/cluster-logging-operator/internal/generator/vector/output/elasticsearch"
78
"github.com/openshift/cluster-logging-operator/internal/generator/vector/output/kafka"
89
"github.com/openshift/cluster-logging-operator/internal/generator/vector/output/loki"
@@ -25,5 +26,14 @@ func Outputs(clspec *logging.ClusterLoggingSpec, secrets map[string]*corev1.Secr
2526
outputs = generator.MergeElements(outputs, elasticsearch.Conf(o, inputs, secret, op))
2627
}
2728
}
29+
outputs = append(outputs, PrometheusOutput(PrometheusOutputSinkName, []string{InternalMetricsSourceName}))
2830
return outputs
2931
}
32+
33+
func PrometheusOutput(id string, inputs []string) generator.Element {
34+
return PrometheusExporter{
35+
ID: id,
36+
Inputs: helpers.MakeInputs(inputs...),
37+
Address: PrometheusExporterAddress,
38+
}
39+
}

internal/generator/vector/sources.go

+10
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
func Sources(spec *logging.ClusterLogForwarderSpec, op generator.Options) []generator.Element {
1515
return generator.MergeElements(
1616
LogSources(spec, op),
17+
MetricsSources(InternalMetricsSourceName),
1718
)
1819
}
1920

@@ -87,3 +88,12 @@ func ExcludeContainerPaths() string {
8788
", ",
8889
))
8990
}
91+
92+
func MetricsSources(id string) []generator.Element {
93+
return []generator.Element{
94+
InternalMetrics{
95+
ID: id,
96+
ScrapeIntervalSec: 2,
97+
},
98+
}
99+
}

0 commit comments

Comments
 (0)