metrics.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. from prometheus_client import Counter, Histogram
  2. metrics = {}
  3. def get(name):
  4. return metrics.get(name)
  5. def set_counter(name, *args, **kwargs):
  6. metrics[name] = Counter(name, *args, **kwargs)
  7. def set_histogram(name, *args, **kwargs):
  8. metrics[name] = Histogram(name, *args, **kwargs)
  9. # models.py metrics
  10. set_counter(
  11. "desecapi_captcha_content_created",
  12. "number of times captcha content created",
  13. ["kind"],
  14. )
  15. set_counter("desecapi_autodelegation_created", "number of autodelegations added")
  16. set_counter("desecapi_autodelegation_deleted", "number of autodelegations deleted")
  17. set_histogram(
  18. "desecapi_messages_queued",
  19. "number of emails queued",
  20. ["reason", "user", "lane"],
  21. buckets=[0, 1, float("inf")],
  22. )
  23. # views.py metrics
  24. set_counter(
  25. "desecapi_dynDNS12_domain_not_found", "number of times dynDNS12 domain is not found"
  26. )
  27. # crypto.py metrics
  28. set_counter(
  29. "desecapi_key_encryption_success",
  30. "number of times key encryption was successful",
  31. ["context"],
  32. )
  33. set_counter(
  34. "desecapi_key_decryption_success",
  35. "number of times key decryption was successful",
  36. ["context"],
  37. )
  38. # exception_handlers.py metrics
  39. set_counter("desecapi_database_unavailable", "number of times database was unavailable")
  40. # pdns.py metrics
  41. set_counter(
  42. "desecapi_pdns_request_success",
  43. "number of times pdns request was successful",
  44. ["method", "status"],
  45. )
  46. set_counter("desecapi_pdns_keys_fetched", "number of times pdns keys were fetched")
  47. # pdns_change_tracker.py metrics
  48. set_counter(
  49. "desecapi_pdns_catalog_updated",
  50. "number of times pdns catalog was updated successfully",
  51. )
  52. # throttling.py metrics
  53. set_counter(
  54. "desecapi_throttle_failure",
  55. "number of requests throttled",
  56. ["method", "scope", "user", "bucket"],
  57. )