github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/worker/logsender/logsendermetrics/logsendermetrics.go (about)

     1  // Copyright 2016 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package logsendermetrics
     5  
     6  import (
     7  	"github.com/prometheus/client_golang/prometheus"
     8  
     9  	"github.com/juju/juju/worker/logsender"
    10  )
    11  
    12  var (
    13  	jujuLogsenderCapacityDesc = prometheus.NewDesc(
    14  		"juju_logsender_capacity",
    15  		"Total number of log messages that can be enqueued before being dropped.",
    16  		[]string{},
    17  		prometheus.Labels{},
    18  	)
    19  	jujuLogsenderEnqueuedTotalDesc = prometheus.NewDesc(
    20  		"juju_logsender_enqueued_total",
    21  		"Total number of log messages enqueued.",
    22  		[]string{},
    23  		prometheus.Labels{},
    24  	)
    25  	jujuLogsenderSentTotalDesc = prometheus.NewDesc(
    26  		"juju_logsender_sent_total",
    27  		"Total number of log messages sent.",
    28  		[]string{},
    29  		prometheus.Labels{},
    30  	)
    31  	jujuLogsenderDroppedTotalDesc = prometheus.NewDesc(
    32  		"juju_logsender_dropped_total",
    33  		"Total number of log messages dropped.",
    34  		[]string{},
    35  		prometheus.Labels{},
    36  	)
    37  )
    38  
    39  // BufferedLogWriterMetrics is a prometheus.Collector that collects metrics
    40  // from a BufferedLogWriter.
    41  type BufferedLogWriterMetrics struct {
    42  	*logsender.BufferedLogWriter
    43  }
    44  
    45  // Describe is part of the prometheus.Collector interface.
    46  func (BufferedLogWriterMetrics) Describe(ch chan<- *prometheus.Desc) {
    47  	ch <- jujuLogsenderCapacityDesc
    48  	ch <- jujuLogsenderEnqueuedTotalDesc
    49  	ch <- jujuLogsenderSentTotalDesc
    50  	ch <- jujuLogsenderDroppedTotalDesc
    51  }
    52  
    53  // Collect is part of the prometheus.Collector interface.
    54  func (b BufferedLogWriterMetrics) Collect(ch chan<- prometheus.Metric) {
    55  	stats := b.Stats()
    56  	ch <- prometheus.MustNewConstMetric(
    57  		jujuLogsenderCapacityDesc,
    58  		prometheus.CounterValue,
    59  		float64(b.Capacity()),
    60  	)
    61  	ch <- prometheus.MustNewConstMetric(
    62  		jujuLogsenderEnqueuedTotalDesc,
    63  		prometheus.CounterValue,
    64  		float64(stats.Enqueued),
    65  	)
    66  	ch <- prometheus.MustNewConstMetric(
    67  		jujuLogsenderSentTotalDesc,
    68  		prometheus.CounterValue,
    69  		float64(stats.Sent),
    70  	)
    71  	ch <- prometheus.MustNewConstMetric(
    72  		jujuLogsenderDroppedTotalDesc,
    73  		prometheus.CounterValue,
    74  		float64(stats.Dropped),
    75  	)
    76  }