mirror of
https://github.com/resmoio/kubernetes-event-exporter.git
synced 2026-08-24 01:06:22 +00:00
* 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>
45 lines
806 B
Go
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
|
|
}
|