Merge pull request #79 from prometheus/migrate-logging

Switch logging from glog to github.com/prometheus/log
This commit is contained in:
Julius Volz 2015-05-28 21:58:02 +02:00
commit 94d225919b
19 changed files with 37 additions and 65 deletions

View File

@ -2,5 +2,4 @@ FROM golang:onbuild
MAINTAINER Prometheus Team <prometheus-developers@googlegroups.com>
ENTRYPOINT [ "go-wrapper", "run" ]
CMD [ "-logtostderr" ]
EXPOSE 9100

View File

@ -10,12 +10,6 @@ collectors.
make
./node_exporter <flags>
The node_exporter uses the [glog][glog] library for logging. With the default
parameters, nothing will be logged. Use `-logtostderr` to enable logging to
stderr and `--help` to see more options about logging.
[glog]: https://godoc.org/github.com/golang/glog
## Running tests
make test

View File

@ -12,8 +12,8 @@ import (
"strconv"
"strings"
"github.com/golang/glog"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/log"
)
const (
@ -26,7 +26,6 @@ var (
)
type diskstatsCollector struct {
ignoredDevicesPattern *regexp.Regexp
metrics []prometheus.Collector
}
@ -155,7 +154,7 @@ func (c *diskstatsCollector) Update(ch chan<- prometheus.Metric) (err error) {
for dev, stats := range diskStats {
if c.ignoredDevicesPattern.MatchString(dev) {
glog.V(1).Infof("Ignoring device: %s", dev)
log.Debugf("Ignoring device: %s", dev)
continue
}

View File

@ -11,8 +11,8 @@ import (
"strings"
"syscall"
"github.com/golang/glog"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/log"
)
const (
@ -25,7 +25,6 @@ var (
)
type filesystemCollector struct {
ignoredMountPointsPattern *regexp.Regexp
size, free, avail, files, filesFree *prometheus.GaugeVec
@ -41,7 +40,6 @@ func NewFilesystemCollector() (Collector, error) {
var filesystemLabelNames = []string{"filesystem"}
return &filesystemCollector{
ignoredMountPointsPattern: regexp.MustCompile(*ignoredMountPoints),
size: prometheus.NewGaugeVec(
prometheus.GaugeOpts{
@ -99,7 +97,7 @@ func (c *filesystemCollector) Update(ch chan<- prometheus.Metric) (err error) {
}
for _, mp := range mps {
if c.ignoredMountPointsPattern.MatchString(mp) {
glog.V(1).Infof("Ignoring mount point: %s", mp)
log.Debugf("Ignoring mount point: %s", mp)
continue
}
buf := new(syscall.Statfs_t)

View File

@ -11,8 +11,9 @@ import (
"regexp"
"time"
"github.com/golang/glog"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/log"
"github.com/prometheus/node_exporter/collector/ganglia"
)
@ -25,7 +26,6 @@ const (
type gmondCollector struct {
metrics map[string]*prometheus.GaugeVec
}
func init() {
@ -45,7 +45,7 @@ func NewGmondCollector() (Collector, error) {
func (c *gmondCollector) Update(ch chan<- prometheus.Metric) (err error) {
conn, err := net.Dial(gangliaProto, gangliaAddress)
glog.V(1).Infof("gmondCollector Update")
log.Debugf("gmondCollector Update")
if err != nil {
return fmt.Errorf("Can't connect to gmond: %s", err)
}
@ -91,7 +91,7 @@ func (c *gmondCollector) setMetric(name, cluster string, metric ganglia.Metric)
break
}
}
glog.V(1).Infof("Register %s: %s", name, desc)
log.Debugf("Register %s: %s", name, desc)
c.metrics[name] = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: gangliaNamespace,
@ -101,7 +101,7 @@ func (c *gmondCollector) setMetric(name, cluster string, metric ganglia.Metric)
[]string{"cluster"},
)
}
glog.V(1).Infof("Set %s{cluster=%q}: %f", name, cluster, metric.Value)
log.Debugf("Set %s{cluster=%q}: %f", name, cluster, metric.Value)
c.metrics[name].WithLabelValues(cluster).Set(metric.Value)
}

View File

@ -18,7 +18,6 @@ const (
)
type interruptsCollector struct {
metric *prometheus.CounterVec
}
@ -30,7 +29,6 @@ func init() {
// interrupts stats
func NewInterruptsCollector() (Collector, error) {
return &interruptsCollector{
metric: prometheus.NewCounterVec(
prometheus.CounterOpts{
Namespace: Namespace,

View File

@ -10,14 +10,13 @@ import (
"strings"
"time"
"github.com/golang/glog"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/log"
)
const lastLoginSubsystem = "last_login"
type lastLoginCollector struct {
metric prometheus.Gauge
}
@ -29,7 +28,6 @@ func init() {
// load, seconds since last login and a list of tags as specified by config.
func NewLastLoginCollector() (Collector, error) {
return &lastLoginCollector{
metric: prometheus.NewGauge(prometheus.GaugeOpts{
Namespace: Namespace,
Subsystem: lastLoginSubsystem,
@ -44,7 +42,7 @@ func (c *lastLoginCollector) Update(ch chan<- prometheus.Metric) (err error) {
if err != nil {
return fmt.Errorf("Couldn't get last seen: %s", err)
}
glog.V(1).Infof("Set node_last_login_time: %f", last)
log.Debugf("Set node_last_login_time: %f", last)
c.metric.Set(last)
c.metric.Collect(ch)
return err

View File

@ -8,8 +8,8 @@ import (
"strconv"
"strings"
"github.com/golang/glog"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/log"
)
const (
@ -17,7 +17,6 @@ const (
)
type loadavgCollector struct {
metric prometheus.Gauge
}
@ -29,7 +28,6 @@ func init() {
// load, seconds since last login and a list of tags as specified by config.
func NewLoadavgCollector() (Collector, error) {
return &loadavgCollector{
metric: prometheus.NewGauge(prometheus.GaugeOpts{
Namespace: Namespace,
Name: "load1",
@ -43,7 +41,7 @@ func (c *loadavgCollector) Update(ch chan<- prometheus.Metric) (err error) {
if err != nil {
return fmt.Errorf("Couldn't get load: %s", err)
}
glog.V(1).Infof("Set node_load: %f", load)
log.Debugf("Set node_load: %f", load)
c.metric.Set(load)
c.metric.Collect(ch)
return err

View File

@ -38,8 +38,7 @@ func init() {
// RAID status through megacli.
func NewMegaCliCollector() (Collector, error) {
return &megaCliCollector{
cli: *megacliCommand,
cli: *megacliCommand,
driveTemperature: prometheus.NewGaugeVec(prometheus.GaugeOpts{
Namespace: Namespace,
Name: "megacli_drive_temperature_celsius",

View File

@ -11,8 +11,8 @@ import (
"strconv"
"strings"
"github.com/golang/glog"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/log"
)
const (
@ -21,7 +21,6 @@ const (
)
type meminfoCollector struct {
metrics map[string]prometheus.Gauge
}
@ -42,7 +41,7 @@ func (c *meminfoCollector) Update(ch chan<- prometheus.Metric) (err error) {
if err != nil {
return fmt.Errorf("Couldn't get meminfo: %s", err)
}
glog.V(1).Infof("Set node_mem: %#v", memInfo)
log.Debugf("Set node_mem: %#v", memInfo)
for k, v := range memInfo {
if _, ok := c.metrics[k]; !ok {
c.metrics[k] = prometheus.NewGauge(prometheus.GaugeOpts{

View File

@ -24,7 +24,6 @@ var (
)
type netDevCollector struct {
metrics map[string]*prometheus.GaugeVec
}

View File

@ -19,7 +19,6 @@ const (
)
type netStatCollector struct {
metrics map[string]prometheus.Gauge
}

View File

@ -8,8 +8,8 @@ import (
"time"
"github.com/beevik/ntp"
"github.com/golang/glog"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/log"
)
var (
@ -46,7 +46,7 @@ func (c *ntpCollector) Update(ch chan<- prometheus.Metric) (err error) {
return fmt.Errorf("Couldn't get ntp drift: %s", err)
}
drift := t.Sub(time.Now())
glog.V(1).Infof("Set ntp_drift_seconds: %f", drift.Seconds())
log.Debugf("Set ntp_drift_seconds: %f", drift.Seconds())
c.drift.Set(drift.Seconds())
c.drift.Collect(ch)
return err

View File

@ -3,14 +3,12 @@
package collector
import (
"github.com/golang/glog"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/log"
"github.com/soundcloud/go-runit/runit"
)
type runitCollector struct {
state, stateDesired, stateNormal *prometheus.GaugeVec
}
@ -26,7 +24,6 @@ func NewRunitCollector() (Collector, error) {
)
return &runitCollector{
state: prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: Namespace,
@ -69,11 +66,11 @@ func (c *runitCollector) Update(ch chan<- prometheus.Metric) error {
for _, service := range services {
status, err := service.Status()
if err != nil {
glog.V(1).Infof("Couldn't get status for %s: %s, skipping...", service.Name, err)
log.Debugf("Couldn't get status for %s: %s, skipping...", service.Name, err)
continue
}
glog.V(1).Infof("%s is %d on pid %d for %d seconds", service.Name, status.State, status.Pid, status.Duration)
log.Debugf("%s is %d on pid %d for %d seconds", service.Name, status.State, status.Pid, status.Duration)
c.state.WithLabelValues(service.Name).Set(float64(status.State))
c.stateDesired.WithLabelValues(service.Name).Set(float64(status.Want))
if status.NormallyUp {

View File

@ -17,7 +17,6 @@ const (
)
type statCollector struct {
cpu *prometheus.CounterVec
intr prometheus.Counter
ctxt prometheus.Counter
@ -35,7 +34,6 @@ func init() {
// network device stats.
func NewStatCollector() (Collector, error) {
return &statCollector{
cpu: prometheus.NewCounterVec(
prometheus.CounterOpts{
Namespace: Namespace,

View File

@ -35,7 +35,6 @@ const (
)
type tcpStatCollector struct {
metric *prometheus.GaugeVec
}
@ -47,7 +46,6 @@ func init() {
// a new Collector exposing network stats.
func NewTCPStatCollector() (Collector, error) {
return &tcpStatCollector{
metric: prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: Namespace,

View File

@ -13,8 +13,8 @@ import (
dto "github.com/prometheus/client_model/go"
"github.com/golang/glog"
"github.com/golang/protobuf/proto"
"github.com/prometheus/log"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/text"
@ -37,7 +37,7 @@ func NewTextFileCollector() (Collector, error) {
if *textFileDirectory == "" {
// This collector is enabled by default, so do not fail if
// the flag is not passed.
glog.Infof("No directory specified, see --textfile.directory")
log.Infof("No directory specified, see --textfile.directory")
} else {
prometheus.SetMetricFamilyInjectionHook(parseTextFiles)
}
@ -65,13 +65,13 @@ func parseTextFiles() []*dto.MetricFamily {
path := filepath.Join(*textFileDirectory, f.Name())
file, err := os.Open(path)
if err != nil {
glog.Errorf("Error opening %s: %v", path, err)
log.Errorf("Error opening %s: %v", path, err)
error = 1.0
continue
}
parsedFamilies, err := parser.TextToMetricFamilies(file)
if err != nil {
glog.Errorf("Error parsing %s: %v", path, err)
log.Errorf("Error parsing %s: %v", path, err)
error = 1.0
continue
}

View File

@ -5,12 +5,11 @@ package collector
import (
"time"
"github.com/golang/glog"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/log"
)
type timeCollector struct {
metric prometheus.Counter
}
@ -22,7 +21,6 @@ func init() {
// the current system time in seconds since epoch.
func NewTimeCollector() (Collector, error) {
return &timeCollector{
metric: prometheus.NewCounter(prometheus.CounterOpts{
Namespace: Namespace,
Name: "time",
@ -33,7 +31,7 @@ func NewTimeCollector() (Collector, error) {
func (c *timeCollector) Update(ch chan<- prometheus.Metric) (err error) {
now := time.Now()
glog.V(1).Infof("Set time: %f", now.Unix())
log.Debugf("Set time: %f", now.Unix())
c.metric.Set(float64(now.Unix()))
c.metric.Collect(ch)
return err

View File

@ -13,8 +13,9 @@ import (
"syscall"
"time"
"github.com/golang/glog"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/log"
"github.com/prometheus/node_exporter/collector"
)
@ -93,10 +94,10 @@ func Execute(name string, c collector.Collector, ch chan<- prometheus.Metric) {
var result string
if err != nil {
glog.Infof("ERROR: %s failed after %fs: %s", name, duration.Seconds(), err)
log.Infof("ERROR: %s failed after %fs: %s", name, duration.Seconds(), err)
result = "error"
} else {
glog.Infof("OK: %s success after %fs.", name, duration.Seconds())
log.Infof("OK: %s success after %fs.", name, duration.Seconds())
result = "success"
}
scrapeDurations.WithLabelValues(name, result).Observe(duration.Seconds())
@ -135,12 +136,12 @@ func main() {
}
collectors, err := loadCollectors()
if err != nil {
glog.Fatalf("Couldn't load collectors: %s", err)
log.Fatalf("Couldn't load collectors: %s", err)
}
glog.Infof("Enabled collectors:")
log.Infof("Enabled collectors:")
for n, _ := range collectors {
glog.Infof(" - %s", n)
log.Infof(" - %s", n)
}
nodeCollector := NodeCollector{collectors: collectors}
@ -152,7 +153,7 @@ func main() {
handler := prometheus.Handler()
if *authUser != "" || *authPass != "" {
if *authUser == "" || *authPass == "" {
glog.Fatal("You need to specify -auth.user and -auth.pass to enable basic auth")
log.Fatal("You need to specify -auth.user and -auth.pass to enable basic auth")
}
handler = &basicAuthHandler{
handler: prometheus.Handler().ServeHTTP,
@ -172,9 +173,9 @@ func main() {
</html>`))
})
glog.Infof("Starting node_exporter v%s at %s", Version, *listenAddress)
log.Infof("Starting node_exporter v%s at %s", Version, *listenAddress)
err = http.ListenAndServe(*listenAddress, nil)
if err != nil {
glog.Fatal(err)
log.Fatal(err)
}
}