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 }