Select Git revision
exporter.go
Forked from
ai3 / thirdparty / rsyslog-exporter
Source project has a limited visibility.
-
Brian Knox authoredBrian Knox authored
exporter.go 2.39 KiB
package main
import (
"bufio"
"os"
"strings"
"sync"
"github.com/prometheus/client_golang/prometheus"
)
type rsyslogType int
const (
rsyslogUnknown rsyslogType = iota
rsyslogAction
rsyslogInput
rsyslogQueue
rsyslogResource
)
type rsyslogExporter struct {
started bool
logfile *os.File
scanner *bufio.Scanner
pointStore
}
func newRsyslogExporter() *rsyslogExporter {
e := &rsyslogExporter{
scanner: bufio.NewScanner(os.Stdin),
pointStore: pointStore{
pointMap: make(map[string]*point),
lock: &sync.RWMutex{},
},
}
return e
}
func (re *rsyslogExporter) handleStatLine(buf []byte) {
pstatType := getStatType(buf)
switch pstatType {
case rsyslogAction:
a := newActionFromJSON(buf)
for _, p := range a.toPoints() {
re.add(p)
}
case rsyslogInput:
i := newInputFromJSON(buf)
for _, p := range i.toPoints() {
re.add(p)
}
case rsyslogQueue:
q := newQueueFromJSON(buf)
for _, p := range q.toPoints() {
re.add(p)
}
case rsyslogResource:
r := newResourceFromJSON(buf)
for _, p := range r.toPoints() {
re.add(p)
}
default:
}
}