inspector

command module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 31, 2023 License: Apache-2.0 Imports: 7 Imported by: 0

README

inspector

🕵️ inspector is a simple tool to compare HTTP Content between 2 origin.

It's originally designed for our web cache proxy hitori.

Feel free to use it for other purposes.

Structure

Usage

Get and Compile
git clone https://github.com/bocchi-the-cache/inspector.git
cd inspector
make build

Binary file and default config file will be generated in dist/inspector-VERSION/inspector

Config

A default config file in dist/inspector-VERSION/config/config.yaml

http:
  listen_port: 4399

host:
  baseline:
    "127.0.0.1:9090"
  test:
    "127.0.0.1:8080"

storage:
  base_case_path:
    "bad_case"

Change baseline and test address to your own server address. If http content is different, the content will be saved in bad_case directory.

Run
./dist/inspector-VERSION/inspector
Check

There several check status between baseline and test http content. The checking order is also same as below.

  • FETCH_ERROR: either baseline or test can't be fetched.
  • STATUS_NOT_MATCH: http status code is different.
  • EMPTY_CONTENT: either baseline or test http body is empty.
  • STATUS_NOT_200/206_SKIP: http status code is same, but not 200/206.
  • CONTENT_NOT_MATCH: http body is different.
  • PASS: http body is same.
Logs

log/log.txt logs inspector's running status.

log/result.txt logs the result of compare.

Bad body content will be saved in bad_case directory.

Monitoring

Metrics are exposed on /metrics endpoint. You can use Prometheus/Grafana to monitor inspector and results.

var (
	RequestReceiveTotalCounter = prometheus.NewCounterVec(prometheus.CounterOpts{
		Name: "bocchi_inspector_request_receive_total",
		Help: "total number of requests received",
	}, []string{"node", "method", "host"})

	RequestSendTotalCounter = prometheus.NewCounterVec(prometheus.CounterOpts{
		Name: "bocchi_inspector_request_send_total",
		Help: "total number of requests sent",
	}, []string{"node", "method", "host", "dst", "status"})

	ResultTotalCounter = prometheus.NewCounterVec(prometheus.CounterOpts{
		Name: "bocchi_inspector_result_total",
		Help: "result of http content checking",
	}, []string{"node", "method", "status"})

	ErrorTotalCounter = prometheus.NewCounterVec(prometheus.CounterOpts{
		Name: "bocchi_inspector_error_total",
		Help: "error of inspector",
	}, []string{"node", "method", "process", "error"})

	ElapsedMonitor = prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Name:    "RequestTimeConsumingStatistics",
		Help:    "api request elapsed time histogram",
		Buckets: []float64{0.1, 0.5, 1, 5, 10, 20, 50, 100, 500, 1000, 5000},
	}, []string{"node", "process"})
)

Practice

A possible practice is to use inspector to monitor web cache.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL