swarm-autoscaler

自动化扩容插件



python代码监控prometheus

import docker
import requests
import time

client = docker.from_env()
PROMETHEUS_URL = "http://prometheus:9090/api/v1/query"
SERVICE_NAME = "my_web_service"
CPU_THRESHOLD = 0.8
CHECK_INTERVAL = 30  # 每30秒检查一次

def get_cpu_usage():
    response = requests.get(PROMETHEUS_URL, params={"query": f"avg(rate(container_cpu_usage_seconds_total{{name=\"\"}}[1m]))"})
    return float(response.json()['data']['result'][0]['value'][1])

def scale_service(replicas):
    client.services.scale(SERVICE_NAME, replicas=replicas)

while True:
    cpu_usage = get_cpu_usage()
    if cpu_usage > CPU_THRESHOLD:
        scale_service(int(cpu_usage * 10))  # 假设每个副本能处理0.1的CPU负载
    elif cpu_usage < (CPU_THRESHOLD / 2):
        scale_service(int(cpu_usage * 5))  # 假设每个副本能处理0.2的CPU负载
    time.sleep(CHECK_INTERVAL)