Skip to content

Commit 8dc2e6b

Browse files
Merge branch 'main' into dev
2 parents 8f7e417 + 7232b1c commit 8dc2e6b

File tree

3 files changed

+47
-24
lines changed

3 files changed

+47
-24
lines changed

docs/environment-variables.md

Lines changed: 17 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ description: >-
33
Configure OpenObserve with flexible environment variables for roles, storage,
44
performance, and scaling across open source and enterprise deployments.
55
---
6-
> Applicable to both Open Source and Enterprise editions.
6+
> Applicable to both Open Source and Enterprise editions.
77
88
OpenObserve is configured using the following environment variables.
99

10-
## Basic Configuration
10+
## Basic Configuration
1111
| Environment Variable | Default Value | Description |
1212
|---------------------|---------------|-------------|
1313
| ZO_ROOT_USER_EMAIL | - | Email ID of the root user. |
@@ -32,7 +32,7 @@ In high-load environments, alerts or reports might run large, resource-intensive
3232
| ZO_HTTP_WORKER_MAX_BLOCKING | 1024 | Maximum number of blocking connections allowed per HTTP thread. |
3333
| ZO_GRPC_PORT | 5081 | Port number on which the OpenObserve server listens for gRPC requests. |
3434
| ZO_GRPC_ADDR | | IP address on which the OpenObserve server listens for gRPC requests. |
35-
| ZO_GRPC_ORG_HEADER_KEY | openobserve-org-id | Header key for sending organization information in traces using OTLP over gRPC. |
35+
| ZO_GRPC_ORG_HEADER_KEY | organization | Header key for sending organization information in traces using OTLP over gRPC. |
3636
| ZO_GRPC_STREAM_HEADER_KEY | stream-name | Header key for sending stream name information in traces using OTLP over gRPC. |
3737
| ZO_GRPC_MAX_MESSAGE_SIZE | 16 | Maximum gRPC message size in MB. Default is 16 MB. |
3838
| ZO_GRPC_CONNECT_TIMEOUT | 5 | Timeout in seconds for connecting to the gRPC server. |
@@ -87,14 +87,9 @@ In high-load environments, alerts or reports might run large, resource-intensive
8787
| ZO_MEM_TABLE_MAX_SIZE | 0 | Total size limit of all memtables. Multiple memtables exist for different organizations and stream types. Each memtable cannot exceed ZO_MAX_FILE_SIZE_IN_MEMORY, and the combined size cannot exceed this limit. If exceeded, the system returns a MemoryTableOverflowError to prevent out-of-memory conditions. Default is 50 percent of total memory. |
8888
| ZO_MEM_PERSIST_INTERVAL | 5 | Interval in seconds at which immutable memtables are persisted from memory to disk. Default is 5 seconds. |
8989
| ZO_FEATURE_SHARED_MEMTABLE_ENABLED | false | When set to true, it turns on the shared memtable feature and several organizations can use the same in-memory table instead of each organization creating its own. This helps reduce memory use when many organizations send data at the same time. It also works with older non-shared write-ahead log (WAL) files. |
90-
| ZO_MEM_TABLE_BUCKET_NUM | 1 | This setting controls how many in-memory tables OpenObserve creates, and works differently depending on whether shared memtable is enabled or disabled. <br>**When ZO_FEATURE_SHARED_MEMTABLE_ENABLED is true (shared memtable enabled)**: OpenObserve creates the specified number of shared in-memory tables that all organizations use together. <br> **If the number is higher**: OpenObserve creates more shared tables. Each table holds data from fewer organizations. This can make data writing faster because each table handles less data. However, it also uses more memory. <br> **If the number is lower**: OpenObserve creates fewer shared tables. Each table holds data from more organizations. This saves memory but can make data writing slightly slower when many organizations send data at the same time.
91-
<br>
92-
**When ZO_FEATURE_SHARED_MEMTABLE_ENABLED is false (shared memtable disabled)**:
93-
<br>
94-
Each organization creates its own set of in-memory tables based on the ZO_MEM_TABLE_BUCKET_NUM value.
95-
<br>
96-
For example, if ZO_MEM_TABLE_BUCKET_NUM is set to 4, each organization will create 4 separate in-memory tables.
97-
This is particularly useful when you have only one organization, as creating multiple in-memory tables for that single organization can improve ingestion performance.|
90+
| ZO_MEM_TABLE_BUCKET_NUM | 1 | This setting controls how many in-memory tables OpenObserve creates, and works differently depending on whether shared memtable is enabled or disabled. <br> **When ZO_FEATURE_SHARED_MEMTABLE_ENABLED is true (shared memtable enabled)**: OpenObserve creates the specified number of shared in-memory tables that all organizations use together. <br> - **If the number is higher**: OpenObserve creates more shared tables. Each table holds data from fewer organizations. This can make data writing faster because each table handles less data. However, it also uses more memory. <br> - **If the number is lower**: OpenObserve creates fewer shared tables. Each table holds data from more organizations. This saves memory but can make data writing slightly slower when many organizations send data at the same time.
91+
<br> **When ZO_FEATURE_SHARED_MEMTABLE_ENABLED is false (shared memtable disabled)**: Each organization creates its own set of in-memory tables based on the ZO_MEM_TABLE_BUCKET_NUM value.
92+
<br> For example, if ZO_MEM_TABLE_BUCKET_NUM is set to 4, each organization will create 4 separate in-memory tables. This is particularly useful when you have only one organization, as creating multiple in-memory tables for that single organization can improve ingestion performance.|
9893

