Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/golangci-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ jobs:
uses: actions/setup-go@v2
with:
go-version: 1.18.x
- name: Install snmp_exporter/generator dependencies
run: sudo apt-get update && sudo apt-get -y install libsnmp-dev
if: github.repository == 'prometheus/snmp_exporter'
- name: Lint
uses: golangci/golangci-lint-action@v3.1.0
with:
Expand Down
4 changes: 2 additions & 2 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
## Prometheus Community Code of Conduct
# Prometheus Community Code of Conduct

Prometheus follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md).
Prometheus follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md).
2 changes: 1 addition & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
The Prometheus security policy, including how to report vulnerabilities, can be
found here:

https://prometheus.io/docs/operating/security/
<https://prometheus.io/docs/operating/security/>
4 changes: 2 additions & 2 deletions collector/arp_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ var (
)

type arpCollector struct {
deviceFilter netDevFilter
deviceFilter devFilter
entries *prometheus.Desc
logger log.Logger
}
Expand All @@ -46,7 +46,7 @@ func init() {
// NewARPCollector returns a new Collector exposing ARP stats.
func NewARPCollector(logger log.Logger) (Collector, error) {
return &arpCollector{
deviceFilter: newNetDevFilter(*arpDeviceExclude, *arpDeviceInclude),
deviceFilter: newdevFilter(*arpDeviceExclude, *arpDeviceInclude),
entries: prometheus.NewDesc(
prometheus.BuildFQName(namespace, "arp", "entries"),
"ARP entries by device",
Expand Down
46 changes: 33 additions & 13 deletions collector/diskstats_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,8 @@
package collector

import (
"errors"
"fmt"
"regexp"

"github.com/go-kit/log"
"github.com/go-kit/log/level"
"github.com/prometheus/client_golang/prometheus"
Expand All @@ -36,7 +35,9 @@ const (
)

var (
ignoredDevices = kingpin.Flag("collector.diskstats.ignored-devices", "Regexp of devices to ignore for diskstats.").Default("^(ram|loop|fd|(h|s|v|xv)d[a-z]|nvme\\d+n\\d+p)\\d+$").String()
diskstatsDeviceExclude = kingpin.Flag("collector.diskstats.device-exclude", "Regexp of diskstats devices to exclude (mutually exclusive to device-include).").String()
oldDiskstatsDeviceExclude = kingpin.Flag("collector.diskstats.ignored-devices", "DEPRECATED: Use collector.diskstats.device-exclude").Default("^(ram|loop|fd|(h|s|v|xv)d[a-z]|nvme\\d+n\\d+p)\\d+$").Hidden().String()
diskstatsDeviceInclude = kingpin.Flag("collector.diskstats.device-include", "Regexp of diskstats devices to include (mutually exclusive to device-exclude).").String()
)

type typedFactorDesc struct {
Expand All @@ -49,11 +50,11 @@ func (d *typedFactorDesc) mustNewConstMetric(value float64, labels ...string) pr
}

type diskstatsCollector struct {
ignoredDevicesPattern *regexp.Regexp
fs blockdevice.FS
infoDesc typedFactorDesc
descs []typedFactorDesc
logger log.Logger
deviceFilter devFilter
fs blockdevice.FS
infoDesc typedFactorDesc
descs []typedFactorDesc
logger log.Logger
}

func init() {
Expand All @@ -68,10 +69,30 @@ func NewDiskstatsCollector(logger log.Logger) (Collector, error) {
if err != nil {
return nil, fmt.Errorf("failed to open sysfs: %w", err)
}
if *oldDiskstatsDeviceExclude != "" {
if *diskstatsDeviceExclude == "" {
level.Warn(logger).Log("msg", "--collector.netdev.ignored-devices is DEPRECATED and will be removed in 2.0.0, use --collector.diskstats.device-exclude")
*diskstatsDeviceExclude = *oldDiskstatsDeviceExclude
} else {
return nil, errors.New("--collector.diskstats.ignored-devices and --collector.diskstats.device-exclude are mutually exclusive")
}
}

if *diskstatsDeviceExclude != "" && *diskstatsDeviceInclude != "" {
return nil, errors.New("device-exclude & device-include are mutually exclusive")
}

if *diskstatsDeviceExclude != "" {
level.Info(logger).Log("msg", "Parsed flag --collector.diskstats.device-exclude", "flag", *diskstatsDeviceExclude)
}

if *diskstatsDeviceInclude != "" {
level.Info(logger).Log("msg", "Parsed Flag --collector.diskstats.device-include", "flag", *diskstatsDeviceInclude)
}

return &diskstatsCollector{
ignoredDevicesPattern: regexp.MustCompile(*ignoredDevices),
fs: fs,
deviceFilter: newdevFilter(*diskstatsDeviceExclude, *diskstatsDeviceInclude),
fs: fs,
infoDesc: typedFactorDesc{
desc: prometheus.NewDesc(prometheus.BuildFQName(namespace, diskSubsystem, "info"),
"Info of /sys/block/<block_device>.",
Expand Down Expand Up @@ -194,11 +215,9 @@ func (c *diskstatsCollector) Update(ch chan<- prometheus.Metric) error {

for _, stats := range diskStats {
dev := stats.DeviceName
if c.ignoredDevicesPattern.MatchString(dev) {
level.Debug(c.logger).Log("msg", "Ignoring device", "device", dev, "pattern", c.ignoredDevicesPattern)
if c.deviceFilter.ignored(dev) {
continue
}

ch <- c.infoDesc.mustNewConstMetric(1.0, dev, fmt.Sprint(stats.MajorNumber), fmt.Sprint(stats.MinorNumber))

statCount := stats.IoStatsCount - 3 // Total diskstats record count, less MajorNumber, MinorNumber and DeviceName
Expand Down Expand Up @@ -227,6 +246,7 @@ func (c *diskstatsCollector) Update(ch chan<- prometheus.Metric) error {
}
ch <- c.descs[i].mustNewConstMetric(val, dev)
}

}
return nil
}
4 changes: 2 additions & 2 deletions collector/ethtool_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ type ethtoolCollector struct {
entries map[string]*prometheus.Desc
entriesMutex sync.Mutex
ethtool Ethtool
deviceFilter netDevFilter
deviceFilter devFilter
infoDesc *prometheus.Desc
metricsPattern *regexp.Regexp
logger log.Logger
Expand All @@ -100,7 +100,7 @@ func makeEthtoolCollector(logger log.Logger) (*ethtoolCollector, error) {
return &ethtoolCollector{
fs: fs,
ethtool: &ethtoolLibrary{e},
deviceFilter: newNetDevFilter(*ethtoolDeviceExclude, *ethtoolDeviceInclude),
deviceFilter: newdevFilter(*ethtoolDeviceExclude, *ethtoolDeviceInclude),
metricsPattern: regexp.MustCompile(*ethtoolIncludedMetrics),
logger: logger,
entries: map[string]*prometheus.Desc{
Expand Down
2 changes: 1 addition & 1 deletion collector/netdev_bsd.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ import (
*/
import "C"

func getNetDevStats(filter *netDevFilter, logger log.Logger) (netDevStats, error) {
func getNetDevStats(filter *devFilter, logger log.Logger) (netDevStats, error) {
netDev := netDevStats{}

var ifap, ifa *C.struct_ifaddrs
Expand Down
2 changes: 1 addition & 1 deletion collector/netdev_common.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ func NewNetDevCollector(logger log.Logger) (Collector, error) {

return &netDevCollector{
subsystem: "network",
deviceFilter: newNetDevFilter(*netdevDeviceExclude, *netdevDeviceInclude),
deviceFilter: newdevFilter(*netdevDeviceExclude, *netdevDeviceInclude),
metricDescs: map[string]*prometheus.Desc{},
logger: logger,
}, nil
Expand Down
2 changes: 1 addition & 1 deletion collector/netdev_darwin.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import (
"golang.org/x/sys/unix"
)

func getNetDevStats(filter *netDevFilter, logger log.Logger) (netDevStats, error) {
func getNetDevStats(filter *devFilter, logger log.Logger) (netDevStats, error) {
netDev := netDevStats{}

ifs, err := net.Interfaces()
Expand Down
6 changes: 3 additions & 3 deletions collector/netdev_filter.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ import (
"regexp"
)

type netDevFilter struct {
type devFilter struct {
ignorePattern *regexp.Regexp
acceptPattern *regexp.Regexp
}

func newNetDevFilter(ignoredPattern, acceptPattern string) (f netDevFilter) {
func newdevFilter(ignoredPattern, acceptPattern string) (f devFilter) {
if ignoredPattern != "" {
f.ignorePattern = regexp.MustCompile(ignoredPattern)
}
Expand All @@ -35,7 +35,7 @@ func newNetDevFilter(ignoredPattern, acceptPattern string) (f netDevFilter) {
}

// ignores returns whether the device should be ignored
func (f *netDevFilter) ignored(name string) bool {
func (f *devFilter) ignored(name string) bool {
return ((f.ignorePattern != nil && f.ignorePattern.MatchString(name)) ||
(f.acceptPattern != nil && !f.acceptPattern.MatchString(name)))
}
4 changes: 2 additions & 2 deletions collector/netdev_filter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import (
"testing"
)

func TestNetDevFilter(t *testing.T) {
func TestdevFilter(t *testing.T) {
tests := []struct {
ignore string
accept string
Expand All @@ -33,7 +33,7 @@ func TestNetDevFilter(t *testing.T) {
}

for _, test := range tests {
filter := newNetDevFilter(test.ignore, test.accept)
filter := newdevFilter(test.ignore, test.accept)
result := filter.ignored(test.name)

if result != test.expectedResult {
Expand Down
4 changes: 2 additions & 2 deletions collector/netdev_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ var (
procNetDevFieldSep = regexp.MustCompile(` +`)
)

func getNetDevStats(filter *netDevFilter, logger log.Logger) (netDevStats, error) {
func getNetDevStats(filter *devFilter, logger log.Logger) (netDevStats, error) {
file, err := os.Open(procFilePath("net/dev"))
if err != nil {
return nil, err
Expand All @@ -44,7 +44,7 @@ func getNetDevStats(filter *netDevFilter, logger log.Logger) (netDevStats, error
return parseNetDevStats(file, filter, logger)
}

func parseNetDevStats(r io.Reader, filter *netDevFilter, logger log.Logger) (netDevStats, error) {
func parseNetDevStats(r io.Reader, filter *devFilter, logger log.Logger) (netDevStats, error) {
scanner := bufio.NewScanner(r)
scanner.Scan() // skip first header
scanner.Scan()
Expand Down
4 changes: 2 additions & 2 deletions collector/netdev_linux_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ func TestNetDevStatsIgnore(t *testing.T) {
}
defer file.Close()

filter := newNetDevFilter("^veth", "")
filter := newdevFilter("^veth", "")

netStats, err := parseNetDevStats(file, &filter, log.NewNopLogger())
if err != nil {
Expand Down Expand Up @@ -70,7 +70,7 @@ func TestNetDevStatsAccept(t *testing.T) {
}
defer file.Close()

filter := newNetDevFilter("", "^💩0$")
filter := newdevFilter("", "^💩0$")
netStats, err := parseNetDevStats(file, &filter, log.NewNopLogger())
if err != nil {
t.Fatal(err)
Expand Down
2 changes: 1 addition & 1 deletion collector/netdev_openbsd.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import (
*/
import "C"

func getNetDevStats(filter *netDevFilter, logger log.Logger) (netDevStats, error) {
func getNetDevStats(filter *devFilter, logger log.Logger) (netDevStats, error) {
netDev := netDevStats{}

var ifap, ifa *C.struct_ifaddrs
Expand Down
2 changes: 1 addition & 1 deletion collector/netdev_openbsd_amd64.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import (
"unsafe"
)

func getNetDevStats(filter *netDevFilter, logger log.Logger) (netDevStats, error) {
func getNetDevStats(filter *devFilter, logger log.Logger) (netDevStats, error) {
netDev := netDevStats{}

mib := [6]_C_int{unix.CTL_NET, unix.AF_ROUTE, 0, 0, unix.NET_RT_IFLIST, 0}
Expand Down
Loading