GH GambleHub

Ռուսական շարքերի պահպանումը

1) Ինչո՞ ւ է առանձին ճարտարապետությունը ռուսական շարքերի համար

Ժամանակավոր շարքերը (time series) զույգերի հաջորդականություններ են (timestamp, value) թեգերով (labels), որոնք բնութագրվում են

Գրառումների բարձր արագությունը (ingest) և պարբերականությունը։

Ժամանակի միջակայքով ընթերցումներ (scan + ագրեգատ/պատուհանի գործառույթներ)։

Պայթյունի կարդինալիզացիան թեգերի համադրությունների պատճառով։

Ռետենշենի կարիքը (պահեստավորման ժամկետի սահմանափակումները) և downsampling (ժամանակի սեղմումը)։

Այսպիսով 'պահեստավորման հատուկ մոդել, ֆոսֆիայի պարունակություն և հարցումների արձանագրություն։

2) Տվյալների մոդելը և մետրի պայմանագիրը

2. 1 Անուն և թեգեր

metric _ name: բայը/գոյականը միակ մեջ («htttp _ reques.ru _ total», «cpu _ usage _ seconds _ total»)։

labels: ստատուս («job», «instom», «dc», «pod», «status», «method»)։

Invariants: չփոխել անվան իմաստը, ավելացնել տարբերակները («metric _ v2») անհամատեղելի փոփոխություններով։

2. Երկու տեսակի շարքեր

Gauge (նկար), Counter (աճող արդյունքը), Histogram/Summary (բաշխում/քվանալի), Event/Moscow (Treis-կետեր)։

Ֆինանսավորման/խտության համար, գրանցեք չափման և համախմբման միավորներ (համախմբվում/կրճատվում է)։

2. 3 Ռեթենշնի և ռոլապների քաղաքականություն

Տաք մանրամասն (վայրկյաններ/1-10 րոպե) ապրում են տաք ագրեգատներ (5m/1h) - սառը (1d/1w)։

Counter-ի համար պահեք rate/deration ագրեգատները։

3) Ձայնագրման ճանապարհը 'ընդունումը, բուֆերիզացիան, 108

3. 1 Ingest-interpline

Scrape (pox, Prometheus) կամ push (OTLP/StatsD/Graphite), հաճախ gateway/agent միջոցով։

Buferization WAL-ում (write-ahead log), ապա բաղադրությունը հատվածներում/բլոկներում (LSM նման ճարտարապետություն)։

Batching-ը և ժամանակի տեսակավորումը բարձրացնում են սեղմումը և արագությունը։

3. 2 Ut-of-order և դուբլ

Ընդունումների պատուհանը (lateness), օրինակ 5-15 րոպե) + քաղաքականությունը ՝ «drop deups.ru keeep-lant»։

«(series _ id, timestamp)» տարբերակով կամ «վերջին ձայնագրությունը հաղթում է»։

3. 3 Սպիտակուցիա

Delta-of-corta ժամանակի պիտակների համար, Gorilla/XOR float, RLE և varint ամբողջ, dictionary թեստերի համար։

1-8K կետերի օպտիմալ չափը IOPS-ի և CPU-ի միջև փոխզիջումն է։

4) Պահեստավորման սխեմաները ՝ TSDB vs SQL/կոլոնիկներ

4. 1 Մասնագիտացված TSDB

Prometheus (տեղական, կարճ, PromQL, remote _ write)։

Victor.ru Metr.ru/M3/Inflect DB-ը հորիզոնական մեծացում է, երկար ռետենշն, remote read։

Բլոկների իրականացումը օպտիմիզացված է range scan + ինդեքսային ագրեգացիաների տակ։

4. 2 Ռելյացիոն/հսկայական շարժիչներ

TimescaleDB (PostgreSQL) 'հիպերտաբլիններ, ժամանակի չանկեր/տարածություն, inuus aggregates։

ClickHouse: MergeTree/TTL/նյութականացված ներկայացումներ, հիանալի ագրեսիա և ժամանակի ագրեգացիա։

Ընտրությունը հարցումների էկոհամակարգն է (SQL PromQL), Join/BI և թիմի վիրահատական հմտությունները։

5) Սխեմա և օրինակներ

5. 1 TimescaleDB: հիպերտաբլիցա + inus aggregate

sql
CREATE TABLE metrics_cpu(
ts timestamptz NOT NULL,
host text NOT NULL,
dc text NOT NULL,
usage double precision NOT NULL,
PRIMARY KEY (ts, host, dc)
);
SELECT create_hypertable('metrics_cpu', by_range('ts'), chunk_time_interval => interval '1 day');

-- Continuous unit (5 minutes)
CREATE MATERIALIZED VIEW cpu_5m
WITH (timescaledb. continuous) AS
SELECT time_bucket('5 minutes', ts) AS ts5m, host, dc, avg(usage) AS avg_usage
FROM metrics_cpu GROUP BY 1,2,3;

-- Politicians
SELECT add_retention_policy('metrics_cpu', INTERVAL '14 days');
SELECT add_retention_policy('cpu_5m',   INTERVAL '180 days');

