mirror of
https://github.com/status-im/consul.git
synced 2025-01-13 15:26:48 +00:00
8c684db488
* agent/debug: add package for debugging, host info * api: add v1/agent/host endpoint * agent: add v1/agent/host endpoint * command/debug: implementation of static capture * command/debug: tests and only configured targets * agent/debug: add basic test for host metrics * command/debug: add methods for dynamic data capture * api: add debug/pprof endpoints * command/debug: add pprof * command/debug: timing, wg, logs to disk * vendor: add gopsutil/disk * command/debug: add a usage section * website: add docs for consul debug * agent/host: require operator:read * api/host: improve docs and no retry timing * command/debug: fail on extra arguments * command/debug: fixup file permissions to 0644 * command/debug: remove server flags * command/debug: improve clarity of usage section * api/debug: add Trace for profiling, fix profile * command/debug: capture profile and trace at the same time * command/debug: add index document * command/debug: use "clusters" in place of members * command/debug: remove address in output * command/debug: improve comment on metrics sleep * command/debug: clarify usage * agent: always register pprof handlers and protect This will allow us to avoid a restart of a target agent for profiling by always registering the pprof handlers. Given this is a potentially sensitive path, it is protected with an operator:read ACL and enable debug being set to true on the target agent. enable_debug still requires a restart. If ACLs are disabled, enable_debug is sufficient. * command/debug: use trace.out instead of .prof More in line with golang docs. * agent: fix comment wording * agent: wrap table driven tests in t.run()
65 lines
1.6 KiB
Go
65 lines
1.6 KiB
Go
package disk
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/shirou/gopsutil/internal/common"
|
|
)
|
|
|
|
var invoke common.Invoker
|
|
|
|
func init() {
|
|
invoke = common.Invoke{}
|
|
}
|
|
|
|
type UsageStat struct {
|
|
Path string `json:"path"`
|
|
Fstype string `json:"fstype"`
|
|
Total uint64 `json:"total"`
|
|
Free uint64 `json:"free"`
|
|
Used uint64 `json:"used"`
|
|
UsedPercent float64 `json:"usedPercent"`
|
|
InodesTotal uint64 `json:"inodesTotal"`
|
|
InodesUsed uint64 `json:"inodesUsed"`
|
|
InodesFree uint64 `json:"inodesFree"`
|
|
InodesUsedPercent float64 `json:"inodesUsedPercent"`
|
|
}
|
|
|
|
type PartitionStat struct {
|
|
Device string `json:"device"`
|
|
Mountpoint string `json:"mountpoint"`
|
|
Fstype string `json:"fstype"`
|
|
Opts string `json:"opts"`
|
|
}
|
|
|
|
type IOCountersStat struct {
|
|
ReadCount uint64 `json:"readCount"`
|
|
MergedReadCount uint64 `json:"mergedReadCount"`
|
|
WriteCount uint64 `json:"writeCount"`
|
|
MergedWriteCount uint64 `json:"mergedWriteCount"`
|
|
ReadBytes uint64 `json:"readBytes"`
|
|
WriteBytes uint64 `json:"writeBytes"`
|
|
ReadTime uint64 `json:"readTime"`
|
|
WriteTime uint64 `json:"writeTime"`
|
|
IopsInProgress uint64 `json:"iopsInProgress"`
|
|
IoTime uint64 `json:"ioTime"`
|
|
WeightedIO uint64 `json:"weightedIO"`
|
|
Name string `json:"name"`
|
|
SerialNumber string `json:"serialNumber"`
|
|
}
|
|
|
|
func (d UsageStat) String() string {
|
|
s, _ := json.Marshal(d)
|
|
return string(s)
|
|
}
|
|
|
|
func (d PartitionStat) String() string {
|
|
s, _ := json.Marshal(d)
|
|
return string(s)
|
|
}
|
|
|
|
func (d IOCountersStat) String() string {
|
|
s, _ := json.Marshal(d)
|
|
return string(s)
|
|
}
|