Skip to content

Commit

Permalink
Add -docker-container-name to signal we should exec varnishstat in a …
Browse files Browse the repository at this point in the history
…container with 'docker exec <container-name>'.
  • Loading branch information
jonnenauha committed Jun 28, 2018
1 parent dea6207 commit 4d2c382
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 6 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
1.4.1
=====
* `-docker-container-name` to signal that `varnishstat` should be ran in a docker container with `docker exec <container-name>` .

1.4
===
* Standard non Varnish prometheus metrics need to now be enabled with `-with-go-metrics`. Before they were included by default. Now dropped to export less clutter that majority of users will never need (@nipuntalukdar).
Expand Down
14 changes: 9 additions & 5 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,12 @@ var (
)

type startParams struct {
ListenAddress string
Path string
HealthPath string
VarnishstatExe string
Params *varnishstatParams
ListenAddress string
Path string
HealthPath string
VarnishstatExe string
VarnishDockerContainer string
Params *varnishstatParams

Verbose bool
NoExit bool
Expand Down Expand Up @@ -79,6 +80,9 @@ func init() {
flag.StringVar(&StartParams.Params.Instance, "n", StartParams.Params.Instance, "varnishstat -n value.")
flag.StringVar(&StartParams.Params.VSM, "N", StartParams.Params.VSM, "varnishstat -N value.")

// docker
flag.StringVar(&StartParams.VarnishDockerContainer, "docker-container-name", StartParams.VarnishDockerContainer, "Docker container name to exec varnishstat in.")

// modes
version := false
flag.BoolVar(&version, "version", version, "Print version and exit")
Expand Down
25 changes: 25 additions & 0 deletions test/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
version: "2"
services:
varnish:
image: eeacms/varnish
ports:
- "5081:6081"
- "5085:6085"
depends_on:
- hello_world
environment:
BACKENDS: "hello_world"
BACKENDS_PORT: "5090"
DNS_ENABLED: "true"
BACKENDS_PROBE_INTERVAL: "3s"
BACKENDS_PROBE_TIMEOUT: "1s"
BACKENDS_PROBE_WINDOW: "3"
BACKENDS_PROBE_THRESHOLD: "2"
DASHBOARD_USER: "admin"
DASHBOARD_PASSWORD: "admin"
DASHBOARD_SERVERS: "varnish"
DASHBOARD_DNS_ENABLED: "true"
hello_world:
image: eeacms/hello
environment:
PORT: "5090"
7 changes: 6 additions & 1 deletion varnish.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,12 @@ func ScrapeVarnishFrom(buf []byte, ch chan<- prometheus.Metric) ([]byte, error)
// Returns the result of 'varnishtat' with optional command line params.
func executeVarnishstat(varnishstatExe string, params ...string) (*bytes.Buffer, error) {
buf := &bytes.Buffer{}
cmd := exec.Command(varnishstatExe, params...)
var cmd *exec.Cmd
if len(StartParams.VarnishDockerContainer) == 0 {
cmd = exec.Command(varnishstatExe, params...)
} else {
cmd = exec.Command("docker", append([]string{"exec", "-t", StartParams.VarnishDockerContainer, varnishstatExe}, params...)...)
}
cmd.Stdout = buf
cmd.Stderr = buf
return buf, cmd.Run()
Expand Down

0 comments on commit 4d2c382

Please sign in to comment.