hydra

package
v0.1.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 22, 2016 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultFluentdPort       = 24224
	DefaultFieldName         = "message"
	DefaultMaxBufferMessages = 1024 * 1024
	DefaultTimeKey           = "time"
	DefaultTimeFormat        = time.RFC3339
)
View Source
const (
	OpenRetryInterval = 1 * time.Second
	SEEK_TAIL         = int64(-1)
	SEEK_HEAD         = int64(0)
	DEBUG             = false
)
View Source
const (
	ConvertTypeString = iota
	ConvertTypeInt
	ConvertTypeFloat
	ConvertTypeBool
)
View Source
const (
	MessageChannelBufferLen = 1
	MonitorChannelBufferLen = 256
	LineSeparatorStr        = "\n"
	LTSVColSeparatorStr     = "\t"
	LTSVDataSeparatorStr    = ":"
)
View Source
const (
	DefaultMonitorPort = 24223
	DefaultMonitorHost = "localhost"
)
View Source
const (
	FlashInterval = 200 * time.Millisecond
)
View Source
const (
	TailInterval = 200 * time.Millisecond
)

Variables

View Source
var (
	LineSeparator = []byte{'\n'}
)
View Source
var (
	ReadBufferSize = 64 * 1024
)

Functions

func NewChannel

func NewChannel() (chan *fluent.FluentRecordSet, chan Stat)

NewChannel create channel for using by OutForward() and InTail().

func NewFluentRecordSet

func NewFluentRecordSet(tag string, key string, buffer []byte) *fluent.FluentRecordSet

func NewFluentRecordSetJSON added in v0.0.9

func NewFluentRecordSetJSON(tag string, key string, mod *RecordModifier, buffer []byte) *fluent.FluentRecordSet

func NewFluentRecordSetLTSV added in v0.0.9

func NewFluentRecordSetLTSV(tag string, key string, mod *RecordModifier, buffer []byte) *fluent.FluentRecordSet

func Rel2Abs

func Rel2Abs(filename string) (string, error)

Types

type BoolConverter added in v0.1.1

type BoolConverter int

func (BoolConverter) Convert added in v0.1.1

func (c BoolConverter) Convert(v string) (interface{}, error)

type Config

type Config struct {
	TagPrefix        string
	FieldName        string
	ReadBufferSize   int
	Servers          []*ConfigServer
	ServerRoundRobin bool
	Logs             []*ConfigLogfile
	Receiver         *ConfigReceiver
	Monitor          *ConfigMonitor
}

func NewConfigByArgs

func NewConfigByArgs(args []string, fieldName string, monitorAddr string) *Config

func ReadConfig

func ReadConfig(filename string) (*Config, error)

func (*Config) Restrict

func (c *Config) Restrict()

type ConfigLogfile

type ConfigLogfile struct {
	Tag        string
	File       string
	FieldName  string
	Format     FileFormat
	ConvertMap ConvertMap `toml:"Types"`
	TimeParse  bool
	TimeKey    string
	TimeFormat string
}

func (*ConfigLogfile) Restrict

func (cl *ConfigLogfile) Restrict(c *Config)

type ConfigMonitor added in v0.0.4

type ConfigMonitor struct {
	Host string
	Port int
}

func (*ConfigMonitor) Restrict added in v0.0.4

func (cr *ConfigMonitor) Restrict(c *Config)

type ConfigReceiver

type ConfigReceiver struct {
	Host              string
	Port              int
	MaxBufferMessages int
}

func (*ConfigReceiver) Restrict

func (cr *ConfigReceiver) Restrict(c *Config)

type ConfigServer

type ConfigServer struct {
	Host string
	Port int
}

func (*ConfigServer) Address

func (cs *ConfigServer) Address() string

func (*ConfigServer) Restrict

func (cs *ConfigServer) Restrict(c *Config)

type ConvertMap added in v0.0.9

type ConvertMap struct {
	TypeMap      map[string]ConvertType
	ConverterMap map[string]Converter
}

func NewConvertMap added in v0.0.9

func NewConvertMap(config string) ConvertMap

func (ConvertMap) ConvertTypes added in v0.1.1

func (c ConvertMap) ConvertTypes(data map[string]interface{})

func (*ConvertMap) UnmarshalText added in v0.0.9

func (c *ConvertMap) UnmarshalText(text []byte) error

type ConvertType added in v0.1.4

type ConvertType int

type Converter added in v0.0.9

type Converter interface {
	Convert(string) (interface{}, error)
}

type File

type File struct {
	*os.File
	Path     string
	Tag      string
	Position int64

	FieldName      string
	FileStat       *FileStat
	Format         FileFormat
	RecordModifier *RecordModifier
	// contains filtered or unexported fields
}

func (*File) UpdateStat added in v0.0.9

func (f *File) UpdateStat() *FileStat

type FileFormat added in v0.0.9

type FileFormat int
const (
	None FileFormat = iota
	LTSV
	JSON
)

func (FileFormat) String added in v0.0.9

func (i FileFormat) String() string

func (*FileFormat) UnmarshalText added in v0.0.9

func (f *FileFormat) UnmarshalText(text []byte) error

type FileStat

type FileStat struct {
	Tag      string `json:"tag"`
	File     string `json:"-"`
	Position int64  `json:"position"`
	Error    string `json:"error"`
}

func (*FileStat) ApplyTo

func (s *FileStat) ApplyTo(ss *Stats)

type FloatConverter added in v0.1.1

type FloatConverter int

func (FloatConverter) Convert added in v0.1.1

func (c FloatConverter) Convert(v string) (interface{}, error)

type InForward

type InForward struct {
	Addr net.Addr
	// contains filtered or unexported fields
}

func NewInForward

func NewInForward(config *ConfigReceiver, messageCh chan *fluent.FluentRecordSet, monitorCh chan Stat) (*InForward, error)

func (*InForward) Run

func (f *InForward) Run()

type InTail

type InTail struct {
	// contains filtered or unexported fields
}

func NewInTail

func NewInTail(config *ConfigLogfile, watcher *Watcher, messageCh chan *fluent.FluentRecordSet, monitorCh chan Stat) (*InTail, error)

func (*InTail) Run

func (t *InTail) Run()

InTail follow the tail of file and post BulkMessage to channel.

type IntConverter added in v0.1.1

type IntConverter int

func (IntConverter) Convert added in v0.1.1

func (c IntConverter) Convert(v string) (interface{}, error)

type MessageQueue

type MessageQueue struct {
	// contains filtered or unexported fields
}

func NewMessageQueue

func NewMessageQueue(maxMessages int) *MessageQueue

func (*MessageQueue) Dequeue

func (q *MessageQueue) Dequeue() (*fluent.FluentRecordSet, bool)

func (*MessageQueue) Enqueue

func (q *MessageQueue) Enqueue(recordSet *fluent.FluentRecordSet) int64

func (*MessageQueue) Len

func (q *MessageQueue) Len() int

type Monitor

type Monitor struct {
	Addr net.Addr
	// contains filtered or unexported fields
}

func NewMonitor

func NewMonitor(config *Config, monitorCh chan Stat) (*Monitor, error)

func (*Monitor) Run

func (m *Monitor) Run()

type OutForward

type OutForward struct {
	RoundRobin bool
	// contains filtered or unexported fields
}

func NewOutForward

func NewOutForward(configServers []*ConfigServer, messageCh chan *fluent.FluentRecordSet, monitorCh chan Stat) (*OutForward, error)

OutForward ... recieve FluentRecordSet from channel, and send it to passed loggers until success.

func (*OutForward) Run

func (f *OutForward) Run()

type ReceiverStat added in v0.0.2

type ReceiverStat struct {
	Address            string `json:"address"`
	Connections        int    `json:"-"`
	TotalConnections   int    `json:"total_connections"`
	CurrentConnections int    `json:"current_connections"`
	Messages           int64  `json:"messages"`
	Disposed           int64  `json:"disposed"`
	Buffered           int64  `json:"buffered"`
	MaxBufferMessages  int64  `json:"max_buffer_messages"`
}

func (*ReceiverStat) ApplyTo added in v0.0.2

func (s *ReceiverStat) ApplyTo(ss *Stats)

type RecordModifier added in v0.1.1

type RecordModifier struct {
	// contains filtered or unexported fields
}

func (*RecordModifier) Modify added in v0.1.1

func (m *RecordModifier) Modify(r *fluent.TinyFluentRecord)

type SentStat

type SentStat struct {
	Tag      string `json:"-"`
	Messages int64  `json:"messages"`
	Bytes    int64  `json:"bytes"`
	Sents    int64  `json:"sents"`
}

func (*SentStat) ApplyTo

func (s *SentStat) ApplyTo(ss *Stats)

type ServerStat

type ServerStat struct {
	Index   int    `json:"-"`
	Address string `json:"address"`
	Alive   bool   `json:"alive"`
	Error   string `json:"error"`
}

func (*ServerStat) ApplyTo

func (s *ServerStat) ApplyTo(ss *Stats)

type ShutdownType

type ShutdownType struct {
	// contains filtered or unexported fields
}

func (*ShutdownType) Error

func (s *ShutdownType) Error() string

type Stat

type Stat interface {
	ApplyTo(*Stats)
}

type Stats

type Stats struct {
	Sent     map[string]*SentStat `json:"sent"`
	Files    map[string]*FileStat `json:"files"`
	Servers  []*ServerStat        `json:"servers"`
	Receiver *ReceiverStat        `json:"receiver"`
	// contains filtered or unexported fields
}

func (*Stats) Run

func (ss *Stats) Run(ch chan Stat)

func (*Stats) WriteJSON

func (ss *Stats) WriteJSON(w http.ResponseWriter)

type TimeConverter added in v0.1.1

type TimeConverter string

func (TimeConverter) Convert added in v0.1.1

func (c TimeConverter) Convert(v string) (time.Time, error)

type Watcher

type Watcher struct {
	// contains filtered or unexported fields
}

func NewWatcher

func NewWatcher() (*Watcher, error)

func (*Watcher) Run

func (w *Watcher) Run()

func (*Watcher) WatchFile

func (w *Watcher) WatchFile(filename string) (chan fsnotify.Event, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL