Browse Source

Process feedback from the code review.

- Use the right number of printf() arguments. Use %q where it makes sense.
- Use "DRBD" instead of "Drbd", per Go's style guide.
- Add _total suffixes to counter metrics.
- Mention the unit (bytes) in documentation strings once more.
pull/365/head
Ed Schouten 8 years ago
parent
commit
b7daf27678
  1. 66
      collector/drbd_linux.go
  2. 38
      collector/fixtures/e2e-output.txt

66
collector/drbd_linux.go

@ -31,7 +31,7 @@ type drbdNumericalMetric struct {
multiplier float64 multiplier float64
} }
func newDrbdNumericalMetric(name string, desc string, valueType prometheus.ValueType, multiplier float64) drbdNumericalMetric { func newDRBDNumericalMetric(name string, desc string, valueType prometheus.ValueType, multiplier float64) drbdNumericalMetric {
return drbdNumericalMetric{ return drbdNumericalMetric{
desc: prometheus.NewDesc( desc: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, "drbd", name), prometheus.BuildFQName(Namespace, "drbd", name),
@ -55,7 +55,7 @@ func (metric *drbdStringPairMetric) isOkay(value string) float64 {
return 0 return 0
} }
func newDrbdStringPairMetric(name string, desc string, valueOkay string) drbdStringPairMetric { func newDRBDStringPairMetric(name string, desc string, valueOkay string) drbdStringPairMetric {
return drbdStringPairMetric{ return drbdStringPairMetric{
desc: prometheus.NewDesc( desc: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, "drbd", name), prometheus.BuildFQName(Namespace, "drbd", name),
@ -67,73 +67,73 @@ func newDrbdStringPairMetric(name string, desc string, valueOkay string) drbdStr
var ( var (
drbdNumericalMetrics = map[string]drbdNumericalMetric{ drbdNumericalMetrics = map[string]drbdNumericalMetric{
"ns": newDrbdNumericalMetric( "ns": newDRBDNumericalMetric(
"network_sent_bytes", "network_sent_bytes_total",
"Volume of net data sent to the partner via the network connection.", "Volume of net data sent to the partner via the network connection; in bytes.",
prometheus.CounterValue, prometheus.CounterValue,
1024), 1024),
"nr": newDrbdNumericalMetric( "nr": newDRBDNumericalMetric(
"network_received_bytes", "network_received_bytes_total",
"Volume of net data received by the partner via the network connection.", "Volume of net data received by the partner via the network connection; in bytes.",
prometheus.CounterValue, prometheus.CounterValue,
1), 1),
"dw": newDrbdNumericalMetric( "dw": newDRBDNumericalMetric(
"disk_written_bytes", "disk_written_bytes_total",
"Net data written on local hard disk.", "Net data written on local hard disk; in bytes.",
prometheus.CounterValue, prometheus.CounterValue,
1024), 1024),
"dr": newDrbdNumericalMetric( "dr": newDRBDNumericalMetric(
"disk_read_bytes", "disk_read_bytes_total",
"Net data read from local hard disk.", "Net data read from local hard disk; in bytes.",
prometheus.CounterValue, prometheus.CounterValue,
1024), 1024),
"al": newDrbdNumericalMetric( "al": newDRBDNumericalMetric(
"activitylog_writes", "activitylog_writes_total",
"Number of updates of the activity log area of the meta data.", "Number of updates of the activity log area of the meta data.",
prometheus.CounterValue, prometheus.CounterValue,
1), 1),
"bm": newDrbdNumericalMetric( "bm": newDRBDNumericalMetric(
"bitmap_writes", "bitmap_writes_total",
"Number of updates of the bitmap area of the meta data.", "Number of updates of the bitmap area of the meta data.",
prometheus.CounterValue, prometheus.CounterValue,
1), 1),
"lo": newDrbdNumericalMetric( "lo": newDRBDNumericalMetric(
"local_pending", "local_pending",
"Number of open requests to the local I/O sub-system.", "Number of open requests to the local I/O sub-system.",
prometheus.GaugeValue, prometheus.GaugeValue,
1), 1),
"pe": newDrbdNumericalMetric( "pe": newDRBDNumericalMetric(
"remote_pending", "remote_pending",
"Number of requests sent to the partner, but that have not yet been answered by the latter.", "Number of requests sent to the partner, but that have not yet been answered by the latter.",
prometheus.GaugeValue, prometheus.GaugeValue,
1), 1),
"ua": newDrbdNumericalMetric( "ua": newDRBDNumericalMetric(
"remote_unacknowledged", "remote_unacknowledged",
"Number of requests received by the partner via the network connection, but that have not yet been answered.", "Number of requests received by the partner via the network connection, but that have not yet been answered.",
prometheus.GaugeValue, prometheus.GaugeValue,
1), 1),
"ap": newDrbdNumericalMetric( "ap": newDRBDNumericalMetric(
"application_pending", "application_pending",
"Number of block I/O requests forwarded to DRBD, but not yet answered by DRBD.", "Number of block I/O requests forwarded to DRBD, but not yet answered by DRBD.",
prometheus.GaugeValue, prometheus.GaugeValue,
1), 1),
"ep": newDrbdNumericalMetric( "ep": newDRBDNumericalMetric(
"epochs", "epochs",
"Number of Epochs currently on the fly.", "Number of Epochs currently on the fly.",
prometheus.GaugeValue, prometheus.GaugeValue,
1), 1),
"oos": newDrbdNumericalMetric( "oos": newDRBDNumericalMetric(
"out_of_sync_bytes", "out_of_sync_bytes",
"Amount of data known to be out of sync.", "Amount of data known to be out of sync; in bytes.",
prometheus.GaugeValue, prometheus.GaugeValue,
1024), 1024),
} }
drbdStringPairMetrics = map[string]drbdStringPairMetric{ drbdStringPairMetrics = map[string]drbdStringPairMetric{
"ro": newDrbdStringPairMetric( "ro": newDRBDStringPairMetric(
"node_role_is_primary", "node_role_is_primary",
"Whether the role of the node is in the primary state.", "Whether the role of the node is in the primary state.",
"Primary"), "Primary"),
"ds": newDrbdStringPairMetric( "ds": newDRBDStringPairMetric(
"disk_state_is_up_to_date", "disk_state_is_up_to_date",
"Whether the disk of the node is up to date.", "Whether the disk of the node is up to date.",
"UpToDate"), "UpToDate"),
@ -148,10 +148,10 @@ var (
type drbdCollector struct{} type drbdCollector struct{}
func init() { func init() {
Factories["drbd"] = NewDrbdCollector Factories["drbd"] = newDRBDCollector
} }
func NewDrbdCollector() (Collector, error) { func newDRBDCollector() (Collector, error) {
return &drbdCollector{}, nil return &drbdCollector{}, nil
} }
@ -160,7 +160,7 @@ func (c *drbdCollector) Update(ch chan<- prometheus.Metric) (err error) {
file, err := os.Open(statsFile) file, err := os.Open(statsFile)
if err != nil { if err != nil {
if os.IsNotExist(err) { if os.IsNotExist(err) {
log.Debugf("Not collecting DRBD statistics, as %s does not exist: %s", statsFile) log.Debugf("Not collecting DRBD statistics, as %s does not exist: %s", statsFile, err)
return nil return nil
} }
return err return err
@ -195,7 +195,7 @@ func (c *drbdCollector) Update(ch chan<- prometheus.Metric) (err error) {
metric.isOkay(values[1]), device, "remote") metric.isOkay(values[1]), device, "remote")
} else if kv[0] == "cs" { } else if kv[0] == "cs" {
// Connection state. // Connection state.
var connected float64 = 0 var connected float64
if kv[1] == "Connected" { if kv[1] == "Connected" {
connected = 1 connected = 1
} }
@ -203,10 +203,10 @@ func (c *drbdCollector) Update(ch chan<- prometheus.Metric) (err error) {
drbdConnected, prometheus.GaugeValue, drbdConnected, prometheus.GaugeValue,
connected, device) connected, device)
} else { } else {
log.Infof("Don't know how to process key-value pair [%s: %s]", kv[0], kv[1]) log.Infof("Don't know how to process key-value pair [%s: %q]", kv[0], kv[1])
} }
} else { } else {
log.Infof("Don't know how to process string %s", field) log.Infof("Don't know how to process string %q", field)
} }
} }
return scanner.Err() return scanner.Err()

38
collector/fixtures/e2e-output.txt

@ -375,45 +375,45 @@ node_disk_writes_merged{device="nvme0n1"} 43950
node_disk_writes_merged{device="sda"} 1.1134226e+07 node_disk_writes_merged{device="sda"} 1.1134226e+07
node_disk_writes_merged{device="sr0"} 0 node_disk_writes_merged{device="sr0"} 0
node_disk_writes_merged{device="vda"} 2.0711856e+07 node_disk_writes_merged{device="vda"} 2.0711856e+07
# HELP node_drbd_activitylog_writes Number of updates of the activity log area of the meta data. # HELP node_drbd_activitylog_writes_total Number of updates of the activity log area of the meta data.
# TYPE node_drbd_activitylog_writes counter # TYPE node_drbd_activitylog_writes_total counter
node_drbd_activitylog_writes{device="drbd1"} 1100 node_drbd_activitylog_writes_total{device="drbd1"} 1100
# HELP node_drbd_application_pending Number of block I/O requests forwarded to DRBD, but not yet answered by DRBD. # HELP node_drbd_application_pending Number of block I/O requests forwarded to DRBD, but not yet answered by DRBD.
# TYPE node_drbd_application_pending gauge # TYPE node_drbd_application_pending gauge
node_drbd_application_pending{device="drbd1"} 12348 node_drbd_application_pending{device="drbd1"} 12348
# HELP node_drbd_bitmap_writes Number of updates of the bitmap area of the meta data. # HELP node_drbd_bitmap_writes_total Number of updates of the bitmap area of the meta data.
# TYPE node_drbd_bitmap_writes counter # TYPE node_drbd_bitmap_writes_total counter
node_drbd_bitmap_writes{device="drbd1"} 221 node_drbd_bitmap_writes_total{device="drbd1"} 221
# HELP node_drbd_connected Whether DRBD is connected to the partner. # HELP node_drbd_connected Whether DRBD is connected to the partner.
# TYPE node_drbd_connected gauge # TYPE node_drbd_connected gauge
node_drbd_connected{device="drbd1"} 1 node_drbd_connected{device="drbd1"} 1
# HELP node_drbd_disk_read_bytes Net data read from local hard disk. # HELP node_drbd_disk_read_bytes_total Net data read from local hard disk; in bytes.
# TYPE node_drbd_disk_read_bytes counter # TYPE node_drbd_disk_read_bytes_total counter
node_drbd_disk_read_bytes{device="drbd1"} 1.2154539008e+11 node_drbd_disk_read_bytes_total{device="drbd1"} 1.2154539008e+11
# HELP node_drbd_disk_state_is_up_to_date Whether the disk of the node is up to date. # HELP node_drbd_disk_state_is_up_to_date Whether the disk of the node is up to date.
# TYPE node_drbd_disk_state_is_up_to_date gauge # TYPE node_drbd_disk_state_is_up_to_date gauge
node_drbd_disk_state_is_up_to_date{device="drbd1",node="local"} 1 node_drbd_disk_state_is_up_to_date{device="drbd1",node="local"} 1
node_drbd_disk_state_is_up_to_date{device="drbd1",node="remote"} 1 node_drbd_disk_state_is_up_to_date{device="drbd1",node="remote"} 1
# HELP node_drbd_disk_written_bytes Net data written on local hard disk. # HELP node_drbd_disk_written_bytes_total Net data written on local hard disk; in bytes.
# TYPE node_drbd_disk_written_bytes counter # TYPE node_drbd_disk_written_bytes_total counter
node_drbd_disk_written_bytes{device="drbd1"} 2.8941845504e+10 node_drbd_disk_written_bytes_total{device="drbd1"} 2.8941845504e+10
# HELP node_drbd_epochs Number of Epochs currently on the fly. # HELP node_drbd_epochs Number of Epochs currently on the fly.
# TYPE node_drbd_epochs gauge # TYPE node_drbd_epochs gauge
node_drbd_epochs{device="drbd1"} 1 node_drbd_epochs{device="drbd1"} 1
# HELP node_drbd_local_pending Number of open requests to the local I/O sub-system. # HELP node_drbd_local_pending Number of open requests to the local I/O sub-system.
# TYPE node_drbd_local_pending gauge # TYPE node_drbd_local_pending gauge
node_drbd_local_pending{device="drbd1"} 12345 node_drbd_local_pending{device="drbd1"} 12345
# HELP node_drbd_network_received_bytes Volume of net data received by the partner via the network connection. # HELP node_drbd_network_received_bytes_total Volume of net data received by the partner via the network connection; in bytes.
# TYPE node_drbd_network_received_bytes counter # TYPE node_drbd_network_received_bytes_total counter
node_drbd_network_received_bytes{device="drbd1"} 1.0961011e+07 node_drbd_network_received_bytes_total{device="drbd1"} 1.0961011e+07
# HELP node_drbd_network_sent_bytes Volume of net data sent to the partner via the network connection. # HELP node_drbd_network_sent_bytes_total Volume of net data sent to the partner via the network connection; in bytes.
# TYPE node_drbd_network_sent_bytes counter # TYPE node_drbd_network_sent_bytes_total counter
node_drbd_network_sent_bytes{device="drbd1"} 1.7740228608e+10 node_drbd_network_sent_bytes_total{device="drbd1"} 1.7740228608e+10
# HELP node_drbd_node_role_is_primary Whether the role of the node is in the primary state. # HELP node_drbd_node_role_is_primary Whether the role of the node is in the primary state.
# TYPE node_drbd_node_role_is_primary gauge # TYPE node_drbd_node_role_is_primary gauge
node_drbd_node_role_is_primary{device="drbd1",node="local"} 1 node_drbd_node_role_is_primary{device="drbd1",node="local"} 1
node_drbd_node_role_is_primary{device="drbd1",node="remote"} 1 node_drbd_node_role_is_primary{device="drbd1",node="remote"} 1
# HELP node_drbd_out_of_sync_bytes Amount of data known to be out of sync. # HELP node_drbd_out_of_sync_bytes Amount of data known to be out of sync; in bytes.
# TYPE node_drbd_out_of_sync_bytes gauge # TYPE node_drbd_out_of_sync_bytes gauge
node_drbd_out_of_sync_bytes{device="drbd1"} 1.2645376e+07 node_drbd_out_of_sync_bytes{device="drbd1"} 1.2645376e+07
# HELP node_drbd_remote_pending Number of requests sent to the partner, but that have not yet been answered by the latter. # HELP node_drbd_remote_pending Number of requests sent to the partner, but that have not yet been answered by the latter.

Loading…
Cancel
Save