RESC(RESource Checker)
Project description
Resource checker
Resc check resources(CPU,memory,disk) of target host(local or remote) and execute script.
Install
pip install git+https://github.com/tatsuya4649/resc
Usage
example 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 Line
CPU 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 log
Term
threshold(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 Server
You can use the server to analyze the RescLog file.
in python code
from resc import start_server
# log server must be in main module.
if __name__ == "__main__":
start_server()
command line
resc --log-serkver
Defualt 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-serkver
Then, 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.
Crontab
Crontab is a important element of this library.So, show 'man crontab or crontab -e' for detail of crontab
Required
Python3(>=3.6),Crontab,and python library in requirements.txt.
LICENCE
This project is licensed under the terms of the MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file resc-0.1.0.tar.gz
.
File metadata
- Download URL: resc-0.1.0.tar.gz
- Upload date:
- Size: 342.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83b87fe81ec381e0556982eda47391d5375b82f59ad559e904335e0398a2fbaa |
|
MD5 | 309fdfc6571701c9c6cb98b7f4272615 |
|
BLAKE2b-256 | 87f559cb15808b8c438c6fd997597433a26f478cf54d73755ad687c7da1bd02c |