5. 2 ClickHouse: Համախմբող պահեստավորում

sql
CREATE TABLE metrics_cpu (
ts DateTime,
host LowCardinality(String),
dc LowCardinality(String),
usage Float32
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(ts)
ORDER BY (host, dc, ts)
TTL ts + INTERVAL 14 DAY
SETTINGS index_granularity = 8192;

-- Rollup in hourly detail
CREATE MATERIALIZED VIEW cpu_1h
ENGINE = SummingMergeTree()
PARTITION BY toYYYYMM(ts)
ORDER BY (host, dc, ts)
POPULATE AS
SELECT toStartOfHour(ts) AS ts, host, dc, avg(usage) AS usage
FROM metrics_cpu GROUP BY ts, host, dc;

5. 3 Prometheus/VictoriaMetrics: remote_write

yaml global:
scrape_interval: 15s remote_write:
- url: http://vminsert:8480/insert/0/prometheus/api/v1/write

6) Կարդինալությունը 'ինչպես «պայթեցնել» պահեստը

6. 1 Կանոններ

Սահմանափակեք label cardinality (յուրահատուկ արժեքների քանակը)։ Մի միացրեք «user _ id», «request _ id», «trace _ id»։

Նորմալիզացրեք «բազմաբնույթ» թեգերը (կատեգորիայի 105)։

Օգտագործեք LowCardinality տեսակները (CH), բառարանները/պիտակների ծառերը (TSDB)։

6. 2 Վերահսկում և ալտերտեր

Մետրիկները ՝ «series _ count», «label _ values + label +,» top-N «թանկ» շարքեր։

Ձայնագրման մերժման քաղաքականությունը, երբ ավելանում է per tenault/job-ը։

6. 3 Պատմություններ/հիստոգրամներ

High-cardinality-ի համար ավելի լավ է պահել ագրեգատները (histogum buckets) և pre-rolup; Քվանտները հաշվարկել առցանց ագրեգատների վրա։

7) Reownsampling և tiered-storage

7. 1 Քաղաքականություն

Hot: 3-30 օր վայրկյան/րոպե մանրամասն։

Warm: 90-365 օր 5m/1h միավորներ։

Cold: Օրվա ագրեգատների տարիները, օբյեկտի արխիվը (S3/Glacier) Parquet-ից։

7. 2 Սարքավորում

Intinus aggregates (Timescale), նյութականացված ներկայացումներ (CH), retention + rollup tasks (Victoria/M3/Influx)։

Tiered storage: «տաք բլոկները» տեղական, «սառը» օբյեկտում տեղական քեշի հետ։

8) Հարցումներ և լեզուներ

8. 1 PromQL (օրինակ)

promql rate(http_requests_total{job="api",status=~"5.."}[5m])

Փնտրում ենք 5xx սխալների տեմպը API-ում։

8. 2 SQL ագրեգատներ պատուհանների վրա

sql
SELECT time_bucket('1h', ts) AS hour,
dc, avg(usage) AS avg, max(usage) AS pmax
FROM metrics_cpu
WHERE ts >= now() - interval '24 hours'
GROUP BY 1,2 ORDER BY 1;

8. 3 Աննոմալիա (ուրվագիծ)

Z-score/ESD-ը պատուհանի վիճակագրությամբ, STL-դեկորացիան սեզոնային։ պահել արդյունքները առանձին շարքում 'anomaly = 1/0 "։

9) Մոսկվան և արձանագրությունները

OTLP (OpenTelemetry): metrics/treiss/logs, գործակալների (otel-colector) TSDB/clichaus/օբյեկտի։

StatsD/Graphite: պարզ հաշվիչներ/թայմեր; Edge-ի վրա, ապա 'փոխակերպում մեկ ձևաչափին։

Kafka/NATS 'ingest, replayer բեքֆիլի համար։ վահանակները գրում են մարտեր։

Kafka-ի օրինակը ClickHouse (կեղծ)

text kafka(topic=metrics) -> stream processor (normalize/tags) -> CH INSERT INTO metrics_cpu FORMAT RowBinary

10) Հասանելիություն, HA և ֆեդեգրաֆիա

Replica/HA զույգերը TSDB-ն կամ Prometheus ֆեդեգրաֆիան (Ռուսաստանի գլոբալի տարածաշրջանի մակարդակը)։

Remote read/write երկարաժամկետ պահեստավորման և կենտրոնացված dashbords համար։

Shard-by-label/time: ingest-ի միատեսակ բաշխումը, dc/ten.ru-ով։

11) Ինքնավստահություն

11. 1 Մետրիկա

Ingest: `samples/sec`, `append_latency`, `wal_fsync_ms`.
Хранение: `blocks_count`, `compaction_queue_len`, `chunk_compression_ratio`.
Запросы: `query_qps`, `scan_bytes`, `p95/p99_latency`, `alloc_bytes`.

Կարդինալությունը '«series _ count», top-labels։

11. 2 SLO

«P99 latency-ը 1h-200 մզ է QPS 35500-ում»։

«Ingest-drop ≤ 0. 01% burst մինչև X samples/sec"։

