GH GambleHub

Wagtlaýyn hatarlary saklamak

1) Näme üçin wagtlaýyn hatarlar üçin aýratyn arhitektura?

Wagt hatarlary (time series) - jübütleriň (timestamp, value) bellikli yzygiderliligi (labels), olar:
  • Ýazgylaryň ýokary tizligi (ingest) we ýygylygy.
  • Wagt zolaklaryna görä okalýar (scan + agregatlar/penjire funksiýalary).
  • Taglaryň utgaşmasy sebäpli partlaýjy kardinallyk.
  • Retenşn (saklanyş möhletiniň çäkleri) we downsampling (wagt gysylmagy) zerurlygy.
  • Şonuň üçin - ýörite saklamak modeli, gysyş formatlary we haýyşnamalaryň teswirnamalary.

2) Maglumatlaryň nusgasy we metrikleriň şertnamasy

2. 1 At we bellikler

metric_name: fil/at ýeke-täk ('http _ requests _ total', 'cpu _ usage _ seconds _ total').
labels: açar atributlary ('job', 'instance', 'dc', 'pod', 'status', 'method').
Invariantlar: adyň semantikasyny üýtgetmäň, gabat gelmeýän üýtgeşmeler ýüze çykan halatynda ('metric _ v2') wersiýalaryny goşuň.

2. 2 Hatar görnüşleri

Gauge (surat), Counter (jemi), Histogram/Summary (paýlanmalar/kwantiller), Event/Span (söwda nokatlary).
Maliýe/dykyzlyk üçin - ölçeg birliklerini we jemlenişini ýazga alyň (jemlenýär/ortaça).

2. 3 Retenşn we rollap syýasaty

Gyzgyn jikme-jiklik (sekunt/1-10 minut) → ýyly agregatlar (5m/1h) → sowuk (1d/1w).
Counter üçin - rate/deriv agregatlaryny saklamak.

3) Ýazuw ýoly: kabul etmek, buferlemek, kompakt

3. 1 Ingest-paypline

Scrape (pull, Prometheus) ýa-da push (OTLP/StatsD/Graphite), köplenç gateway/agent arkaly.
WAL-da bufer (write-ahead log), soňra segmentlere/bloklara kompaksiýa (LSM-meňzeş binagärlik).
Batching we wagt sortlamak gysyşy we tizligi ýokarlandyrýar.

3. 2 Out-of-order we dubllary gaýtadan işlemek

Rugsat penjiresi (lateness window, mysal üçin 5-15 min) + syýasat: 'drop | upsert | keep-last'.
"(series_id, timestamp)" wersiýasy bilen ýa-da "soňky ýazgy ýeňýär".

3. 3 Gysyş

Wagt bellikleri üçin Delta-of-delta, float üçin Gorilla/XOR, tutuşlygyna RLE we varint, bellikler üçin dictionary.
Blokyň iň amatly ululygy ("çanka") 1-8K nokatlar - IOPS bilen CPU arasynda ylalaşyk.

4) Saklamak shemalary: TSDB vs SQL/sütünler

4. 1 Ýöriteleşdirilen TSDB

Prometheus (lokal, gysga retenşn, PromQL, remote_write).
VictoriaMetrics/M3/InfluxDB - gorizontal masştab, uzyn retenşn, remote read.
Bloklaryň formatlary range scan + tending agregasiýalary üçin optimizirlenendir.

4. 2 Relýasiýa/sütün hereketlendirijileri

TimescaleDB (PostgreSQL): gipertablisler, wagt/giňişlik boýunça çankalar, continuous aggregates.
ClickHouse: MergeTree/TTL/materiallaşdyrylan pikirler, ajaýyp gysyş we wagt agregasiýalary.
Saýlamak - soraglaryň ekosistemasy (SQL vs PromQL), join/BI talaplary we toparyň iş ukyplary boýunça.

5) Shema we mysallar

