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
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user