mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
Default fn server keys should be minimal (empty) since not all stats have associated app name, fn id, etc. API tags for requests should not include "status" as this is part of responses.
55 lines
1.9 KiB
Go
55 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/fnproject/fn/api/agent"
|
|
"github.com/fnproject/fn/api/agent/drivers/docker"
|
|
"github.com/fnproject/fn/api/logs/s3"
|
|
"github.com/fnproject/fn/api/server"
|
|
// The trace package is imported in several places by different dependencies and if we don't import explicity here it is
|
|
// initialized every time it is imported and that creates a panic at run time as we register multiple time the handler for
|
|
// /debug/requests. For example see: https://github.com/GoogleCloudPlatform/google-cloud-go/issues/663 and https://github.com/bradleyfalzon/gopherci/issues/101
|
|
_ "golang.org/x/net/trace"
|
|
// EXTENSIONS: Add extension imports here or use `fn build-server`. Learn more: https://github.com/fnproject/fn/blob/master/docs/operating/extending.md
|
|
|
|
_ "github.com/fnproject/fn/api/server/defaultexts"
|
|
)
|
|
|
|
func main() {
|
|
ctx := context.Background()
|
|
funcServer := server.NewFromEnv(ctx)
|
|
|
|
registerViews()
|
|
funcServer.Start(ctx)
|
|
}
|
|
|
|
func registerViews() {
|
|
keys := []string{}
|
|
|
|
latencyDist := []float64{1, 10, 50, 100, 250, 500, 1000, 10000, 60000, 120000}
|
|
|
|
// IO buckets in Mbits (Using same buckets for network + disk)
|
|
mb := float64(131072)
|
|
ioDist := []float64{0, mb, 4 * mb, 8 * mb, 16 * mb, 32 * mb, 64 * mb, 128 * mb, 256 * mb, 512 * mb, 1024 * mb}
|
|
|
|
// Memory buckets in MB
|
|
mB := float64(1048576)
|
|
memoryDist := []float64{0, 128 * mB, 256 * mB, 512 * mB, 1024 * mB, 2 * 1024 * mB, 4 * 1024 * mB, 8 * 1024 * mB}
|
|
|
|
// 10% granularity buckets
|
|
cpuDist := []float64{0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100}
|
|
|
|
agent.RegisterAgentViews(keys, latencyDist)
|
|
agent.RegisterDockerViews(keys, latencyDist, ioDist, ioDist, memoryDist, cpuDist)
|
|
agent.RegisterContainerViews(keys, latencyDist)
|
|
|
|
// Register docker client views
|
|
docker.RegisterViews(keys, latencyDist)
|
|
|
|
// Register s3 log views
|
|
s3.RegisterViews(keys, latencyDist)
|
|
|
|
server.RegisterAPIViews(keys, latencyDist)
|
|
}
|