Skip to content

Commit

Permalink
Merge pull request #180 from alphagov/metrics
Browse files Browse the repository at this point in the history
Add initial metrics support
  • Loading branch information
csutter authored Jan 16, 2024
2 parents 480e5b4 + e108ee9 commit 1c68ee0
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 1 deletion.
5 changes: 4 additions & 1 deletion app/services/discovery_engine/query/search.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,10 @@ def result_set
attr_reader :query_params, :client

def response
@response ||= client.search(discovery_engine_params).response
@response ||= begin
Metrics.increment_counter(:search_requests)
client.search(discovery_engine_params).response
end
end

def discovery_engine_params
Expand Down
2 changes: 2 additions & 0 deletions app/services/discovery_engine/sync/delete.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ def call(content_id, payload_version: nil)
client.delete_document(name: document_name(content_id))

log(Logger::Severity::INFO, "Successfully deleted", content_id:, payload_version:)
Metrics.increment_counter(:delete_requests)
rescue Google::Cloud::NotFoundError => e
log(
Logger::Severity::INFO,
Expand All @@ -24,6 +25,7 @@ def call(content_id, payload_version: nil)
content_id:, payload_version:,
)
GovukError.notify(e)
Metrics.increment_counter(:failed_delete_requests)
end

private
Expand Down
2 changes: 2 additions & 0 deletions app/services/discovery_engine/sync/put.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,15 @@ def call(content_id, metadata, content: "", payload_version: nil)
)

log(Logger::Severity::INFO, "Successfully added/updated", content_id:, payload_version:)
Metrics.increment_counter(:put_requests)
rescue Google::Cloud::Error => e
log(
Logger::Severity::ERROR,
"Failed to add/update document due to an error (#{e.message})",
content_id:, payload_version:,
)
GovukError.notify(e)
Metrics.increment_counter(:failed_put_requests)
end

private
Expand Down
28 changes: 28 additions & 0 deletions app/services/metrics.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
module Metrics
CLIENT = PrometheusExporter::Client.default
COUNTERS = {
search_requests: CLIENT.register(
:counter, "search_api_v2_search_requests", "number of incoming search requests"
),
put_requests: CLIENT.register(
:counter, "search_api_v2_put_requests", "number of put requests to Discovery Engine"
),
delete_requests: CLIENT.register(
:counter, "search_api_v2_put_requests", "number of delete requests to Discovery Engine"
),
failed_put_requests: CLIENT.register(
:counter, "search_api_v2_failed_put_requests", "number of failed put requests to Discovery Engine"
),
failed_delete_requests: CLIENT.register(
:counter, "search_api_v2_failed_delete_requests", "number of failed delete requests to Discovery Engine"
),
}.freeze

def self.increment_counter(counter)
Rails.logger.warn("Unknown counter: #{counter}") and return unless COUNTERS.key?(counter)

COUNTERS[counter].observe(1)
rescue StandardError
# Metrics are best effort only, don't raise if they fail
end
end

0 comments on commit 1c68ee0

Please sign in to comment.