2022-07-20 23:37:10 +00:00
|
|
|
// Copyright (c) 2014, WAKAYAMA Shirou
|
|
|
|
// All rights reserved.
|
|
|
|
//
|
|
|
|
// Redistribution and use in source and binary forms, with or without modification,
|
|
|
|
// are permitted provided that the following conditions are met:
|
|
|
|
//
|
|
|
|
// * Redistributions of source code must retain the above copyright notice, this
|
|
|
|
// list of conditions and the following disclaimer.
|
|
|
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
|
|
|
// this list of conditions and the following disclaimer in the documentation
|
|
|
|
// and/or other materials provided with the distribution.
|
|
|
|
// * Neither the name of the gopsutil authors nor the names of its contributors
|
|
|
|
// may be used to endorse or promote products derived from this software without
|
|
|
|
// specific prior written permission.
|
|
|
|
//
|
|
|
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
|
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
|
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
|
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
|
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
|
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
|
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
|
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
|
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
|
|
|
// Copied from https://github.com/shirou/gopsutil/blob/b49f37e9f30f49530cf2ad6038a4dac1b746c8f7/mem/mem.go#L15
|
|
|
|
// Copied from https://github.com/shirou/gopsutil/blob/b49f37e9f30f49530cf2ad6038a4dac1b746c8f7/host/host.go#L17
|
|
|
|
|
2021-03-11 15:25:15 +00:00
|
|
|
package hostutil
|
|
|
|
|
2022-07-20 23:37:10 +00:00
|
|
|
// VirtualMemoryStat holds commonly used memory measurements. We must have a
|
2021-03-11 15:25:15 +00:00
|
|
|
// local type here in order to avoid building the gopsutil library on certain
|
|
|
|
// arch types.
|
2022-07-20 23:37:10 +00:00
|
|
|
//
|
|
|
|
// This struct is copied to maintain backwards compatibility in the Vault host-info API.
|
|
|
|
// This is done because gopsutil changed JSON struct tags between its v2 and v3 releases.
|
|
|
|
// For details see https://github.com/shirou/gopsutil/tree/master/_tools/v3migration.
|
2021-03-11 15:25:15 +00:00
|
|
|
type VirtualMemoryStat struct {
|
|
|
|
// Total amount of RAM on this system
|
2022-07-20 23:37:10 +00:00
|
|
|
Total uint64 `json:"total"`
|
2021-03-11 15:25:15 +00:00
|
|
|
|
|
|
|
// RAM available for programs to allocate
|
|
|
|
//
|
|
|
|
// This value is computed from the kernel specific values.
|
2022-07-20 23:37:10 +00:00
|
|
|
Available uint64 `json:"available"`
|
2021-03-11 15:25:15 +00:00
|
|
|
|
|
|
|
// RAM used by programs
|
|
|
|
//
|
|
|
|
// This value is computed from the kernel specific values.
|
2022-07-20 23:37:10 +00:00
|
|
|
Used uint64 `json:"used"`
|
2021-03-11 15:25:15 +00:00
|
|
|
|
|
|
|
// Percentage of RAM used by programs
|
|
|
|
//
|
|
|
|
// This value is computed from the kernel specific values.
|
2022-07-20 23:37:10 +00:00
|
|
|
UsedPercent float64 `json:"usedPercent"`
|
|
|
|
|
|
|
|
// This is the kernel's notion of free memory; RAM chips whose bits nobody
|
|
|
|
// cares about the value of right now. For a human consumable number,
|
|
|
|
// Available is what you really want.
|
|
|
|
Free uint64 `json:"free"`
|
|
|
|
|
|
|
|
// OS X / BSD specific numbers:
|
|
|
|
// http://www.macyourself.com/2010/02/17/what-is-free-wired-active-and-inactive-system-memory-ram/
|
|
|
|
Active uint64 `json:"active"`
|
|
|
|
Inactive uint64 `json:"inactive"`
|
|
|
|
Wired uint64 `json:"wired"`
|
|
|
|
|
|
|
|
// FreeBSD specific numbers:
|
|
|
|
// https://reviews.freebsd.org/D8467
|
|
|
|
Laundry uint64 `json:"laundry"`
|
|
|
|
|
|
|
|
// Linux specific numbers
|
|
|
|
// https://www.centos.org/docs/5/html/5.1/Deployment_Guide/s2-proc-meminfo.html
|
|
|
|
// https://www.kernel.org/doc/Documentation/filesystems/proc.txt
|
|
|
|
// https://www.kernel.org/doc/Documentation/vm/overcommit-accounting
|
|
|
|
Buffers uint64 `json:"buffers"`
|
|
|
|
Cached uint64 `json:"cached"`
|
|
|
|
Writeback uint64 `json:"writeback"`
|
|
|
|
Dirty uint64 `json:"dirty"`
|
|
|
|
WritebackTmp uint64 `json:"writebacktmp"`
|
|
|
|
Shared uint64 `json:"shared"`
|
|
|
|
Slab uint64 `json:"slab"`
|
|
|
|
SReclaimable uint64 `json:"sreclaimable"`
|
|
|
|
SUnreclaim uint64 `json:"sunreclaim"`
|
|
|
|
PageTables uint64 `json:"pagetables"`
|
|
|
|
SwapCached uint64 `json:"swapcached"`
|
|
|
|
CommitLimit uint64 `json:"commitlimit"`
|
|
|
|
CommittedAS uint64 `json:"committedas"`
|
|
|
|
HighTotal uint64 `json:"hightotal"`
|
|
|
|
HighFree uint64 `json:"highfree"`
|
|
|
|
LowTotal uint64 `json:"lowtotal"`
|
|
|
|
LowFree uint64 `json:"lowfree"`
|
|
|
|
SwapTotal uint64 `json:"swaptotal"`
|
|
|
|
SwapFree uint64 `json:"swapfree"`
|
|
|
|
Mapped uint64 `json:"mapped"`
|
|
|
|
VMallocTotal uint64 `json:"vmalloctotal"`
|
|
|
|
VMallocUsed uint64 `json:"vmallocused"`
|
|
|
|
VMallocChunk uint64 `json:"vmallocchunk"`
|
|
|
|
HugePagesTotal uint64 `json:"hugepagestotal"`
|
|
|
|
HugePagesFree uint64 `json:"hugepagesfree"`
|
|
|
|
HugePageSize uint64 `json:"hugepagesize"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// HostInfoStat describes the host status.
|
|
|
|
//
|
|
|
|
// This struct is copied to maintain backwards compatibility in the Vault host-info API.
|
|
|
|
// This is done because gopsutil changed JSON struct tags between its v2 and v3 releases.
|
|
|
|
// For details see https://github.com/shirou/gopsutil/tree/master/_tools/v3migration.
|
|
|
|
type HostInfoStat struct {
|
|
|
|
Hostname string `json:"hostname"`
|
|
|
|
Uptime uint64 `json:"uptime"`
|
|
|
|
BootTime uint64 `json:"bootTime"`
|
|
|
|
Procs uint64 `json:"procs"`
|
|
|
|
OS string `json:"os"`
|
|
|
|
Platform string `json:"platform"`
|
|
|
|
PlatformFamily string `json:"platformFamily"`
|
|
|
|
PlatformVersion string `json:"platformVersion"`
|
|
|
|
KernelVersion string `json:"kernelVersion"`
|
|
|
|
KernelArch string `json:"kernelArch"`
|
|
|
|
VirtualizationSystem string `json:"virtualizationSystem"`
|
|
|
|
VirtualizationRole string `json:"virtualizationRole"`
|
|
|
|
HostID string `json:"hostid"`
|
2021-03-11 15:25:15 +00:00
|
|
|
}
|