Files
fn-serverless/cmd/fnserver/main.go
Tolga Ceylan 5a9118ff32 fn: default fnserver tag keys and api key adjustment (#1261)
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.
2018-10-04 15:58:21 -07:00

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)
}