mirror of
https://github.com/camptocamp/odoo-cloud-platform.git
synced 2026-06-23 18:04:34 +00:00
40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
import psutil
|
|
from prometheus_client import Gauge
|
|
|
|
MEMORY_USAGE_VMS = Gauge(
|
|
"odoo_worker_memory_user_vms_mb", "Memory usage in MB", ["process", "pid"]
|
|
)
|
|
|
|
MEMORY_USAGE_RSS = Gauge(
|
|
"odoo_worker_memory_user_rss_mb", "Memory usage in MB", ["process", "pid"]
|
|
)
|
|
|
|
|
|
def get_process_info():
|
|
for process in psutil.process_iter(
|
|
["pid", "name", "memory_full_info", "cmdline", "nice"]
|
|
):
|
|
try:
|
|
if process.info["memory_full_info"]:
|
|
if process.info["nice"] == 10:
|
|
ProcessLabel = "workercron"
|
|
elif process.info["pid"] == 1:
|
|
ProcessLabel = "dispatcher"
|
|
elif any("gevent" in x for x in process.info["cmdline"]):
|
|
ProcessLabel = "gevent"
|
|
elif any("odoo" in x for x in process.info["cmdline"]):
|
|
ProcessLabel = "workerhttp"
|
|
elif any("shell" in x for x in process.cmdline()):
|
|
ProcessLabel = "OdooShell"
|
|
else:
|
|
ProcessLabel = "other"
|
|
MEMORY_USAGE_VMS.labels(ProcessLabel, process.info["pid"]).set(
|
|
process.info["memory_full_info"].rss // 1000000
|
|
)
|
|
MEMORY_USAGE_RSS.labels(ProcessLabel, process.info["pid"]).set(
|
|
process.info["memory_full_info"].vms // 1000000
|
|
)
|
|
|
|
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
|
|
continue
|