Skip to content

Commit c210ad5

Browse files
committed
Move to gopsutil 3.23.7 and remove the need to set environment variables
1 parent 8d80706 commit c210ad5

File tree

29 files changed

+166
-108
lines changed

29 files changed

+166
-108
lines changed

internal/signalfx-agent/go.mod

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ require (
3232
github.com/SAP/go-hdb v1.3.10
3333
github.com/Sectorbob/mlab-ns2 v0.0.0-20171030222938-d3aa0c295a8a
3434
github.com/Showmax/go-fqdn v1.0.0
35-
github.com/StackExchange/wmi v1.2.1
3635
github.com/antonmedv/expr v1.13.0
3736
github.com/aws/aws-sdk-go v1.44.317
3837
github.com/beevik/ntp v1.3.0
@@ -78,7 +77,7 @@ require (
7877
github.com/prometheus/common v0.44.0
7978
github.com/prometheus/procfs v0.11.1
8079
github.com/samuel/go-zookeeper v0.0.0-20200724154423-2164a8ac840e
81-
github.com/shirou/gopsutil v3.21.11+incompatible
80+
github.com/shirou/gopsutil/v3 v3.23.7
8281
github.com/signalfx/com_signalfx_metrics_protobuf v0.0.3
8382
github.com/signalfx/defaults v1.2.2-0.20180531161417-70562fe60657
8483
github.com/signalfx/golib/v3 v3.3.50
@@ -119,6 +118,7 @@ require (
119118
)
120119

121120
require (
121+
github.com/StackExchange/wmi v1.2.1
122122
github.com/go-errors/errors v1.4.2
123123
github.com/hashicorp/golang-lru v1.0.2
124124
github.com/kr/pretty v0.3.1
@@ -270,7 +270,8 @@ require (
270270
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
271271
github.com/rogpeppe/go-internal v1.11.0 // indirect
272272
github.com/ryanuber/go-glob v1.0.0 // indirect
273-
github.com/shirou/gopsutil/v3 v3.22.8 // indirect
273+
github.com/shirou/gopsutil v3.21.11+incompatible // indirect
274+
github.com/shoenig/go-m1cpu v0.1.6 // indirect
274275
github.com/signalfx/gohistogram v0.0.0-20160107210732-1ccfd2ff5083 // indirect
275276
github.com/signalfx/sapm-proto v0.12.0 // indirect
276277
github.com/smarty/assertions v1.15.0 // indirect
@@ -279,11 +280,11 @@ require (
279280
github.com/stretchr/objx v0.5.0 // indirect
280281
github.com/tidwall/match v1.1.1 // indirect
281282
github.com/tidwall/pretty v1.2.0 // indirect
282-
github.com/tklauser/go-sysconf v0.3.10 // indirect
283-
github.com/tklauser/numcpus v0.4.0 // indirect
283+
github.com/tklauser/go-sysconf v0.3.11 // indirect
284+
github.com/tklauser/numcpus v0.6.0 // indirect
284285
github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect
285286
github.com/uber/jaeger-lib v2.4.1+incompatible // indirect
286-
github.com/yusufpapurcu/wmi v1.2.2 // indirect
287+
github.com/yusufpapurcu/wmi v1.2.3 // indirect
287288
github.com/zeebo/xxh3 v1.0.2 // indirect
288289
go.etcd.io/etcd/api/v3 v3.5.9 // indirect
289290
go.etcd.io/etcd/client/pkg/v3 v3.5.9 // indirect

internal/signalfx-agent/go.sum

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1018,8 +1018,12 @@ github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod
10181018
github.com/sethvargo/go-limiter v0.7.1 h1:wWNhTj0pxjyJ7wuJHpRJpYwJn+bUnjYfw2a85eu5w9U=
10191019
github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
10201020
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
1021-
github.com/shirou/gopsutil/v3 v3.22.8 h1:a4s3hXogo5mE2PfdfJIonDbstO/P+9JszdfhAHSzD9Y=
1022-
github.com/shirou/gopsutil/v3 v3.22.8/go.mod h1:s648gW4IywYzUfE/KjXxUsqrqx/T2xO5VqOXxONeRfI=
1021+
github.com/shirou/gopsutil/v3 v3.23.7 h1:C+fHO8hfIppoJ1WdsVm1RoI0RwXoNdfTK7yWXV0wVj4=
1022+
github.com/shirou/gopsutil/v3 v3.23.7/go.mod h1:c4gnmoRC0hQuaLqvxnx1//VXQ0Ms/X9UnJF8pddY5z4=
1023+
github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
1024+
github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
1025+
github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU=
1026+
github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
10231027
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
10241028
github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
10251029
github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8=
@@ -1101,10 +1105,10 @@ github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
11011105
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
11021106
github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=
11031107
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
1104-
github.com/tklauser/go-sysconf v0.3.10 h1:IJ1AZGZRWbY8T5Vfk04D9WOA5WSejdflXxP03OUqALw=
1105-
github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk=
1106-
github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//o=
1107-
github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ=
1108+
github.com/tklauser/go-sysconf v0.3.11 h1:89WgdJhk5SNwJfu+GKyYveZ4IaJ7xAkecBo+KdJV0CM=
1109+
github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI=
1110+
github.com/tklauser/numcpus v0.6.0 h1:kebhY2Qt+3U6RNK7UqpYNA+tJ23IBEGKkB7JQBfDYms=
1111+
github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ5UVIcaL4=
11081112
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
11091113
github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c h1:u6SKchux2yDvFQnDHS3lPnIRmfVJ5Sxy3ao2SIdysLQ=
11101114
github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o=
@@ -1128,8 +1132,8 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
11281132
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
11291133
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
11301134
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
1131-
github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg=
1132-
github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
1135+
github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw=
1136+
github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
11331137
github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ=
11341138
github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0=
11351139
github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA=
@@ -1431,7 +1435,6 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc
14311435
golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
14321436
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
14331437
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1434-
golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
14351438
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
14361439
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
14371440
golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1441,6 +1444,7 @@ golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBc
14411444
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
14421445
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
14431446
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1447+
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
14441448
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
14451449
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
14461450
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=

internal/signalfx-agent/pkg/core/config/config.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"github.com/mitchellh/hashstructure"
1515
log "github.com/sirupsen/logrus"
1616

17+
"github.com/shirou/gopsutil/v3/common"
1718
"github.com/signalfx/signalfx-agent/pkg/core/common/constants"
1819
"github.com/signalfx/signalfx-agent/pkg/core/config/sources"
1920
"github.com/signalfx/signalfx-agent/pkg/core/config/validation"
@@ -209,11 +210,13 @@ func (c *Config) setupEnvironment() {
209210

210211
os.Setenv("JAVA_HOME", filepath.Join(c.BundleDir, "jre"))
211212
// set the environment variables for gopsutil based on configured values
212-
os.Setenv(hostfs.HostProcVar, c.ProcPath)
213-
os.Setenv(hostfs.HostEtcVar, c.EtcPath)
214-
os.Setenv(hostfs.HostVarVar, c.VarPath)
215-
os.Setenv(hostfs.HostRunVar, c.RunPath)
216-
os.Setenv(hostfs.HostSysVar, c.SysPath)
213+
hostfs.SetEnvMap(common.EnvMap{
214+
common.HostProcEnvKey: c.ProcPath,
215+
common.HostEtcEnvKey: c.EtcPath,
216+
common.HostVarEnvKey: c.VarPath,
217+
common.HostRunEnvKey: c.RunPath,
218+
common.HostSysEnvKey: c.SysPath,
219+
})
217220
}
218221

219222
// Validate everything that we can about the main config

internal/signalfx-agent/pkg/monitors/cpu/cpu.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66
"strings"
77
"time"
88

9-
"github.com/shirou/gopsutil/cpu"
9+
"github.com/shirou/gopsutil/v3/cpu"
1010
"github.com/signalfx/golib/v3/datapoint"
1111
"github.com/signalfx/golib/v3/sfxclient"
1212
"github.com/sirupsen/logrus"

internal/signalfx-agent/pkg/monitors/cpu/cpu_others.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
package cpu
55

66
import (
7-
"github.com/shirou/gopsutil/cpu"
7+
"github.com/shirou/gopsutil/v3/cpu"
8+
"github.com/signalfx/signalfx-agent/pkg/utils/hostfs"
89
)
910

1011
func (m *Monitor) times(perCore bool) ([]cpu.TimesStat, error) {
11-
return cpu.Times(perCore)
12+
return cpu.TimesWithContext(hostfs.Context(), perCore)
1213
}

internal/signalfx-agent/pkg/monitors/cpu/cpu_windows.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ import (
77
"fmt"
88
"unsafe"
99

10-
"github.com/shirou/gopsutil/cpu"
10+
"github.com/shirou/gopsutil/v3/cpu"
1111
"golang.org/x/sys/windows"
12+
13+
"github.com/signalfx/signalfx-agent/pkg/utils/hostfs"
1214
)
1315

1416
const (
@@ -25,7 +27,7 @@ const (
2527

2628
// set gopsutil function to package variable for easier testing
2729
var (
28-
gopsutilTimes = cpu.Times
30+
gopsutilTimes = cpu.TimesWithContext
2931

3032
// Windows API DLL
3133
ntdll = windows.NewLazySystemDLL("Ntdll.dll")
@@ -129,7 +131,7 @@ func (m *Monitor) times(perCore bool) ([]cpu.TimesStat, error) {
129131
// non-percore utilization in gopsutil does not rely on wmi so it's fine to
130132
// utilize it as is
131133
if !perCore {
132-
return gopsutilTimes(perCore)
134+
return gopsutilTimes(hostfs.Context(), perCore)
133135
}
134136
// Underneath the hood gopsutil relies on a wmi query for per core cpu utilization information
135137
// this wmi query has proven to be problematic under unclear conditions. It will hang
@@ -147,5 +149,5 @@ func (m *Monitor) times(perCore bool) ([]cpu.TimesStat, error) {
147149

148150
// fall back to gopsutil if there was an error or the dll and proc weren't loaded/found
149151
m.logger.WithField("debug", err).Debugf("falling back to gopsutil for per core cpu times")
150-
return gopsutilTimes(perCore)
152+
return gopsutilTimes(hostfs.Context(), perCore)
151153
}

internal/signalfx-agent/pkg/monitors/diskio/diskio_others.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,18 @@ import (
88
"strings"
99
"time"
1010

11-
"github.com/shirou/gopsutil/disk"
11+
"github.com/shirou/gopsutil/v3/disk"
1212
"github.com/signalfx/golib/v3/datapoint"
1313
"github.com/signalfx/golib/v3/sfxclient"
1414
"github.com/sirupsen/logrus"
1515

1616
"github.com/signalfx/signalfx-agent/pkg/monitors/types"
1717
"github.com/signalfx/signalfx-agent/pkg/utils"
1818
"github.com/signalfx/signalfx-agent/pkg/utils/filter"
19+
"github.com/signalfx/signalfx-agent/pkg/utils/hostfs"
1920
)
2021

21-
var iOCounters = disk.IOCounters
22+
var iOCounters = disk.IOCountersWithContext
2223

2324
// Monitor for Utilization
2425
type Monitor struct {
@@ -46,7 +47,7 @@ func (m *Monitor) makeLinuxDatapoints(disk disk.IOCountersStat, dimensions map[s
4647

4748
// EmitDatapoints emits a set of memory datapoints
4849
func (m *Monitor) emitDatapoints() {
49-
iocounts, err := iOCounters()
50+
iocounts, err := iOCounters(hostfs.Context())
5051
if err != nil {
5152
m.logger.WithError(err).Errorf("Failed to load disk io counters")
5253
return

internal/signalfx-agent/pkg/monitors/filesystems/filesystems.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"strings"
88
"time"
99

10-
gopsutil "github.com/shirou/gopsutil/disk"
10+
gopsutil "github.com/shirou/gopsutil/v3/disk"
1111
"github.com/signalfx/golib/v3/datapoint"
1212
log "github.com/sirupsen/logrus"
1313

@@ -72,7 +72,7 @@ func (m *Monitor) getCommonDimensions(partition *gopsutil.PartitionStat) map[str
7272
}
7373
if m.sendModeDimension {
7474
var mode string
75-
opts := strings.Split(partition.Opts, ",")
75+
opts := partition.Opts
7676
for _, opt := range opts {
7777
if opt == "ro" || opt == "rw" {
7878
mode = opt

internal/signalfx-agent/pkg/monitors/filesystems/filesystems_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package filesystems
33
import (
44
"testing"
55

6-
gopsutil "github.com/shirou/gopsutil/disk"
6+
gopsutil "github.com/shirou/gopsutil/v3/disk"
77
log "github.com/sirupsen/logrus"
88
"github.com/stretchr/testify/assert"
99
)
@@ -20,7 +20,7 @@ func TestCommonDimensions(t *testing.T) {
2020
Device: "/dev/sdb1",
2121
Mountpoint: "/hostfs/var/lib",
2222
Fstype: "ext4",
23-
Opts: "rw,relatime",
23+
Opts: []string{"rw", "relatime"},
2424
},
2525
expectedDims: map[string]string{
2626
"mountpoint": "/var/lib",
@@ -35,7 +35,7 @@ func TestCommonDimensions(t *testing.T) {
3535
Device: "/dev/sdb1",
3636
Mountpoint: "/hostfs",
3737
Fstype: "ext4",
38-
Opts: "ro,relatime",
38+
Opts: []string{"ro", "relatime"},
3939
},
4040
expectedDims: map[string]string{
4141
"mountpoint": "/",
@@ -50,7 +50,7 @@ func TestCommonDimensions(t *testing.T) {
5050
Device: "/dev/sdb1",
5151
Mountpoint: "/",
5252
Fstype: "ext4",
53-
Opts: "rx,relatime",
53+
Opts: []string{"rx", "relatime"},
5454
},
5555
expectedDims: map[string]string{
5656
"mountpoint": "/",

internal/signalfx-agent/pkg/monitors/filesystems/partitions.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@ package filesystems
66
import (
77
"path/filepath"
88

9-
gopsutil "github.com/shirou/gopsutil/disk"
9+
gopsutil "github.com/shirou/gopsutil/v3/disk"
10+
"github.com/signalfx/signalfx-agent/pkg/utils/hostfs"
1011
)
1112

1213
func getPartitions(all bool) ([]gopsutil.PartitionStat, error) {
13-
return gopsutil.Partitions(all)
14+
return gopsutil.PartitionsWithContext(hostfs.Context(), all)
1415
}
1516

1617
// getUsage prepends the hostFSPath to the partition mountpoint. This is needed
@@ -20,5 +21,5 @@ func getUsage(hostFSPath string, path string) (*gopsutil.UsageStat, error) {
2021
if hostFSPath != "" {
2122
path = filepath.Join(hostFSPath, path)
2223
}
23-
return gopsutil.Usage(path)
24+
return gopsutil.UsageWithContext(hostfs.Context(), path)
2425
}

internal/signalfx-agent/pkg/monitors/filesystems/partitions_windows.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,19 @@ import (
99
"syscall"
1010
"unicode/utf16"
1111

12-
gopsutil "github.com/shirou/gopsutil/disk"
12+
gopsutil "github.com/shirou/gopsutil/v3/disk"
1313
"golang.org/x/sys/windows"
1414
)
1515

1616
const volumeNameBufferLength = uint32(windows.MAX_PATH + 1)
1717
const volumePathBufferLength = volumeNameBufferLength
1818

19+
// Copied from https://github.com/shirou/gopsutil/blob/master/disk/disk_windows.go#L25C1-L25C1
20+
var (
21+
fileFileCompression = int64(16) // 0x00000010
22+
fileReadOnlyVolume = int64(524288) // 0x00080000
23+
)
24+
1925
func getPartitions(all bool) ([]gopsutil.PartitionStat, error) {
2026
return getPartitionsWin(getDriveType, findFirstVolume, findNextVolume, findVolumeClose, getVolumePaths, getFsNameAndFlags)
2127
}
@@ -176,12 +182,12 @@ func getPartitionStats(
176182
continue
177183
}
178184

179-
opts := "rw"
180-
if int64(fsFlags)&gopsutil.FileReadOnlyVolume != 0 {
181-
opts = "ro"
185+
opts := []string{"rw"}
186+
if int64(fsFlags)&fileReadOnlyVolume != 0 {
187+
opts = []string{"ro"}
182188
}
183-
if int64(fsFlags)&gopsutil.FileFileCompression != 0 {
184-
opts += ".compress"
189+
if int64(fsFlags)&fileFileCompression != 0 {
190+
opts = append(opts, ".compress")
185191
}
186192

187193
p := strings.TrimRight(volPath, "\\")

internal/signalfx-agent/pkg/monitors/filesystems/partitions_windows_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"testing"
99
"unsafe"
1010

11-
gopsutil "github.com/shirou/gopsutil/disk"
11+
gopsutil "github.com/shirou/gopsutil/v3/disk"
1212
"github.com/stretchr/testify/assert"
1313
"github.com/stretchr/testify/require"
1414
"golang.org/x/sys/windows"
@@ -104,10 +104,10 @@ func TestGetPartitionsWin(t *testing.T) {
104104
numStats: 4,
105105
hasError: false,
106106
stats: []gopsutil.PartitionStat{
107-
{Device: "C:", Mountpoint: "C:", Fstype: "NTFS", Opts: "rw.compress"},
108-
{Device: "D:", Mountpoint: "D:", Fstype: "NTFS", Opts: "ro.compress"},
109-
{Device: "C:\\mnt\\driveD", Mountpoint: "C:\\mnt\\driveD", Fstype: "NTFS", Opts: "ro.compress"},
110-
{Device: "A:", Mountpoint: "A:", Fstype: "FAT16", Opts: "rw.compress"}},
107+
{Device: "C:", Mountpoint: "C:", Fstype: "NTFS", Opts: []string{"rw", ".compress"}},
108+
{Device: "D:", Mountpoint: "D:", Fstype: "NTFS", Opts: []string{"ro", ".compress"}},
109+
{Device: "C:\\mnt\\driveD", Mountpoint: "C:\\mnt\\driveD", Fstype: "NTFS", Opts: []string{"ro", ".compress"}},
110+
{Device: "A:", Mountpoint: "A:", Fstype: "FAT16", Opts: []string{"rw", ".compress"}}},
111111
},
112112
},
113113
{
@@ -136,8 +136,8 @@ func TestGetPartitionsWin(t *testing.T) {
136136
numStats: 2,
137137
hasError: true,
138138
stats: []gopsutil.PartitionStat{
139-
{Device: "C:", Mountpoint: "C:", Fstype: "NTFS", Opts: "rw.compress"},
140-
{Device: "A:", Mountpoint: "A:", Fstype: "FAT16", Opts: "rw.compress"}},
139+
{Device: "C:", Mountpoint: "C:", Fstype: "NTFS", Opts: []string{"rw", ".compress"}},
140+
{Device: "A:", Mountpoint: "A:", Fstype: "FAT16", Opts: []string{"rw", ".compress"}}},
141141
},
142142
},
143143
}

internal/signalfx-agent/pkg/monitors/load/load.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@ import (
55
"runtime"
66
"time"
77

8-
"github.com/shirou/gopsutil/load"
8+
"github.com/shirou/gopsutil/v3/load"
99
"github.com/signalfx/golib/v3/datapoint"
1010
"github.com/sirupsen/logrus"
1111

1212
"github.com/signalfx/signalfx-agent/pkg/core/config"
1313
"github.com/signalfx/signalfx-agent/pkg/monitors"
1414
"github.com/signalfx/signalfx-agent/pkg/monitors/types"
1515
"github.com/signalfx/signalfx-agent/pkg/utils"
16+
"github.com/signalfx/signalfx-agent/pkg/utils/hostfs"
1617
)
1718

1819
func init() {
@@ -45,7 +46,7 @@ func (m *Monitor) Configure(conf *Config) error {
4546

4647
// gather metrics on the specified interval
4748
utils.RunOnInterval(ctx, func() {
48-
avgLoad, err := load.Avg()
49+
avgLoad, err := load.AvgWithContext(hostfs.Context())
4950
if err != nil {
5051
m.logger.WithError(err).Error("Failed to get load statistics")
5152
return

0 commit comments

Comments
 (0)