Log Search API search timings to determine service levels
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
- Run a search API call:
curl --header "PRIVATE-TOKEN: <private_token> "http://gdk.test:3000/api/v4/search?scope=projects&search=flight"
- 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.
-
I have evaluated the MR acceptance checklist for this MR.
Related to #342072 (closed)
Edited by Roy Zwambag