Extract register view functionality (#1056)

* WIP

* Create separate Register*Views functions that are called from main.
This commit is contained in:
Peter Jausovec
2018-06-12 09:24:21 -07:00
committed by Reed Allman
parent 6c164ff693
commit bd5150f1ac
6 changed files with 229 additions and 163 deletions

View File

@@ -421,59 +421,51 @@ func (s *store) GetCalls(ctx context.Context, filter *models.CallFilter) ([]*mod
return calls, nil
}
var (
uploadSizeMeasure *stats.Int64Measure
downloadSizeMeasure *stats.Int64Measure
func (s *store) Close() error {
return nil
}
const (
uploadSizeMetricName = "s3_log_upload_size"
downloadSizeMetricName = "s3_log_download_size"
)
func init() {
// TODO(reed): do we have to do this? the measurements will be tagged on the context, will they be propagated
// or we have to white list them in the view for them to show up? test...
var err error
appKey, err := tag.NewKey("fn_appname")
if err != nil {
logrus.Fatal(err)
}
pathKey, err := tag.NewKey("fn_path")
if err != nil {
logrus.Fatal(err)
}
var (
uploadSizeMeasure = stats.Int64(uploadSizeMetricName, "uploaded log size", "byte")
downloadSizeMeasure = stats.Int64(downloadSizeMetricName, "downloaded log size", "byte")
)
{
uploadSizeMeasure = stats.Int64("s3_log_upload_size", "uploaded log size", "byte")
err = view.Register(
&view.View{
Name: "s3_log_upload_size",
Description: "uploaded log size",
TagKeys: []tag.Key{appKey, pathKey},
Measure: uploadSizeMeasure,
Aggregation: view.Distribution(),
},
)
if err != nil {
logrus.WithError(err).Fatal("cannot create view")
}
}
{
downloadSizeMeasure = stats.Int64("s3_log_download_size", "downloaded log size", "byte")
err = view.Register(
&view.View{
Name: "s3_log_download_size",
Description: "downloaded log size",
TagKeys: []tag.Key{appKey, pathKey},
Measure: uploadSizeMeasure,
Aggregation: view.Distribution(),
},
)
if err != nil {
logrus.WithError(err).Fatal("cannot create view")
}
// RegisterViews registers views for s3 measures
func RegisterViews(tagKeys []string) {
err := view.Register(
createView(uploadSizeMeasure, view.Distribution(), tagKeys),
createView(downloadSizeMeasure, view.Distribution(), tagKeys),
)
if err != nil {
logrus.WithError(err).Fatal("cannot create view")
}
}
func (s *store) Close() error {
return nil
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 init() {