«Compaction backlog < 10 min».

11. 3 Ալերտներ

Աճը 'series _ count'>% %/ժամ։

Կոմպակտի/flush> շեմն է։

Доля out-of-order > N%, dedup/late-drops.

12) Անվտանգություն և մուլտֆիլմ-տենանտիզմ

Մեկուսացումը 'tenault' (պիտակը բաների մեջ, առանձին աղյուսակներ/հիմքեր, քվոտաներ)։

Պիտակների տեղայնացումը (PII արգելքը), չափսի/արժեքների վերահսկումը։

«Հանգիստ» և տեղափոխության մեջ կոդավորումը, «զգայուն» մետրերի հասանելիության աուդիտը։

13) Վիրահատական պրակտիկա

Pin «տաք» բլոկները, www.fetch վերջին N ժամը։

Backfill: Անհատական փամփուշտներ ցածր գերակայությամբ, չխառնվել առցանց։

Սխեմայի տարբերակումը 'զուգահեռ ձայնագրությամբ (dult-write) և www.com։

Պահեստավորման բյուջեն 'վերահսկողությունը' cost _ per _ TB _ month '+ կարդինալության աճի forecom։

14) Anti-patterna

Բարձր կարդինալությամբ թեգերը (user _ id, uuid) բացատրում է շարքերի պայթյունը։

«Հավիտենական» շարքերը, առանց ռետենշինի, ապահովում են անվերահսկելի աճ։

Առանց բատչինգի/տեսակավորման ձայնագրությունը վատ ագրեսիա է և IOPS փոթորիկ։

OLTP-ի խառնուրդը և երկար սկանաները մեկ փամփուշտի վրա։

Ut-of-order քաղաքականության բացակայությունը բացատրում է կրկնօրինակները և փչացումը։

Հարյուրավոր տանկեր ունեցող հիստոգրամները նշում են 10-ի արժեքը առանց օգուտների։

15) Ներդրման չեկի ցուցակ

  • Mastriks, նրանց տեսակները և միավորները; ամրացրեք անունների/պիտակների պայմանագիրը։
  • Ընտրեք շարժիչը (TSDB vs SQL/կոլոնիկի) և հարցումների լեզուն (PromQL/SQL)։
  • Նախագծեք retenshn/rolap (hot/warm/cold) և ILM-tasks։
  • ingest: WAL/batchi/տեսակավորում, պատուհաններ out-of-order։
  • Միացրեք թեմը (delta-of-corta/XOR/RLE), օպտիմալ չանկերը։
  • Վերահսկեք կարդինալությունը 'քվոտաները, ալերտները, մերժման քաղաքականությունը։
  • Պարեք NA/ֆեդեգրաֆիա և remote-write/read.
  • Dashbords SLO և Metriks Power (ingest/query/storage)։
  • Անվտանգության քաղաքականությունը/ստենանտ մեկուսացումը և PII-ի բացակայությունը պիտակների մեջ։
  • «game day» 'backfill, հանգույցի կորուստ, ingest բարձրացում։

16) FAQ

Q: Ի՞ նչ ընտրել ենթակառուցվածքի մոնիտորինգի համար 'Prometheus կամ ClickHouse/Timescale։

A 'National մոնիտորինգի և PromQL-ի համար' Prometheus + երկար storage (Victoria/M3)։ BI/պահեստային և SQL-ի համար 'Timescale/ClickHouse-ը։

Q 'Ինչպե՞ ս պահել քվանտները առանց ծանր summary։

A: Օգտագործեք histogram-ը կոկիկ տանկերով և հաշվեք քվանալները պահանջով։ կամ t-digest/CKEA ագրեգատներում։

Q 'Ինչպե՞ ս վարվել out-of-order-ից։

Ա 'Մուտքագրեք ընդունման պատուհանը (5-15 րոպե) և դետերմինացված քաղաքականությունը dedup; բջջային/edge հեռաչափության համար պատուհանը ավելի լայն է։

Q 'Ե՞ րբ է անհրաժեշտ rollup։

A: Միշտ, երբ վերականգնվում է> 30-90 օր, ագրեգատները նվազեցնում են 10-100 չափսը և արագացնում վերլուծությունը։

Q 'Հնարավո՞ ր է խառնել լույսերն ու մետրերը։

Ա 'Պահեք առանձին (108/հարցումներ տարբեր)։ Հարաբերակցության համար օգտագործեք Exemplar/Trance ID-ը և dashbords-ը, բայց մի՛ պահեք ամեն ինչ մեկ աղյուսակում։

17) Արդյունքները

Ռուսական շարքերի արդյունավետ պահուստը մետրիկի + թեգերի կարգապահության պայմանագիրն է, գրագետ ingest (WAL/compacion), ագրեսիան և retenshn/rolaps քաղաքականությունը։ Ավելացրեք կարդինալության վերահսկողությունը, NA/ֆեդեգրաֆիան և ինքնին սթորի դիտարկումը, և դուք կստանաք կանխատեսելի p95, խելացի արժեք ամիսներ և աճի դիմադրություն։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Telegram
@Gamble_GC
Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։