metrics.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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 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 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. # serializers metrics
  39. set_counter(
  40. "desecapi_records_serializer_validate_length",
  41. "number of attempts to provision an overly long RRset",
  42. )
  43. set_counter(
  44. "desecapi_records_serializer_validate_blocked_subnet",
  45. "number of attempts to provision addresses from a blocked subnet",
  46. ["blocked_subnet"],
  47. )
  48. # exception_handlers.py metrics
  49. set_counter("desecapi_database_unavailable", "number of times database was unavailable")
  50. # pdns.py metrics
  51. set_counter(
  52. "desecapi_pdns_request_success",
  53. "number of times pdns request was successful",
  54. ["method", "status"],
  55. )
  56. set_counter(
  57. "desecapi_pdns_request_failure",
  58. "number of times pdns request failed",
  59. ["method", "path", "status"],
  60. )
  61. set_counter("desecapi_pdns_keys_fetched", "number of times pdns keys were fetched")
  62. # pdns_change_tracker.py metrics
  63. set_counter(
  64. "desecapi_pdns_catalog_updated",
  65. "number of times pdns catalog was updated successfully",
  66. )
  67. # throttling.py metrics
  68. set_counter(
  69. "desecapi_throttle_failure",
  70. "number of requests throttled",
  71. ["method", "scope", "user", "bucket"],
  72. )