fn: moving opencensus distribution buckets out of agent (#1158)

Users can best pick the proper range for their operating
environment. Default cmd/fnserver uses some sensible
defaults.
This commit is contained in:
Tolga Ceylan
2018-08-06 10:48:52 -07:00
committed by Reed Allman
parent 039fb88876
commit b6aeae3680
2 changed files with 25 additions and 22 deletions

View File

@@ -130,27 +130,21 @@ func RegisterAgentViews(tagKeys []string, latencyDist []float64) {
} }
// RegisterDockerViews creates a and registers Docker views with provided tag keys // RegisterDockerViews creates a and registers Docker views with provided tag keys
func RegisterDockerViews(tagKeys []string, latencyDist []float64) { func RegisterDockerViews(tagKeys []string, latencyDist, ioNetDist, ioDiskDist, memoryDist, cpuDist []float64) {
for _, m := range dockerMeasures { for _, m := range dockerMeasures {
var dist *view.Aggregation var dist *view.Aggregation
// Remember these are sampled by docker in short intervals (approx 1 sec) // Remember these are sampled by docker in short intervals (approx 1 sec)
// Bytes for net/disk/mem
if m.Name() == "docker_stats_net_rx" || m.Name() == "docker_stats_net_tx" { if m.Name() == "docker_stats_net_rx" || m.Name() == "docker_stats_net_tx" {
// net IO: 8k to 32MB dist = view.Distribution(ioNetDist...)
dist = view.Distribution(0, 8192, 65536, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432)
} else if m.Name() == "docker_stats_disk_read" || m.Name() == "docker_stats_disk_write" { } else if m.Name() == "docker_stats_disk_read" || m.Name() == "docker_stats_disk_write" {
// disk IO: 8k to 32MB dist = view.Distribution(ioDiskDist...)
dist = view.Distribution(0, 8192, 65536, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432)
} else if m.Name() == "docker_stats_mem_limit" || m.Name() == "docker_stats_mem_usage" { } else if m.Name() == "docker_stats_mem_limit" || m.Name() == "docker_stats_mem_usage" {
// memory: 128K to 32MB dist = view.Distribution(memoryDist...)
dist = view.Distribution(0, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432)
} else if m.Name() == "docker_stats_cpu_user" || m.Name() == "docker_stats_cpu_total" || m.Name() == "docker_stats_cpu_kernel" { } else if m.Name() == "docker_stats_cpu_user" || m.Name() == "docker_stats_cpu_total" || m.Name() == "docker_stats_cpu_kernel" {
// percentages dist = view.Distribution(cpuDist...)
dist = view.Distribution(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
} else { } else {
// Not used yet. // Not used yet.
dist = view.Distribution(latencyDist...) dist = view.Distribution(latencyDist...)

View File

@@ -25,22 +25,31 @@ func main() {
} }
func registerViews() { func registerViews() {
// Register views in agent package
keys := []string{"fn_appname", "fn_path"} keys := []string{"fn_appname", "fn_path"}
dist := []float64{1, 10, 50, 100, 250, 500, 1000, 10000, 60000, 120000} apiKeys := []string{"path", "method", "status"}
agent.RegisterAgentViews(keys, dist) latencyDist := []float64{1, 10, 50, 100, 250, 500, 1000, 10000, 60000, 120000}
agent.RegisterDockerViews(keys, dist)
agent.RegisterContainerViews(keys, dist) // 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 // Register docker client views
docker.RegisterViews(keys, dist) docker.RegisterViews(keys, latencyDist)
// Register s3 log views // Register s3 log views
s3.RegisterViews(keys, dist) s3.RegisterViews(keys, latencyDist)
apiKeys := []string{"path", "method", "status"} server.RegisterAPIViews(apiKeys, latencyDist)
apiDist := []float64{0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 16, 20, 25, 30, 40, 50, 65, 80, 100, 130, 160, 200, 250, 300, 400, 500, 650, 800, 1000, 2000, 5000, 10000, 20000, 50000, 100000}
server.RegisterAPIViews(apiKeys, apiDist)
} }