264 lines
6.1 KiB
Go
264 lines
6.1 KiB
Go
|
// Copyright 2018 The Prometheus Authors
|
||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
// you may not use this file except in compliance with the License.
|
||
|
// You may obtain a copy of the License at
|
||
|
//
|
||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||
|
//
|
||
|
// Unless required by applicable law or agreed to in writing, software
|
||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
// See the License for the specific language governing permissions and
|
||
|
// limitations under the License.
|
||
|
|
||
|
// Package nfs implements parsing of /proc/net/rpc/nfsd.
|
||
|
// Fields are documented in https://www.svennd.be/nfsd-stats-explained-procnetrpcnfsd/
|
||
|
package nfs
|
||
|
|
||
|
// ReplyCache models the "rc" line.
|
||
|
type ReplyCache struct {
|
||
|
Hits uint64
|
||
|
Misses uint64
|
||
|
NoCache uint64
|
||
|
}
|
||
|
|
||
|
// FileHandles models the "fh" line.
|
||
|
type FileHandles struct {
|
||
|
Stale uint64
|
||
|
TotalLookups uint64
|
||
|
AnonLookups uint64
|
||
|
DirNoCache uint64
|
||
|
NoDirNoCache uint64
|
||
|
}
|
||
|
|
||
|
// InputOutput models the "io" line.
|
||
|
type InputOutput struct {
|
||
|
Read uint64
|
||
|
Write uint64
|
||
|
}
|
||
|
|
||
|
// Threads models the "th" line.
|
||
|
type Threads struct {
|
||
|
Threads uint64
|
||
|
FullCnt uint64
|
||
|
}
|
||
|
|
||
|
// ReadAheadCache models the "ra" line.
|
||
|
type ReadAheadCache struct {
|
||
|
CacheSize uint64
|
||
|
CacheHistogram []uint64
|
||
|
NotFound uint64
|
||
|
}
|
||
|
|
||
|
// Network models the "net" line.
|
||
|
type Network struct {
|
||
|
NetCount uint64
|
||
|
UDPCount uint64
|
||
|
TCPCount uint64
|
||
|
TCPConnect uint64
|
||
|
}
|
||
|
|
||
|
// ClientRPC models the nfs "rpc" line.
|
||
|
type ClientRPC struct {
|
||
|
RPCCount uint64
|
||
|
Retransmissions uint64
|
||
|
AuthRefreshes uint64
|
||
|
}
|
||
|
|
||
|
// ServerRPC models the nfsd "rpc" line.
|
||
|
type ServerRPC struct {
|
||
|
RPCCount uint64
|
||
|
BadCnt uint64
|
||
|
BadFmt uint64
|
||
|
BadAuth uint64
|
||
|
BadcInt uint64
|
||
|
}
|
||
|
|
||
|
// V2Stats models the "proc2" line.
|
||
|
type V2Stats struct {
|
||
|
Null uint64
|
||
|
GetAttr uint64
|
||
|
SetAttr uint64
|
||
|
Root uint64
|
||
|
Lookup uint64
|
||
|
ReadLink uint64
|
||
|
Read uint64
|
||
|
WrCache uint64
|
||
|
Write uint64
|
||
|
Create uint64
|
||
|
Remove uint64
|
||
|
Rename uint64
|
||
|
Link uint64
|
||
|
SymLink uint64
|
||
|
MkDir uint64
|
||
|
RmDir uint64
|
||
|
ReadDir uint64
|
||
|
FsStat uint64
|
||
|
}
|
||
|
|
||
|
// V3Stats models the "proc3" line.
|
||
|
type V3Stats struct {
|
||
|
Null uint64
|
||
|
GetAttr uint64
|
||
|
SetAttr uint64
|
||
|
Lookup uint64
|
||
|
Access uint64
|
||
|
ReadLink uint64
|
||
|
Read uint64
|
||
|
Write uint64
|
||
|
Create uint64
|
||
|
MkDir uint64
|
||
|
SymLink uint64
|
||
|
MkNod uint64
|
||
|
Remove uint64
|
||
|
RmDir uint64
|
||
|
Rename uint64
|
||
|
Link uint64
|
||
|
ReadDir uint64
|
||
|
ReadDirPlus uint64
|
||
|
FsStat uint64
|
||
|
FsInfo uint64
|
||
|
PathConf uint64
|
||
|
Commit uint64
|
||
|
}
|
||
|
|
||
|
// ClientV4Stats models the nfs "proc4" line.
|
||
|
type ClientV4Stats struct {
|
||
|
Null uint64
|
||
|
Read uint64
|
||
|
Write uint64
|
||
|
Commit uint64
|
||
|
Open uint64
|
||
|
OpenConfirm uint64
|
||
|
OpenNoattr uint64
|
||
|
OpenDowngrade uint64
|
||
|
Close uint64
|
||
|
Setattr uint64
|
||
|
FsInfo uint64
|
||
|
Renew uint64
|
||
|
SetClientID uint64
|
||
|
SetClientIDConfirm uint64
|
||
|
Lock uint64
|
||
|
Lockt uint64
|
||
|
Locku uint64
|
||
|
Access uint64
|
||
|
Getattr uint64
|
||
|
Lookup uint64
|
||
|
LookupRoot uint64
|
||
|
Remove uint64
|
||
|
Rename uint64
|
||
|
Link uint64
|
||
|
Symlink uint64
|
||
|
Create uint64
|
||
|
Pathconf uint64
|
||
|
StatFs uint64
|
||
|
ReadLink uint64
|
||
|
ReadDir uint64
|
||
|
ServerCaps uint64
|
||
|
DelegReturn uint64
|
||
|
GetACL uint64
|
||
|
SetACL uint64
|
||
|
FsLocations uint64
|
||
|
ReleaseLockowner uint64
|
||
|
Secinfo uint64
|
||
|
FsidPresent uint64
|
||
|
ExchangeID uint64
|
||
|
CreateSession uint64
|
||
|
DestroySession uint64
|
||
|
Sequence uint64
|
||
|
GetLeaseTime uint64
|
||
|
ReclaimComplete uint64
|
||
|
LayoutGet uint64
|
||
|
GetDeviceInfo uint64
|
||
|
LayoutCommit uint64
|
||
|
LayoutReturn uint64
|
||
|
SecinfoNoName uint64
|
||
|
TestStateID uint64
|
||
|
FreeStateID uint64
|
||
|
GetDeviceList uint64
|
||
|
BindConnToSession uint64
|
||
|
DestroyClientID uint64
|
||
|
Seek uint64
|
||
|
Allocate uint64
|
||
|
DeAllocate uint64
|
||
|
LayoutStats uint64
|
||
|
Clone uint64
|
||
|
}
|
||
|
|
||
|
// ServerV4Stats models the nfsd "proc4" line.
|
||
|
type ServerV4Stats struct {
|
||
|
Null uint64
|
||
|
Compound uint64
|
||
|
}
|
||
|
|
||
|
// V4Ops models the "proc4ops" line: NFSv4 operations
|
||
|
// Variable list, see:
|
||
|
// v4.0 https://tools.ietf.org/html/rfc3010 (38 operations)
|
||
|
// v4.1 https://tools.ietf.org/html/rfc5661 (58 operations)
|
||
|
// v4.2 https://tools.ietf.org/html/draft-ietf-nfsv4-minorversion2-41 (71 operations)
|
||
|
type V4Ops struct {
|
||
|
//Values uint64 // Variable depending on v4.x sub-version. TODO: Will this always at least include the fields in this struct?
|
||
|
Op0Unused uint64
|
||
|
Op1Unused uint64
|
||
|
Op2Future uint64
|
||
|
Access uint64
|
||
|
Close uint64
|
||
|
Commit uint64
|
||
|
Create uint64
|
||
|
DelegPurge uint64
|
||
|
DelegReturn uint64
|
||
|
GetAttr uint64
|
||
|
GetFH uint64
|
||
|
Link uint64
|
||
|
Lock uint64
|
||
|
Lockt uint64
|
||
|
Locku uint64
|
||
|
Lookup uint64
|
||
|
LookupRoot uint64
|
||
|
Nverify uint64
|
||
|
Open uint64
|
||
|
OpenAttr uint64
|
||
|
OpenConfirm uint64
|
||
|
OpenDgrd uint64
|
||
|
PutFH uint64
|
||
|
PutPubFH uint64
|
||
|
PutRootFH uint64
|
||
|
Read uint64
|
||
|
ReadDir uint64
|
||
|
ReadLink uint64
|
||
|
Remove uint64
|
||
|
Rename uint64
|
||
|
Renew uint64
|
||
|
RestoreFH uint64
|
||
|
SaveFH uint64
|
||
|
SecInfo uint64
|
||
|
SetAttr uint64
|
||
|
Verify uint64
|
||
|
Write uint64
|
||
|
RelLockOwner uint64
|
||
|
}
|
||
|
|
||
|
// ClientRPCStats models all stats from /proc/net/rpc/nfs.
|
||
|
type ClientRPCStats struct {
|
||
|
Network Network
|
||
|
ClientRPC ClientRPC
|
||
|
V2Stats V2Stats
|
||
|
V3Stats V3Stats
|
||
|
ClientV4Stats ClientV4Stats
|
||
|
}
|
||
|
|
||
|
// ServerRPCStats models all stats from /proc/net/rpc/nfsd.
|
||
|
type ServerRPCStats struct {
|
||
|
ReplyCache ReplyCache
|
||
|
FileHandles FileHandles
|
||
|
InputOutput InputOutput
|
||
|
Threads Threads
|
||
|
ReadAheadCache ReadAheadCache
|
||
|
Network Network
|
||
|
ServerRPC ServerRPC
|
||
|
V2Stats V2Stats
|
||
|
V3Stats V3Stats
|
||
|
ServerV4Stats ServerV4Stats
|
||
|
V4Ops V4Ops
|
||
|
}
|