5. 1 TimescaleDB: gipertablits + continuous 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: saklamagy jemleýän

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) Kardinallyk: ammary nädip "partlatmaly" däl

6. 1 Düzgünler

Label cardinality belgisini çäklendiriň. 'user _ id', 'request _ id', 'trace _ id' -leri goşmaň.
"Köp sanly" bellikleri kadalaşdyryň (kategoriýalar → kodlar).
LowCardinality görnüşlerini (CH), sözlükleri/bellik agaçlaryny (TSDB) ulanyň.

6. 2 Gözegçilik we alertler

Metrikler: 'series _ count', 'label _ values {label}', "gymmat" hatlaryň top-N.
Kardinallyk çäginden ýokary bolan ýagdaýynda ýazmakdan ýüz öwürmek syýasaty per tenant/job.

6. 3 Hekaýalar/gistogrammalar

high-cardinality üçin agregatlary (histogram buckets) we pre-rollup saklamak has gowudyr; kwantilleri agregatlarda onlaýn hasaplamak.

7) Retenşn, downsampling we tiered-storage

7. 1 Syýasatlar

Hot: 3-30 gün sekuntda/minutda jikme-jiklik.
Warm: 90-365 gün 5m/1h agregatlar.
Cold: gündiz agregatlarynyň ýyllary, Parquet bilen obýektiň ammaryndaky (S3/Glacier) arhiw.

7. 2 Tehnikalar

Continuous aggregates (Timescale), materiallaşdyrylan pikirler (CH), retention + rollub tasks (Victoria/M3/Influx).
Tiered storage: "gyzgyn bloklar" lokal, "sowuk" lokal keshli obýektde.

8) Haýyşlar we diller

8. 1 PromQL (mysal)

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

API boýunça 5xx ýalňyşlyk tizligini gözleýäris.

8. 2 Penjireler boýunça SQL-agregatlar

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 Anomaliýalar (eskiz)

Z-score/ESD penjire statistikasy, STL-möwsümliligiň dekompozisiýasy; netijeleri aýratyn hatarda saklamak 'anomaly = 1/0'.

9) Integrasiýa we teswirnamalar

OTLP (OpenTelemetry): metrikler/treyslar/loglar, agentlerde eksportçylar (otel-collector) → TSDB/klikhaus/obýekt.
StatsD/Graphite: ýönekeý hasaplaýjylar/taýmerler; edge proxy, mundan beýläk - ýeke formata öwrülişik.
Kafka/NATS: ingest partlamalary üçin bufer, arka fil üçin replayer; konsumerler batçam bilen ýazýarlar.

Mysal üçin Kafka → ClickHouse (psevdo):
text kafka(topic=metrics) -> stream processor (normalize/tags) -> CH INSERT INTO metrics_cpu FORMAT RowBinary

10) Elýeterlilik, HA we federasiýa

Replica/HA-jübütleri TSDB ýa-da Prometheus federasiýasy (sebit derejesi → global).
Uzak möhletli saklamak we merkezleşdirilen daşbordlar üçin Remote read/write.
Şard-by-label/time: ingest, locality po 'dc/tenant'.

11) Ammaryň özünde syn edilişi

11. 1 Metrikler

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`.
Kardinallyk: 'series _ count', top-labels.

11. 2 SLO

"QPS ≤ 500-de 1h ≤ 200 ms diapazony üçin p99 latency".
«Ingest-drop ≤ 0. 01% burst - X samples/sek".
«Compaction backlog < 10 min».

11. 3 Alertler

Ösüş 'series _ count'> %/sagatda.
Kompaksiýa nobaty/flush> bosagasy.
Доля out-of-order > N%, dedup/late-drops.

12) Howpsuzlyk we köp tenantlyk

"Tenant" boýunça izolýasiýa (açardaky bellik, aýry-aýry tablisalar/bazalar, kwotalar).
Bellikleri arassalamak (PII gadaganlygy), ölçeglere/gymmatlyklara gözegçilik etmek.
"Rahat" we ulagda şifrlemek, "duýgur" metriklere elýeterliligiň barlagy.

13) Ekspluatasiýa tejribesi

Gyzdyrmak we sowuk başlamak: "gyzgyn" bloklaryň pini, soňky N sagat prefetch.
Backfill: Pes ileri tutulýan aýry-aýry paýlaýjylar, onlaýn bilen garyşdyrylmaýar.
Shemanyň wersiýasy: paralel ýazgy (dual-write) we soňraky switch bilen göçmek.
Saklamak býudjeti: gözegçilik 'cost _ per _ TB _ month' + forecast kardinallygyň ösüşi.

14) Anti-patternler

Ýokary kardinally bellikler (user_id, uuid) → hatar partlamasy.
Retenşna → gözegçiliksiz ösüş bolmazdan "baky" hatarlar.
Batching/sortlamasyz ýazgy → erbet gysyş we IOPS tupany.
OLTP we uzyn skanerleri bir diskli howuzda garyşdyrmak.
Out-of-order syýasatynyň ýoklugy → dublikatlar we çişirmek.
Ýüzlerçe baketli gistogrammalar → bahasy × 10 peýdasyz.

15) Girizmegiň çek-sanawy

  • Metrikleri, olaryň görnüşlerini we birliklerini kesgitläň; at/bellik şertnamasyny belläň.
  • Hereketlendirijini (TSDB vs SQL/sütün) we haýyş dilini (PromQL/SQL) saýlaň.
  • Retrenşn/rollap (hot/warm/cold) we ILM daşlaryny düzüň.
  • Ingest: WAL/batch/sortlamak, out-of-order penjirelerini sazlaň.
  • Gysyşy açyň (delta-of-delta/XOR/RLE), iň amatly çeňňekler.
  • Kardinallyga gözegçilik ediň: kwotalar, alertler, ret etmek syýasaty.
  • NA/federasiýa we remote-write/okaň.
  • SLO dashbordlary we ammar metrikleri (ingest/query/storage).
  • Howpsuzlyk syýasaty/tenant izolýasiýasy we belliklerde PII ýoklugy.
  • Yzygiderli "game day": arka fil, düwün ýitmegi, ingest.

16) FAQ

Q: infrastruktura gözegçilik etmek üçin näme saýlamaly: Prometheus ýa-da ClickHouse/Timescale?
A: Milli gözegçilik we PromQL üçin - Prometheus + uzyn storage (Victoria/M3). BI/ammar ssenarileri we SQL üçin - Timescale/ClickHouse.

Q: Kwantilleri agyr summary bolmazdan nädip saklamaly?
A: Arassa baketler bilen histogramma ulanyň we soralanda kwantilleri hasaplaň; ýa-da agregatlarda t-digest/CKMS.

Q: out-of-order bilen näme etmeli?
A: Kabul ediş penjiresini (5-15 minut) we kesgitlenen dedup syýasatyny giriziň; / edge mobil telemetriýa üçin - has giň penjire.

Q: Rollup haçan gerek?
A: Elmydama 30-90 günüň dowamynda: agregatlar 10-100 × azaldýar we analitikany çaltlaşdyrýar.

Q: Logleri we metrikleri garyşdyryp bolarmy?
A: Aýratyn saklaň (dürli formatlar/soraglar). Habarlaşmak üçin Exemplar/TraceID we dashbordlary ulanyň, ýöne hemme zady bir tablisada jemlemäň.

17) Netijeler

Wagtlaýyn hatarlary netijeli saklamak - metrik şertnama + bellikleriň düzgüni, sowatly ingest (WAL/kompaksiýa), gysyş we retenşna/rollaplaryň syýasaty. Kardinallyga, NA/federasiýa gözegçiligini we agyz beklemegiň syn edilişini goşuň - we çaklap boljak p95, aýlar-ýyllar üçin ýerlikli çykdajy we ýokarlanmalara garşylyk alarsyňyz.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.