tempo icon indicating copy to clipboard operation
tempo copied to clipboard

Support running Tempo distributed without object store

Open yvrhdn opened this issue 4 years ago • 1 comments

Is your feature request related to a problem? Please describe.

It's sometimes impractical or undesirable to run Tempo with an object store. There should be a mechanism to run Tempo in microservices mode with ingester-local storage.

It's currently 'possible' to run Tempo in microservices mode without remote backend (you can configure backend: local) and data will simply be stored in the ingesters. There are some limitations with this approach:

  • Data is not queryable after the block is flushed: flushed blocks will still be stored on the ingester (just not in the WAL anymore) and the querier will not be able to query these blocks.
  • It's hard to control disk usage of the ingester: existing configuration options are all time-based ("remove a block after x hours"). If you store data on the ingester it would be nice to be able to say "remove the oldest block if total storage size is >100GB".

Describe the solution you'd like

Provide a configuration to run Tempo without backend (or with a "local-distributed" backend). In this mode data is stored on the ingester and remains queryable until the block is completely removed. Queriers don't try to query the backend but only issue requests to the ingesters.

Provide an option to control block retention in the ingester based upon storage size, not only age.

Describe alternatives you've considered

You can do a hacky workaround right now by configuring the local backend and increasing complete_block_timeout. This will keep the blocks in the ingester WAL for longer. This is really not ideal as flushed blocks can not be reached by the queriers and controls are a bit crude.

Additional context

yvrhdn avatar Jan 13 '22 10:01 yvrhdn

Honestly, if someone wanted this then treating complete_block_timeout as total retention would work as well as anything we put together. In fact, it would be functionally identical to writing the code to have ingesters search some kind of local store that we flushed blocks too.

joe-elliott avatar Jan 13 '22 13:01 joe-elliott

This issue has been automatically marked as stale because it has not had any activity in the past 60 days. The next time this stale check runs, the stale label will be removed if there is new activity. The issue will be closed after 15 days if there is no new activity. Please apply keepalive label to exempt this Issue.

github-actions[bot] avatar Nov 17 '22 00:11 github-actions[bot]