• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..11-May-2020-

internal/H11-May-2020-352172

.gitignoreH A D11-May-202011 21

.golangci.ymlH A D11-May-202034 54

CONTRIBUTING.mdH A D11-May-20206.5 KiB12282

LICENSEH A D11-May-202011.1 KiB202169

MAINTAINERS.mdH A D11-May-2020102 32

MakefileH A D11-May-2020859 3012

Makefile.commonH A D11-May-20209.2 KiB290213

NOTICEH A D11-May-2020237 85

README.mdH A D11-May-20202.7 KiB6245

arp.goH A D11-May-20202.2 KiB8654

buddyinfo.goH A D11-May-20202.2 KiB8656

cpuinfo.goH A D11-May-20204.3 KiB168144

crypto.goH A D11-May-20203.5 KiB154115

doc.goH A D11-May-20201.3 KiB461

fixtures.ttarH A D11-May-2020196.8 KiB5,3825,270

fs.goH A D11-May-20201.4 KiB4418

go.modH A D11-May-2020198 107

go.sumH A D11-May-2020583 76

ipvs.goH A D11-May-20205.9 KiB242189

loadavg.goH A D11-May-20201.6 KiB6339

mdstat.goH A D11-May-20205.6 KiB195134

meminfo.goH A D11-May-20208 KiB278184

mountinfo.goH A D11-May-20205.2 KiB181125

mountstats.goH A D11-May-202018.1 KiB622397

net_conntrackstat.goH A D11-May-20203.8 KiB154108

net_dev.goH A D11-May-20206.4 KiB206159

net_sockstat.goH A D11-May-20204.3 KiB164103

net_softnet.goH A D11-May-20202.5 KiB10360

net_udp.goH A D11-May-20206.7 KiB230159

net_unix.goH A D11-May-20205.9 KiB258175

proc.goH A D11-May-20206.9 KiB299206

proc_environ.goH A D11-May-20201.1 KiB3817

proc_fdinfo.goH A D11-May-20203.4 KiB13489

proc_io.goH A D11-May-20201.6 KiB6027

proc_limits.goH A D11-May-20204.6 KiB158102

proc_maps.goH A D11-May-20204.4 KiB209139

proc_ns.goH A D11-May-20201.9 KiB6941

proc_psi.goH A D11-May-20203.3 KiB10154

proc_stat.goH A D11-May-20205.3 KiB193103

proc_status.goH A D11-May-20204.3 KiB167104

schedstat.goH A D11-May-20202.9 KiB11973

stat.goH A D11-May-20207.1 KiB245179

swaps.goH A D11-May-20202.2 KiB9063

ttarH A D11-May-202011.6 KiB414328

vm.goH A D11-May-20207.7 KiB211178

xfrm.goH A D11-May-20204.8 KiB188127

zoneinfo.goH A D11-May-20206.3 KiB197166

README.md

1# procfs
2
3This package provides functions to retrieve system, kernel, and process
4metrics from the pseudo-filesystems /proc and /sys.
5
6*WARNING*: This package is a work in progress. Its API may still break in
7backwards-incompatible ways without warnings. Use it at your own risk.
8
9[![GoDoc](https://godoc.org/github.com/prometheus/procfs?status.png)](https://godoc.org/github.com/prometheus/procfs)
10[![Build Status](https://travis-ci.org/prometheus/procfs.svg?branch=master)](https://travis-ci.org/prometheus/procfs)
11[![Go Report Card](https://goreportcard.com/badge/github.com/prometheus/procfs)](https://goreportcard.com/report/github.com/prometheus/procfs)
12
13## Usage
14
15The procfs library is organized by packages based on whether the gathered data is coming from
16/proc, /sys, or both.  Each package contains an `FS` type which represents the path to either /proc,
17/sys, or both.  For example, cpu statistics are gathered from
18`/proc/stat` and are available via the root procfs package.  First, the proc filesystem mount
19point is initialized, and then the stat information is read.
20
21```go
22fs, err := procfs.NewFS("/proc")
23stats, err := fs.Stat()
24```
25
26Some sub-packages such as `blockdevice`, require access to both the proc and sys filesystems.
27
28```go
29    fs, err := blockdevice.NewFS("/proc", "/sys")
30    stats, err := fs.ProcDiskstats()
31```
32
33## Package Organization
34
35The packages in this project are organized according to (1) whether the data comes from the `/proc` or
36`/sys` filesystem and (2) the type of information being retrieved.  For example, most process information
37can be gathered from the functions in the root `procfs` package.  Information about block devices such as disk drives
38is available in the `blockdevices` sub-package.
39
40## Building and Testing
41
42The procfs library is intended to be built as part of another application, so there are no distributable binaries.
43However, most of the API includes unit tests which can be run with `make test`.
44
45### Updating Test Fixtures
46
47The procfs library includes a set of test fixtures which include many example files from
48the `/proc` and `/sys` filesystems.  These fixtures are included as a [ttar](https://github.com/ideaship/ttar) file
49which is extracted automatically during testing.  To add/update the test fixtures, first
50ensure the `fixtures` directory is up to date by removing the existing directory and then
51extracting the ttar file using `make fixtures/.unpacked` or just `make test`.
52
53```bash
54rm -rf fixtures
55make test
56```
57
58Next, make the required changes to the extracted files in the `fixtures` directory.  When
59the changes are complete, run `make update_fixtures` to create a new `fixtures.ttar` file
60based on the updated `fixtures` directory.  And finally, verify the changes using
61`git diff fixtures.ttar`.
62