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

..19-Feb-2022-

internal/H19-Feb-2022-361179

.gitignoreH A D19-Feb-202211 21

.golangci.ymlH A D19-Feb-202234 54

CODE_OF_CONDUCT.mdH A D19-Feb-2022155 42

CONTRIBUTING.mdH A D19-Feb-20226.5 KiB12282

LICENSEH A D19-Feb-202211.1 KiB202169

MAINTAINERS.mdH A D19-Feb-2022102 32

MakefileH A D19-Feb-2022859 3012

Makefile.commonH A D19-Feb-20229.8 KiB303225

NOTICEH A D19-Feb-2022237 85

README.mdH A D19-Feb-20222.7 KiB6245

SECURITY.mdH A D19-Feb-2022170 74

arp.goH A D19-Feb-20222.2 KiB8654

buddyinfo.goH A D19-Feb-20222.2 KiB8656

cpuinfo.goH A D19-Feb-202212.2 KiB482430

cpuinfo_armx.goH A D19-Feb-2022681 202

cpuinfo_mipsx.goH A D19-Feb-2022700 202

cpuinfo_others.goH A D19-Feb-2022761 202

cpuinfo_ppcx.goH A D19-Feb-2022685 202

cpuinfo_riscvx.goH A D19-Feb-2022687 202

cpuinfo_s390x.goH A D19-Feb-2022663 192

cpuinfo_x86.goH A D19-Feb-2022681 202

crypto.goH A D19-Feb-20223.5 KiB154115

doc.goH A D19-Feb-20221.3 KiB461

fixtures.ttarH A D19-Feb-2022258 KiB6,5546,441

fs.goH A D19-Feb-20221.4 KiB4418

fscache.goH A D19-Feb-202215.4 KiB423298

go.modH A D19-Feb-2022198 107

go.sumH A D19-Feb-2022798 98

ipvs.goH A D19-Feb-20225.9 KiB242189

kernel_random.goH A D19-Feb-20222.1 KiB6332

loadavg.goH A D19-Feb-20221.6 KiB6339

mdstat.goH A D19-Feb-20226.2 KiB214150

meminfo.goH A D19-Feb-20228.1 KiB278184

mountinfo.goH A D19-Feb-20225.2 KiB181125

mountstats.goH A D19-Feb-202218.6 KiB639411

net_conntrackstat.goH A D19-Feb-20223.8 KiB154108

net_dev.goH A D19-Feb-20226.4 KiB206159

net_ip_socket.goH A D19-Feb-20226.6 KiB221159

net_protocols.goH A D19-Feb-20225.4 KiB181138

net_sockstat.goH A D19-Feb-20224.3 KiB164103

net_softnet.goH A D19-Feb-20222.5 KiB10360

net_tcp.goH A D19-Feb-20222.1 KiB6530

net_udp.goH A D19-Feb-20222.1 KiB6530

net_unix.goH A D19-Feb-20225.9 KiB258175

proc.goH A D19-Feb-20227.3 KiB320222

proc_cgroup.goH A D19-Feb-20223.6 KiB9955

proc_environ.goH A D19-Feb-20221.1 KiB3817

proc_fdinfo.goH A D19-Feb-20223.4 KiB13489

proc_io.goH A D19-Feb-20221.6 KiB6027

proc_limits.goH A D19-Feb-20224.8 KiB161102

proc_maps.goH A D19-Feb-20224.5 KiB210139

proc_ns.goH A D19-Feb-20221.9 KiB6941

proc_psi.goH A D19-Feb-20223.3 KiB10154

proc_smaps.goH A D19-Feb-20223.8 KiB166110

proc_stat.goH A D19-Feb-20225.3 KiB190100

proc_status.goH A D19-Feb-20224.4 KiB171107

schedstat.goH A D19-Feb-20223 KiB12276

slab.goH A D19-Feb-20223.5 KiB152118

stat.goH A D19-Feb-20227.1 KiB245179

swaps.goH A D19-Feb-20222.2 KiB9063

ttarH A D19-Feb-202211.6 KiB414328

vm.goH A D19-Feb-20227.7 KiB211178

xfrm.goH A D19-Feb-20224.8 KiB187126

zoneinfo.goH A D19-Feb-20226.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