Skip to content

Commit ae4097b

Browse files
committed
Merge pull request resmoio#210
2 parents 1d81064 + c5f45b2 commit ae4097b

File tree

2 files changed

+53
-8
lines changed

2 files changed

+53
-8
lines changed

config.yaml

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,26 @@ clusterName: my-super-local-cluster
44
route:
55
routes:
66
- match:
7-
- receiver: "dump"
7+
- receiver: "loki"
8+
89
receivers:
9-
- name: "dump"
10-
stdout: {}
10+
- name: "loki"
11+
loki:
12+
headers: # optional
13+
Authorization: Basic $LOKI_BASIC_AUTH_BASE64
14+
streamLabels:
15+
stream: event
16+
cluster: local-test
17+
url: $LOKI_URL
18+
layout:
19+
# namespace: "{{ .Namespace }}"
20+
message: "{{ .Message }}"
21+
type: "{{ .Type }}"
22+
reason: "{{ .Reason }}"
23+
kind: "{{ .InvolvedObject.Kind }}"
24+
name: "{{.InvolvedObject.Name }}"
25+
source: "{{ .Source.Component }}"
26+
# ignore_namespaces:
27+
# - namespace_one
28+
# - namespace_two
29+
# - namespace_three

pkg/sinks/loki.go

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,12 @@ type LokiMsg struct {
2525
}
2626

2727
type LokiConfig struct {
28-
Layout map[string]interface{} `yaml:"layout"`
29-
StreamLabels map[string]string `yaml:"streamLabels"`
30-
TLS TLS `yaml:"tls"`
31-
URL string `yaml:"url"`
32-
Headers map[string]string `yaml:"headers"`
28+
Layout map[string]interface{} `yaml:"layout"`
29+
StreamLabels map[string]string `yaml:"streamLabels"`
30+
TLS TLS `yaml:"tls"`
31+
URL string `yaml:"url"`
32+
Headers map[string]string `yaml:"headers"`
33+
IgnoreNamespaces []string `yaml:"ignore_namespaces"`
3334
}
3435

3536
type Loki struct {
@@ -66,14 +67,35 @@ func convertStreamTemplate(layout map[string]string, ev *kube.EnhancedEvent) (ma
6667
}
6768

6869
func (l *Loki) Send(ctx context.Context, ev *kube.EnhancedEvent) error {
70+
if ev.InvolvedObject.Kind == "Node" {
71+
l.cfg.StreamLabels["host"] = ev.InvolvedObject.Name
72+
delete(l.cfg.Layout, "name")
73+
} else {
74+
l.cfg.Layout["name"] = "{{ .InvolvedObject.Name }}"
75+
}
76+
6977
eventBody, err := serializeEventWithLayout(l.cfg.Layout, ev)
7078
if err != nil {
7179
return err
7280
}
81+
82+
for _, namespace := range l.cfg.IgnoreNamespaces {
83+
if namespace == ev.InvolvedObject.Namespace {
84+
log.Debug().Msgf("Skipping %s namespace, because it is in ignore list", ev.InvolvedObject.Namespace)
85+
return nil
86+
}
87+
}
88+
89+
if ev.InvolvedObject.Namespace != "" {
90+
l.cfg.StreamLabels["namespace"] = ev.InvolvedObject.Namespace
91+
l.cfg.StreamLabels["index"] = l.cfg.StreamLabels["cluster"] + "-" + ev.InvolvedObject.Namespace
92+
}
93+
7394
streamLabels, err := convertStreamTemplate(l.cfg.StreamLabels, ev)
7495
if err != nil {
7596
return err
7697
}
98+
7799
timestamp := generateTimestamp()
78100
a := LokiMsg{
79101
Streams: []promtailStream{{
@@ -110,6 +132,10 @@ func (l *Loki) Send(ctx context.Context, ev *kube.EnhancedEvent) error {
110132
return err
111133
}
112134

135+
delete(l.cfg.StreamLabels, "namespace")
136+
delete(l.cfg.StreamLabels, "index")
137+
delete(l.cfg.StreamLabels, "host")
138+
113139
defer resp.Body.Close()
114140

115141
body, err := io.ReadAll(resp.Body)

0 commit comments

Comments
 (0)