1
0
مراية لـ https://github.com/postalserver/postal.git تم المزامنة 2026-01-17 05:33:35 +00:00

feat: add prometheus metrics to worker

هذا الالتزام موجود في:
Adam Cooke
2024-02-24 11:19:48 +00:00
الأصل 0fcf778a51
التزام bea7450d8f
2 ملفات معدلة مع 42 إضافات و3 حذوفات

عرض الملف

@@ -139,7 +139,15 @@ module Worker
JOBS.each do |job_class| JOBS.each do |job_class|
capture_errors do capture_errors do
job = job_class.new(logger: logger) job = job_class.new(logger: logger)
job.call
time = Benchmark.realtime { job.call }
observe_prometheus_histogram :postal_worker_job_runtime,
time,
labels: {
thread: thread,
job: job_class.to_s.split("::").last
}
if job.work_completed? if job.work_completed?
completed_work += 1 completed_work += 1
@@ -222,7 +230,18 @@ module Worker
logger.info "running task" logger.info "running task"
capture_errors { task.new(logger: logger).call } time = 0
capture_errors do
time = Benchmark.realtime do
task.new(logger: logger).call
end
observe_prometheus_histogram :postal_worker_task_runtime,
time,
labels: {
task: task.to_s.split("::").last
}
end
next_run_after = task.next_run_after next_run_after = task.next_run_after
logger.info "scheduling task to next run at #{next_run_after}" logger.info "scheduling task to next run at #{next_run_after}"
@@ -254,12 +273,20 @@ module Worker
def setup_prometheus def setup_prometheus
register_prometheus_counter :postal_worker_job_executions, register_prometheus_counter :postal_worker_job_executions,
docstring: "The number of jobs worked by a worker", docstring: "The number of jobs worked by a worker where work was completed",
labels: [:thread, :job] labels: [:thread, :job]
register_prometheus_histogram :postal_worker_job_runtime,
docstring: "The time taken to process jobs",
labels: [:thread, :job]
register_prometheus_counter :postal_worker_errors, register_prometheus_counter :postal_worker_errors,
docstring: "The number of errors encountered while processing jobs", docstring: "The number of errors encountered while processing jobs",
labels: [:error] labels: [:error]
register_prometheus_histogram :postal_worker_task_runtime,
docstring: "The time taken to process tasks",
labels: [:task]
end end
end end

عرض الملف

@@ -7,6 +7,11 @@ module HasPrometheusMetrics
registry.register(counter) registry.register(counter)
end end
def register_prometheus_histogram(name, **kwargs)
histogram = Prometheus::Client::Histogram.new(name, **kwargs)
registry.register(histogram)
end
def increment_prometheus_counter(name, labels: {}) def increment_prometheus_counter(name, labels: {})
counter = registry.get(name) counter = registry.get(name)
return if counter.nil? return if counter.nil?
@@ -14,6 +19,13 @@ module HasPrometheusMetrics
counter.increment(labels: labels) counter.increment(labels: labels)
end end
def observe_prometheus_histogram(name, time, labels: {})
histogram = registry.get(name)
return if histogram.nil?
histogram.observe(time, labels: labels)
end
private private
def registry def registry