Path: blob/main/component/prometheus/exporter/unix/config.go
4095 views
package unix12import (3"time"45node_integration "github.com/grafana/agent/pkg/integrations/node_exporter"6"github.com/grafana/dskit/flagext"7)89// DefaultArguments holds non-zero default options for Arguments when it is10// unmarshaled from YAML.11//12// Some defaults are populated from init functions in the github.com/grafana/agent/pkg/integrations/node_exporter package.13var DefaultArguments = Arguments{14ProcFSPath: node_integration.DefaultConfig.ProcFSPath,15RootFSPath: node_integration.DefaultConfig.RootFSPath,16SysFSPath: node_integration.DefaultConfig.SysFSPath,17Disk: DiskStatsConfig{18DeviceExclude: node_integration.DefaultConfig.DiskStatsDeviceExclude,19},20EthTool: EthToolConfig{21MetricsInclude: ".*",22},23Filesystem: FilesystemConfig{24MountTimeout: 5 * time.Second,25MountPointsExclude: node_integration.DefaultConfig.FilesystemMountPointsExclude,26FSTypesExclude: node_integration.DefaultConfig.FilesystemFSTypesExclude,27},28NTP: NTPConfig{29IPTTL: 1,30LocalOffsetTolerance: time.Millisecond,31MaxDistance: time.Microsecond * 3466080,32ProtocolVersion: 4,33Server: "127.0.0.1",34},35Netclass: NetclassConfig{36IgnoredDevices: "^$",37},38Netstat: NetstatConfig{39Fields: node_integration.DefaultConfig.NetstatFields,40},41Powersupply: PowersupplyConfig{42IgnoredSupplies: "^$",43},44Runit: RunitConfig{45ServiceDir: "/etc/service",46},47Supervisord: SupervisordConfig{48URL: node_integration.DefaultConfig.SupervisordURL,49},50Systemd: SystemdConfig{51UnitExclude: node_integration.DefaultConfig.SystemdUnitExclude,52UnitInclude: ".+",53},54Tapestats: TapestatsConfig{55IgnoredDevices: "^$",56},57VMStat: VMStatConfig{58Fields: node_integration.DefaultConfig.VMStatFields,59},60}6162// Arguments is used for controlling for this exporter.63type Arguments struct {64IncludeExporterMetrics bool `river:"include_exporter_metrics,attr,optional"`65ProcFSPath string `river:"procfs_path,attr,optional"`66SysFSPath string `river:"sysfs_path,attr,optional"`67RootFSPath string `river:"rootfs_path,attr,optional"`6869// Collectors to mark as enabled70EnableCollectors flagext.StringSlice `river:"enable_collectors,attr,optional"`7172// Collectors to mark as disabled73DisableCollectors flagext.StringSlice `river:"disable_collectors,attr,optional"`7475// Overrides the default set of enabled collectors with the collectors76// listed.77SetCollectors flagext.StringSlice `river:"set_collectors,attr,optional"`7879// Collector-specific config options80BCache BCacheConfig `river:"bcache,block,optional"`81CPU CPUConfig `river:"cpu,block,optional"`82Disk DiskStatsConfig `river:"disk,block,optional"`83EthTool EthToolConfig `river:"ethtool,block,optional"`84Filesystem FilesystemConfig `river:"filesystem,block,optional"`85IPVS IPVSConfig `river:"ipvs,block,optional"`86NTP NTPConfig `river:"ntp,block,optional"`87Netclass NetclassConfig `river:"netclass,block,optional"`88Netdev NetdevConfig `river:"netdev,block,optional"`89Netstat NetstatConfig `river:"netstat,block,optional"`90Perf PerfConfig `river:"perf,block,optional"`91Powersupply PowersupplyConfig `river:"powersupply,block,optional"`92Runit RunitConfig `river:"runit,block,optional"`93Supervisord SupervisordConfig `river:"supervisord,block,optional"`94Sysctl SysctlConfig `river:"sysctl,block,optional"`95Systemd SystemdConfig `river:"systemd,block,optional"`96Tapestats TapestatsConfig `river:"tapestats,block,optional"`97Textfile TextfileConfig `river:"textfile,block,optional"`98VMStat VMStatConfig `river:"vmstat,block,optional"`99}100101// Convert gives a config suitable for use with github.com/grafana/agent/pkg/integrations/node_exporter.102func (a *Arguments) Convert() *node_integration.Config {103return &node_integration.Config{104IncludeExporterMetrics: a.IncludeExporterMetrics,105ProcFSPath: a.ProcFSPath,106SysFSPath: a.SysFSPath,107RootFSPath: a.RootFSPath,108EnableCollectors: a.EnableCollectors,109DisableCollectors: a.DisableCollectors,110SetCollectors: a.SetCollectors,111BcachePriorityStats: a.BCache.PriorityStats,112CPUBugsInclude: a.CPU.BugsInclude,113CPUEnableCPUGuest: a.CPU.EnableCPUGuest,114CPUEnableCPUInfo: a.CPU.EnableCPUInfo,115CPUFlagsInclude: a.CPU.FlagsInclude,116DiskStatsDeviceExclude: a.Disk.DeviceExclude,117DiskStatsDeviceInclude: a.Disk.DeviceInclude,118EthtoolDeviceExclude: a.EthTool.DeviceExclude,119EthtoolDeviceInclude: a.EthTool.DeviceInclude,120EthtoolMetricsInclude: a.EthTool.MetricsInclude,121FilesystemFSTypesExclude: a.Filesystem.FSTypesExclude,122FilesystemMountPointsExclude: a.Filesystem.MountPointsExclude,123FilesystemMountTimeout: a.Filesystem.MountTimeout,124IPVSBackendLabels: a.IPVS.BackendLabels,125NTPIPTTL: a.NTP.IPTTL,126NTPLocalOffsetTolerance: a.NTP.LocalOffsetTolerance,127NTPMaxDistance: a.NTP.MaxDistance,128NTPProtocolVersion: a.NTP.ProtocolVersion,129NTPServer: a.NTP.Server,130NTPServerIsLocal: a.NTP.ServerIsLocal,131NetclassIgnoreInvalidSpeedDevice: a.Netclass.IgnoreInvalidSpeedDevice,132NetclassIgnoredDevices: a.Netclass.IgnoredDevices,133NetdevAddressInfo: a.Netdev.AddressInfo,134NetdevDeviceExclude: a.Netdev.DeviceExclude,135NetdevDeviceInclude: a.Netdev.DeviceInclude,136NetstatFields: a.Netstat.Fields,137PerfCPUS: a.Perf.CPUS,138PerfTracepoint: a.Perf.Tracepoint,139PowersupplyIgnoredSupplies: a.Powersupply.IgnoredSupplies,140RunitServiceDir: a.Runit.ServiceDir,141SupervisordURL: a.Supervisord.URL,142SysctlInclude: a.Sysctl.Include,143SysctlIncludeInfo: a.Sysctl.IncludeInfo,144SystemdEnableRestartsMetrics: a.Systemd.EnableRestartsMetrics,145SystemdEnableStartTimeMetrics: a.Systemd.EnableStartTimeMetrics,146SystemdEnableTaskMetrics: a.Systemd.EnableTaskMetrics,147SystemdUnitExclude: a.Systemd.UnitExclude,148SystemdUnitInclude: a.Systemd.UnitInclude,149TapestatsIgnoredDevices: a.Tapestats.IgnoredDevices,150TextfileDirectory: a.Textfile.Directory,151VMStatFields: a.VMStat.Fields,152}153}154155// UnmarshalRiver implements River unmarshalling for Config.156func (a *Arguments) UnmarshalRiver(f func(interface{}) error) error {157*a = DefaultArguments158159type args Arguments160return f((*args)(a))161}162163// PowersupplyConfig contains config specific to the powersupply collector.164type PowersupplyConfig struct {165IgnoredSupplies string `river:"ignored_supplies,attr,optional"`166}167168// RunitConfig contains config specific to the runit collector.169type RunitConfig struct {170ServiceDir string `river:"service_dir,attr,optional"`171}172173// SupervisordConfig contains config specific to the supervisord collector.174type SupervisordConfig struct {175URL string `river:"url,attr,optional"`176}177178// TapestatsConfig contains config specific to the tapestats collector.179type TapestatsConfig struct {180IgnoredDevices string `river:"ignored_devices,attr,optional"`181}182183// TextfileConfig contains config specific to the textfile collector.184type TextfileConfig struct {185Directory string `river:"directory,attr,optional"`186}187188// VMStatConfig contains config specific to the vmstat collector.189type VMStatConfig struct {190Fields string `river:"fields,attr,optional"`191}192193// NetclassConfig contains config specific to the netclass collector.194type NetclassConfig struct {195IgnoreInvalidSpeedDevice bool `river:"ignore_invalid_speed_device,attr,optional"`196IgnoredDevices string `river:"ignored_devices,attr,optional"`197}198199// NetdevConfig contains config specific to the netdev collector.200type NetdevConfig struct {201AddressInfo bool `river:"address_info,attr,optional"`202DeviceExclude string `river:"device_exclude,attr,optional"`203DeviceInclude string `river:"device_include,attr,optional"`204}205206// NetstatConfig contains config specific to the netstat collector.207type NetstatConfig struct {208Fields string `river:"fields,attr,optional"`209}210211// PerfConfig contains config specific to the perf collector.212type PerfConfig struct {213CPUS string `river:"cpus,attr,optional"`214Tracepoint flagext.StringSlice `river:"tracepoint,attr,optional"`215}216217// EthToolConfig contains config specific to the ethtool collector.218type EthToolConfig struct {219DeviceExclude string `river:"device_exclude,attr,optional"`220DeviceInclude string `river:"device_include,attr,optional"`221MetricsInclude string `river:"metrics_include,attr,optional"`222}223224// FilesystemConfig contains config specific to the filesystem collector.225type FilesystemConfig struct {226FSTypesExclude string `river:"fs_types_exclude,attr,optional"`227MountPointsExclude string `river:"mount_points_exclude,attr,optional"`228MountTimeout time.Duration `river:"mount_timeout,attr,optional"`229}230231// IPVSConfig contains config specific to the ipvs collector.232type IPVSConfig struct {233BackendLabels []string `river:"backend_labels,attr,optional"`234}235236// BCacheConfig contains config specific to the bcache collector.237type BCacheConfig struct {238PriorityStats bool `river:"priority_stats,attr,optional"`239}240241// CPUConfig contains config specific to the cpu collector.242type CPUConfig struct {243BugsInclude string `river:"bugs_include,attr,optional"`244EnableCPUGuest bool `river:"guest,attr,optional"`245EnableCPUInfo bool `river:"info,attr,optional"`246FlagsInclude string `river:"flags_include,attr,optional"`247}248249// DiskStatsConfig contains config specific to the diskstats collector.250type DiskStatsConfig struct {251DeviceExclude string `river:"device_exclude,attr,optional"`252DeviceInclude string `river:"device_include,attr,optional"`253}254255// NTPConfig contains config specific to the ntp collector.256type NTPConfig struct {257IPTTL int `river:"ip_ttl,attr,optional"`258LocalOffsetTolerance time.Duration `river:"local_offset_tolerance,attr,optional"`259MaxDistance time.Duration `river:"max_distance,attr,optional"`260ProtocolVersion int `river:"protocol_version,attr,optional"`261Server string `river:"server,attr,optional"`262ServerIsLocal bool `river:"server_is_local,attr,optional"`263}264265// SystemdConfig contains config specific to the systemd collector.266type SystemdConfig struct {267EnableRestartsMetrics bool `river:"enable_restarts,attr,optional"`268EnableStartTimeMetrics bool `river:"start_time,attr,optional"`269EnableTaskMetrics bool `river:"task_metrics,attr,optional"`270UnitExclude string `river:"unit_exclude,attr,optional"`271UnitInclude string `river:"unit_include,attr,optional"`272}273274// SysctlConfig contains config specific to the sysctl collector.275type SysctlConfig struct {276Include []string `river:"include,attr,optional"`277IncludeInfo []string `river:"include_info,attr,optional"`278}279280281