如今有不少客戶很關心應用的自動彈性伸縮,有些客戶也有本身的監控框架,並但願能跟阿里雲容器服務進行集成。阿里雲容器服務提供了服務彈性伸縮觸發器,並可以跟監控框架集成來實現自定義的服務自動彈性伸縮。
阿里雲容器服務會自動採集容器的監控數據,並能夠經過集成將監控數據發送到三方的監控框架中。有了監控數據,咱們能夠在監控框架中定義本身的報警規則,當指標發生報警的時候調用阿里雲容器服務提供的觸發器來進行容器的擴容或者縮容。 下面用Influxdb,Kapacitor來介紹怎樣經過觸發器跟監控框架集成實現自定義彈性伸縮。docker
調用sale out的時候須要添加參數&type=scale_out&step=2.post
包括監控時序數據庫Influxdb, 監控報警框架Kapacitor,及界面展示Grafana. 咱們能夠用一個模板來部署:阿里雲
version: '2' services: influxdb: image: influxdb:0.13 ports: - "8083:8083" - "8086:8086" container_name: "influxdb" labels: aliyun.monitoring.addon.influxdb: "http://influxdb:8086" grafana: image: grafana/grafana:3.0.3-1463994644 ports: - "3000:3000" links: - influxdb kapacitor: image: kapacitor:0.13 ports: - "9092:9092" volumes: - /etc/acs/:/etc/acs/ environment: - KAPACITOR_INFLUXDB_0_URLS_0=http://influxdb:8086 command: kapacitord -config /etc/kapacitor/kapacitor.conf
模板中經過標籤「 aliyun.monitoring.addon.influxdb」來指定將阿里雲容器服務中的監控數據發送到Influxdb.spa
在阿里雲容器服務中增長一個模板,並經過模板建立應用:code
部署好的應用:regexp
經過Web遠程終端或者Docker Exec進入Kapacitor容器, 增長報警規則,好比咱們對CPU指標設置報警規則,建立/etc/acs/cpu.tick文件,內容以下:cdn
stream
// Select just the cpu measurement from our example database. |from() .measurement('docker_container_cpu') |groupBy('aliyun.cluster', 'aliyun.service.id') |alert() .crit(lambda: "aliyun.cluster"=='xxxxx' AND "aliyun.service.id"=='xxxxx' AND usage_percent" > 70) .post('https://cs.console.aliyun.com/hook/trigger?triggerUrl=YzM5NmRiNDg yYWRhODQwMDJhNjRmNWVhZjcxZjU1ZTllfG5naW54LWRlZmF1bHR8cmVkZXBsb3l8MThtZHFxbXJkNXJ kaHw=&secret=xxx&&type=scale_out&step=1') .log('/tmp/alerts.log')
這裏對監控的CPU指標"docker_container_cpu"按集羣及服務進行聚合而後判斷當usage_percent>70的時候進行服務擴容。
相似,咱們也能夠增長一個縮容的報警規則。
kapacitor define cpu_alert -type stream -tick cpu_alert.tick -dbrp telegraf.default; kapacitor enable cpu_alert
這樣當CPU的使用率超過70%的時候,會自動調用擴容觸發器進行容器的擴容。