mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
Extract register view functionality (#1056)
* WIP * Create separate Register*Views functions that are called from main.
This commit is contained in:
committed by
Reed Allman
parent
6c164ff693
commit
bd5150f1ac
@@ -10,12 +10,13 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"go.opencensus.io/stats/view"
|
||||
"go.opencensus.io/tag"
|
||||
|
||||
"github.com/fnproject/fn/api/common"
|
||||
"github.com/fsouza/go-dockerclient"
|
||||
"github.com/sirupsen/logrus"
|
||||
"go.opencensus.io/stats"
|
||||
"go.opencensus.io/stats/view"
|
||||
"go.opencensus.io/tag"
|
||||
"go.opencensus.io/trace"
|
||||
)
|
||||
|
||||
@@ -102,10 +103,10 @@ type dockerWrap struct {
|
||||
}
|
||||
|
||||
func init() {
|
||||
dockerRetriesMeasure = makeMeasure("docker_api_retries", "docker api retries", "", view.Sum())
|
||||
dockerTimeoutMeasure = makeMeasure("docker_api_timeout", "docker api timeouts", "", view.Count())
|
||||
dockerErrorMeasure = makeMeasure("docker_api_error", "docker api errors", "", view.Count())
|
||||
dockerOOMMeasure = makeMeasure("docker_oom", "docker oom", "", view.Count())
|
||||
dockerRetriesMeasure = makeMeasure("docker_api_retries", "docker api retries", "")
|
||||
dockerTimeoutMeasure = makeMeasure("docker_api_timeout", "docker api timeouts", "")
|
||||
dockerErrorMeasure = makeMeasure("docker_api_error", "docker api errors", "")
|
||||
dockerOOMMeasure = makeMeasure("docker_oom", "docker oom", "")
|
||||
}
|
||||
|
||||
var (
|
||||
@@ -116,6 +117,41 @@ var (
|
||||
dockerOOMMeasure *stats.Int64Measure
|
||||
)
|
||||
|
||||
// RegisterViews creates and registers views with provided tag keys
|
||||
func RegisterViews(tagKeys []string) {
|
||||
err := view.Register(
|
||||
createView(dockerRetriesMeasure, view.Sum(), tagKeys),
|
||||
createView(dockerTimeoutMeasure, view.Count(), tagKeys),
|
||||
createView(dockerErrorMeasure, view.Count(), tagKeys),
|
||||
createView(dockerOOMMeasure, view.Count(), tagKeys),
|
||||
)
|
||||
if err != nil {
|
||||
logrus.WithError(err).Fatal("cannot register view")
|
||||
}
|
||||
}
|
||||
|
||||
func createView(measure stats.Measure, agg *view.Aggregation, tagKeys []string) *view.View {
|
||||
return &view.View{
|
||||
Name: measure.Name(),
|
||||
Description: measure.Description(),
|
||||
Measure: measure,
|
||||
TagKeys: makeKeys(tagKeys),
|
||||
Aggregation: agg,
|
||||
}
|
||||
}
|
||||
|
||||
func makeKeys(names []string) []tag.Key {
|
||||
tagKeys := make([]tag.Key, len(names))
|
||||
for i, name := range names {
|
||||
key, err := tag.NewKey(name)
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
tagKeys[i] = key
|
||||
}
|
||||
return tagKeys
|
||||
}
|
||||
|
||||
func (d *dockerWrap) retry(ctx context.Context, logger logrus.FieldLogger, f func() error) error {
|
||||
var i int
|
||||
var err error
|
||||
@@ -357,28 +393,6 @@ func (d *dockerWrap) Stats(opts docker.StatsOptions) (err error) {
|
||||
//return err
|
||||
}
|
||||
|
||||
func makeMeasure(name string, desc string, unit string, agg *view.Aggregation) *stats.Int64Measure {
|
||||
appKey, err := tag.NewKey("fn_appname")
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
pathKey, err := tag.NewKey("fn_path")
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
|
||||
measure := stats.Int64(name, desc, unit)
|
||||
err = view.Register(
|
||||
&view.View{
|
||||
Name: name,
|
||||
Description: desc,
|
||||
TagKeys: []tag.Key{appKey, pathKey},
|
||||
Measure: measure,
|
||||
Aggregation: agg,
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
logrus.WithError(err).Fatal("cannot create view")
|
||||
}
|
||||
return measure
|
||||
func makeMeasure(name string, desc string, unit string) *stats.Int64Measure {
|
||||
return stats.Int64(name, desc, unit)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user