9994
## Indexing
10095
| Environment Variable | Default Value | Description |
@@ -132,7 +127,7 @@ This is particularly useful when you have only one organization, as creating mul
132127
| ZO_COMPACT_PENDING_JOBS_METRIC_INTERVAL | 300 | Interval to publish pending job metrics in seconds. |
133128
| ZO_COMPACT_MAX_GROUP_FILES | 10000 | Maximum number of files allowed in a compaction group. |
134129

135-
## UI and Web
130+
## UI and Web
136131
| Environment Variable | Default Value | Description |
137132
|---------------------|---------------|-------------|
138133
| ZO_UI_SQL_BASE64_ENABLED | false | Enable base64 encoding for SQL in UI. |
@@ -153,7 +148,7 @@ This is particularly useful when you have only one organization, as creating mul
153148
| ZO_JSON_LIMIT | 209715200 | The max payload size of JSON. |
154149
| ZO_PAYLOAD_LIMIT | 209715200 | The max payload size of http request body. |
155150

156-
## Actix Server
151+
## Actix Server
157152
| Environment Variable | Default Value | Description |
158153
|---------------------|---------------|-------------|
159154
| ZO_ACTIX_REQ_TIMEOUT | 30 | Sets actix server client timeout in seconds for first request. |
@@ -182,7 +177,7 @@ This is particularly useful when you have only one organization, as creating mul
182177
| ZO_TRACES_FILE_RETENTION | hourly | Default time partition level for trace streams. Supported values are hourly and daily. |
183178
| ZO_METRICS_FILE_RETENTION | daily | Default time partition level for metric streams. Supported values are hourly and daily. |
184179

185-
## Metrics
180+
## Metrics
186181
| Environment Variable | Default Value | Description |
187182
|---------------------|---------------|-------------|
188183
| ZO_METRICS_DEDUP_ENABLED | true | Enable de-duplication for metrics |
@@ -193,13 +188,13 @@ This is particularly useful when you have only one organization, as creating mul
193188
| ZO_SELF_METRIC_CONSUMPTION_ACCEPTLIST | - | Comma-separated list of metrics to self-consume. |
194189

195190

196-
## Distinct Values
191+
## Distinct Values
197192
| Environment Variable | Default Value | Description |
198193
|---------------------|---------------|-------------|
199194
| ZO_DISTINCT_VALUES_INTERVAL | 10s | Controls how often distinct values for a stream are written from memory to disk. Distinct values are automatically collected when data is ingested. Instead of writing every value to disk immediately, the system waits for this interval. This prevents the system from frequently writing very small chunks of data to disk. Example: If the interval is 10 seconds, distinct values ingested within that 10-second window are combined and written once. |
200195
| ZO_DISTINCT_VALUES_HOURLY | false | Enables additional deduplication at an hourly level. When enabled, distinct values that repeat within the same hour are merged again, and the system logs a count instead of storing duplicate entries. The collected distinct values are stored in a special stream named distinct_values. Example: Suppose request IDs 123 appear multiple times in one hour. Instead of separate entries, they are merged into one record like: request_id: 123, count: 3 |
201196

