Path: blob/main/pkg/integrations/node_exporter/collectors.go
5341 views
package node_exporter // nolint:golint12import (3"fmt"4"sort"56"gopkg.in/alecthomas/kingpin.v2"7)89// CollectorState represents the default state of the collector, where it can10// either be enabled or disabled11type CollectorState bool1213const (14// CollectorStateDisabled represents a disabled collector that will not run15// and collect metrics.16CollectorStateDisabled CollectorState = false1718// CollectorStateEnabled represents an enabled collector that _will_ run19// and collect metrics.20CollectorStateEnabled CollectorState = true21)2223// Collector is a specific collector that node_exporter runs.24type Collector string2526// Collection of collectors defined by node_exporter27const (28CollectorARP = "arp"29CollectorBCache = "bcache"30CollectorBTRFS = "btrfs"31CollectorBonding = "bonding"32CollectorBootTime = "boottime"33CollectorBuddyInfo = "buddyinfo"34CollectorCPU = "cpu"35CollectorCPUFreq = "cpufreq"36CollectorConntrack = "conntrack"37CollectorDMI = "dmi"38CollectorDRBD = "drbd"39CollectorDRM = "drm"40CollectorDevstat = "devstat"41CollectorDiskstats = "diskstats"42CollectorEDAC = "edac"43CollectorEntropy = "entropy"44CollectorEthtool = "ethtool"45CollectorExec = "exec"46CollectorFibrechannel = "fibrechannel"47CollectorFileFD = "filefd"48CollectorFilesystem = "filesystem"49CollectorHWMon = "hwmon"50CollectorIPVS = "ipvs"51CollectorInfiniband = "infiniband"52CollectorInterrupts = "interrupts"53CollectorKSMD = "ksmd"54CollectorLnstat = "lnstat"55CollectorLoadAvg = "loadavg"56CollectorLogind = "logind"57CollectorMDADM = "mdadm"58CollectorMeminfo = "meminfo"59CollectorMeminfoNuma = "meminfo_numa"60CollectorMountstats = "mountstats"61CollectorNFS = "nfs"62CollectorNFSD = "nfsd"63CollectorNTP = "ntp"64CollectorNVME = "nvme"65CollectorNetclass = "netclass"66CollectorNetdev = "netdev"67CollectorNetstat = "netstat"68CollectorNetworkRoute = "network_route"69CollectorOS = "os"70CollectorPerf = "perf"71CollectorPowersuppply = "powersupplyclass"72CollectorPressure = "pressure"73CollectorProcesses = "processes"74CollectorQDisc = "qdisc"75CollectorRAPL = "rapl"76CollectorRunit = "runit"77CollectorSchedstat = "schedstat"78CollectorSockstat = "sockstat"79CollectorSoftnet = "softnet"80CollectorStat = "stat"81CollectorSupervisord = "supervisord"82CollectorSystemd = "systemd"83CollectorTCPStat = "tcpstat"84CollectorTapestats = "tapestats"85CollectorTextfile = "textfile"86CollectorThermal = "thermal"87CollectorThermalzone = "thermal_zone"88CollectorTime = "time"89CollectorTimex = "timex"90CollectorUDPQueues = "udp_queues"91CollectorUname = "uname"92CollectorVMStat = "vmstat"93CollectorWiFi = "wifi"94CollectorXFS = "xfs"95CollectorZFS = "zfs"96CollectorZoneinfo = "zoneinfo"97CollectorCGroups = "cgroups"98CollectorSELinux = "selinux"99CollectorSlabInfo = "slabinfo"100CollectorSysctl = "sysctl"101)102103// Collectors holds a map of known collector names to their default104// state.105var Collectors = map[string]CollectorState{106CollectorARP: CollectorStateEnabled,107CollectorBCache: CollectorStateEnabled,108CollectorBTRFS: CollectorStateEnabled,109CollectorBonding: CollectorStateEnabled,110CollectorBootTime: CollectorStateEnabled,111CollectorBuddyInfo: CollectorStateDisabled,112CollectorCGroups: CollectorStateDisabled,113CollectorCPU: CollectorStateEnabled,114CollectorCPUFreq: CollectorStateEnabled,115CollectorConntrack: CollectorStateEnabled,116CollectorDMI: CollectorStateEnabled,117CollectorDRBD: CollectorStateDisabled,118CollectorDRM: CollectorStateDisabled,119CollectorDevstat: CollectorStateDisabled,120CollectorDiskstats: CollectorStateEnabled,121CollectorEDAC: CollectorStateEnabled,122CollectorEntropy: CollectorStateEnabled,123CollectorEthtool: CollectorStateDisabled,124CollectorExec: CollectorStateEnabled,125CollectorFibrechannel: CollectorStateEnabled,126CollectorFileFD: CollectorStateEnabled,127CollectorFilesystem: CollectorStateEnabled,128CollectorHWMon: CollectorStateEnabled,129CollectorIPVS: CollectorStateEnabled,130CollectorInfiniband: CollectorStateEnabled,131CollectorInterrupts: CollectorStateDisabled,132CollectorKSMD: CollectorStateDisabled,133CollectorLnstat: CollectorStateDisabled,134CollectorLoadAvg: CollectorStateEnabled,135CollectorLogind: CollectorStateDisabled,136CollectorMDADM: CollectorStateEnabled,137CollectorMeminfo: CollectorStateEnabled,138CollectorMeminfoNuma: CollectorStateDisabled,139CollectorMountstats: CollectorStateDisabled,140CollectorNFS: CollectorStateEnabled,141CollectorNFSD: CollectorStateEnabled,142CollectorNTP: CollectorStateDisabled,143CollectorNVME: CollectorStateEnabled,144CollectorNetclass: CollectorStateEnabled,145CollectorNetdev: CollectorStateEnabled,146CollectorNetstat: CollectorStateEnabled,147CollectorNetworkRoute: CollectorStateDisabled,148CollectorOS: CollectorStateEnabled,149CollectorPerf: CollectorStateDisabled,150CollectorPowersuppply: CollectorStateEnabled,151CollectorPressure: CollectorStateEnabled,152CollectorProcesses: CollectorStateDisabled,153CollectorQDisc: CollectorStateDisabled,154CollectorRAPL: CollectorStateEnabled,155CollectorRunit: CollectorStateDisabled,156CollectorSchedstat: CollectorStateEnabled,157CollectorSELinux: CollectorStateEnabled,158CollectorSlabInfo: CollectorStateDisabled,159CollectorSockstat: CollectorStateEnabled,160CollectorSoftnet: CollectorStateEnabled,161CollectorStat: CollectorStateEnabled,162CollectorSupervisord: CollectorStateDisabled,163CollectorSysctl: CollectorStateDisabled,164CollectorSystemd: CollectorStateDisabled,165CollectorTCPStat: CollectorStateDisabled,166CollectorTapestats: CollectorStateEnabled,167CollectorTextfile: CollectorStateEnabled,168CollectorThermal: CollectorStateEnabled,169CollectorThermalzone: CollectorStateEnabled,170CollectorTime: CollectorStateEnabled,171CollectorTimex: CollectorStateEnabled,172CollectorUDPQueues: CollectorStateEnabled,173CollectorUname: CollectorStateEnabled,174CollectorVMStat: CollectorStateEnabled,175CollectorWiFi: CollectorStateDisabled,176CollectorXFS: CollectorStateEnabled,177CollectorZFS: CollectorStateEnabled,178CollectorZoneinfo: CollectorStateDisabled,179}180181// MapCollectorsToFlags takes in a map of collector keys and their states and182// converts them into flags that node_exporter expects. Collectors that are not183// defined will be ignored, which will be the case for collectors that are not184// supported on the host system.185func MapCollectorsToFlags(cs map[string]CollectorState) (flags []string) {186for collector, state := range cs {187flag := fmt.Sprintf("collector.%s", collector)188189// Skip the flag if it's not defined in kingpin190if kingpin.CommandLine.GetFlag(flag) == nil {191continue192}193194switch state {195case CollectorStateEnabled:196flags = append(flags, "--"+flag)197case CollectorStateDisabled:198flags = append(flags, "--no-"+flag)199}200}201202sort.Strings(flags)203return204}205206// DisableUnavailableCollectors disables collectors that are not available on207// the host machine.208func DisableUnavailableCollectors(cs map[string]CollectorState) {209for collector := range cs {210flag := fmt.Sprintf("collector.%s", collector)211212// If kingpin doesn't have the flag, the collector is unavailable.213if kingpin.CommandLine.GetFlag(flag) == nil {214cs[collector] = CollectorStateDisabled215}216}217}218219220