Skip to content

Log Search API search timings to determine service levels

Roy Zwambag requested to merge 342072-measure-global-search-time-api into master

What does this MR do and why?

This MR will add benchmark information to search API calls, split by level (projects/groups/advanced) and type (basic/advanced), scope is already logged in the params. This will help us determine service levels for the custom global search error budget. This MR is similar to !90240 (merged)

How to set up and validate locally

  1. Run a search API call: curl --header "PRIVATE-TOKEN: <private_token> "http://gdk.test:3000/api/v4/search?scope=projects&search=flight"
  2. Check the logs for the API in log/api_json.log
{"time":"2022-07-21T08:24:50.885Z","severity":"INFO","duration_s":0.32022,"db_duration_s":0.14327,"view_duration_s":0.17695,"status":200,"method":"GET","path":"/api/v4/search","params":[{"key":"scope","value":"projects"},{"key":"search","value":"[FILTERED]"}],"host":"gdk.test","remote_ip":"192.168.178.11","ua":"curl/7.79.1","route":"/api/:version/search","user_id":1,"username":"root","token_type":"PersonalAccessToken","token_id":3,"redis_calls":9,"redis_duration_s":0.0015789999999999999,"redis_read_bytes":693,"redis_write_bytes":487,"redis_cache_calls":6,"redis_cache_duration_s":0.000913,"redis_cache_read_bytes":686,"redis_cache_write_bytes":277,"redis_shared_state_calls":2,"redis_shared_state_duration_s":0.00041,"redis_shared_state_read_bytes":3,"redis_shared_state_write_bytes":75,"redis_rate_limiting_calls":1,"redis_rate_limiting_duration_s":0.000256,"redis_rate_limiting_read_bytes":4,"redis_rate_limiting_write_bytes":135,"db_count":17,"db_write_count":0,"db_cached_count":3,"db_replica_count":0,"db_primary_count":17,"db_main_count":17,"db_ci_count":0,"db_main_replica_count":0,"db_ci_replica_count":0,"db_replica_cached_count":0,"db_primary_cached_count":3,"db_main_cached_count":3,"db_ci_cached_count":0,"db_main_replica_cached_count":0,"db_ci_replica_cached_count":0,"db_replica_wal_count":0,"db_primary_wal_count":0,"db_main_wal_count":0,"db_ci_wal_count":0,"db_main_replica_wal_count":0,"db_ci_replica_wal_count":0,"db_replica_wal_cached_count":0,"db_primary_wal_cached_count":0,"db_main_wal_cached_count":0,"db_ci_wal_cached_count":0,"db_main_replica_wal_cached_count":0,"db_ci_replica_wal_cached_count":0,"db_replica_duration_s":0.0,"db_primary_duration_s":0.031,"db_main_duration_s":0.031,"db_ci_duration_s":0.0,"db_main_replica_duration_s":0.0,"db_ci_replica_duration_s":0.0,"cpu_s":0.402826,"mem_objects":146929,"mem_bytes":27328600,"mem_mallocs":102527,"mem_total_bytes":33205760,"pid":11003,"worker_id":"puma_1","rate_limiting_gates":["search_rate_limit"],"meta.search.type":"basic","meta.search.level":"global","global_search_duration_s":0.18847699998877943,"correlation_id":"01G8FXR2B300CPSHYF31WYJ1Q7","meta.user":"root","meta.client_id":"user/1","meta.caller_id":"GET /api/:version/search","meta.remote_ip":"192.168.178.11","meta.feature_category":"global_search","request_urgency":"low","target_duration_s":5}

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Related to #342072 (closed)

Edited by Roy Zwambag

Merge request reports