| # Contains all of the metric reporting functions for the Canary Wrappers |
| |
| # Needs to be installed prior to running |
| import psutil |
| |
| |
| cache_cpu_psutil_process = None |
| def get_metric_total_cpu_usage(psutil_process : psutil.Process): |
| global cache_cpu_psutil_process |
| |
| try: |
| if (psutil_process == None): |
| print ("ERROR - No psutil.process passed! Cannot gather metric!", flush=True) |
| return None |
| # We always need to skip the first CPU poll |
| if (cache_cpu_psutil_process != psutil_process): |
| psutil.cpu_percent(interval=None) |
| cache_cpu_psutil_process = psutil_process |
| return None |
| return psutil.cpu_percent(interval=None) |
| except Exception as e: |
| print ("ERROR - exception occurred gathering metrics!") |
| print ("Exception: " + str(e), flush=True) |
| return None |
| |
| # Note: This value is in BYTES. |
| def get_metric_total_memory_usage_value(psutil_process : psutil.Process): |
| try: |
| if (psutil_process == None): |
| print ("ERROR - No psutil.process passed! Cannot gather metric!", flush=True) |
| return None |
| return psutil.virtual_memory()[3] |
| except Exception as e: |
| print ("ERROR - exception occurred gathering metrics!") |
| print ("Exception: " + str(e), flush=True) |
| return None |
| |
| |
| def get_metric_total_memory_usage_percent(psutil_process : psutil.Process): |
| try: |
| if (psutil_process == None): |
| print ("ERROR - No psutil.process passed! Cannot gather metric!", flush=True) |
| return None |
| return psutil.virtual_memory()[2] |
| except Exception as e: |
| print ("ERROR - exception occurred gathering metrics!") |
| print ("Exception: " + str(e), flush=True) |
| return None |