Package: resc
Resource checkerResc check resources(CPU,memory,disk) of target host(local or remote) and execute script.Installpip install git+https://github.com/tatsuya4649/rescUsageexample Python code.from resc import Resc

resc = Resc(
	cpu={"threshold": 80.0,"interval": 10},
	memory={"threshold": 90.0},
	disk={"threshold":75,"path":"/"},
)

@resc.register(
	trigger="* * * * *",	# crontab job time
	rescdir="rescs",	# output directory of compiled python script file
	outputfile="output",	# output file of crontab if it is fired when resource threshold is exceeded.(directory: ~/.resc/log/ + outputfile)
	ip="13.231.122.182",	# if check remote host,specify IP address
	username="ubuntu",	# if check remote host,remote host username
	call_first=True,			# call just now?
	key_path="~/.aws/ExampleSSH.pem", # if check remote host, key file path to connect remote host with SSH.
)
def hello():
	print("OVER RESOURCE!!!")

hello()How does that work?Register decorator is a decorator to prepare for resource check using given threshold of resources,host information,etc.Decorated function(above def hello()) is called function when resource threshold is exceeded.Make new python script for crontab.(~/.resc/ + rescdir)Register crontab with 3.python script and interval info(trigger argument of register decorator).If call_first argument is False(default False), decorated function is not called until resource threshold are exceeded.WARNING: Because decorated function will be compiled, it must be coded as an independent scope.bad example.import math
class Bad:
	@classmethod
	def example(self):
		return "hello world"

def bad():
	# NameError: name 'math' is not defined
	math.floor(10.9)
	Bad.example()good example.def good():
	import math
	class Bad:
		@classmethod
		def example(self):
			return "hello world"
	math.floor(10.9)Command LineCPU or Memory or Disk must be not empty.
usage: resc [-h] [-c CPU_T] [--cpu_mode CPU_MODE] [-i CPU_INTERVAL] [-m MEM_T] [--mem_mode MEM_MODE] [-d DISK_T] [-p DISK_PATH]
            [--disk_mode DISK_MODE] [--log LOG] [-s] [-q] [--not_found NOT_FOUND]

Resouce Checker.

optional arguments:
  -h, --help            show this help message and exit
  -c CPU_T, --cpu_t CPU_T
                        CPU threshold value
  --cpu_mode CPU_MODE   CPU mode
  -i CPU_INTERVAL, --cpu_interval CPU_INTERVAL
                        Time to confirm CPU threshold
  -m MEM_T, --mem_t MEM_T
                        Memory threshold value
  --mem_mode MEM_MODE   Memory mode
  -d DISK_T, --disk_t DISK_T
                        Disk threshold value
  -p DISK_PATH, --disk_path DISK_PATH
                        Disk path
  --disk_mode DISK_MODE
                        Disk mode
  --log LOG             Analize log file.receive path.
  -s, --log_server      Analize log file on GUI.
  -q                    Quiet output
  --not_found NOT_FOUND
                        for crontab. If not found script, write to logTermthreshold(cpu):  threshold that is system-wide CPU utilization as a percentage.int or float type.interval(cpu): interval is check interval time(s).int or float type.threshold(memory): threshold that is system memory utilization as a percentage.int or float type.path(disk): check the capacity of the partition according to the given path.threshold(disk): threshold that is partition utilization which containes given path.Log Analyze ServerYou can use the server to analyze the RescLog file.in python codefrom resc import start_server

# log server must be in main module.
if __name__ == "__main__":
    start_server()command lineresc --log-serkverDefualt bind host is 127.0.0.1, bind port is 55555.If you want to change them, set environment variebales. host is RESCLOGSERVER_IP, port is RESCLOGSERVER_PORT.command line(custom port version)RESCLOGSERVER_PORT=44444 resc --log-serkverThen, start log server to analyze your Resc log file.INFO:     Uvicorn running on http://127.0.0.1:55555 (Press CTRL+C to quit)
INFO:     Started reloader process [262092] using statreload
INFO:     Started server process [262094]
INFO:     Waiting for application startup.
INFO:     Application startup complete.If you accessed this url with web browser, display like this image.Select log file, display result of analyzing.Failure/Success: Whether a error has occured or not.date: Logggine date. the date when the registered function was called.over: Whether the threshold of the registered resource has been exceeded or not.script file: Called python script(compiled script).trigger function name: Registered function name.remote host: Remote host that registered resources are checked.source: 'trigger' function code.stdout: Stdout of trigger function.stderr: Stderr of trigger function.CrontabCrontab is a important element of this library.So, show 'man crontab or crontab -e' for detail of crontabRequiredPython3(>=3.6),Crontab,and python library in requirements.txt.LICENCEThis project is licensed under the terms of the MIT license.