mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
Users can best pick the proper range for their operating environment. Default cmd/fnserver uses some sensible defaults.
56 lines
1.9 KiB
Go
56 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{"fn_appname", "fn_path"}
|
|
apiKeys := []string{"path", "method", "status"}
|
|
|
|
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(apiKeys, latencyDist)
|
|
}
|