202-
## Alerts and Reports
197+
## Alerts and Reports
203198
| Environment Variable | Default Value | Description |
204199
|---------------------|---------------|-------------|
205200
| ZO_ALERT_SCHEDULE_INTERVAL | 10s | Defines how often the alert manager checks for scheduled jobs such as alerts, reports, or scheduled pipelines. The default value is 10 seconds. This means the alert manager fetches and processes alerts, reports, and pipelines every 10 seconds. |
@@ -241,7 +236,7 @@ This is particularly useful when you have only one organization, as creating mul
241236
| ZO_FILE_LIST_DUMP_MIN_HOUR | 2 | Minimum hour of day to run file list dump. |
242237
| ZO_FILE_LIST_DUMP_DEBUG_CHECK | true | Enables debug checks during file list dump. |
243238

244-
## Queue
239+
## Queue
245240
| Environment Variable | Default Value | Description |
246241
|---------------------|---------------|-------------|
247242
| ZO_QUEUE_STORE | | Set to "nats" to enable internal queuing through NATS for coordinating rate limiting. |
@@ -561,7 +556,7 @@ When set to false, nodes rely on slower failure detection mechanisms and continu
561556
| ZO_USAGE_REPORTING_MODE | local | Local mode means the usage will be reported only in the internal cluster of ZO_USAGE_ORG. remote mode means that the usage reporting will be ingested to the remote target. both ingests the usage reports both to internal and remote target. |
562557
| ZO_USAGE_REPORTING_URL | [http://localhost:5080/api/_meta/usage/_json](http://localhost:5080/api/_meta/usage/_json) | In case of remote or both value of ZO_USAGE_REPORTING_MODE, this URL is used to post the usage reports to remote target. |
563558
| ZO_USAGE_REPORTING_CREDS | - | The credentials required to send along with the post request to the ZO_USAGE_REPORTING_URL. E.g. - Basic cm9vdEBleGFtcGxlLmNvbTpDb21wbGV4UGFzcyMxMjM=. |
564-
| ZO_USAGE_PUBLISH_INTERVAL | 600 | Duration in seconds after the last reporting usage will be published. |
559+
| ZO_USAGE_PUBLISH_INTERVAL | 600 | Duration in seconds after the last reporting usage will be published. |
565560

566561
## SMTP
567562

@@ -602,7 +597,7 @@ When set to false, nodes rely on slower failure detection mechanisms and continu
602597
| ZO_QUICK_MODE_FORCE_ENABLED | true | Enables automatic activation of Quick Mode from the backend. When set to true, OpenObserve applies Quick Mode automatically if the number of fields in a stream exceeds the limit defined by `ZO_QUICK_MODE_NUM_FIELDS`, even when the Quick Mode toggle in the UI is turned off.|
603598
| ZO_QUICK_MODE_NUM_FIELDS | 500 | This defines the number of fields beyond which the quick mode will be force enabled. |
604599

605-
## Miscellaneous
600+
## Miscellaneous
606601
| Environment Variable | Default Value | Description |
607602
|---------------------|---------------|-------------|
608603
| ZO_STARTING_EXPECT_QUERIER_NUM | 0 | The number of queriers expected to be running while caching enrichment tables. |
@@ -717,7 +712,7 @@ When set to false, nodes rely on slower failure detection mechanisms and continu
717712
<!--
718713
719714
| Environment Variable | Default Value | Mandatory | Description |
720-
| ------------------------------------ | -------------------------- | ------------ | --------------------------------------------------------------------------------- |
715+
| ------------------------------------ | -------------------------- | ------------ | --------------------------------------------------------------------------------- |
721716
| ZO_ROOT_USER_EMAIL | - | On first run | Email of first/root user |
722717
| ZO_ROOT_USER_PASSWORD | - | On first run | Password for first/root user |
723718
| ZO_LOCAL_MODE | true | No | If local mode is set to true ,OpenObserve becomes single node deployment, false indicates cluster mode deployment which supports multiple nodes with different roles. For local mode one needs to configure `sqlite db`, for cluster mode one needs to config `etcd`. |
@@ -731,7 +726,7 @@ When set to false, nodes rely on slower failure detection mechanisms and continu
731726
| ZO_HTTP_WORKER_MAX_BLOCKING | 1024 | No | number of per http thread blocking connection in queue |
732727
| ZO_GRPC_PORT | 5081 | No | openobserve server listen gRPC port |
733728
| ZO_GRPC_ADDR | | No | openobserve server listen gRPC ip address |
734-
| ZO_GRPC_ORG_HEADER_KEY | openobserve-org-id | No | header key for sending organization information for `traces` using OTLP over grpc |
729+
| ZO_GRPC_ORG_HEADER_KEY | organization | No | header key for sending organization information for `traces` using OTLP over grpc |
735730
| ZO_GRPC_STREAM_HEADER_KEY | stream-name | No | header key for sending stream-name information for `traces` using OTLP over grpc |
736731
| ZO_GRPC_MAX_MESSAGE_SIZE | 16 | No | Max grpc message size in MB, default is 16 MB. |
737732
| ZO_GRPC_CONNECT_TIMEOUT | 5 (seconds) | No | The timeout in seconds to connect to the grpc server. |
@@ -1131,4 +1126,4 @@ Below are the Environment variables only available in the enterprise edition.
11311126
| O2_DEX_NATIVE_LOGIN_ENABLED | true | No | Indicates if native dex login is enabled. |
11321127
11331128
1134-
-->
1129+
-->

docs/storage-management/storage.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,35 @@ OpenObserve can use azure blob for storing stream data. Following environment va
175175
| AZURE_STORAGE_ACCOUNT_KEY | Access key | Need to provide mandatorily |
176176
| ZO_S3_BUCKET_NAME | Blob Container name | Need to provide mandatorily |
177177

178+
### Hetzner Cloud Object Storage
179+
180+
To use Hetzner Cloud Object Storage for storing stream data, first create the bucket in Hetzner Cloud.
181+
Then set the following environment variables:
182+
183+
| Environment Variable | Value | Description |
184+
| -------------------- | ----- | ----------- |
185+
| ZO_LOCAL_MODE_STORAGE | s3 | Use S3-compatible storage |
186+
| ZO_S3_SERVER_URL | https://your-bucket.your-region.your-objectstorage.com | Hetzner Object Storage endpoint |
187+
| ZO_S3_REGION_NAME | your-region | Region name (e.g., hel1, nbg1, fsn1) |
188+
| ZO_S3_BUCKET_NAME | your-bucket | Bucket name |
189+
| ZO_S3_ACCESS_KEY | your-access-key | Access key |
190+
| ZO_S3_SECRET_KEY | your-secret-key | Secret key |
191+
| ZO_S3_FEATURE_FORCE_HOSTED_STYLE | true | Enable hosted-style addressing |
192+
193+
Example configuration with placeholder values:
194+
195+
```bash
196+
ZO_LOCAL_MODE_STORAGE=s3
197+
ZO_S3_SERVER_URL=https://my-bucket.hel1.your-objectstorage.com
198+
ZO_S3_REGION_NAME=hel1
199+
ZO_S3_BUCKET_NAME=my-bucket
200+
ZO_S3_ACCESS_KEY=YOUR_ACCESS_KEY
201+
ZO_S3_SECRET_KEY=YOUR_SECRET_KEY
202+
ZO_S3_FEATURE_FORCE_HOSTED_STYLE=true
203+
```
204+
205+
Refer to [Hetzner Cloud Object Storage documentation](https://docs.hetzner.com/storage/object-storage/) for more information about endpoints and regions.
206+
178207

179208
## Metadata Storage
180209

docs/user-guide/logs/explain-analyze-query.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ The execution tree displays operators from top to bottom on your screen, but you
8484
8585
---
8686

87-
## Explain query
87+
## Explain Query
8888

8989
The Explain Query option shows how OpenObserve interprets and executes a SQL query. It displays two views:
9090

@@ -116,7 +116,6 @@ The Physical Plan shows how OpenObserve executes your query, including the speci
116116
![physical-plan](../../images/physical-plan.png)
117117

118118
!!! note "Common operators you will see:"
119-
120119
- **DataSourceExec**: Reads data from storage.
121120
- **RemoteScanExec**: Reads data from distributed partitions or remote nodes.
122121
- **FilterExec**: Applies filtering operations.

0 commit comments

Comments
 (0)