inspect is a collection of operating system/application monitoring analysis libraries and utilities with an emphasis on problem detection.
Installation
- get go
- go get -u -v github.com/square/inspect/...
The above commands should install three binaries in your original $GOPATH/bin directory.
- inspect
- inspect-mysql (work in progress)
- inspect-postgres (work in progress)
Please see subdirectories for more detailed documentation
Glossary
- cmd - Directory for command line programs based on the below libraries
- os - Operating system metric measurement libraries used by inspect.
- mysql - MySQL metric reporting libraries.
- postgres - Postgres metric reporting libraries.
- metrics/metricscheck - Simple metrics libraries for golang.
Development
Development setup is a bit tricky given interaction of godep/gopath:
- Create a fork
- Setup golang workspace and set GOPATH Reference
- export GOPATH=$HOME/godev # example
- mkdir -p $GOPATH/{src,bin,pkg}
- Setup project
- mkdir -p $GOPATH/src/github.com/square
- cd $GOPATH/src/github.com/square
- git clone [email protected]:CHANGE-ME/inspect.git # change path to your fork
- cd inspect
- Setup a reference to upstream to sync changes with upstream easily etc
- git remote add upstream github.com/square/inspect.git
[s@pain inspect (master)]$ git remote -v
origin [email protected]:syamp/inspect.git (fetch)
origin [email protected]:syamp/inspect.git (push)
upstream github.com/square/inspect.git (fetch)
upstream github.com/square/inspect.git (push)
-
We use godep for vendoring and dependency management. We rewrite import paths. If you are adding a new dependency or updating one, please run
- godep save -r
-
Please format, test and lint before submitting PRs
- go fmt ./...
- go test ./...
- $GOPATH/bin/golint ./...
Testing
To run the linux tests in this repo on a non-linux machine, use the TestLinuxDockerfile in the root of the repo.
docker build -q -f TestLinuxDockerfile .
# record the image id outputted from the command ^
docker run --rm -it --entrypoint bash ${the_full_image_id_from_above}
# Once attached to the docker container, run the tests. E.g.
cd os/cpustat
go test ./...
Todo
- metriccheck uses some darkmagic and uses golang/x/tools APIs which tend to break API compat often. Need to fix it.