Skip to content

Commit 4fcee87

Browse files
committed
Fix generation output configuration if used receiver input
1 parent 080f848 commit 4fcee87

File tree

3 files changed

+227
-1
lines changed

3 files changed

+227
-1
lines changed

internal/generator/vector/output/lokistack/lokistack.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func New(id string, o obs.OutputSpec, inputs []string, secrets observability.Sec
4646
},
4747
}
4848
confs = append(confs, elements.NewUnmatched(routeID, op, map[string]string{"output_type": strings.ToLower(obs.OutputTypeLokiStack.String())}))
49-
for _, inputType := range inputTypes.List() {
49+
for _, inputType := range observability.ReservedInputTypes.List() {
5050
outputID := vectorhelpers.MakeID(id, inputType)
5151
migratedOutput := GenerateOutput(o, inputType)
5252
log.V(4).Info("migrated lokistack output", "spec", migratedOutput)

internal/generator/vector/output/lokistack/lokistack_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,29 @@ var _ = Describe("Generate vector config", func() {
9898
}),
9999
}
100100
}
101+
102+
receiverOptions = func() utils.Options {
103+
output := initOutput()
104+
return utils.Options{
105+
framework.OptionServiceAccountTokenSecretName: saTokenSecretName,
106+
helpers.CLFSpec: observability.ClusterLogForwarderSpec(obs.ClusterLogForwarderSpec{
107+
Outputs: []obs.OutputSpec{output},
108+
Pipelines: []obs.PipelineSpec{
109+
{
110+
Name: "lokistack",
111+
InputRefs: []string{"syslog"},
112+
OutputRefs: []string{output.Name},
113+
},
114+
},
115+
Inputs: []obs.InputSpec{
116+
{Name: "syslog", Type: obs.InputTypeReceiver, Receiver: &obs.ReceiverSpec{
117+
Type: obs.ReceiverTypeSyslog,
118+
Port: 1234,
119+
}},
120+
},
121+
}),
122+
}
123+
}
101124
)
102125
DescribeTable("for LokiStack output", func(expFile string, op framework.Options, tune bool, visit func(spec *obs.OutputSpec)) {
103126
exp, err := tomlContent.ReadFile(expFile)
@@ -115,6 +138,7 @@ var _ = Describe("Generate vector config", func() {
115138
Expect(string(exp)).To(EqualConfigFrom(conf))
116139
},
117140
Entry("with ViaQ datamodel", "lokistack_viaq.toml", initOptions(), false, func(spec *obs.OutputSpec) {}),
141+
Entry("with ViaQ datamodel with receiver", "lokistack_viaq_receiver.toml", receiverOptions(), false, func(spec *obs.OutputSpec) {}),
118142
Entry("with Otel datamodel", "lokistack_otel.toml", initOptions(), false, func(spec *obs.OutputSpec) {
119143
spec.LokiStack.DataModel = obs.LokiStackDataModelOpenTelemetry
120144
}),
Lines changed: 202 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,202 @@
1+
[transforms.output_default_lokistack_route]
2+
type = "route"
3+
inputs = ["pipeline_fake"]
4+
route.receiver = '.log_type == "receiver"'
5+
6+
7+
8+
9+
10+
[transforms.output_default_lokistack_route_unmatched]
11+
inputs = ["output_default_lokistack_route._unmatched"]
12+
type = "log_to_metric"
13+
14+
[[transforms.output_default_lokistack_route_unmatched.metrics]]
15+
field = "message"
16+
kind = "incremental"
17+
name = "component_event_unmatched_count"
18+
namespace = "logcollector"
19+
tags = {component_id = "output_default_lokistack_route", log_source = "{{ log_source }}", log_type = "{{ log_type }}", output_type = "lokistack"}
20+
type = "counter"
21+
22+
23+
24+
[transforms.output_default_lokistack_application_remap]
25+
type = "remap"
26+
inputs = ["output_default_lokistack_route.application"]
27+
source = '''
28+
del(.tag)
29+
'''
30+
31+
[transforms.output_default_lokistack_application_remap_label]
32+
type = "remap"
33+
inputs = ["output_default_lokistack_application_remap"]
34+
source = '''
35+
36+
if !exists(.kubernetes.namespace_name) {
37+
.kubernetes.namespace_name = ""
38+
}
39+
if !exists(.kubernetes.pod_name) {
40+
.kubernetes.pod_name = ""
41+
}
42+
if !exists(.kubernetes.container_name) {
43+
.kubernetes.container_name = ""
44+
}
45+
'''
46+
47+
[sinks.output_default_lokistack_application]
48+
type = "loki"
49+
inputs = ["output_default_lokistack_application_remap_label"]
50+
endpoint = "https://logging-loki-gateway-http.openshift-logging.svc:8080/api/logs/v1/application"
51+
out_of_order_action = "accept"
52+
healthcheck.enabled = false
53+
54+
55+
[sinks.output_default_lokistack_application.encoding]
56+
codec = "json"
57+
58+
except_fields = ["_internal"]
59+
60+
61+
62+
63+
64+
[sinks.output_default_lokistack_application.labels]
65+
k8s_container_name = "{{kubernetes.container_name}}"
66+
k8s_namespace_name = "{{kubernetes.namespace_name}}"
67+
k8s_node_name = "${VECTOR_SELF_NODE_NAME}"
68+
k8s_pod_name = "{{kubernetes.pod_name}}"
69+
kubernetes_container_name = "{{kubernetes.container_name}}"
70+
kubernetes_host = "${VECTOR_SELF_NODE_NAME}"
71+
kubernetes_namespace_name = "{{kubernetes.namespace_name}}"
72+
kubernetes_pod_name = "{{kubernetes.pod_name}}"
73+
log_type = "{{log_type}}"
74+
openshift_log_type = "{{log_type}}"
75+
76+
[sinks.output_default_lokistack_application.tls]
77+
78+
ca_file = "/var/run/ocp-collector/config/openshift-service-ca.crt/ca-bundle.crt"
79+
80+
[sinks.output_default_lokistack_application.auth]
81+
strategy = "bearer"
82+
token = "SECRET[kubernetes_secret.test-sa-token/token]"
83+
84+
[transforms.output_default_lokistack_audit_remap]
85+
type = "remap"
86+
inputs = ["output_default_lokistack_route.audit"]
87+
source = '''
88+
del(.tag)
89+
'''
90+
91+
[transforms.output_default_lokistack_audit_remap_label]
92+
type = "remap"
93+
inputs = ["output_default_lokistack_audit_remap"]
94+
source = '''
95+
96+
if !exists(.kubernetes.namespace_name) {
97+
.kubernetes.namespace_name = ""
98+
}
99+
if !exists(.kubernetes.pod_name) {
100+
.kubernetes.pod_name = ""
101+
}
102+
if !exists(.kubernetes.container_name) {
103+
.kubernetes.container_name = ""
104+
}
105+
'''
106+
107+
[sinks.output_default_lokistack_audit]
108+
type = "loki"
109+
inputs = ["output_default_lokistack_audit_remap_label"]
110+
endpoint = "https://logging-loki-gateway-http.openshift-logging.svc:8080/api/logs/v1/audit"
111+
out_of_order_action = "accept"
112+
healthcheck.enabled = false
113+
114+
115+
[sinks.output_default_lokistack_audit.encoding]
116+
codec = "json"
117+
118+
except_fields = ["_internal"]
119+
120+
121+
122+
123+
124+
[sinks.output_default_lokistack_audit.labels]
125+
k8s_container_name = "{{kubernetes.container_name}}"
126+
k8s_namespace_name = "{{kubernetes.namespace_name}}"
127+
k8s_node_name = "${VECTOR_SELF_NODE_NAME}"
128+
k8s_pod_name = "{{kubernetes.pod_name}}"
129+
kubernetes_container_name = "{{kubernetes.container_name}}"
130+
kubernetes_host = "${VECTOR_SELF_NODE_NAME}"
131+
kubernetes_namespace_name = "{{kubernetes.namespace_name}}"
132+
kubernetes_pod_name = "{{kubernetes.pod_name}}"
133+
log_type = "{{log_type}}"
134+
openshift_log_type = "{{log_type}}"
135+
136+
[sinks.output_default_lokistack_audit.tls]
137+
138+
ca_file = "/var/run/ocp-collector/config/openshift-service-ca.crt/ca-bundle.crt"
139+
140+
[sinks.output_default_lokistack_audit.auth]
141+
strategy = "bearer"
142+
token = "SECRET[kubernetes_secret.test-sa-token/token]"
143+
144+
[transforms.output_default_lokistack_infrastructure_remap]
145+
type = "remap"
146+
inputs = ["output_default_lokistack_route.infrastructure"]
147+
source = '''
148+
del(.tag)
149+
'''
150+
151+
[transforms.output_default_lokistack_infrastructure_remap_label]
152+
type = "remap"
153+
inputs = ["output_default_lokistack_infrastructure_remap"]
154+
source = '''
155+
156+
if !exists(.kubernetes.namespace_name) {
157+
.kubernetes.namespace_name = ""
158+
}
159+
if !exists(.kubernetes.pod_name) {
160+
.kubernetes.pod_name = ""
161+
}
162+
if !exists(.kubernetes.container_name) {
163+
.kubernetes.container_name = ""
164+
}
165+
'''
166+
167+
[sinks.output_default_lokistack_infrastructure]
168+
type = "loki"
169+
inputs = ["output_default_lokistack_infrastructure_remap_label"]
170+
endpoint = "https://logging-loki-gateway-http.openshift-logging.svc:8080/api/logs/v1/infrastructure"
171+
out_of_order_action = "accept"
172+
healthcheck.enabled = false
173+
174+
175+
[sinks.output_default_lokistack_infrastructure.encoding]
176+
codec = "json"
177+
178+
except_fields = ["_internal"]
179+
180+
181+
182+
183+
184+
[sinks.output_default_lokistack_infrastructure.labels]
185+
k8s_container_name = "{{kubernetes.container_name}}"
186+
k8s_namespace_name = "{{kubernetes.namespace_name}}"
187+
k8s_node_name = "${VECTOR_SELF_NODE_NAME}"
188+
k8s_pod_name = "{{kubernetes.pod_name}}"
189+
kubernetes_container_name = "{{kubernetes.container_name}}"
190+
kubernetes_host = "${VECTOR_SELF_NODE_NAME}"
191+
kubernetes_namespace_name = "{{kubernetes.namespace_name}}"
192+
kubernetes_pod_name = "{{kubernetes.pod_name}}"
193+
log_type = "{{log_type}}"
194+
openshift_log_type = "{{log_type}}"
195+
196+
[sinks.output_default_lokistack_infrastructure.tls]
197+
198+
ca_file = "/var/run/ocp-collector/config/openshift-service-ca.crt/ca-bundle.crt"
199+
200+
[sinks.output_default_lokistack_infrastructure.auth]
201+
strategy = "bearer"
202+
token = "SECRET[kubernetes_secret.test-sa-token/token]"

0 commit comments

Comments
 (0)