ããã¯ããªã«ãããããŠæžãããã®ïŒ
Prometheusã®ã¹ãã¬ãŒãžãŸããã®ããå匷ã«ããšã
Prometheusのデータ(TSDB)のSnapshotを取得して、リストアまで - CLOVER🍀
ãã¡ãã®ç¶ãã§ãä»åºŠã¯ã¹ãã¬ãŒãžã®ããã¥ã¡ã³ããèªã¿ããªãã·ã§ã³ã«ã€ããŠèŠãŠããããšæããŸãã
察象ãšããPrometheusã®ããŒãžã§ã³ã¯ã2.9.2ãšããŸãïŒããã¥ã¡ã³ãã¯2.9ïŒã
ã¡ãã£ãšèª¿ã¹ãŠã¿ããšãéå»ã®æ
å ±ãšçŸåšã®ããã¥ã¡ã³ãã®å
容ã¯ãããªãã«ç°ãªãç®æãå€ãããªã®ã§ããã®æç¹ã®
ããŒãžã§ã³ã®ããã¥ã¡ã³ããã¡ãããšç¢ºèªããæ¹ãè¯ããšæããŸãã
ãããŸã§ãçŸæç¹ïŒ2.9.2ïŒã§ã®è©±ãšããŠã
Prometheusã®ã¹ãã¬ãŒãž
Prometheusã®ã¹ãã¬ãŒãžãŸããã®ããã¥ã¡ã³ãã¯ããã¡ãã§ãã
èŠãŠãããšããã£ãããããªæãã®ããšãæžãããŠããŸãã
- Prometheusã«ã¯ãããŒã«ã«ãã£ã¹ã¯äžã«æã€æç³»åããŒã¿ããŒã¹ãå«ãŸããŠãã
- ãªãã·ã§ã³ã§ããªã¢ãŒãã®ã¹ãã¬ãŒãžã·ã¹ãã ãšçµ±åããããšãã§ãã
ãªã¢ãŒããšã®ã¹ãã¬ãŒãžã·ã¹ãã ãšçµ±åããããšã«ã€ããŠã¯ããŸãæ©äŒãæ¹ããŠèŠãŠãããŸãããã
ããããã¯ãããŒã«ã«ã¹ãã¬ãŒãžã«ã€ããŠèŠãŠãããŸãã
ããŒã«ã«ã¹ãã¬ãŒãžã«ã€ããŠ
Prometheusã®ããŒã«ã«ã®æç³»åããŒã¿ããŒã¹ã¯ãããŒã¿ãç¬èªã®ãã©ãŒãããã§ãã£ã¹ã¯ã«ä¿åããŸãã
ãã£ã¹ã¯äžã®ã¬ã€ã¢ãŠãã«ã€ããŠã§ããã以äžã®ãããªèŠçŽ ã§æ§æãããããã§ãã
- ååŸããããŒã¿ã¯ã2æéããšã®ãããã¯ã«ãŸãšãããã
- 2æéããšã®åãããã¯ã¯ã以äžã®å
容ãå«ã
- ãã®æéã®ãã¹ãŠã®ããŒã¿ãå«ãããã£ã³ã¯ãã£ã¬ã¯ããªïŒ1ã€ä»¥äžã®ãã£ã³ã¯ãã¡ã€ã«ãå«ãïŒ
- ã¡ã¿ããŒã¿ãã¡ã€ã«
- ã€ã³ããã¯ã¹ãã¡ã€ã«ïŒã¡ããªã¯ã¹åãšããã£ã³ã¯ãã¡ã€ã«å ã®æç³»åã«ã©ãã«ãä»äžãããã®ãã€ã³ããã¯ã¹ãããïŒ
- Tombstoneãã¡ã€ã«
- APIã䜿çšããŠãæç³»åããŒã¿ãåé€ããå Žåã«ã§ãããã¡ã€ã«
- ãã£ã³ã¯ãã¡ã€ã«ããããã«ããŒã¿ãåé€ãããããã§ã¯ãªã
ãŸããPrometheusã¯åéããããŒã¿ãããã«æ°žç¶åããã®ã§ã¯ãªãããŸãã¡ã¢ãªäžã«ä¿æãããŠããŸãã
Prometheusãã¯ã©ãã·ã¥ãããããŠåèµ·åããå Žåã¯ãWALïŒWrite Ahead LogïŒã䜿ãããšã§ã¯ã©ãã·ã¥ããä¿è·ãããŠããŸãã
WALã¯ã以äžã®ç¹åŸŽãæã¡ãŸãã
- ãwalããã£ã¬ã¯ããªã«128MBããšã«ä¿åãããŠãã
- ãwalããã£ã¬ã¯ããªã«å«ãŸãããã¡ã€ã«ã¯ããŸã å§çž®ãããŠããªãRawããŒã¿ãå«ãŸããŠãã
- ãã®ãããéåžžã®ãããã¯ãã¡ã€ã«ããããªã倧ãã
- Prometheusã¯æäœ3ã€ã®WALãã¡ã€ã«ãä¿æããŠãã
- é«ãã©ãã£ãã¯ãªãµãŒããŒã§ã¯ãå°ãªããšã2æéåã®RawããŒã¿ãä¿åããå¿ èŠãããããã3ã€ãè¶ ããWALãã¡ã€ã«ãã§ããããšããã
ã§ãããã¥ã¡ã³ãã«æžãããŠãããã£ã¬ã¯ããªæ§é ããã¡ãããããŸã§ç»å ŽããèŠçŽ ãæžãããŠããæãã§ããã
./data/01BKGV7JBM69T2G1BGBGM6KB12 ./data/01BKGV7JBM69T2G1BGBGM6KB12/meta.json ./data/01BKGTZQ1SYQJTR4PB43C8PD98 ./data/01BKGTZQ1SYQJTR4PB43C8PD98/meta.json ./data/01BKGTZQ1SYQJTR4PB43C8PD98/index ./data/01BKGTZQ1SYQJTR4PB43C8PD98/chunks ./data/01BKGTZQ1SYQJTR4PB43C8PD98/chunks/000001 ./data/01BKGTZQ1SYQJTR4PB43C8PD98/tombstones ./data/01BKGTZQ1HHWHV8FBJXW1Y3W0K ./data/01BKGTZQ1HHWHV8FBJXW1Y3W0K/meta.json ./data/01BKGV7JC0RY8A6MACW02A2PJD ./data/01BKGV7JC0RY8A6MACW02A2PJD/meta.json ./data/01BKGV7JC0RY8A6MACW02A2PJD/index ./data/01BKGV7JC0RY8A6MACW02A2PJD/chunks ./data/01BKGV7JC0RY8A6MACW02A2PJD/chunks/000001 ./data/01BKGV7JC0RY8A6MACW02A2PJD/tombstones ./data/wal/00000000 ./data/wal/00000001 ./data/wal/00000002
ãã詳现ãªå 容ãç¥ããããã°ãTSDBã®ããã¥ã¡ã³ããžã
tsdb/README.md at v0.7.1 · prometheus/tsdb · GitHub
ã¡ãªã¿ã«ãèµ·åçŽåŸã®dataãã£ã¬ã¯ããªã®äžèº«ã¯ããããªæãã§ãã
$ find data -type f data/wal/00000000 data/lock
lockãšãããã¡ã€ã«ã¯åºãŠããŠããŸããã§ãããã
$ ls -l data/lock -rw-r--r-- 1 xxxxx xxxxx 0 May 2 10:51 data/lock
0ãã€ãã®ãã¡ã€ã«ã§ãã
ãã®ãã¡ã€ã«ã¯ãæåéãæä»ã«äœ¿ããã¡ã€ã«ã®ããã§ããã§ã«Prometheusãèµ·åããç¶æ
ã§ããªãã¹ã³ããŒãã
å€ããŠèµ·åãããããããšãããšãããã¯ãåããã«èµ·åã«å€±æããŸãã
$ ./prometheus --web.listen-address="0.0.0.0:9091" ... level=error ts=2019-05-02T10:53:06.753Z caller=main.go:717 err="opening storage failed: lock DB directory: resource temporarily unavailable"
å ã«é²ã¿ãŸãããã
æåã®2æéã®ãããã¯ã¯ãæçµçã«ã¯ããã¯ã°ã©ãŠã³ãã§ããé·ããããã¯ã«å§çž®ãããŸãã
ããŒã«ã«ã¹ãã¬ãŒãžã®å¶é
ããŒã«ã«ã¹ãã¬ãŒãžã®å¶éã¯ãã¯ã©ã¹ã¿åããããŠãããããŸãã¬ããªã«ãæããªãããšã§ãã
ãªã®ã§ããã£ã¹ã¯ãããŒãé害察ããŠãèæ§ããããŸãããã¹ã±ãŒã©ãã«ã§ãèä¹
æ§ããªããçŽè¿ã®çåœãª
ã¹ã©ã€ãã£ã³ã°ãŠã£ã³ããŠããŒã¿ãšããŠæ±ãããã¹ãã§ãã
èä¹
æ§ã®èŠä»¶ãå³ãããªããã°ãããŒã«ã«ã¹ãã¬ãŒãžã§ãæå€§æ°å¹Žã®ããŒã¿ãä¿åã§ãããããããªãããããã®ããšã
æžãããŠããŸãâŠã
ãã®ãããã®ããšãããããŒã«ã«ã¹ãã¬ãŒãžã®ã¹ã±ãŒã©ããªãã£ãšèä¹
æ§ã«ã€ããŠã®èª²é¡ã解決ããããã«ããªã¢ãŒãã®
ã¹ãã¬ãŒãžã·ã¹ãã ãšçµ±åããä»çµã¿ãããããšããããšã¿ããã§ãã
ããŒã«ã«ã¹ãã¬ãŒãžã«é¢ãããªãã·ã§ã³
ã¹ãã¬ãŒãžã«é¢ããããã¥ã¡ã³ãã®ä»¥äžã®éšåã«ãã¹ãã¬ãŒãžã«é¢ããŠæå®ã§ãããªãã·ã§ã³ãæžãããŠããŸãã
Prometheusèªèº«ã®ãã«ãããããstorageããå«ããªãã·ã§ã³ã衚瀺ããŠã¿ããšã
$ ./prometheus -h 2>&1 | grep storage --storage.tsdb.path="data/" Base path for metrics storage. --storage.tsdb.retention=STORAGE.TSDB.RETENTION storage. This flag has been deprecated, use "storage.tsdb.retention.time" instead --storage.tsdb.retention.time=STORAGE.TSDB.RETENTION.TIME How long to retain samples in storage. When "storage.tsdb.retention". If neither this flag nor "storage.tsdb.retention" nor "storage.tsdb.retention.size" is set, the --storage.tsdb.retention.size=STORAGE.TSDB.RETENTION.SIZE --storage.tsdb.no-lockfile --storage.tsdb.allow-overlapping-blocks --storage.remote.flush-deadline=<duration> --storage.remote.read-sample-limit=5e7 --storage.remote.read-concurrent-limit=10
ã--storage.remote.ããã«ã€ããŠã¯ããªã¢ãŒãã¹ãã¬ãŒãžã·ã¹ãã ãšã®çµ±åã«é¢ãããªãã·ã§ã³ãªã®ã§ãããã§ã¯å¯Ÿè±¡å€ã
ãã®ä»ã®ãªãã·ã§ã³ã«ã€ããŠã説æãèŠãŠã¿ãŸãã
--storage.tsdb.path="data/" Base path for metrics storage. --storage.tsdb.retention=STORAGE.TSDB.RETENTION [DEPRECATED] How long to retain samples in storage. This flag has been deprecated, use "storage.tsdb.retention.time" instead --storage.tsdb.retention.time=STORAGE.TSDB.RETENTION.TIME How long to retain samples in storage. When this flag is set it overrides "storage.tsdb.retention". If neither this flag nor "storage.tsdb.retention" nor "storage.tsdb.retention.size" is set, the retention time defaults to 15d. --storage.tsdb.retention.size=STORAGE.TSDB.RETENTION.SIZE [EXPERIMENTAL] Maximum number of bytes that can be stored for blocks. Units supported: KB, MB, GB, TB, PB. This flag is experimental and can be changed in future releases. --storage.tsdb.no-lockfile Do not create lockfile in data directory. --storage.tsdb.allow-overlapping-blocks [EXPERIMENTAL] Allow overlapping blocks which in-turn enables vertical compaction and vertical query merge
ãã§ã«Deprecatedãªãªãã·ã§ã³ã¯ç¡èŠããŸãã
- --storage.tsdb.path ⊠PrometheusãããŒã¿ãä¿åããéã®ããŒã¹ãã¹ãããã©ã«ãã¯ããdataã
- --storage.tsdb.retention.time ⊠å€ãããŒã¿ããã€åé€ããããæå®ãããããã©ã«ãã¯ãã15dã
- --storage.tsdb.retention.size ⊠ïŒå®éšçïŒã¹ãã¬ãŒãžãããã¯ãæå€§ã§äœ¿çšã§ãããµã€ãºãæå®ãã
- --storage.tsdb.no-lockfile ⊠dataãã£ã¬ã¯ããªå ã«ãããã¯ãã¡ã€ã«ãäœæããªã
- --storage.tsdb.allow-overlapping-blocks ⊠ïŒå®éšçïŒãªãŒããŒã©ãããããããã¯ãèš±å¯ãããå§çž®ãã¯ãšãªãŒã®çžŠæ¹åã®ããŒãžãå¯èœã«ãªã
ã--storage.tsdb.retention.timeãã®ããã©ã«ãå€ã¯15æ¥ã§ããã©ãŒãããã«ã¯yãwãdãhãmãsãmsãå©çšã§ããŸãã
prometheus/db.go at v2.9.2 · prometheus/prometheus · GitHub
ããŒã¿ã®ä¿ææéã«é¢ãããªãã³ã·ã§ã³ããªã·ãŒã¯æéãšãµã€ãºã®2ã€ããããŸããã䜿ãããã®ã¯æåã«åäœããæ¹ã ãšãã
â»ãµã€ãºã¯ãŸã å®éšçãªã®ã§ãã¹ã«ãŒããŸããã
ã--storage.tsdb.allow-overlapping-blocksãã«ã€ããŠã¯ããŸã å®éšçãªæããããã®ã§ãã¹ã«ãŒããŸãâŠã
Implement vertical query merging and compaction · Issue #90 · prometheus/tsdb · GitHub
ãªãã2æéããšã«ãããã¯ã«ãŸãšããããããšããã®ã¯ããã®ãããããæ¥ãŠããæ°ãããŸãã
https://github.com/prometheus/prometheus/blob/v2.9.2/vendor/github.com/prometheus/tsdb/db.go#L51
ãšããã§ã§ãããPrometheusã®Web ConsoleãããStatusãâãCommand-Line FlagsããèŠããšãããå°ãæå®ã§ããããª
ãªãã·ã§ã³ãå€ãããã«èŠããã®ã§ããâŠã
ä»åã¯ããšããããæ·±è¿œãããªãâŠã
ããŒã«ã«ã¹ãã¬ãŒãžã§å¿ èŠãšãããã£ã¹ã¯å®¹é
Prometheusã¯ãã²ãšã€ã®ãµã³ãã«ãããã1ã2ãã€ãã»ã©ã䜿çšããããã§ãã
ãªã®ã§ãPrometheusãèŠæ±ãããµãŒããŒã®ãã£ã¹ã¯å®¹éã¯ã以äžã®èšç®åŒã§ç®åºã§ããŸãããšã
needed_disk_space = retention_time_seconds * ingested_samples_per_second * bytes_per_sample å¿ èŠãªãã£ã¹ã¯ãµã€ãº = ä¿ææéïŒç§ïŒ à ç§ãããã®ååŸãµã³ãã«æ° * ãµã³ãã«ãããã®ãã€ãæ°
1ç§ãããã«ååŸãããµã³ãã«ãå°ããããã«ã¯ãååŸããæç³»åããŒã¿ã®æ°ãæžããïŒåéããã¿ãŒã²ãããæžããã
ã¿ãŒã²ãããããã®ååŸé
ç®ãæžããïŒããååŸééãé·ãèšå®ãããã®ã©ã¡ããã§ãã
ããã¥ã¡ã³ãã«ãããšãååŸããããŒã¿ã¯å§çž®ããããããååŸããé ç®æ°ãæžããæ¹ã广çã ãšãã
ãªããããŒã«ã«ã¹ãã¬ãŒãžãç Žæããå Žåã¯ã以äžã®å¯ŸåŠã«ãªããšãã
- Prometheusãã·ã£ããããŠã³ããŠãããŒã¿ãã£ã¬ã¯ããªãåé€ããïŒãããæåãããïŒ
- åœç¶ãå šããŒã¿ã倱ã
- åã
ã®ãããã¯ãã£ã¬ã¯ããªãåé€ãã
- åé€ãããããã¯ã«å«ãŸããã2æéã®ããŒã¿ã¯å€±ã
ã©ã¡ãã«ãããPrometheusã®ããŒã«ã«ã¹ãã¬ãŒãžã¯é·æéã®ããŒã¿ä¿åãæå³ããŠããªãããšãããã¥ã¡ã³ãã§ã¯åŒ·èª¿ãããŠããŸãã
ããŒã¿ã®ä¿ææéãæå®ããŠã¿ã
ããã§ã¯ãããŒã¿ã®ä¿ææéãçãã«ããŠãåäœã確èªããŠã¿ãŸãããã
以äžã®ãããªãããŒã¿ã®ååŸééãçãã«ããPrometheusã®èšå®ãã¡ã€ã«ãçšæããèµ·åã
prometheus.yml
global: scrape_interval: 1s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 1s # Evaluate rules every 15 seconds. The default is every 1 minute. scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090']
ããŒã¿ã®ååŸå¯Ÿè±¡ã¯ãããã©ã«ãïŒèªåèªèº«ïŒã®ãŸãŸã§ãã
èµ·åãªãã·ã§ã³ãšããŠãæ©ãã«æ¶ããããšã確èªããããŠã--storage.tsdb.retention.timeãã3åã«èšå®ããŸããã
ããšãã--storage.tsdb.min-block-durationããæå®ããŠããŸããããªãã§ãããä»ãããã¯ãŸãåŸã§âŠã
$ ./prometheus --storage.tsdb.retention.time 3m --storage.tsdb.min-block-duration 1m level=info ts=2019-05-02T14:09:07.183Z caller=main.go:321 msg="Starting Prometheus" version="(version=2.9.2, branch=HEAD, revision=d3245f15022551c6fc8281766ea62db4d71e2747)"
Web Consoleã§ãèµ·åãªãã·ã§ã³ãèªèããŠããããšã確èªã
ãšãããããWeb Consoleã§CPUäœ¿çšæéïŒprocess_cpu_seconds_totalïŒã衚瀺ã10åéã®è¡šç€ºã§èŠãŠããŸãã
1åçµéãããšããããªãã°ãåºåãã
level=info ts=2019-05-02T14:10:44.219Z caller=compact.go:499 component=tsdb msg="write block" mint=1556806153112 maxt=1556806200000 ulid=01D9WE45RQ73CF18Y6J2BPMN1Q duration=100.343317ms level=info ts=2019-05-02T14:10:44.237Z caller=head.go:540 component=tsdb msg="head GC completed" duration=1.785374ms
ãããã¯ãã§ããŸãã
$ find data -type f data/wal/00000000 data/lock data/01D9WE45RQ73CF18Y6J2BPMN1Q/meta.json data/01D9WE45RQ73CF18Y6J2BPMN1Q/index data/01D9WE45RQ73CF18Y6J2BPMN1Q/tombstones data/01D9WE45RQ73CF18Y6J2BPMN1Q/chunks/000001
ãã®ãã°ã4ååºåããããŸã§ã¯ããããã¯ãã£ã¬ã¯ããªã远å ãããŠãããŸãã
level=info ts=2019-05-02T14:10:44.219Z caller=compact.go:499 component=tsdb msg="write block" mint=1556806153112 maxt=1556806200000 ulid=01D9WE45RQ73CF18Y6J2BPMN1Q duration=100.343317ms level=info ts=2019-05-02T14:10:44.237Z caller=head.go:540 component=tsdb msg="head GC completed" duration=1.785374ms level=info ts=2019-05-02T14:11:30.196Z caller=compact.go:499 component=tsdb msg="write block" mint=1556806200000 maxt=1556806260000 ulid=01D9WE5JP7Y6FFGZMKKS1KK2AD duration=77.507689ms level=info ts=2019-05-02T14:11:30.217Z caller=head.go:540 component=tsdb msg="head GC completed" duration=1.549613ms level=info ts=2019-05-02T14:12:30.229Z caller=compact.go:499 component=tsdb msg="write block" mint=1556806260000 maxt=1556806320000 ulid=01D9WE7D97CMB7R8RS12G9E9YW duration=109.711593ms level=info ts=2019-05-02T14:12:30.251Z caller=head.go:540 component=tsdb msg="head GC completed" duration=1.421509ms level=info ts=2019-05-02T14:13:30.197Z caller=compact.go:499 component=tsdb msg="write block" mint=1556806320000 maxt=1556806380000 ulid=01D9WE97W9WEKZCQ0957KVH2GX duration=75.948389ms level=info ts=2019-05-02T14:13:30.215Z caller=head.go:540 component=tsdb msg="head GC completed" duration=1.492116ms
ãããªæãã«ã
$ find data -type f data/wal/00000000 data/01D9WE7D97CMB7R8RS12G9E9YW/meta.json data/01D9WE7D97CMB7R8RS12G9E9YW/index data/01D9WE7D97CMB7R8RS12G9E9YW/tombstones data/01D9WE7D97CMB7R8RS12G9E9YW/chunks/000001 data/lock data/01D9WE45RQ73CF18Y6J2BPMN1Q/meta.json data/01D9WE45RQ73CF18Y6J2BPMN1Q/index data/01D9WE45RQ73CF18Y6J2BPMN1Q/tombstones data/01D9WE45RQ73CF18Y6J2BPMN1Q/chunks/000001 data/01D9WE5JP7Y6FFGZMKKS1KK2AD/meta.json data/01D9WE5JP7Y6FFGZMKKS1KK2AD/index data/01D9WE5JP7Y6FFGZMKKS1KK2AD/tombstones data/01D9WE5JP7Y6FFGZMKKS1KK2AD/chunks/000001 data/01D9WE97W9WEKZCQ0957KVH2GX/meta.json data/01D9WE97W9WEKZCQ0957KVH2GX/index data/01D9WE97W9WEKZCQ0957KVH2GX/tombstones data/01D9WE97W9WEKZCQ0957KVH2GX/chunks/000001
ããã§ã5åç®ã®ã³ã³ãã¯ã·ã§ã³ãèµ·ãããš
level=info ts=2019-05-02T14:10:44.219Z caller=compact.go:499 component=tsdb msg="write block" mint=1556806153112 maxt=1556806200000 ulid=01D9WE45RQ73CF18Y6J2BPMN1Q duration=100.343317ms level=info ts=2019-05-02T14:10:44.237Z caller=head.go:540 component=tsdb msg="head GC completed" duration=1.785374ms level=info ts=2019-05-02T14:11:30.196Z caller=compact.go:499 component=tsdb msg="write block" mint=1556806200000 maxt=1556806260000 ulid=01D9WE5JP7Y6FFGZMKKS1KK2AD duration=77.507689ms level=info ts=2019-05-02T14:11:30.217Z caller=head.go:540 component=tsdb msg="head GC completed" duration=1.549613ms level=info ts=2019-05-02T14:12:30.229Z caller=compact.go:499 component=tsdb msg="write block" mint=1556806260000 maxt=1556806320000 ulid=01D9WE7D97CMB7R8RS12G9E9YW duration=109.711593ms level=info ts=2019-05-02T14:12:30.251Z caller=head.go:540 component=tsdb msg="head GC completed" duration=1.421509ms level=info ts=2019-05-02T14:13:30.197Z caller=compact.go:499 component=tsdb msg="write block" mint=1556806320000 maxt=1556806380000 ulid=01D9WE97W9WEKZCQ0957KVH2GX duration=75.948389ms level=info ts=2019-05-02T14:13:30.215Z caller=head.go:540 component=tsdb msg="head GC completed" duration=1.492116ms level=info ts=2019-05-02T14:14:30.248Z caller=compact.go:499 component=tsdb msg="write block" mint=1556806380000 maxt=1556806440000 ulid=01D9WEB2F4SWD5FDP5EBV7BD0E duration=132.373486ms level=info ts=2019-05-02T14:14:30.270Z caller=head.go:540 component=tsdb msg="head GC completed" duration=1.201336ms
ãããã¯ãã£ã¬ã¯ããªãå¢ããªããªããŸããã01D9WE45RQ73CF18Y6J2BPMN1Qããšããååã®ãã£ã¬ã¯ããªãããªããªããŸããã
$ find data -type f data/01D9WEB2F4SWD5FDP5EBV7BD0E/meta.json data/01D9WEB2F4SWD5FDP5EBV7BD0E/index data/01D9WEB2F4SWD5FDP5EBV7BD0E/tombstones data/01D9WEB2F4SWD5FDP5EBV7BD0E/chunks/000001 data/wal/00000000 data/01D9WE7D97CMB7R8RS12G9E9YW/meta.json data/01D9WE7D97CMB7R8RS12G9E9YW/index data/01D9WE7D97CMB7R8RS12G9E9YW/tombstones data/01D9WE7D97CMB7R8RS12G9E9YW/chunks/000001 data/lock data/01D9WE5JP7Y6FFGZMKKS1KK2AD/meta.json data/01D9WE5JP7Y6FFGZMKKS1KK2AD/index data/01D9WE5JP7Y6FFGZMKKS1KK2AD/tombstones data/01D9WE5JP7Y6FFGZMKKS1KK2AD/chunks/000001 data/01D9WE97W9WEKZCQ0957KVH2GX/meta.json data/01D9WE97W9WEKZCQ0957KVH2GX/index data/01D9WE97W9WEKZCQ0957KVH2GX/tombstones data/01D9WE97W9WEKZCQ0957KVH2GX/chunks/000001
ãã®çµæãæåã®æéã®ããŒã¿ããªããªããŸããã01D9WE45RQ73CF18Y6J2BPMN1Qããšããã®ã¯ãæåã«äœããã
ãã£ã¬ã¯ããªã§ããã
ãšããããã§ãã--storage.tsdb.retention.timeãã§æå®ããä¿ææéãè¶ããããŒã¿ã¯åé€ãããŠããããšã確èªã§ããŸããã
ãšããã§ãä»åãèµ·åãªãã·ã§ã³ã«ã--storage.tsdb.retention.timeãã ãã§ã¯ãªããŠã--storage.tsdb.min-block-durationãã
æå®ããŸããã
$ ./prometheus --storage.tsdb.retention.time 3m --storage.tsdb.min-block-duration 1m
ã--storage.tsdb.min-block-durationããæå®ããããšã§ããããã¯ã®ç¯å²ã1åã«ãªã£ãŠããŸãã
æåã以äžã®ããã«ã--storage.tsdb.retention.timeããæå®ããã ãã ãšããŒã¿ããŸã£ããæ¶ãããããããããŠWALã«ããéã®
ããŒã¿ã¯å¯Ÿè±¡ã«å
¥ããªãã®ã§ã¯ïŒããšæãã倿Žã«è³ããŸããã
$ ./prometheus --storage.tsdb.retention.time 3m
ã€ãŸããé·æéåŸ ã€ã®ãå«ã§ã極端ã«çãæéãretentionã«èšå®ããã®ãå®å šã«è£ç®ã«åºãããã§ãã
å®éãåé€å¯Ÿè±¡ã¯ãããã¯åäœã®ããã§ãã
https://github.com/prometheus/prometheus/blob/v2.9.2/vendor/github.com/prometheus/tsdb/db.go#L670
ãããã¯ãã£ã¬ã¯ããªå
ã®meta.jsonãèŠããšãminTimeãšmaxTimeã§ãã©ã®æéã®ç¯å²ã®ããŒã¿ãå«ãŸããŠããã確èªããããšã
ã§ããŸãã
data/01D9WEEQN5CH9F53GAFCN3G14E/meta.json
{ "ulid": "01D9WEEQN5CH9F53GAFCN3G14E", "minTime": 1556806500000, "maxTime": 1556806560000, "stats": { "numSamples": 27120, "numSeries": 452, "numChunks": 452, "numBytes": 77220 }, "compaction": { "level": 1, "sources": [ "01D9WEEQN5CH9F53GAFCN3G14E" ] }, "version": 1 }
ãããããããããšã¯ãã--storage.tsdb.min-block-durationããèšå®ããããšã¯ãããªããããããŸãããã
ã--storage.tsdb.retention.timeãã¯ãããã¯ãã£ã¬ã¯ããªã§æã€ç¯å²ïŒããã©ã«ã2æéïŒã®åæ°ã§ãªããã°æå³ããªã
ãšããããšã§ããã
èŠããŠãããŸãããã
ãã確èªã«ãªããŸããã