Skip to content
This repository has been archived by the owner on Mar 24, 2022. It is now read-only.

Add platform label to worker metrics #275

Merged
merged 1 commit into from May 24, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions api/workerserver/heartbeat.go
Expand Up @@ -44,11 +44,13 @@ func (s *Server) HeartbeatWorker(w http.ResponseWriter, r *http.Request) {
metric.WorkerContainers{
WorkerName: registration.Name,
Containers: registration.ActiveContainers,
Platform: registration.Platform,
}.Emit(s.logger)

metric.WorkerVolumes{
WorkerName: registration.Name,
Volumes: registration.ActiveVolumes,
Platform: registration.Platform,
}.Emit(s.logger)

savedWorker, err := s.dbWorkerFactory.HeartbeatWorker(registration, ttl)
Expand Down
16 changes: 12 additions & 4 deletions metric/emitter/prometheus.go
Expand Up @@ -130,7 +130,7 @@ func (config *PrometheusConfig) NewEmitter() (metric.Emitter, error) {
Name: "containers",
Help: "Number of containers per worker",
},
[]string{"worker"},
[]string{"worker", "platform"},
)
prometheus.MustRegister(workerContainers)

Expand All @@ -141,7 +141,7 @@ func (config *PrometheusConfig) NewEmitter() (metric.Emitter, error) {
Name: "volumes",
Help: "Number of volumes per worker",
},
[]string{"worker"},
[]string{"worker", "platform"},
)
prometheus.MustRegister(workerVolumes)

Expand Down Expand Up @@ -347,27 +347,35 @@ func (emitter *PrometheusEmitter) workerContainersMetric(logger lager.Logger, ev
if !exists {
logger.Error("failed-to-find-worker-in-event", fmt.Errorf("expected worker to exist in event.Attributes"))
}
platform, exists := event.Attributes["platform"]
if !exists {
logger.Error("failed-to-find-platform-in-event", fmt.Errorf("expected platform to exist in event.Attributes"))
}

containers, ok := event.Value.(int)
if !ok {
logger.Error("worker-volumes-event-value-type-mismatch", fmt.Errorf("expected event.Value to be an int"))
}

emitter.workerContainers.WithLabelValues(worker).Set(float64(containers))
emitter.workerContainers.WithLabelValues(worker, platform).Set(float64(containers))
}

func (emitter *PrometheusEmitter) workerVolumesMetric(logger lager.Logger, event metric.Event) {
worker, exists := event.Attributes["worker"]
if !exists {
logger.Error("failed-to-find-worker-in-event", fmt.Errorf("expected worker to exist in event.Attributes"))
}
platform, exists := event.Attributes["platform"]
if !exists {
logger.Error("failed-to-find-platform-in-event", fmt.Errorf("expected platform to exist in event.Attributes"))
}

volumes, ok := event.Value.(int)
if !ok {
logger.Error("worker-volumes-event-value-type-mismatch", fmt.Errorf("expected event.Value to be an int"))
}

emitter.workerVolumes.WithLabelValues(worker).Set(float64(volumes))
emitter.workerVolumes.WithLabelValues(worker, platform).Set(float64(volumes))
}

func (emitter *PrometheusEmitter) httpResponseTimeMetrics(logger lager.Logger, event metric.Event) {
Expand Down
8 changes: 6 additions & 2 deletions metric/metrics.go
Expand Up @@ -111,6 +111,7 @@ func (event SchedulingJobDuration) Emit(logger lager.Logger) {

type WorkerContainers struct {
WorkerName string
Platform string
Containers int
}

Expand All @@ -122,14 +123,16 @@ func (event WorkerContainers) Emit(logger lager.Logger) {
Value: event.Containers,
State: EventStateOK,
Attributes: map[string]string{
"worker": event.WorkerName,
"worker": event.WorkerName,
"platform": event.Platform,
},
},
)
}

type WorkerVolumes struct {
WorkerName string
Platform string
Volumes int
}

Expand All @@ -141,7 +144,8 @@ func (event WorkerVolumes) Emit(logger lager.Logger) {
Value: event.Volumes,
State: EventStateOK,
Attributes: map[string]string{
"worker": event.WorkerName,
"worker": event.WorkerName,
"platform": event.Platform,
},
},
)
Expand Down