ααΌαααααΆααα·αααααααααααΈαααααααΆ (TSDB) αα
αααα»α Prometheus 2 ααΊααΆα§ααΆα αααααααα’αααααααααααΆααα·αααααααααααααααααΌαααΆααααααα’ααααΆαααααΎααΆααααα»α v2 αα
αααα»α Prometheus 1 ααΆααααααΉαααααΏααααααΌααααα»ααα·αααααα ααΆαααααα·ααααα·αααα½α αα·αααααα·αααααΆαααααΆαα ααΎααααα»αα’αα»αααα Prometheus 2 αα
αααα»α Percona Monitoring and Management (PMM) α αΎααααα»αααΆαα±ααΆααααααΈααΆαα’αα»αααααααα Prometheus 2 TSDB α αα
αααα»αα’αααααααααααα»αααΉααα·ααΆαα’αααΈααααααααααΆαααααααααΆαααααα
ααα·ααΆαααΆαααΆαααΆααααααααα Prometheus
αααααΆααα’ααααααααααΆαααααααααΆαααΆαα½αααΌαααααΆααα·αααααααααααααααΌαα
ααααα»αααΆαααΆα Prometheus ααααααΆααΊαα½αα±ααα
αΆααα’αΆααααααααΆααα α’ααααΆααααΆααααααΌααααα»ααα·ααααααααΆααα·ααααΆααΆαααΆααααααααΆαα ααΆααααααΆααααΆαααααααα’ααααααα½ααα·αα·αααααααΎαααααΆαααΆα
ααα½αααααααααΌα
ααααΆ α αΎαα αααααΆαα
ααΆααααααααααααΆααααααΌαααΊαα
ααΆαααααΎαα»αααααααΆαα’αΆα
ααααΈαααααααααααα αα½αααΆαα½αα
ααα½αααΌα
ααΆααΆαααΆααααΏααααα·ααααααααΆααααααααααααΆααααααααΆα αα·αα’αΆα
ααααΆααααααΆαα αααααααα ααΌα
ααΆααααΎααααα’αααααααΎ α’αΆα
αααααΆαα±ααααΆαααΆααααα»αα‘αΎα αααααΈααΆααααα·ααααααΆααααΈαααααΆααααααα»αααΆαααΆαααΆαα
αααΎααααααα
αααα»αααΆαααααΎααααα
ααα‘α»ααααααααΎααααα αααα»αααΆααααααααΎαααααααΆααααα»αααΆααααααΌααααα»ααα·ααααααα αααα»αααΆαααΆαααααααΆα Prometheus 2.3.2 αααα
αααααααΆαα½α Go 1.10.1 (ααΆααααααα PMM 1.14) αα
ααΎααααΆαααα Linode αααααααΎααααααΈααααα
ααΆαααααΎαααααααΆααααααααΆααα’ααααααΌαααΆαα’αα»αααααα
ααΎαααΆαααΈααα Linode αααααΆαααααΌααα·αααα·αα
ααα½αααααΆαααΈ αα·αα’αααα
αα
αΆαααα α 32 GB αααααααΎαααΆαααΆαααΆααααααααα»αα
ααα½α 20 αααα½ααα·αα·αααααααα» MySQL α
ααα½αααΈαααα α¬αα
αααα»ααααααααα Prometheus, 800 ααααα
, 440 scrapes αααα»ααα½ααα·ααΆααΈ, 380 ααΆαααααααααααΆαααα»ααα½ααα·ααΆααΈ, αα·α 1,7 ααΆααααααΈαααααααΆαααααα
ααΆααα ααΆ
αα·ααΈααΆαααααααααααΆααααΌαααααΆααα·αααααααααααααΈ αα½αααΆααααΆαααααΎααααΆααααα Prometheus 1.x ααΊααΎααααΈ storage.tsdb.min-block-duration
ααααααααααααααααααΆααααα»ααααα»αα’αααα
αα
αΆα αα»αααααααααΌααα
ααΆααααΆα (ααααΆαααΎαααΊ 2 αααα)α α
ααα½αααα’αααα
αα
αΆααααααααΌαααΆαααΉαα’αΆαααααααΎα
ααα½ααααααΈαααααααΆ ααααΆα αα·αααααααααααΆααααααααα
αααα»αααααααΈαα
αΌααα»αααα αα
αααα»αααααααααααααα αααΆα Prometheus ααΆααααααααααααΎ 3 αααααα»ααα½ααααααααααΆ (ααααΌ) α αααααΆααα·αααα αααααΌαααΆαα’αααα
αα
αΆαααΊαααααααΆαα
αααΎαα
αααααΈααΆααΆα’αΆα
ααααααα
ααΆααααααααααα ααααα»αααααα ααΆαα·αααααΌαααΆαααααΆαα±ααααααααα
ααΆααααααααααΆααααααα ααΌα
ααααα’αααααααΌαααΆααααααα±αααααααα±αα Prometheus ααΌαα’αααα
αα
αΆαα
αααΎαααΆααααααΆααΆαααΆααααααΆααααααα»αααΆαααΆαααααα’αααα
ααααα·αααΎαα·αααΆαα’αααα
αα
αΆααααααααααΆααααΎααααΈααΆααααααΆαα
αΌααααααααααα Prometheus ααΉαααΆαααααααΆαα
αα
αΆα α¬ααΆααα OOM ααΉααα
αααααΆα
ααΆααααααα swap ααΎααααΈαααααΆαααααΆαααΆαααα
αααααα Prometheus α’ααα’αααα
αα
αΆααα·αααΆαα·αα’αΆα
αα½αααΆααα ααΈαααααααΆαααααΎααααΆαααα»αααΆααααααααΎα±ααααΆαααααΎααααΆααα’αααα
αα
αΆααααα»αα αααα»ααα·αααΆααΆααΆα’αααΈαααααααΌαααααΎααΆαα½α Go αααααΆα’ααααααααΌαααααΆα αα·ααα·ααΈαααααΆαααααααΆαααΆαα½αααΆαααααΌα
αα·ααΈααΆααααααα½αα±ααα
αΆααα’αΆαααααααα½ααααααΊααααααα
ααΆαααααααααααα»αααααΆααααααααΌααααα αΌααα
αααα»αααΆααα
αααααΆααααΆαααα½α αααα½αα±ααααΆαααΆααααΆααΆααααΈααΆαα
αΆααααααΎαααααΎαααΆαα
ααΌα
αααα’αααα’αΆα
ααΎαααΎαααΈααααΆα αα ααΆαα αΌααα
ααΆαααΎαα‘αΎααααααΆααααΈαααααααααα ααααα·αααΎα’αααααααΆααααααΌααααΆαααΆαααααα min-block-duration αα
αα½ααααα αααααΆααααααα‘αΎααα·αααΆαααααααΉαααΎαα‘αΎααααααΆαααααα αααα
αΆααααααΎααααααΆααααΈαααααααααα
ααααα·αααΎα’αααα
ααααααΎααα αα·αααααΆα αααααααααααααα»αααΆαααα‘αΎα Prometheus ααααα’ααα α’αααα’αΆα
ααααΎααΆααΆα
ααΎαααΆααααα»αααααααα½αα α
ααΆ αααα»αααααΆα αααααααΌαααΆααααααΆαα»ααααα»αααα·α αααα»ααααααΆααα·ααααααα
αΆααα’αΆα
ααααΆαααΆαααα mmap()
. ααΆαα»αααααΆαααααααΌαααΆαααΎααααΈααααααα
ααΆααααααααααααΆαααααααΆααααΆα
ααααα‘αα ααα»ααααααααΆααααααΆα’αααααααΌααα»αααααααααααααααααααααΆαααααααΆααααααΆαααααααΆααααααααααααααα·ααααα·ααΆα ααααα·αααΎα’αααα
αααα½ααα·ααααααα
αΆααααΆαα’αααΈααααααα»αααααΆαα’αΆα
αααα»αααΆαα
αααααααΆααααααΆααΆαααααΎααααΆααα’αααα
αα
αΆααα·αααα·α Prometheus ααΉαααΎααα
αααααααΆαα ααααα·ααααααΆα’αααΈαααααααΌααααα½αααΆαααααααααα
α
ααα»α
αα
ααΆαα½αα±ααα
αΆααα’αΆαααααααα½ααααααΊααΆαααααΎααααΆαα WAL (ααααααααααα ααα»ααΆαα»α) α ααΌα
αααα’αααα’αΆα
ααΎαααΎαααΈα―αααΆααααα»α Prometheus ααααΎ WAL ααΎααααΈαααααΆαααΆαααΆααα ααΆα’αα»αα ααααααΆαααΆααααΆαααααααΆααααΆαααΆααΆααΆααααααΆαααΆαααΈαα·ααααααα·ααααααααΊαα·αααΆαα―αααΆαααααΉαααααΌαααα Prometheus αααα 2.3.2 αααα
αΌα WAL αα
ααΆααααααΆαα 10 αα·ααΆααΈ α αΎααααααΎαααααα·αα’αΆα
ααααααα
ααΆααααααααα’αααααααΎααααΆααααΆαααα
ααΆαααααα½α
Prometheus TSDB ααααΌαααΆααα ααΆα‘αΎαααΌα ααΆα αΆα LSM (Log Structured Merge)α αααα»αααααΆαααααΌαααΆαα αΌαααΆαααΆαααααααα ααΈα αααααααααααααααΆαααααα½ααα½ααααα αΌαααααΆααΌααααα»αααΆα αααΎαααΆαα½αααααΆ ααΎααααΈαααααΆαααΆαααααααααα»αα αααΎαααααααα»αα’αα‘α»αααααααα½αα αα ααΈαααα’αααα’αΆα ααΎαααΎαα ααα½ααααα»αααααααα»αααΆααααααααα ααΎααααααααααΆααααααααααΆααααΈαα½αααααααααΆααααα»αα
ααααα·αααΎα’αααα
ααααααααααααααααα’αααΈα αΆα α’αααα’αΆα
αα·αα·αααααΎαα―αααΆα meta.json αααααΆαααααααΆαα’αααΈαααα»ααααααΆα αα·αααααααααα½αααΆααΎαα‘αΎαα
{
"ulid": "01CPZDPD1D9R019JS87TPV5MPE",
"minTime": 1536472800000,
"maxTime": 1536494400000,
"stats": {
"numSamples": 8292128378,
"numSeries": 1673622,
"numChunks": 69528220
},
"compaction": {
"level": 2,
"sources": [
"01CPYRY9MS465Y5ETM3SXFBV7X",
"01CPYZT0WRJ1JB1P0DP80VY5KJ",
"01CPZ6NR4Q3PDP3E57HEH760XS"
],
"parents": [
{
"ulid": "01CPYRY9MS465Y5ETM3SXFBV7X",
"minTime": 1536472800000,
"maxTime": 1536480000000
},
{
"ulid": "01CPYZT0WRJ1JB1P0DP80VY5KJ",
"minTime": 1536480000000,
"maxTime": 1536487200000
},
{
"ulid": "01CPZ6NR4Q3PDP3E57HEH760XS",
"minTime": 1536487200000,
"maxTime": 1536494400000
}
]
},
"version": 1
}
ααΆαααααα½ααα αααα»α Prometheus ααααΌαααΆαα αααααΆαααα ααΉααααααααΆααααααα»αααααΆαααααΌαααΆαα αΌααα ααΆαα αα αααααα ααααα·ααααα·ααΆαααααααααΆα αααΎαα’αΆα ααααΌαααΆαα’αα»ααααα
ααΆαααα αΆαααΆααΆαααααα½ααα·αααααΌαααΆααααααααΆααααααααΆαααΆαα½αα‘αΎα α αΎαα’αΆα
αααααΆαα±ααααΆαααΆααααααΎα I/O ααααααΆαααααα‘α»ααααααααα·ααααα·α
ααΆαααΎαα‘αΎαααααααα»ααααΈααΈααΌ
ααΆααΆααα·αααΆαα αααααα₯αααα·ααα’αα·αααααΆαααΎααααΏααααααααααα α αΎααααααΆααααααααΆαααα αΆαααααααααααααααααααααΆααααΆααααα»α LSM αααααα ααΎααααΌαααααΎααΆαααααα½αααΎααααΈααΆααααα’ααααΆααααΎαα»ααααααααααα·αααααα±ααααΆαααΆαα
αααΆαα
αααΎαααααα?
ααΆαααααΎααααΆααα’αααα
αα
αΆααααα»αααααΎαααΆαααααα½αααααΎααα
αα½αα’ααα
αΆααα’αΆαααααααααααα
ααΎαα’αΆα
ααΎαααΎαααΈααααααααααααΆααααΈααΆαααααα½α α’αααα
αα
αΆαααΆαα
αααΎαααααΆααααααΌαααααΆαααΆαααΈααααΆαααααααΆαααα
ααΆα₯ααα·αααααα αααααΆααααααΆααααααΆαααααΆααααααααααΌαααΆαααα
ααααΈααΈαααα α
ααααΉαααΆααΎααΆααααΌαααΆαααααΎαα
ααΈααα fadvice()
α¬αα
αα
αααααααααα½αα’αααααααΆαααααααα α¬αααααΆαααααααΆαααααααΆααααααΌαααΆαααααααααΈαααα»ααααααααΌαααΆαααααααΆαααα‘α»ααααααααα½α?
ααΆαααΎαα‘αΎααα·ααααααΆααααΈααΆααααΆααα
ααΆαααΎαα‘αΎααα·αααΈααΆααααΆαααααααΌαααΆααααααααΆ αα·ααααααΆααα ααα»ααααααα’α αααααΆααααΆαααααααΈαα αΌααααααααααααΆαα½αααΆααααα»ααα½ααα·ααΆααΈ αααα»αααααΌααααα αΆααααα αα 25 ααΆααΈαααααααααααΆαααΎαα‘αΎααα·αααααΌαααΆαα’αα»ααααααααα·αααΈααααΆα SSD α
level=info ts=2018-09-13T13:38:14.09650965Z caller=main.go:222 msg="Starting Prometheus" version="(version=2.3.2, branch=v2.3.2, revision=71af5e29e815795e9dd14742ee7725682fa14b7b)"
level=info ts=2018-09-13T13:38:14.096599879Z caller=main.go:223 build_context="(go=go1.10.1, user=Jenkins, date=20180725-08:58:13OURCE)"
level=info ts=2018-09-13T13:38:14.096624109Z caller=main.go:224 host_details="(Linux 4.15.0-32-generic #35-Ubuntu SMP Fri Aug 10 17:58:07 UTC 2018 x86_64 1bee9e9b78cf (none))"
level=info ts=2018-09-13T13:38:14.096641396Z caller=main.go:225 fd_limits="(soft=1048576, hard=1048576)"
level=info ts=2018-09-13T13:38:14.097715256Z caller=web.go:415 component=web msg="Start listening for connections" address=:9090
level=info ts=2018-09-13T13:38:14.097400393Z caller=main.go:533 msg="Starting TSDB ..."
level=info ts=2018-09-13T13:38:14.098718401Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536530400000 maxt=1536537600000 ulid=01CQ0FW3ME8Q5W2AN5F9CB7R0R
level=info ts=2018-09-13T13:38:14.100315658Z caller=web.go:467 component=web msg="router prefix" prefix=/prometheus
level=info ts=2018-09-13T13:38:14.101793727Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536732000000 maxt=1536753600000 ulid=01CQ78486TNX5QZTBF049PQHSM
level=info ts=2018-09-13T13:38:14.102267346Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536537600000 maxt=1536732000000 ulid=01CQ78DE7HSQK0C0F5AZ46YGF0
level=info ts=2018-09-13T13:38:14.102660295Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536775200000 maxt=1536782400000 ulid=01CQ7SAT4RM21Y0PT5GNSS146Q
level=info ts=2018-09-13T13:38:14.103075885Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536753600000 maxt=1536775200000 ulid=01CQ7SV8WJ3C2W5S3RTAHC2GHB
level=error ts=2018-09-13T14:05:18.208469169Z caller=wal.go:275 component=tsdb msg="WAL corruption detected; truncating" err="unexpected CRC32 checksum d0465484, want 0" file=/opt/prometheus/data/.prom2-data/wal/007357 pos=15504363
level=info ts=2018-09-13T14:05:19.471459777Z caller=main.go:543 msg="TSDB started"
level=info ts=2018-09-13T14:05:19.471604598Z caller=main.go:603 msg="Loading configuration file" filename=/etc/prometheus.yml
level=info ts=2018-09-13T14:05:19.499156711Z caller=main.go:629 msg="Completed loading of configuration file" filename=/etc/prometheus.yml
level=info ts=2018-09-13T14:05:19.499228186Z caller=main.go:502 msg="Server is ready to receive web requests."
αααα αΆα ααααααααααΎαααΆαααΎαα‘αΎααα·αααΊααΆαααααΎααααΆααα’αααα αα αΆααααααα αααααΈααΆααΆααα·ααααααΆαα αααα»αααααΆαααΆαααααααΆαααΆαααΈαααα’αΆα ααααΎαααΆααααααααααααααααΆαααΆαα½αααΉαα ααα½αα’αααα αα αΆαααΌα ααααΆααααα·αααΎααΆααΆααααΆα’αΆα ααΉααα·αααΎαα‘αΎααα·ααααααΆααα OOM α αααααααααΆααααα½ααααααααααα»αααΆαααααΎαααΊααααΌααα·αααΆααααααΌααα·αααααα αααα αΆααααΆαααΈααα α’αα»ααααΆαα±ααααΆααΎαα‘αΎααα·α αα·αα αΆααααααΎαα‘αΎααα·ααααααΎαααΆααααααΌαα
ααααααα βα‘αΎα
α’αΆαααααα·αα·ααΆαα½αααααααααααΌαα αα αΆααααα»αα’αα‘α»αααααααα α‘αΎαααΊααΆααααΆαααααααααΆαααΆαα’αα»ααααααΆα αα·αααΆαααααΎααααΆααααααΆααααααααααΆαααααααΆααααΈααΆαα αΆααααααΎαα αααα»αα’αα‘α»αααααααα ααα»αααααα·ααααααΆααα’ααα αΆααααααΎααα αααα»αααΆαααααααααΎαααΆααααα»αααααααααααα ααΎ CPU αα·αα’αααα αα αΆαα
αααααΆααααα»αααΆαααααΎααααΆααα’αααα
αα
αΆααααα αΆαααΆ Prometheus αα·αα’αΆα
ααααααα
ααΆααααααααααΆααααααΌαααΆααα’ααααΆααααΈααααΌαα‘αΎα α αΎαααααααΆααα½αα
ααα½αααααΌαααΆαααααα
αααα»αβαα·αβααΆαβααβααΎαβααΌαα ααα»βαα·αβααααΆααβαααααΆαα CPU αα·αβαααα»αβα’αααβα
αα
αΆαβαααααβααα αααα»αααααααααΆαααααΊαααααΆαααααΆααααααΎααααααΈαααααααΆααααΈαα
αααα»ααααα»αααααΆαααΆαα½αααΉαααααααααααααα
ααΆααααα»ααααΈααΈααΌααΎαα‘αΎα
ααααααααΈααΎααΆαααααα½α ααααααααΎαααααα»α I/O ααααα αααα»αααΆαααααααααΆααααΎαααΆαααΎαα‘αΎααααΆαααααααααααα αααα»αααΆααααα»ααααΈααΈααΌαααααΆααααΈαααΆααΈααααα ααΆααααα»αααΆαααααααααΌαααΆαααα αα ααααααααα αΌααααα αΌαααΆαααααα·αααααα α αΎαααααααΆαααααΆαααααΈα’ααααααααΌαααααΆααααα Go ααααααΆαα αα ααΆααααΆαααααΌααα½αα ααα½αααααΌαααΆααααα»ααααα
ααΆααααααΆααααααα·αααΌαααααΆααααα ααΆα αΆααααΈααΌα
ααΆαα
ααααααααΆααΎαα‘αΎα α
ααα»α
α
αΌα αα·αααααααααΆααααα»ααααα Prometheus ααααΆαααΆαα·αα’αΆα
ααααΎααΆα ααααααααΆαα±ααααΆααααααΆααα·αααααααααα»αα’αα‘α»ααααααΌα
ααααΆαααα
α’αααααα’αΆα
ααααααααΆαααααααααΆα’αααααΆαα
αα Prometheus αα·ααααα»ααααααααα½ααα·ααΆααΈα
ααΎαα’αΆα
ααααααααΆααααΈααΆαααΆααααΆααααααΆαα½αααΆααααααΌαααααΆα (GC) α
ααα ααααΈααααα·ααααΆα
TSDB αα αααα»α Prometheus 2 ααΆαααααΏαααΏα ααΆααααααααΆαααααααααααααααΈαααααααΆααΆααααΆα αα·ααααα»αααααααα½α ααΆααααΆαααααααααααΆαααα»ααα½ααα·ααΆααΈ αααααααΎαααααααΉαααααααααααα ααΆαααααΎααααΆαααααΈααΈααΌ αα·αααΈα I/O αααα½αα±ααα αΆααα’αΆαααααααααααα α§ααΆα ααααααααααα»αααΆααααα αΆααα αΌαααα 200 αααααααααα»ααα½ααα·ααΆααΈαααα»ααα½αααααΌααααααΆαααααΎα
ααΎααααΈαααα ααααααΆααααααΈα α’αααααααΌαα αα αΆαα’αααΈααα·ααΆαα’αααα αα αΆααααααααααΆαα α αΎααααααααΌαααααΆααΆαα αα αΆααα·αααααΆααα ααα·ααΆαα’αααα αα αΆααααααΆαααααΎααααααα»αααααααααΎαααΊαααα αα 5 GB αααα»α 100 records αααα»ααα½ααα·ααΆααΈααα ααααα αΌα ααααα½αααΆαα½αααΉαααααΆαααααααΆααααααααααααααα·ααααα·ααΆααααααα’αααα αα αΆαααΆααααΆαααααα αα 000 GB α
ααΆααΆααα·αααΆαα ααΆαα
ααααΆαααΆαααΆαααΆα
αααΎααααααααΌαααααΎααΎααααΈααααααΈααΈααΌ αα·αααΈα I/O spikes α αΎαααααα·ααααααΆααΏααα½αα±ααααααΆααααα’αΎαααααααα·α
αΆαααΆααΈααααααα TSDB Prometheus 2 ααααααααααααΌαααΆααααααααααα
ααΉα InnoDB, TokuDB, RocksDB, WiredTiger ααα»αααααα½αααααΆααα’ααααΆαααΆαααααααααααΆα αααα αΆαα
ααααΆααααΆαααααΌαααααααααΈαα·ααααααα½αααα
ααααα: www.habr.com