From e2cf4d213a1bf73abb7e553467dd16a6cdf1cd53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 22 Apr 2016 14:03:16 +0000 Subject: [PATCH] add cpu_scale rules --- cpu_scale | 12 ++++++++++++ cpu_scale.tick | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100755 cpu_scale create mode 100644 cpu_scale.tick diff --git a/cpu_scale b/cpu_scale new file mode 100755 index 0000000..a104764 --- /dev/null +++ b/cpu_scale @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +s6-svc -t /run/s6/services/kapacitor-scale +s6-svc -t /run/s6/services/kapacitor +sleep 2 +set -eux + +kapacitor define \ + -name cpu_scale \ + -type stream \ + -tick /data/cpu_scale.tick \ + -dbrp metrics.default +kapacitor reload cpu_scale diff --git a/cpu_scale.tick b/cpu_scale.tick new file mode 100644 index 0000000..f710e70 --- /dev/null +++ b/cpu_scale.tick @@ -0,0 +1,45 @@ +var cpu_percentile = stream + |from() + .measurement('docker_cpu') + .where(lambda: "cont_image" =~ /sharelatex-web/ AND "cpu" == 'cpu-total') + |window() + .period(10s) + .every(1s) + |percentile('usage_percent', 95.0) + |log() + +var scale_out = cpu_percentile + @scale() + .simulate(FALSE) + .debug(TRUE) + .id('1s33') // web service + .when('percentile > 90') + .by('current + 2') + .min_instances(1) + .max_instances(6) + .cooldown('10s') + +var scale_in = cpu_percentile + @scale() + .simulate(FALSE) + .debug(TRUE) + .id('1s33') // web service + .when('percentile < 30') + .by('current - 2') + .min_instances(1) + .max_instances(6) + .cooldown('10s') + +scale_out + |influxDBOut() + .database('metrics') + .measurement('autoscaling') + .flushInterval(1d) + .buffer(1) + +scale_in + |influxDBOut() + .database('metrics') + .measurement('autoscaling') + .flushInterval(1d) + .buffer(1)