API վերլուծություն և արտադրողականության չափումներ
1) Ինչո՞ ւ է դա անհրաժեշտ
API-ն պլատֆորմի արյան համակարգ է։ Առանց խիստ մետրի մենք չենք կարող
ապացուցել SLO և SLA-ի կատարումը,
պլանավորվում է կառավարել հարցումների կարողությունը և տնտեսագիտությունը,
արագ տեղայնացնել քայքայումը (p99 պոչեր, 5xx),
առաջնահերթություն բիզնեսի վրա ազդելու համար։
Նպատակը 'դիտարկման միասնական մոդել, որտեղ յուրաքանչյուր հարցումը հետևում է պարագծից մինչև BD-ը համապատասխան լուծիչների և համաձայնեցված SLI-ի հետ։
2) Taksonomia metric
Տեխնոլոգիական ՝ RPS, լատենտ (p50/p95/p99), error rate (4xx/5xx), saturation (CPU, memory, 108-desc), queue Time։
Ապրանքային 'հաջողակ վիրահատություններ/րոպե, միաձուլումներ (200/total), rate-limited (429), հետքեր, օգտագործողների հատվածներ։
Արժեքը ՝ cost/request (CPU-24+ egress + BD հարցումներ), ֆիչի/endpoint, դոլար/tenant, դոլար/1K զանգեր։
3) «Ոսկու ազդանշաններ» ՝ RED և USE
RED (API-ի համար)
Rate-ը հարցումներ/վայրկյան է (endpointu/tenantu/պլան)։
Errors-4xx/5xx/429 բաժնետոմսեր և բացարձակ։
Duration-ը p50/p95/p99 end-to-end և քայլերի վրա (ingress corporation ap DB)։
USE (ռեսուրսների համար)
Utilization-ը CPU/IO/ջրանցքի բեռնումն է։
Saturation - հերթեր (run-queue, backlog, DB wait)։
Errors-ը վարորդների/թայմաուտների սխալներն են։
4) Հիմնական սահմանումները և բանաձևերը
Availability SLI: `1 − (5xx + gateway_timeout) / all_requests`.
Success SLI: '2xx/( all 35429 _ shadow) "(բացառելով" ստվերային "արգելափակումը)։
Apdex: `(|T≤T| + 0. 5 նոյեմբերի 2019 T 244T 24)/all ', որտեղ' T '- ը «լավ» շեմն է։
Tail amplification: «p99 _ total mex (p99 _ stage _ i)» - հերթերի/կազմի ներդրումը։
Error budget (ամիս) 99-ին։ 9% ՝ բյուջե = 0։ 1% ժամանակի _ ժամանակահատվածը "։
Առաջարկվող հիստոգրամ latency: "[507, 1007, 25.11, 50.11, 100.11, 250.11, 500.11, 1s, 2։ 5s, 5s]`.
5) SLI/SLO և alerting burn-rate-ում։
SLO (հանրային API) օրինակը
Հասանելիություն ՝ 3699։ 9 %/30 օր։
p95 լատենտ «GET/wallet/balet» <150 ms; «POST/payments» <400 ms։
Սխալները '5xx' <0։ 2%: «429» (հաստատուն) <1 տոկոսը ընդհանուր պայմանագրից։
Burn-rate alerta (երկու պատուհան)
Բյուջեի 2 տոկոսը 1 ժամ կամ 5 տոկոսը 6 ժամվա ընթացքում page ինժեներ է։
Օրական 10 տոկոսը կանխատեսում է RCA գերակայությունը։
6) Մեթրիկի հավաքածու (ինչ պետք է հավաքել)
Պարագծի վրա (դարպաս/WAF)
`http_requests_total{route,method,status,tenant,plan}`
"http _ request _ duration _ seconds _ bucket _ rope,..
`retries_total{reason}`, `rate_limited_total{key,policy}`
Մարմնի չափսերը '«request _ bytes», «response _ bytes»
Գյուղում
`db_client_requests_total{op,table}`, `db_latency_seconds_bucket{op}`
«cache _ ops _ total + op +, hit-rate cash արտաքին մարտահրավերներ ՝» www.bound _ calls _ total _ provider, op +, latency/սխալներ/timauts/timouts: երկարություն/ձգձգում, ռեսուրս USUSE: CPCPPPPPP PPPU PP PPU P, R, R, R, R, R, RPPPPPPPPPPPI PD, GC դադար
Բիզնես պիտակները ՝ «tenrone _ id», «region», «kyc _ level», «plan», «feature _ flag»։
7) Ճանապարհը և հարաբերակցությունը (OpenTelemetry)
W3C Trace-Exprest («traceparent», «tracestate») բոլոր հոփերում։
Փուլերը ՝ ingress wwww.authZ www.ap handler no DB/Redis/PSA/արտաքին։
Attributes/պիտակները ՝ "http. route`, `enduser. id`, `tenant. id`, `idempotency. key`, `risk. score`.
Exemplars: կապեք կետերը latency/error գրաֆիկների վրա հատուկ trace-id-ի հետ։
Sampling:- head-based 1-10% «սովորական» ճանապարհների համար,
- tail-based պոչերի համար (վերցնում ենք դանդաղ/սխալ),
- adaptive pikes- ի և պարամետրերի համար։
- Baggage: «tenault »/« risk» տեղափոխումը կտրվածքների համար առանց յուրաքանչյուր իրադարձության նշելու։
8) Լոգի 'կառուցվածք և սեփականատիրություն
Կառուցվածքային JSON; պարտադիր դաշտերը ՝ «ts», «trace _ id», «բանաձև _ id», «rope», «status», «latency _ ore», «tenae», «user _ id _ hash»։
PII քաղաքականությունը 'դիմակավորել PAN/PII; արգելեք գաղտնիքները/հոսանքները։
Sampling logs: բարձր 4xx/5xx/429 և «երկար» հարցումների համար։
9) Dashbords քարտեզ (նվազագույն հավաքածու)
1. Exec-Summary: RPS, Availability, Error-rate, p95/p99 latency, 429 տոկոսը, burn-rate բյուջեն։
2. Per-Rober: RPS/սխալների/պոչերի լավագույն էնդոինտները։ տարբերակների համեմատություն (կանարեկկա)։
3. Per-Tenault/Plan 'բեռի/արժեքի/սխալների առաջնորդներ։
4. Dependency Health: DB, cache, PSA/արտաքին - latency, սխալներ, saturation։
5. Capacity: CPU/RAM/FD, գծեր, connational pool, GC, բեռնարկղերի սահմաններ։
6. Express/Abuse: 401/403, 429/քաղաքականություն, geo/ASN կտրվածքներ, գետերի աճը։
10) Ալերտա (շեմի և տենդենցային)
"error _ rate _ rope _> 2% (5 րոպե) և RPS> N-ը։
"p99 _ latency _ critical _> ռուսական շեմն է (10 րոպե)։
«burn _ rate» կոդով (տե՛ ս 355)։
DB 'timeouts '/« deadlocks »կամ« queue _ time> X Ms »աճը։
Արտաքին պրովայդերներ ՝ "wwww.bound _ 5xx _ rate _ provider +> 1% + SLO կախվածություն։
11) Կյանքի պլանավորումը և արտադրողականությունը
Լիթլի օրենքը '«L = noww.W» (գծի միջին երկարությունը = 3.ru)։
Նպատակային p95-ը տեղադրում ենք '«ingress + ap + DB + external + queue»։
Concurrency budget: Մենք արձանագրում ենք առավելագույն միաժամանակ write վիրահատությունները։
Budget-metrika: «Ms CPU հարցման համար»; պահում ենք 30-50 տոկոսը գագաթնակետին։
Փոխազդեցությունը rate-limit-ի հետ 'չափեք հարցումների մասնաբաժինը քվոտայի «առաստաղից» և ազդեցությունը լատենտության վրա։
12) Բեռի և սինթետիկ ստուգումներ
Տեսակներ ՝ 108, bursts թիվ 10, «քայլերը», երկարաժամկետ սարահարթը, սթրեսը/chaos (նոդի սպանությունը, ցանցի ուշացումը), կրիտիկական հաճախորդների սցենարների սինթեզիկան։
Ավելացումը ՝ CPU/alloc/www.k-entention, N + 1 (SQL/HTTP), դանդաղ։
Ռեգրեսիայի վերահսկումը 'ռ95/r99/սխալների համեմատություն մինչև/դրանից հետո (կանարյան)։
13) Արժեքը (Cost-Observability)
Ծախսերի չափումները ՝ «cpu _ 24»,« egress _ bytes »,« db _ calls »,« per 1k reques.ru »։
Allocation endpoint/tenant/ficha 'API-ի unite տնտեսագիտության մասին զեկույց։
Օպտիմիզացման ալգորիթմը 'ընտրում ենք TOP-endpoints-ը' «traffic procost» (p95 հազար նպատակ)։
14) Ռուսական տենանտը և «արդարությունը»
Բոլոր հիմնական մետրերը '«tenom _ id/plan» պիտակով։
«Ծանր» հաճախորդների մասնաբաժինը p99 պոչերում։ առանձին լիմիտներ/քվոտաներ և գետերի բյուջեներ։
Արդար շեյրինգ 'ծանրաբեռնվածության դեպքում նվազեցնում ենք «բարձր» վարձակալների մասնաբաժինը։
15) iGaming/ֆինանսական առանձնահատկությունները
«kyc _ level», «risk _ tier», «payment _ method»։
SLI-ը «փողի» ճանապարհների համար («POST/deposits», «POST/withdrawals») 'ցածր 24p95, առանձին սխալների բյուջեներ։
Metriks Time-to-Wallet (TTW), ավտոբուսների մասնաբաժինը հակաֆրոդ, վճարման փոխակերպումը։
Աուդիտ 'անփոփոխ ամսագրեր ֆինանսական գործողությունների և հակաֆրոդի որոշումների համար։
16) Գործիքներ 'իրականացման պրակտիկա
Փոխաբերություն (օրինակ)
`api_http_requests_total` (counter)
`api_http_request_duration_seconds` (histogram)
`api_outbound_requests_total`, `api_db_query_duration_seconds`
`api_rate_limited_total`, `api_retry_total{reason}`
Лейблы: `route`, `method`, `status_class`, `tenant`, `region`, `version`, `canary`, `provider`, `db_table`.
Կարդինալությունը 'խուսափեք ազատ արժեքներից (user _ id), օգտագործեք «բաքեր »/հեշ։
Exemplars: Միացրեք p95/p99-ը trace-ով։
17) Անտիպատերնի
Միջին պերցենտիլների փոխարեն։ տարբերակման բացակայություն կարգավիճակի դասարանների վրա։
Չհամաձայնեցված «rome »/« path» (դինամիկ ID «vshits» պիտակների մեջ)։
Պիտակները բարձր կարդինալությամբ (rultuser _ id, IP)։
Արտաքին պրովայդերների առանձին հաշվի բացակայությունը (PSA/3rd-party)։
Ալերտները «աղմուկի» վրա (միաձայն և մեկ շեմն)։
p99-ը բացառությամբ queue time (իրական դեգրադացիա)։
18) Բժշկական պատրաստվածության վերահսկման ցուցակը
- SLI/SLO և error-budget-ը համաձայնեցված են բիզնեսի հետ։
- Միասնական հիստոգրամներ latency և կարգավիճակ-դասարաններ; p95/p99 dashbords վրա։
- Ամբողջական ուղի (OTel), լոգարանների/մետրի/թրեյսների հարաբերակցությունը։
- Alerta burn-rate (երկչափ), p99 և error-rate շեմերը։
- System-tenant/կտրման պլանը և գնի հաշվետվությունները։
- Dashbords: Exec, Per-Rope, Dependencies, Capacity, Abuse։
- Բեռի սցենարները (բուրստ/պլատո/սթրես), ավելացումը։
- Ռեթերի քաղաքականությունը ջիթերի հետ; RPS-ի վրա ռելեների ազդեցությունները։
- SLA/SLO գործընկերների և հանրային հաճախորդների համար։
- Retenshn/logs, PII պաշտպանություն։
19) TL; DR
Տեղադրեք դիտարկումը SLI/SLO և error-budget-ի շուրջ, չափեք RED/USE-ը, հավաքեք gistramms latency p95/p99 և «queue time» -ի շուրջ, տարածեք մեկ trace-id պարամետրից մինչև BD, օգտագործեք tail/aptaptive-saptive-saptling-sampling-sampling-sampling-sampling-sampling-տենանտ/ստոմոստային կտրվածքներ և երկչափ burn-rate-alerting։ Պլանավորեք պարամետրերի օրենքներով և ազդելով բիզնեսի չափումների վրա։ հակատետրերը միջին է պերցենտիլների փոխարեն, բարձր կարդինալությունը և արտաքին կախվածությունը։