Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a way to ship 2.0 storage blocks elsewhere #3093

Closed
gouthamve opened this Issue Aug 20, 2017 · 6 comments

Comments

Projects
None yet
3 participants
@gouthamve
Copy link
Member

gouthamve commented Aug 20, 2017

I wanted to write a tool that ships the 2.0 blocks to a remote storage, but looks like there is interest from the others as well. Especially as it allows for bulk insert which is much more efficient.

The plan currently for me is: Make a tool (promtool subcommand) which actually ships the block off to the remote-storage and mark it experimental and iterate on the fields and format of the API and once we have a couple of users, fold it into Prometheus.

@tomwilkie @pauldix Do you guys think this makes sense? Or do we want to ship the chunks instead of the block?

Shipping the block actually makes it really hard to write the integration in a language other than Go and will heavily depend on the structure of TSDB.

@pauldix

This comment has been minimized.

Copy link

pauldix commented Aug 21, 2017

I'm not sure if the format should be tied to chunks or blocks. Although if you just send blocks it'll be more efficient since you're just copying over the underlying datastructures untouched. Although it looks like tombstones might cause a problem with this since they'll have to be shipped too?

Overall I think the real goal would be to have a bulk read/write API. I think from the read perspective it would take a start and end time and include data from all series in that range. And the write would take some contiguous block of time to write all in one go. If you think it makes sense to use blocks then I'm +1. We can work with the actual prometheus/tsdb structures or some other intermediate format. Either way we'll have to do a conversions to/from the internal InfluxDB format.

@brian-brazil

This comment has been minimized.

Copy link
Member

brian-brazil commented Aug 21, 2017

I think 2.0 blocks is what we should use here, and keep this coupled with Prometheus. I think an API for bulk read would be a bad idea, as the response size would be massive and we already have one of those in the form of the query endpoint.

Bulk write is a separate topic.

@pauldix

This comment has been minimized.

Copy link

pauldix commented Aug 21, 2017

@brian-brazil fair enough. If the write API sends blocks, we'll be able to work with it.

@brian-brazil

This comment has been minimized.

Copy link
Member

brian-brazil commented Mar 2, 2018

@fabxc With your recent change over in TSDB don't we just need to add a paramater to the snapshot API to make this practical?

@brian-brazil

This comment has been minimized.

Copy link
Member

brian-brazil commented Mar 8, 2018

And that API is now there, so I'm calling this done.

@lock

This comment has been minimized.

Copy link

lock bot commented Mar 22, 2019

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@lock lock bot locked and limited conversation to collaborators Mar 22, 2019

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
You can’t perform that action at this time.