-
Notifications
You must be signed in to change notification settings - Fork 527
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
error polling blocklist, fails to list blocks on Dell ECS #558
Comments
Could you please paste the Coincidentally, |
Oh, that is quite embarresing, should learn to count: storage:
trace:
backend: s3 # backend configuration to use
wal:
path: /tmp/tempo/wal # where to store the the wal locally
# bloom_filter_false_positive: .05 # bloom filter false positive rate. lower values create larger filters but fewer false positives
# index_downsample: 10 # number of traces per index record
s3:
bucket: tracing-staging # how to store data in s3
endpoint: internal.example.com:9020
# access_key: tempo
# secret_key: supersecret
insecure: true
# For using AWS, select the appropriate regional endpoint and region
# endpoint: s3.dualstack.us-west-2.amazonaws.com
# region: us-west-2
pool:
max_workers: 100 # the worker pool mainly drives querying, but is also used for polling the blocklist
queue_depth: 10000``` Access and key comes from Minio env vars: MINIO_ACCESS_KEY:
value: ecs-tracing-staging
MINIO_SECRET_KEY:
value: <redacted> I could not really see single-tenant anywhere in my configuration, so I must have assumed it was a internal. |
Haha :) Yeah so the tempo/tempodb/backend/s3/s3.go Line 285 in fd1337e
This line tempo/tempodb/backend/s3/s3.go Line 275 in fd1337e
should list files in with the "single-tenant/" prefix. I now suspect that the ECS API (for Listing Objects) deviates from the AWS S3 API in that it returns the full path of the object.. Spec for reference - http://doc.isilon.com/ECS/3.3/DataAccessGuide/vipr_r_oapi_s3_supported_features_3_3.html |
@annanay25 Thanks for the thorough linking, I just mocked up some go to verify this, and if the expected behaviour of that S3/Minio query would be UUID only: minio.CommonPrefix{Prefix:"3b35c585-32ab-43e2-ac7d-efee0500f7fb/"} Then indeed, ECS isnt compliant: minio.CommonPrefix{Prefix:"single-tenant/3b35c585-32ab-43e2-ac7d-efee0500f7fb/"} I will dig around a bit, see if there is a convenient workaround. |
Nice find! And sure, would love to hear how it worked for you. |
Thanks for digging into it. I'm not sure the expected behavior is the query returns UUID only, tempo is doing some work to extract the UUID from the response: https://github.com/grafana/tempo/blob/master/tempodb/backend/s3/s3.go#L283 Would it be possible to query your ECS install using the aws cli, and compare results with mine below?
|
Adding another thought: Tempo is trimming the result using |
@mdisibio Getting the
|
Follow up, here is a segment from aws cli: --no-verify-ssl s3api list-objects --bucket tracing-staging --prefix single-tenant/ --delimiter / --endpoint http://test
{
"CommonPrefixes": [
{
"Prefix": "single-tenant/0023b193-abff-4127-b9e1-c5acd3936416/"
}, Am I to understand that in this case it gives the correct output @mdisibio ? |
If this value really is url-encoded it is likely the cause, which prevents A change in Tempo could be to ignore |
@mdisibio Sounds like a reasonable diagnose and solution, I made a Draft PR if you want to have a look. I'm going get it in and test it now. |
Describe the bug
I am playing around with Tempo for a proof of concept were I use ECS (from Dell) as my S3 compatible storage.
Currently I am experiencing the same issue as described #408 were traces are not available after being flushed to object store, however, as per suggestion, I checked the
tempodb_blocklist_length
, which is at0
. This was curious and I then realised that I see a lot of:every 5 minutes.
I queried the S3 storage to see how the layout was and the UUID exist and I think they are valid.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
I expect tempo to be able to read back from the bucket after writing traces to blob storage.
Environment:
Additional Context
The text was updated successfully, but these errors were encountered: