This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
lijia-tsg-oam/py_src/tsg_diagnose.py
2019-07-23 11:56:52 +08:00

136 lines
4.2 KiB
Python

import sys
import syslog
import random
#define KERN_EMERG "<0>" /* system is unusable */
#define KERN_ALERT "<1>" /* action must be taken immediately */
#define KERN_CRIT "<2>" /* critical conditions */
#define KERN_ERR "<3>" /* error conditions */
#define KERN_WARNING "<4>" /* warning conditions */
#define KERN_NOTICE "<5>" /* normal but significant condition */
#define KERN_INFO "<6>" /* informational */
#define KERN_DEBUG "<7>" /* debug-level messages */
MSG_PREFIX = ['EMERG', 'ALERT', 'CRIT', 'ERR', 'WARNING', 'NOTICE', 'INFO', 'DEBUG']
def tsg_diagnose_for_app():
app_msg = ['app is not running', 'app is not running', 'app is not running', 'app maybe deadlock', 'app is reboot in 5 minute']
app_msg.append('app is running normally')
app_msg.append('app is running normally')
app_msg.append('app is running normally')
num = random.randint(1,7)
if num <= 4:
msg = "[%s] %s" %(MSG_PREFIX[num], app_msg[num])
syslog.syslog(num, msg)
print(msg)
return num
def tsg_diagnose_for_cpu():
cpu_msg = []
cpu_msg.append('CPU usage over 95%')
cpu_msg.append('CPU usage over 90%')
cpu_msg.append('CPU usage over 85%')
cpu_msg.append('CPU usage over 80%')
cpu_msg.append('CPU usage over 70%')
num = random.randint(1,7)
if num <= 4:
msg = "[%s] %s" %(MSG_PREFIX[num], cpu_msg[num])
syslog.syslog(num, msg)
print(msg)
return num
def tsg_diagnose_for_mem():
mem_msg = []
mem_msg.append('free memory less than 1%')
mem_msg.append('free memory less than 5%')
mem_msg.append('free memory less than 10%')
mem_msg.append('free memory less than 15%')
mem_msg.append('free memory less than 20%')
num = random.randint(1,7)
if num <= 4:
msg = "[%s] %s" %(MSG_PREFIX[num], mem_msg[num])
syslog.syslog(num, msg)
print(msg)
return num
def tsg_diagnose_for_disk():
disk_msg = []
disk_msg.append('disk usage over 99%')
disk_msg.append('disk usage over 95%')
disk_msg.append('disk usage over 90%')
disk_msg.append('disk usage over 85%')
disk_msg.append('disk usage over 80%')
num = random.randint(1,7)
if num <= 4:
msg = "[%s] %s" %(MSG_PREFIX[num], disk_msg[num])
syslog.syslog(num, msg)
print(msg)
return num
def tsg_diagnose_for_network():
return 7
def tsg_diagnose():
log_handle = syslog.openlog("TSG-MXN")
diagnose_level = syslog.LOG_DEBUG
#check app, not running, dead-lock
check_ret = tsg_diagnose_for_app()
if check_ret < diagnose_level:
diagnose_level = check_ret
#error, critical return immediately
if diagnose_level <= syslog.LOG_WARNING:
return diagnose_level
#check app, drop packet, traffic bps
check_ret = tsg_diagnose_for_network()
if check_ret < diagnose_level:
diagnose_level = check_ret
#error, critical return immediately
if diagnose_level <= syslog.LOG_WARNING:
return diagnose_level
#check cpu, more than 80%, 90%, 95%
check_ret = tsg_diagnose_for_cpu()
if check_ret < diagnose_level:
diagnose_level = check_ret
#error, critical return immediately
if diagnose_level <= syslog.LOG_WARNING:
return diagnose_level
#check mem, free memory less than 10%
check_ret = tsg_diagnose_for_mem()
if check_ret < diagnose_level:
diagnose_level = check_ret
#error, critical return immediately
if diagnose_level <= syslog.LOG_WARNING:
return diagnose_level
#check disk, free disk space less than 5%
check_ret = tsg_diagnose_for_mem()
if check_ret < diagnose_level:
diagnose_level = check_ret
#error, critical return immediately
if diagnose_level <= syslog.LOG_WARNING:
return diagnose_level
#if not error, output success
syslog.syslog(syslog.LOG_DEBUG, "TSG diagnose completed, all modules are running normally!")
print ("TSG diagnose completed, all modules are running normally!")
return 0
if __name__ == '__main__':
fun_res_code = tsg_diagnose()
sys.exit(fun_res_code)