Files
Akif Khanandakif.ak 57d362476e Syslog sink (#107)
* Implemented syslog sink, this enables pushing k8s-events to rsyslog, syslog daemon server over both tcp/udp.

* Reverting go.mod indirect dependency

* Reverting go.mod indirect dependency

Co-authored-by: akif.ak <akif.ak@flipkart.com>
2021-06-16 21:31:21 +03:00

45 lines
806 B
Go

package sinks
import (
"context"
"encoding/json"
"github.com/opsgenie/kubernetes-event-exporter/pkg/kube"
"log/syslog"
)
type SyslogConfig struct {
Network string `yaml:"network"`
Address string `yaml:"address"`
Tag string `yaml:"tag"`
}
type SyslogSink struct {
sw *syslog.Writer
}
func NewSyslogSink(config *SyslogConfig) (Sink, error) {
w, err := syslog.Dial(config.Network, config.Address, syslog.LOG_LOCAL0, config.Tag)
if err != nil {
return nil, err
}
return &SyslogSink{sw: w}, nil
}
func (w *SyslogSink) Close() {
w.sw.Close()
}
func (w *SyslogSink) Send(ctx context.Context, ev *kube.EnhancedEvent) error {
if b, err := json.Marshal(ev); err == nil {
_, writeErr := w.sw.Write(b)
if writeErr != nil {
return writeErr
}
} else {
return err
}
return nil
}