Documentation
¶
Overview ¶
Package eventhandler watches for Kubernetes Event objects and hands them off to Agent's Logs subsystem (embedded promtail)
Index ¶
- Variables
- type Config
- func (c *Config) ApplyDefaults(globals integrations.Globals) error
- func (c *Config) Identifier(globals integrations.Globals) (string, error)
- func (c *Config) Name() string
- func (c *Config) NewIntegration(l log.Logger, globals integrations.Globals) (integrations.Integration, error)
- func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error
- type EventHandler
- type ShippedEvents
Constants ¶
This section is empty.
Variables ¶
var DefaultConfig = Config{
SendTimeout: 60,
CachePath: "./.eventcache/eventhandler.cache",
LogsInstance: "default",
InformerResync: 120,
FlushInterval: 10,
LogFormat: logFormatFmt,
}
DefaultConfig sets defaults for Config
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct { // Eventhandler hands watched events off to promtail using a promtail // client channel. This parameter configures how long to wait (in seconds) on the channel // before abandoning and moving on. SendTimeout int `yaml:"send_timeout,omitempty"` // Configures the path to a kubeconfig file. If not set, will fall back to using // an in-cluster config. If this fails, will fall back to checking the user's home // directory for a kubeconfig. KubeconfigPath string `yaml:"kubeconfig_path,omitempty"` // Path to a cache file that will store the last timestamp for a shipped event and events // shipped for that timestamp. Used to prevent double-shipping on integration restart. CachePath string `yaml:"cache_path,omitempty"` // Name of logs subsystem instance to hand log entries off to. LogsInstance string `yaml:"logs_instance,omitempty"` // K8s informer resync interval (seconds). You should use defaults here unless you are // familiar with K8s informers. InformerResync int `yaml:"informer_resync,omitempty"` // The integration will flush the last event shipped out to disk every flush_interval seconds. FlushInterval int `yaml:"flush_interval,omitempty"` // If you would like to limit events to a given namespace, use this parameter. Namespace string `yaml:"namespace,omitempty"` // Extra labels to append to log lines ExtraLabels labels.Labels `yaml:"extra_labels,omitempty"` // For changing the log format to json, use this parameter. LogFormat string `yaml:"log_format,omitempty"` InstanceKey *string `yaml:"instance,omitempty"` }
Config configures the eventhandler integration
func (*Config) ApplyDefaults ¶
ApplyDefaults applies runtime-specific defaults to c
func (*Config) Identifier ¶
Identifier uniquely identifies this instance of Config
func (*Config) NewIntegration ¶
func (c *Config) NewIntegration(l log.Logger, globals integrations.Globals) (integrations.Integration, error)
NewIntegration converts this config into an instance of an integration.
func (*Config) UnmarshalYAML ¶
UnmarshalYAML implements yaml.Unmarshaler for Config
type EventHandler ¶
type EventHandler struct { LogsClient *logs.Logs LogsInstance string Log log.Logger CachePath string LastEvent *ShippedEvents InitEvent *ShippedEvents EventInformer cache.SharedIndexInformer SendTimeout time.Duration sync.Mutex // contains filtered or unexported fields }
EventHandler watches for Kubernetes Event objects and hands them off to Agent's logs subsystem (embedded promtail).
func (*EventHandler) RunIntegration ¶
func (eh *EventHandler) RunIntegration(ctx context.Context) error
RunIntegration runs the eventhandler integration
type ShippedEvents ¶
type ShippedEvents struct { // shipped event's timestamp Timestamp time.Time `json:"ts"` // map of event RVs (resource versions) already "shipped" (handed off) for this timestamp. // this is to handle the case of a timestamp having multiple events, // which happens quite frequently. RvMap map[string]struct{} `json:"resourceVersion"` }
ShippedEvents stores a timestamp and map of event ResourceVersions shipped for that timestamp. Used to avoid double-shipping events upon restart.