-
Notifications
You must be signed in to change notification settings - Fork 544
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
GCS error handling, example, and documentation #397
Conversation
… gcs backend. Add gcs example using fake-gcs-server and add necessary settings. Add documentation page for GCS configuration. Update gcs client library reference for header parsing bug fix
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like you have to run make vendor-check
and then I had a few questions. Otherwise looks good.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added few copy-edit suggestions.
trace: | ||
backend: gcs # store traces in gcs | ||
s3: | ||
bucket_name: tempo # store traces in this bucket | ||
chunk_buffer_size: 10485760 # optional. buffer size for reads. default = 10MiB | ||
endpoint: https://storage.googleapis.com/storage/v1/ # optional. api endpoint override | ||
insecure: false # optional. Set to true to disable authentication | ||
# and certificate checks. | ||
project_id: project # optional if bucket already exists. Project ID | ||
# to use when creating bucket on first run. | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
trace: | |
backend: gcs # store traces in gcs | |
s3: | |
bucket_name: tempo # store traces in this bucket | |
chunk_buffer_size: 10485760 # optional. buffer size for reads. default = 10MiB | |
endpoint: https://storage.googleapis.com/storage/v1/ # optional. api endpoint override | |
insecure: false # optional. Set to true to disable authentication | |
# and certificate checks. | |
project_id: project # optional if bucket already exists. Project ID | |
# to use when creating bucket on first run. | |
``` | |
trace: | |
backend: gcs # Store traces in gcs. | |
s3: | |
bucket_name: tempo # Store traces in this bucket. | |
chunk_buffer_size: 10485760 # Optional, buffer size for reads. Default = 10MiB | |
endpoint: https://storage.googleapis.com/storage/v1/ # Optional, API endpoint override. | |
insecure: false # Optional, set to true to disable authentication | |
# and certificate checks. | |
project_id: project # Optional, if bucket already exists. Project ID | |
# to use when creating a bucket on the first run. |
http_listen_port: 3100 | ||
|
||
distributor: | ||
receivers: # this configuration will listen on all ports and protocols that tempo is capable of. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
receivers: # this configuration will listen on all ports and protocols that tempo is capable of. | |
receivers: # This configuration will listen on all ports and protocols that tempo is capable of listening to. |
jaeger: # the receives all come from the OpenTelemetry collector. more configuration information can | ||
protocols: # be found there: https://github.com/open-telemetry/opentelemetry-collector/tree/master/receiver | ||
thrift_http: # | ||
grpc: # for a production deployment you should only enable the receivers you need! | ||
thrift_binary: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
jaeger: # the receives all come from the OpenTelemetry collector. more configuration information can | |
protocols: # be found there: https://github.com/open-telemetry/opentelemetry-collector/tree/master/receiver | |
thrift_http: # | |
grpc: # for a production deployment you should only enable the receivers you need! | |
thrift_binary: | |
jaeger: # Receives all traces? coming from the OpenTelemetry collector. More configuration information can | |
protocols: # be found here: https://github.com/open-telemetry/opentelemetry-collector/tree/master/receiver | |
thrift_http: # | |
grpc: # For a production deployment you should only enable the receivers you need! | |
thrift_binary: |
|
||
storage: | ||
trace: | ||
backend: gcs # backend configuration to use |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
backend: gcs # backend configuration to use | |
backend: gcs # The backend configuration to use. |
trace: | ||
backend: gcs # backend configuration to use | ||
wal: | ||
path: /tmp/tempo/wal # where to store the the wal locally |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
path: /tmp/tempo/wal # where to store the the wal locally | |
path: /tmp/tempo/wal # Path to store the wal locally. |
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
index_downsample: 10 # number of traces per index record | |
index_downsample: 10 # Number of traces per index record. |
insecure: true | ||
project_id: test | ||
pool: | ||
max_workers: 100 # the worker pool mainly drives querying, but is also used for polling the blocklist |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
max_workers: 100 # the worker pool mainly drives querying, but is also used for polling the blocklist | |
max_workers: 100 # The worker pool mainly drives querying but it is also used for polling the blocklist. |
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 | |
bloom_filter_false_positive: .05 # The bloom filter false positive rate. Lower values create larger filters but fewer false positives. | |
index_downsample: 10 # Number of traces per index record. |
For the yaml comments I personally prefer lower case and brevity to grammatically correct sentences. my .02 |
Co-authored-by: achatterjee-grafana <[email protected]>
What this PR does:
This PR addresses the silent errors encountered here: #379 The root cause was the consumption of the iterator in getting tenant and block list for GCS backend. An error state with permissions could cause the loop to run infinitely and polling the blocklist would never complete. This behavior is cautioned about here: https://github.com/googleapis/google-cloud-go/blob/master/storage/bucket.go#L1183
This PR includes many updates, which will be explained here:
endpoint:string
to redirect api traffic.insecure:bool
to disable authentication for the api usingoption.WithoutAuthentication()
, which allows the storage client to run without error.STORAGE_EMULATOR_HOST
environment variable and when present configures the api to speak to the host using http. However the storage client then loses the api prefix configured in the endpoint ("/storage/v1/") upon the first file write, breaking subsequent api calls. See code here: https://github.com/googleapis/google-cloud-go/blob/master/storage/writer.go#L129Other implementation notes:
http.DefaultTransport
which is then editedWhich issue(s) this PR fixes:
Fixes #379
Checklist
CHANGELOG.md
updated - the order of entries should be[CHANGE]
,[FEATURE]
,[ENHANCEMENT]
,[BUGFIX]