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

..17-May-2021-

internal/H17-May-2021-352172

.gitignoreH A D17-May-202111 21

.golangci.ymlH A D17-May-202145 54

CONTRIBUTING.mdH A D17-May-20216.5 KiB12282

LICENSEH A D17-May-202111.1 KiB202169

MAINTAINERS.mdH A D17-May-2021102 32

MakefileH A D17-May-2021859 3012

Makefile.commonH A D17-May-20218.9 KiB276201

NOTICEH A D17-May-2021237 85

README.mdH A D17-May-20212.7 KiB6245

arp.goH A D17-May-20212.2 KiB8654

buddyinfo.goH A D17-May-20212.2 KiB8656

cpuinfo.goH A D17-May-20214.3 KiB168144

crypto.goH A D17-May-20213.5 KiB132105

doc.goH A D17-May-20211.3 KiB461

fixtures.ttarH A D17-May-2021193.4 KiB5,3195,207

fs.goH A D17-May-20211.4 KiB4418

go.modH A D17-May-2021145 96

go.sumH A D17-May-2021376 54

ipvs.goH A D17-May-20215.9 KiB242189

mdstat.goH A D17-May-20215.6 KiB195134

meminfo.goH A D17-May-20218 KiB278184

mountinfo.goH A D17-May-20215.2 KiB181125

mountstats.goH A D17-May-202118.1 KiB622397

net_dev.goH A D17-May-20216.4 KiB206159

net_sockstat.goH A D17-May-20214.3 KiB164103

net_softnet.goH A D17-May-20212.8 KiB9261

net_unix.goH A D17-May-20216.6 KiB272205

proc.goH A D17-May-20216.9 KiB299206

proc_environ.goH A D17-May-20211.1 KiB3817

proc_fdinfo.goH A D17-May-20213.2 KiB12681

proc_io.goH A D17-May-20211.6 KiB6027

proc_limits.goH A D17-May-20214.6 KiB158102

proc_ns.goH A D17-May-20211.9 KiB6941

proc_psi.goH A D17-May-20213.3 KiB10154

proc_stat.goH A D17-May-20215.3 KiB193103

proc_status.goH A D17-May-20213.8 KiB162101

schedstat.goH A D17-May-20212.9 KiB11973

stat.goH A D17-May-20217.1 KiB245179

ttarH A D17-May-202111.6 KiB414328

vm.goH A D17-May-20217.7 KiB211178

xfrm.goH A D17-May-20214.8 KiB188127

zoneinfo.goH A D17-May-20216.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