| // 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 |
| |
| package hostutil |
| |
| // VirtualMemoryStat holds commonly used memory measurements. We must have a |
| // local type here in order to avoid building the gopsutil library on certain |
| // arch types. |
| // |
| // 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 VirtualMemoryStat struct { |
| // Total amount of RAM on this system |
| Total uint64 `json:"total"` |
| |
| // RAM available for programs to allocate |
| // |
| // This value is computed from the kernel specific values. |
| Available uint64 `json:"available"` |
| |
| // RAM used by programs |
| // |
| // This value is computed from the kernel specific values. |
| Used uint64 `json:"used"` |
| |
| // Percentage of RAM used by programs |
| // |
| // This value is computed from the kernel specific values. |
| 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"` |
| } |