Comments (5)
The questions we want to answer:
- Is it worth to dive in into this NOW
- Is there any simpler generic solution that will work for all cases? Cannot see any.
- How we will match stores to sources (just arbitrary ID? external labels?)
from thanos.
I think adding per-source information to the store node can blow up rather quickly. At least for the gossip state this might get too big. The query nodes could of course periodically fetch that state via a regular API.
At this stage I'm not sure yet though whether that's already valuable. A generous time buffer is probably fine.
What we also don't quite know yet is whether it's actually better to fetch as much data as possible form store or from source nodes.
Given we currently use the rather inefficient query API on the sidecar side, store nodes might be faster, especially once caching is implemented.
What we could do, and what would be rather cheap in terms of messages being sent around is this: after the source nodes shipped a block, they can periodically ask the store nodes for the highest block timestamp they have for the source.
Then the source nodes gossip a max-synced-time timestamp. Query nodes then can reliably know the minimum timestamp they need to hit that source node with.
That would be cater to the use case where we want to minimize data fetched from source nodes.
But seems like it's still a bit early for this optimizations since we don't know for sure yet what we want.
from thanos.
+1 but still: max-synced-time -> needs to be PER Store (:
from thanos.
+1
from thanos.
Thanks for bumping. This issue can be now resolved thanks to [--min-time (time slicing)] flags for both Store Gateway and sidecar.
By default both sidecar and store gateway expose all data they have:
However you can:
- add
--min-time
to sidecar with e.g4h
value. This will ensure only 4h of of sidecar data is exposed. Useful when you want to use Store Gateway for older queries. - add
--max-time
for store gateway for something likeretention
minus safety buffer of Prometheus. No min-time for sidecar. This will allow Store GW to not expose anything "younger" than X time. Useful if you want to allow Prometheus to be used rather store Gateway. This however is not ideal as this is a requirement still: local compaction has to be disabled when uploading blocks
from thanos.
Related Issues (20)
- [Thanos Storegateway ]"failed to read index-header from disk; recreating" path=/data/01H1K45K0FRT36S1RCAWHW7R9A/index-heade HOT 1
- Adding User Agent to HTTP Logs
- Compact: Display TODO plan HOT 2
- compactor: does not compact 4 consecutive 2-hour blocks HOT 6
- compactor: series not 16-byte aligned error HOT 2
- Improved file access logging
- Sidecar: reporting as ready on startup when no Prometheus process is running
- tools bucket: Add ability to discover external labels from prometheus address for `upload-blocks` HOT 1
- Thanos Sidecar - Flush Endpoint HOT 8
- Grafana only shows raw data from Thanos HOT 3
- Instance Principal Provider - Region issue
- Consider X-Forwarded-For on HTTP/GRPC Logging
- When I restart any Receive, the entire Seek cluster is unavailable, and the reboot can only be restored after the local data is fully understood HOT 2
- MaxTime is set to a too large number when doing larger latency requests? HOT 1
- Unauthorized errors for some endpoints with query-frontend HOT 1
- External labels not applied to alerts HOT 3
- 0.35: Panic with query mode distributed HOT 1
- query: Passing `THANOS-TENANT: <tenant>` header has no effect unless `--query.enforce-tenancy` is set HOT 3
- query: different results for rate function when not dedup or using implicit step interval HOT 4
- Thanos compactor causing huge memory spikes when compacting raw blocks HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from thanos.