Selaa lähdekoodia

feat: custom info in frappe monitor (backport #18214) (#18216)

* feat: capture custom values in frappe monitor

lets monitor add extra info for:
- Save/Submit by doctype
- Report generation time by standard report name

(cherry picked from commit 967cc26fab)

* fix: use compact JSON representation for monitor

(cherry picked from commit 939bf872ae)

Co-authored-by: Ankush Menat <ankush@frappe.io>
version-14
mergify[bot] 2 vuotta sitten
committed by GitHub
vanhempi
commit
a14f4a9fb1
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
5 muutettua tiedostoa jossa 22 lisäystä ja 1 poistoa
  1. +1
    -0
      .github/helper/consumer_db/mariadb.json
  2. +3
    -0
      frappe/core/doctype/prepared_report/prepared_report.py
  3. +3
    -0
      frappe/desk/form/save.py
  4. +3
    -0
      frappe/desk/query_report.py
  5. +12
    -1
      frappe/monitor.py

+ 1
- 0
.github/helper/consumer_db/mariadb.json Näytä tiedosto

@@ -13,5 +13,6 @@
"root_login": "root",
"root_password": "travis",
"host_name": "http://test_site:8000",
"monitor": 1,
"server_script_enabled": true
}

+ 3
- 0
frappe/core/doctype/prepared_report/prepared_report.py Näytä tiedosto

@@ -8,6 +8,7 @@ import frappe
from frappe.desk.form.load import get_attachments
from frappe.desk.query_report import generate_report_result
from frappe.model.document import Document
from frappe.monitor import add_data_to_monitor
from frappe.utils import gzip_compress, gzip_decompress
from frappe.utils.background_jobs import enqueue

@@ -25,6 +26,8 @@ def run_background(prepared_report):
instance = frappe.get_doc("Prepared Report", prepared_report)
report = frappe.get_doc("Report", instance.ref_report_doctype)

add_data_to_monitor(report=instance.ref_report_doctype)

try:
report.custom_columns = []



+ 3
- 0
frappe/desk/form/save.py Näytä tiedosto

@@ -5,6 +5,7 @@ import json

import frappe
from frappe.desk.form.load import run_onload
from frappe.monitor import add_data_to_monitor


@frappe.whitelist()
@@ -25,6 +26,8 @@ def savedocs(doc, action):
run_onload(doc)
send_updated_docs(doc)

add_data_to_monitor(doctype=doc.doctype, action=action)

frappe.msgprint(frappe._("Saved"), indicator="green", alert=True)




+ 3
- 0
frappe/desk/query_report.py Näytä tiedosto

@@ -12,6 +12,7 @@ from frappe import _
from frappe.core.utils import ljust_list
from frappe.model.utils import render_include
from frappe.modules import get_module_path, scrub
from frappe.monitor import add_data_to_monitor
from frappe.permissions import get_role_permissions
from frappe.translate import send_translations
from frappe.utils import (
@@ -254,6 +255,8 @@ def run(

result["add_total_row"] = report.add_total_row and not result.get("skip_total_row", False)

add_data_to_monitor(report=report)

return result




+ 12
- 1
frappe/monitor.py Näytä tiedosto

@@ -25,6 +25,13 @@ def stop(response=None):
frappe.local.monitor.dump(response)


def add_data_to_monitor(**kwargs) -> None:
"""Add additional custom key-value pairs along with monitor log.
Note: Key-value pairs should be simple JSON exportable types."""
if hasattr(frappe.local, "monitor"):
frappe.local.monitor.add_custom_data(**kwargs)


def log_file():
return os.path.join(frappe.utils.get_bench_path(), "logs", "monitor.json.log")

@@ -71,6 +78,10 @@ class Monitor:
waitdiff = self.data.timestamp - job.enqueued_at
self.data.job.wait = int(waitdiff.total_seconds() * 1000000)

def add_custom_data(self, **kwargs):
if self.data:
self.data.update(kwargs)

def dump(self, response=None):
try:
timediff = datetime.utcnow() - self.data.timestamp
@@ -94,7 +105,7 @@ class Monitor:
def store(self):
if frappe.cache().llen(MONITOR_REDIS_KEY) > MONITOR_MAX_ENTRIES:
frappe.cache().ltrim(MONITOR_REDIS_KEY, 1, -1)
serialized = json.dumps(self.data, sort_keys=True, default=str)
serialized = json.dumps(self.data, sort_keys=True, default=str, separators=(",", ":"))
frappe.cache().rpush(MONITOR_REDIS_KEY, serialized)




Ladataan…
Peruuta
Tallenna