Replace --collectors.enabled with per-collector flags (#640)

* Move NodeCollector into package collector

* Refactor collector enabling

* Update README with new collector enabled flags

* Fix out-of-date inline flag reference syntax

* Use new flags in end-to-end tests

* Add flag to disable all default collectors

* Track if a flag has been set explicitly

* Add --collectors.disable-defaults to README

* Revert disable-defaults flag

* Shorten flags

* Fixup timex collector registration

* Fix end-to-end tests

* Change procfs and sysfs path flags

* Fix review comments
This commit is contained in:
Calle Pettersson 2017-09-28 15:06:26 +02:00 committed by Johannes 'fish' Ziemke
commit 859a825bb8
58 changed files with 410 additions and 406 deletions

View file

@ -90,7 +90,7 @@ type mountStatsCollector struct {
}
func init() {
Factories["mountstats"] = NewMountStatsCollector
registerCollector("mountstats", defaultDisabled, NewMountStatsCollector)
}
// NewMountStatsCollector returns a new Collector exposing NFS statistics.
@ -117,371 +117,371 @@ func NewMountStatsCollector() (Collector, error) {
return &mountStatsCollector{
NFSAgeSecondsTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "age_seconds_total"),
prometheus.BuildFQName(namespace, subsystem, "age_seconds_total"),
"The age of the NFS mount in seconds.",
labels,
nil,
),
NFSReadBytesTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "read_bytes_total"),
prometheus.BuildFQName(namespace, subsystem, "read_bytes_total"),
"Number of bytes read using the read() syscall.",
labels,
nil,
),
NFSWriteBytesTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "write_bytes_total"),
prometheus.BuildFQName(namespace, subsystem, "write_bytes_total"),
"Number of bytes written using the write() syscall.",
labels,
nil,
),
NFSDirectReadBytesTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "direct_read_bytes_total"),
prometheus.BuildFQName(namespace, subsystem, "direct_read_bytes_total"),
"Number of bytes read using the read() syscall in O_DIRECT mode.",
labels,
nil,
),
NFSDirectWriteBytesTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "direct_write_bytes_total"),
prometheus.BuildFQName(namespace, subsystem, "direct_write_bytes_total"),
"Number of bytes written using the write() syscall in O_DIRECT mode.",
labels,
nil,
),
NFSTotalReadBytesTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "total_read_bytes_total"),
prometheus.BuildFQName(namespace, subsystem, "total_read_bytes_total"),
"Number of bytes read from the NFS server, in total.",
labels,
nil,
),
NFSTotalWriteBytesTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "total_write_bytes_total"),
prometheus.BuildFQName(namespace, subsystem, "total_write_bytes_total"),
"Number of bytes written to the NFS server, in total.",
labels,
nil,
),
NFSReadPagesTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "read_pages_total"),
prometheus.BuildFQName(namespace, subsystem, "read_pages_total"),
"Number of pages read directly via mmap()'d files.",
labels,
nil,
),
NFSWritePagesTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "write_pages_total"),
prometheus.BuildFQName(namespace, subsystem, "write_pages_total"),
"Number of pages written directly via mmap()'d files.",
labels,
nil,
),
NFSTransportBindTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "transport_bind_total"),
prometheus.BuildFQName(namespace, subsystem, "transport_bind_total"),
"Number of times the client has had to establish a connection from scratch to the NFS server.",
labels,
nil,
),
NFSTransportConnectTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "transport_connect_total"),
prometheus.BuildFQName(namespace, subsystem, "transport_connect_total"),
"Number of times the client has made a TCP connection to the NFS server.",
labels,
nil,
),
NFSTransportIdleTimeSeconds: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "transport_idle_time_seconds"),
prometheus.BuildFQName(namespace, subsystem, "transport_idle_time_seconds"),
"Duration since the NFS mount last saw any RPC traffic, in seconds.",
labels,
nil,
),
NFSTransportSendsTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "transport_sends_total"),
prometheus.BuildFQName(namespace, subsystem, "transport_sends_total"),
"Number of RPC requests for this mount sent to the NFS server.",
labels,
nil,
),
NFSTransportReceivesTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "transport_receives_total"),
prometheus.BuildFQName(namespace, subsystem, "transport_receives_total"),
"Number of RPC responses for this mount received from the NFS server.",
labels,
nil,
),
NFSTransportBadTransactionIDsTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "transport_bad_transaction_ids_total"),
prometheus.BuildFQName(namespace, subsystem, "transport_bad_transaction_ids_total"),
"Number of times the NFS server sent a response with a transaction ID unknown to this client.",
labels,
nil,
),
NFSTransportBacklogQueueTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "transport_backlog_queue_total"),
prometheus.BuildFQName(namespace, subsystem, "transport_backlog_queue_total"),
"Total number of items added to the RPC backlog queue.",
labels,
nil,
),
NFSTransportMaximumRPCSlots: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "transport_maximum_rpc_slots"),
prometheus.BuildFQName(namespace, subsystem, "transport_maximum_rpc_slots"),
"Maximum number of simultaneously active RPC requests ever used.",
labels,
nil,
),
NFSTransportSendingQueueTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "transport_sending_queue_total"),
prometheus.BuildFQName(namespace, subsystem, "transport_sending_queue_total"),
"Total number of items added to the RPC transmission sending queue.",
labels,
nil,
),
NFSTransportPendingQueueTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "transport_pending_queue_total"),
prometheus.BuildFQName(namespace, subsystem, "transport_pending_queue_total"),
"Total number of items added to the RPC transmission pending queue.",
labels,
nil,
),
NFSOperationsRequestsTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "operations_requests_total"),
prometheus.BuildFQName(namespace, subsystem, "operations_requests_total"),
"Number of requests performed for a given operation.",
opLabels,
nil,
),
NFSOperationsTransmissionsTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "operations_transmissions_total"),
prometheus.BuildFQName(namespace, subsystem, "operations_transmissions_total"),
"Number of times an actual RPC request has been transmitted for a given operation.",
opLabels,
nil,
),
NFSOperationsMajorTimeoutsTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "operations_major_timeouts_total"),
prometheus.BuildFQName(namespace, subsystem, "operations_major_timeouts_total"),
"Number of times a request has had a major timeout for a given operation.",
opLabels,
nil,
),
NFSOperationsSentBytesTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "operations_sent_bytes_total"),
prometheus.BuildFQName(namespace, subsystem, "operations_sent_bytes_total"),
"Number of bytes sent for a given operation, including RPC headers and payload.",
opLabels,
nil,
),
NFSOperationsReceivedBytesTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "operations_received_bytes_total"),
prometheus.BuildFQName(namespace, subsystem, "operations_received_bytes_total"),
"Number of bytes received for a given operation, including RPC headers and payload.",
opLabels,
nil,
),
NFSOperationsQueueTimeSecondsTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "operations_queue_time_seconds_total"),
prometheus.BuildFQName(namespace, subsystem, "operations_queue_time_seconds_total"),
"Duration all requests spent queued for transmission for a given operation before they were sent, in seconds.",
opLabels,
nil,
),
NFSOperationsResponseTimeSecondsTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "operations_response_time_seconds_total"),
prometheus.BuildFQName(namespace, subsystem, "operations_response_time_seconds_total"),
"Duration all requests took to get a reply back after a request for a given operation was transmitted, in seconds.",
opLabels,
nil,
),
NFSOperationsRequestTimeSecondsTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "operations_request_time_seconds_total"),
prometheus.BuildFQName(namespace, subsystem, "operations_request_time_seconds_total"),
"Duration all requests took from when a request was enqueued to when it was completely handled for a given operation, in seconds.",
opLabels,
nil,
),
NFSEventInodeRevalidateTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_inode_revalidate_total"),
prometheus.BuildFQName(namespace, subsystem, "event_inode_revalidate_total"),
"Number of times cached inode attributes are re-validated from the server.",
labels,
nil,
),
NFSEventDnodeRevalidateTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_dnode_revalidate_total"),
prometheus.BuildFQName(namespace, subsystem, "event_dnode_revalidate_total"),
"Number of times cached dentry nodes are re-validated from the server.",
labels,
nil,
),
NFSEventDataInvalidateTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_data_invalidate_total"),
prometheus.BuildFQName(namespace, subsystem, "event_data_invalidate_total"),
"Number of times an inode cache is cleared.",
labels,
nil,
),
NFSEventAttributeInvalidateTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_attribute_invalidate_total"),
prometheus.BuildFQName(namespace, subsystem, "event_attribute_invalidate_total"),
"Number of times cached inode attributes are invalidated.",
labels,
nil,
),
NFSEventVFSOpenTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_vfs_open_total"),
prometheus.BuildFQName(namespace, subsystem, "event_vfs_open_total"),
"Number of times cached inode attributes are invalidated.",
labels,
nil,
),
NFSEventVFSLookupTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_vfs_lookup_total"),
prometheus.BuildFQName(namespace, subsystem, "event_vfs_lookup_total"),
"Number of times a directory lookup has occurred.",
labels,
nil,
),
NFSEventVFSAccessTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_vfs_access_total"),
prometheus.BuildFQName(namespace, subsystem, "event_vfs_access_total"),
"Number of times permissions have been checked.",
labels,
nil,
),
NFSEventVFSUpdatePageTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_vfs_update_page_total"),
prometheus.BuildFQName(namespace, subsystem, "event_vfs_update_page_total"),
"Number of updates (and potential writes) to pages.",
labels,
nil,
),
NFSEventVFSReadPageTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_vfs_read_page_total"),
prometheus.BuildFQName(namespace, subsystem, "event_vfs_read_page_total"),
"Number of pages read directly via mmap()'d files.",
labels,
nil,
),
NFSEventVFSReadPagesTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_vfs_read_pages_total"),
prometheus.BuildFQName(namespace, subsystem, "event_vfs_read_pages_total"),
"Number of times a group of pages have been read.",
labels,
nil,
),
NFSEventVFSWritePageTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_vfs_write_page_total"),
prometheus.BuildFQName(namespace, subsystem, "event_vfs_write_page_total"),
"Number of pages written directly via mmap()'d files.",
labels,
nil,
),
NFSEventVFSWritePagesTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_vfs_write_pages_total"),
prometheus.BuildFQName(namespace, subsystem, "event_vfs_write_pages_total"),
"Number of times a group of pages have been written.",
labels,
nil,
),
NFSEventVFSGetdentsTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_vfs_getdents_total"),
prometheus.BuildFQName(namespace, subsystem, "event_vfs_getdents_total"),
"Number of times directory entries have been read with getdents().",
labels,
nil,
),
NFSEventVFSSetattrTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_vfs_setattr_total"),
prometheus.BuildFQName(namespace, subsystem, "event_vfs_setattr_total"),
"Number of times directory entries have been read with getdents().",
labels,
nil,
),
NFSEventVFSFlushTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_vfs_flush_total"),
prometheus.BuildFQName(namespace, subsystem, "event_vfs_flush_total"),
"Number of pending writes that have been forcefully flushed to the server.",
labels,
nil,
),
NFSEventVFSFsyncTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_vfs_fsync_total"),
prometheus.BuildFQName(namespace, subsystem, "event_vfs_fsync_total"),
"Number of times fsync() has been called on directories and files.",
labels,
nil,
),
NFSEventVFSLockTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_vfs_lock_total"),
prometheus.BuildFQName(namespace, subsystem, "event_vfs_lock_total"),
"Number of times locking has been attempted on a file.",
labels,
nil,
),
NFSEventVFSFileReleaseTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_vfs_file_release_total"),
prometheus.BuildFQName(namespace, subsystem, "event_vfs_file_release_total"),
"Number of times files have been closed and released.",
labels,
nil,
),
NFSEventTruncationTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_truncation_total"),
prometheus.BuildFQName(namespace, subsystem, "event_truncation_total"),
"Number of times files have been truncated.",
labels,
nil,
),
NFSEventWriteExtensionTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_write_extension_total"),
prometheus.BuildFQName(namespace, subsystem, "event_write_extension_total"),
"Number of times a file has been grown due to writes beyond its existing end.",
labels,
nil,
),
NFSEventSillyRenameTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_silly_rename_total"),
prometheus.BuildFQName(namespace, subsystem, "event_silly_rename_total"),
"Number of times a file was removed while still open by another process.",
labels,
nil,
),
NFSEventShortReadTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_short_read_total"),
prometheus.BuildFQName(namespace, subsystem, "event_short_read_total"),
"Number of times the NFS server gave less data than expected while reading.",
labels,
nil,
),
NFSEventShortWriteTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_short_write_total"),
prometheus.BuildFQName(namespace, subsystem, "event_short_write_total"),
"Number of times the NFS server wrote less data than expected while writing.",
labels,
nil,
),
NFSEventJukeboxDelayTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_jukebox_delay_total"),
prometheus.BuildFQName(namespace, subsystem, "event_jukebox_delay_total"),
"Number of times the NFS server indicated EJUKEBOX; retrieving data from offline storage.",
labels,
nil,
),
NFSEventPNFSReadTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_pnfs_read_total"),
prometheus.BuildFQName(namespace, subsystem, "event_pnfs_read_total"),
"Number of NFS v4.1+ pNFS reads.",
labels,
nil,
),
NFSEventPNFSWriteTotal: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "event_pnfs_write_total"),
prometheus.BuildFQName(namespace, subsystem, "event_pnfs_write_total"),
"Number of NFS v4.1+ pNFS writes.",
labels,
nil,