Uppgradera servern automatiskt vid för lite minne

Inledning

GleSYS API kan användas till mycket – bland annat till att uppgradera minnet på en virtuell server. Nedan visar vi hur du kan skapa skript som kontrollerar hur mycket minne som är använt på servern. Vid 90% användning uppgraderas minnet till 2048 MB. Om detta läggs upp som ett cronjob får du en automatisk uppgradering av minne på din server om minnet skulle slå i taket.

Skripten körs lämpligen från crontab varje minut (anpassa skripten efter behov). Med lite utökning är det enkelt att få till uppgradering samt nedgradering i flera steg, skicka mail till sysadmin vid förändring, uppgradering av antal CPU-kärnor osv.

Om du ändrar dessa skript eller skriver helt andra lösningar, skicka gärna in de till oss så att vi kan visa upp dem. Fina skript belönas med fina rabatter!

Mer information om GleSYS API finns på Github.

Uppgradera minne med Bash

#!/bin/bash
TOTAL=`cat /proc/meminfo |grep "MemTotal" |awk {'print $2'}`
FREE=`cat /proc/meminfo |grep -E "MemFree|Cached"| awk '{s+=$2} END {print s}'`
USAGE=$((100-FREE*100/TOTAL));

if [ $USAGE -gt 90 ]; then
       /usr/bin/curl -X POST -d serverid=vz123456&memorysize=2048 -k --basic -u cl12345:API-KEY https://api.glesys.com/server/edit/
fi

Uppgradera minne med Ruby

nano /root/adjust-memory.rb
require "net/http"
require "net/https"
require "uri"


def change_memory(memory, username, api_key, server_id)
  params = { serverid: server_id, memorysize: memory }
  uri = URI.parse("https://api.glesys.com/server/edit")
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  request = Net::HTTP::Post.new(uri.request_uri)
  request.basic_auth(username, api_key)
  request.set_form_data(params)
  response = http.request(request)
  if response.code == "200"
     puts "Memory changed to #{memory}"
   end
end


def memory_usage
  total_memory = `cat /proc/meminfo |grep -E "MemTotal"|awk {'print $2'}`.strip.to_f
  free_memory = `cat /proc/meminfo |grep -E "MemFree|Cached"| awk '{s+=$2} END {print s}'`.strip.to_f
  1 - (free_memory / total_memory)
end

if ARGV.size < 3
  abort("required arguments: username apikey serverid")
end

username = ARGV[0]
api_key = ARGV[1]
server_id =ARGV[2]

memory_low=512
memory_high=1024

if memory_usage > 0.9
  puts "Increasing Memory"
  change_memory(memory_high, username, api_key, server_id)
elsif memory_usage < 0.2
  puts "Decreasing Memory"
  change_memory(memory_low, username, api_key, server_id)
end
chmod +x /root/adjust-memory.rb
crontab -e
* * * * * /root/adjust-memory.rb cl12345 API-KEY vz12345

Hittar du inte det du söker?

Kontakta oss gärna för mer information. Vi hjälper dig att komma fram till den bästa lösningen för dina behov.

Skicka e-post Ring 0200-23 88 00