diff --git a/glide.yaml b/glide.yaml index 1e17b0ca..07c8dba0 100644 --- a/glide.yaml +++ b/glide.yaml @@ -5,3 +5,6 @@ import: - package: golang.org/x/net subpackages: - websocket +- package: github.com/prometheus/client_golang + subpackages: + - prometheus diff --git a/router/metrics.go b/router/metrics.go new file mode 100644 index 00000000..03afd6eb --- /dev/null +++ b/router/metrics.go @@ -0,0 +1,21 @@ +package router + +import ( + "github.com/prometheus/client_golang/prometheus" + "net/http" +) + +// Pump message send counter +var pumpMsgSend *prometheus.CounterVec + +func init() { + pumpMsgSend = prometheus.NewCounterVec( + prometheus.CounterOpts{ + Name: "pump_msg_send", + Help: "Number of message sent", + }, + []string{"container_id"}, + ) + prometheus.MustRegister(pumpMsgSend) + HttpHandlers.Register(func() http.Handler { return prometheus.Handler() }, "metrics") +} diff --git a/router/pump.go b/router/pump.go index d7d7ee8f..91e7f00b 100644 --- a/router/pump.go +++ b/router/pump.go @@ -11,6 +11,7 @@ import ( "time" "github.com/fsouza/go-dockerclient" + "github.com/prometheus/client_golang/prometheus" ) var allowTTY bool @@ -354,6 +355,7 @@ func newContainerPump(container *docker.Container, stdout, stderr io.Reader) *co } return } + pumpMsgSend.With(prometheus.Labels{"container_id": container.ID}).Inc() cp.send(&Message{ Data: strings.TrimSuffix(line, "\n"), Container: container,