-
Notifications
You must be signed in to change notification settings - Fork 391
/
exporter_prometheus.go
77 lines (66 loc) · 2.24 KB
/
exporter_prometheus.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// Copyright The OpenTelemetry Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package exporter
import (
"github.com/go-logr/logr"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/util/intstr"
"github.com/open-telemetry/opentelemetry-operator/internal/manifests/collector/parser"
"github.com/open-telemetry/opentelemetry-operator/internal/naming"
)
var _ parser.ComponentPortParser = &PrometheusExporterParser{}
const (
parserNamePrometheus = "__prometheus"
defaultPrometheusPort = 8888
)
// PrometheusExporterParser parses the configuration for OTLP receivers.
type PrometheusExporterParser struct {
config map[interface{}]interface{}
logger logr.Logger
name string
}
// NewPrometheusExporterParser builds a new parser for OTLP receivers.
func NewPrometheusExporterParser(logger logr.Logger, name string, config map[interface{}]interface{}) parser.ComponentPortParser {
return &PrometheusExporterParser{
logger: logger,
name: name,
config: config,
}
}
// Ports returns all the service ports for all protocols in this parser.
func (o *PrometheusExporterParser) Ports() ([]corev1.ServicePort, error) {
ports := []corev1.ServicePort{}
if o.config == nil {
ports = append(ports,
corev1.ServicePort{
Name: naming.PortName(o.name, defaultPrometheusPort),
Port: defaultPrometheusPort,
TargetPort: intstr.FromInt(int(defaultPrometheusPort)),
Protocol: corev1.ProtocolTCP,
},
)
} else {
ports = append(
ports, *singlePortFromConfigEndpoint(o.logger, o.name, o.config),
)
}
return ports, nil
}
// ParserName returns the name of this parser.
func (o *PrometheusExporterParser) ParserName() string {
return parserNamePrometheus
}
func init() {
Register("prometheus", NewPrometheusExporterParser)
}