diff --git a/docs/use-cases/observability/clickstack/integration-examples/index.md b/docs/use-cases/observability/clickstack/integration-examples/index.md
new file mode 100644
index 00000000000..7fdff62ff5c
--- /dev/null
+++ b/docs/use-cases/observability/clickstack/integration-examples/index.md
@@ -0,0 +1,17 @@
+---
+slug: /use-cases/observability/clickstack/integration-guides
+pagination_prev: null
+pagination_next: null
+description: 'Data ingestion for ClickStack - The ClickHouse Observability Stack'
+title: 'Integration Guides'
+doc_type: 'landing-page'
+keywords: ['ClickStack data ingestion', 'observability data ingestion', 'ClickStack integration guides']
+---
+
+ClickStack provides multiple ways to ingest observability data into your ClickHouse instance. This section contains
+quick start guides for various log and trace sources.
+
+| Section | Description |
+|------|-------------|
+| [Nginx Logs](./nginx-logs.md) | Introduction to data ingestion methods and architecture |
+| [Nginx Traces](./nginx-traces.md) | Introduction to data ingestion methods and architecture |
diff --git a/docs/use-cases/observability/clickstack/integration-examples/nginx-logs.md b/docs/use-cases/observability/clickstack/integration-examples/nginx-logs.md
new file mode 100644
index 00000000000..27f3b3c9c35
--- /dev/null
+++ b/docs/use-cases/observability/clickstack/integration-examples/nginx-logs.md
@@ -0,0 +1,340 @@
+---
+slug: /use-cases/observability/clickstack/integrations/nginx
+title: 'Monitoring Nginx Logs with ClickStack'
+sidebar_label: 'Nginx Logs'
+pagination_prev: null
+pagination_next: null
+description: 'Monitoring Nginx with ClickStack'
+doc_type: 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import useBaseUrl from '@docusaurus/useBaseUrl';
+import import_dashboard from '@site/static/images/clickstack/import-dashboard.png';
+import finish_import from '@site/static/images/clickstack/finish-import.png';
+import example_dashboard from '@site/static/images/clickstack/example-logs-dashboard.png';
+import log_view from '@site/static/images/clickstack/log-view.png';
+import search_view from '@site/static/images/clickstack/nginx-logs-search-view.png';
+
+# Monitoring Nginx Logs with ClickStack {#nginx-clickstack}
+
+::::note[TL;DR]
+This guide shows you how to monitor nginx with ClickStack by configuring the OpenTelemetry collector to ingest nginx access logs. You'll learn how to:
+
+- Configure nginx to output JSON-formatted logs
+- Create a custom OTel collector configuration for log ingestion
+- Deploy ClickStack with your custom configuration
+- Use a pre-built dashboard to visualize nginx metrics (requests, errors, latency)
+
+A demo dataset with 10,000 sample logs is provided to test the integration before connecting your production nginx instances.
+
+Time Required: 5-10 minutes.
+::::
+
+## Prerequisites {#prerequisites}
+- ClickStack instance running
+- Existing nginx installation
+- Access to modify nginx configuration files
+
+## Integration with existing nginx {#existing-nginx}
+
+This section covers configuring your existing nginx installation to send logs to ClickStack by modifying the ClickStack OTel collector configuration.
+
+
+
+## Configure nginx log format {#configure-nginx}
+First, configure nginx to output logs in JSON format for easier parsing. Add this log format definition to your nginx.conf:
+
+The `nginx.conf` file is typically located at:
+- **Linux (apt/yum)**: `/etc/nginx/nginx.conf`
+- **macOS (Homebrew)**: `/usr/local/etc/nginx/nginx.conf` or `/opt/homebrew/etc/nginx/nginx.conf`
+- **Docker**: Configuration is usually mounted as a volume
+
+Add this log format definition to the `http` block:
+
+```nginx
+http {
+ log_format json_combined escape=json
+ '{'
+ '"time_local":"$time_local",'
+ '"remote_addr":"$remote_addr",'
+ '"request_method":"$request_method",'
+ '"request_uri":"$request_uri",'
+ '"status":$status,'
+ '"body_bytes_sent":$body_bytes_sent,'
+ '"request_time":$request_time,'
+ '"upstream_response_time":"$upstream_response_time",'
+ '"http_referer":"$http_referer",'
+ '"http_user_agent":"$http_user_agent"'
+ '}';
+
+ access_log /var/log/nginx/access.log json_combined;
+ error_log /var/log/nginx/error.log warn;
+}
+```
+
+After making this change, reload nginx.
+
+## Create custom otel collector configuration {#custom-otel}
+
+ClickStack allows you to extend the base OpenTelemetry Collector configuration by mounting a custom configuration file and setting an environment variable. The custom configuration is merged with the base configuration managed by HyperDX via OpAMP.
+
+Create a file named nginx-monitoring.yaml with the following configuration:
+
+```yaml
+receivers:
+ filelog:
+ include:
+ - /var/log/nginx/access.log
+ - /var/log/nginx/error.log
+ start_at: end
+ operators:
+ - type: json_parser
+ parse_from: body
+ parse_to: attributes
+ - type: time_parser
+ parse_from: attributes.time_local
+ layout: '%d/%b/%Y:%H:%M:%S %z'
+ - type: add
+ field: attributes.source
+ value: "nginx"
+
+service:
+ pipelines:
+ logs/nginx:
+ receivers: [filelog]
+ processors:
+ - memory_limiter
+ - transform
+ - batch
+ exporters:
+ - clickhouse
+```
+
+This configuration:
+- Reads nginx logs from their standard locations
+- Parses JSON log entries
+- Extracts and preserves the original log timestamps
+- Adds source: nginx attribute for filtering in HyperDX
+- Routes logs to the ClickHouse exporter via a dedicated pipeline
+
+::::note
+- You only define new receivers and pipelines in the custom config
+- The processors (memory_limiter, transform, batch) and exporters (clickhouse) are already defined in the base ClickStack configuration - you just reference them by name
+- The time_parser operator extracts timestamps from nginx's time_local field to preserve original log timing
+- The pipelines route data from your receivers to the ClickHouse exporter via the existing processors
+::::
+
+## Configure ClickStack to load custom configuration {#load-custom}
+
+To enable custom collector configuration in your existing ClickStack deployment, you must:
+
+1. Mount the custom config file at /etc/otelcol-contrib/custom.config.yaml
+2. Set the environment variable CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml
+3. Mount your nginx log directories so the collector can read them
+
+### Option 1: Docker Compose {#docker-compose}
+
+Update your ClickStack deployment configuration:
+```yaml
+services:
+ clickstack:
+ # ... existing configuration ...
+ environment:
+ - CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml
+ # ... other environment variables ...
+ volumes:
+ - ./nginx-monitoring.yaml:/etc/otelcol-contrib/custom.config.yaml:ro
+ - /var/log/nginx:/var/log/nginx:ro
+ # ... other volumes ...
+```
+
+### Option 2: Docker Run (All-in-One Image) {#all-in-one}
+
+If using the all-in-one image with docker run:
+```bash
+docker run --name clickstack \
+ -p 8080:8080 -p 4317:4317 -p 4318:4318 \
+ -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \
+ -v "$(pwd)/nginx-monitoring.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \
+ -v /var/log/nginx:/var/log/nginx:ro \
+ docker.hyperdx.io/hyperdx/hyperdx-all-in-one:latest
+```
+
+::::note
+Ensure the ClickStack collector has appropriate permissions to read the nginx log files. In production, use read-only mounts (:ro) and follow the principle of least privilege.
+::::
+
+## Verifying Logs in ClickStack {#verifying-logs}
+Once configured, log into HyperDX and verify logs are flowing:
+
+1. Navigate to the Logs view
+2. Verify you see JSON-parsed log entries with fields like request, request_time, upstream_response_time, etc.
+
+This is an example of what you should see:
+
+
+
+
+
+
+
+## Demo dataset {#demo-dataset}
+
+For users who want to test the nginx integration before configuring their production systems, we provide a sample dataset of pre-generated nginx access logs with realistic traffic patterns.
+
+
+
+## Download the sample dataset {#download-sample}
+
+Download the sample log file and update timestamps to the current time:
+
+```bash
+# Download the logs
+curl -O https://datasets-documentation.s3.eu-west-3.amazonaws.com/clickstack-integrations/access.log
+```
+
+The dataset includes:
+- 10,000 log entries with realistic traffic patterns
+- Various endpoints and HTTP methods
+- Mix of successful requests and errors
+- Realistic response times and byte counts
+- Timestamps now distributed over recent time
+
+## Create test collector configuration {#test-config}
+
+Create a file named `nginx-demo.yaml` with the following configuration:
+
+```yaml
+cat > nginx-demo.yaml << 'EOF'
+receivers:
+ filelog:
+ include:
+ - /tmp/nginx-demo/access.log
+ start_at: beginning # Read from beginning for demo data
+ operators:
+ - type: json_parser
+ parse_from: body
+ parse_to: attributes
+ - type: time_parser
+ parse_from: attributes.time_local
+ layout: '%d/%b/%Y:%H:%M:%S %z'
+ - type: add
+ field: attributes.source
+ value: "nginx-demo"
+
+service:
+ pipelines:
+ logs/nginx-demo:
+ receivers: [filelog]
+ processors:
+ - memory_limiter
+ - transform
+ - batch
+ exporters:
+ - clickhouse
+EOF
+```
+
+## Run ClickStack with demo configuration {#run-demo}
+
+Run ClickStack with the demo logs and configuration:
+
+```bash
+docker run --name clickstack-demo \
+ -p 8080:8080 -p 4317:4317 -p 4318:4318 \
+ -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \
+ -v "$(pwd)/nginx-demo.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \
+ -v "$(pwd)/access.log:/tmp/nginx-demo/access.log:ro" \
+ docker.hyperdx.io/hyperdx/hyperdx-all-in-one:latest
+```
+
+## Verify logs in HyperDX {#verify-demo-logs}
+
+Once ClickStack is running (you may have to create an account and login first):
+
+1. Open [HyperDX](http://localhost:8080/search?from=1760976000000&to=1761062400000&isLive=false&source=690235c1a9b7fc5a7c0fffc7&select=Timestamp,ServiceName,SeverityText,Body&where=&whereLanguage=lucene&filters=[]&orderBy=)
+
+::::note
+It is important to use the link above to get the correct time range, if you don't use this link set your time range to Oct 20 11:00:00 - Oct 21 11:00:00 to see proper results.
+::::
+
+Here's what you should see in your search view:
+
+
+
+
+
+
+
+## Dashboards and visualization {#dashboards}
+
+To help you get started monitoring nginx with ClickStack, we provide essential visualizations for nginx logs.
+
+
+## Download the dashboard configuration.
+
+## Import Pre-built Dashboard {#import-dashboard}
+1. Open HyperDX and navigate to the Dashboards section.
+2. Click "Import Dashboard" in the upper right corner under the ellipses.
+
+
+
+3. Upload the nginx-logs-dashboard.json file and click finish import.
+
+
+
+## The dashboard will be created with all visualizations pre-configured. {#created-dashboard}
+
+
+
+
+
+## Troubleshooting {#troubleshooting}
+
+### Custom config not loading {#troubleshooting-not-loading}
+
+- Verify the environment variable CUSTOM_OTELCOL_CONFIG_FILE is set correctly
+
+```bash
+docker exec printenv CUSTOM_OTELCOL_CONFIG_FILE
+```
+
+- Check that the custom config file is mounted at /etc/otelcol-contrib/custom.config.yaml
+
+```bash
+docker exec ls -lh /etc/otelcol-contrib/custom.config.yaml
+```
+
+- View the custom config content to verify it's readable
+
+```bash
+docker exec cat /etc/otelcol-contrib/custom.config.yaml
+```
+
+### No logs appearing in HyperDX {#no-logs}
+
+- Ensure nginx is writing JSON logs
+```bash
+tail -f /var/log/nginx/access.log
+```
+- Check the collector can read the logs
+```bash
+docker exec `` cat /var/log/nginx/access.log
+```
+
+- Verify the effective config includes your filelog receiver
+```bash
+docker exec `` cat /etc/otel/supervisor-data/effective.yaml | grep filelog
+```
+
+- Check for errors in the collector logs
+```bash
+docker exec `` cat /etc/otel/supervisor-data/agent.log
+```
+
+## Next Steps {#next-steps}
+If you want to explore further, here are some next steps to experiment with your dashboard
+
+- Set up alerts for critical metrics (error rates, latency thresholds)
+- Create additional dashboards for specific use cases (API monitoring, security events)
diff --git a/docs/use-cases/observability/clickstack/integration-examples/nginx-traces.md b/docs/use-cases/observability/clickstack/integration-examples/nginx-traces.md
new file mode 100644
index 00000000000..18834f3c898
--- /dev/null
+++ b/docs/use-cases/observability/clickstack/integration-examples/nginx-traces.md
@@ -0,0 +1,314 @@
+---
+slug: /use-cases/observability/clickstack/integrations/nginx-traces
+title: 'Monitoring Nginx Traces with ClickStack'
+sidebar_label: 'Nginx Traces'
+pagination_prev: null
+pagination_next: null
+description: 'Monitoring Nginx Traces with ClickStack'
+doc_type: 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import useBaseUrl from '@docusaurus/useBaseUrl';
+import import_dashboard from '@site/static/images/clickstack/import-dashboard.png';
+import finish_import from '@site/static/images/clickstack/finish-trace-dashboard.png';
+import example_dashboard from '@site/static/images/clickstack/example-trace-dashboard.png';
+import view_traces from '@site/static/images/clickstack/nginx-traces-search-view.png';
+
+# Monitoring Nginx Traces with ClickStack {#nginx-traces-clickstack}
+
+::::note[TL;DR]
+This guide shows you how to capture distributed traces from your existing nginx installation and visualize them in ClickStack. You'll learn how to:
+
+- Add the OpenTelemetry module to nginx
+- Configure nginx to send traces to ClickStack's OTLP endpoint
+- Verify traces are appearing in HyperDX
+- Use a pre-built dashboard to visualize request performance (latency, errors, throughput)
+
+Time Required: 5-10 minutes.
+::::
+
+## Prerequisites {#prerequisites}
+- ClickStack instance running with OTLP endpoints accessible (ports 4317/4318)
+- Existing nginx installation (version 1.18 or higher)
+- Root or sudo access to modify nginx configuration
+- ClickStack hostname or IP address
+
+## Integration with existing nginx {#existing-nginx}
+
+This section covers adding distributed tracing to your existing nginx installation by installing the OpenTelemetry module and configuring it to send traces to ClickStack.
+
+
+
+## Install OpenTelemetry nginx module {#install-module}
+
+The easiest way to add tracing to nginx is using the official nginx image with OpenTelemetry support built-in.
+
+### Using the nginx:otel image {#using-otel-image}
+
+Replace your current nginx image with the OpenTelemetry-enabled version:
+
+```yaml
+# In your docker-compose.yml or Dockerfile
+image: nginx:1.27-otel
+```
+
+This image includes the `ngx_otel_module.so` pre-installed and ready to use.
+
+::::note
+If you're running nginx outside of Docker, refer to the [OpenTelemetry nginx documentation](https://github.com/open-telemetry/opentelemetry-cpp-contrib/tree/main/instrumentation/nginx) for manual installation instructions.
+::::
+
+## Configure nginx to send traces to ClickStack {#configure-nginx}
+
+Add OpenTelemetry configuration to your `nginx.conf` file. The configuration loads the module and directs traces to ClickStack's OTLP endpoint.
+
+First, get your API key:
+1. Open HyperDX at your ClickStack URL
+2. Navigate to Settings → API Keys
+3. Copy your **Ingestion API Key**
+4. Set it as an environment variable: `export CLICKSTACK_API_KEY=your-api-key-here`
+
+Add this to your `nginx.conf`:
+
+```yaml
+load_module modules/ngx_otel_module.so;
+
+events {
+ worker_connections 1024;
+}
+
+http {
+ # OpenTelemetry exporter configuration
+ otel_exporter {
+ endpoint :4317;
+ header authorization ${CLICKSTACK_API_KEY};
+ }
+
+ # Service name for identifying this nginx instance
+ otel_service_name "nginx-proxy";
+
+ # Enable tracing
+ otel_trace on;
+
+ server {
+ listen 80;
+
+ location / {
+ # Enable tracing for this location
+ otel_trace_context propagate;
+ otel_span_name "$request_method $uri";
+
+ # Add request details to traces
+ otel_span_attr http.status_code $status;
+ otel_span_attr http.request.method $request_method;
+ otel_span_attr http.route $uri;
+
+ # Your existing proxy or application configuration
+ proxy_pass http://your-backend;
+ }
+ }
+}
+```
+
+If running nginx in Docker, pass the environment variable to the container:
+
+```yaml
+services:
+ nginx:
+ image: nginx:1.27-otel
+ environment:
+ - CLICKSTACK_API_KEY=${CLICKSTACK_API_KEY}
+ volumes:
+ - ./nginx.conf:/etc/nginx/nginx.conf:ro
+```
+
+Replace `` with your ClickStack instance hostname or IP address.
+
+::::note
+- **Port 4317** is the gRPC endpoint used by the nginx module
+- **otel_service_name** should be descriptive of your nginx instance (e.g., "api-gateway", "frontend-proxy")
+- Change **otel_service_name** to match your environment for easier identification in HyperDX
+::::
+
+### Understanding the Configuration {#understanding-configuration}
+
+**What gets traced:**
+Each request to nginx creates a trace span showing:
+- Request method and path
+- HTTP status code
+- Request duration
+- Timestamp
+
+**Span attributes:**
+The `otel_span_attr` directives add metadata to each trace, allowing you to filter and analyze requests in HyperDX by status code, method, route, etc.
+
+After making these changes, test your nginx configuration:
+```bash
+nginx -t
+```
+
+If the test passes, reload nginx:
+```bash
+# For Docker
+docker-compose restart nginx
+
+# For systemd
+sudo systemctl reload nginx
+```
+
+## Verifying Traces in ClickStack {#verifying-traces}
+
+Once configured, log into HyperDX and verify traces are flowing, you should see something like this, if you don't see traces, try adjusting your time range:
+
+
+
+
+
+## Demo dataset {#demo-dataset}
+
+For users who want to test the nginx trace integration before configuring their production systems, we provide a sample dataset of pre-generated nginx traces with realistic traffic patterns.
+
+
+
+## Start ClickStack {#start-clickstack}
+
+If you don't have ClickStack running yet, start it with:
+
+```bash
+docker run --name clickstack-demo \
+ -p 8080:8080 -p 4317:4317 -p 4318:4318 \
+ docker.hyperdx.io/hyperdx/hyperdx-all-in-one:latest
+```
+
+Wait about 30 seconds for ClickStack to fully initialize before proceeding.
+
+- Port 8080: HyperDX web interface
+- Port 4317: OTLP gRPC endpoint (used by nginx module)
+- Port 4318: OTLP HTTP endpoint (used for demo traces)
+
+## Download the sample dataset {#download-sample}
+
+Download the sample traces file and update timestamps to the current time:
+
+```bash
+# Download the traces
+curl -O https://datasets-documentation.s3.eu-west-3.amazonaws.com/clickstack-integrations/nginx-traces-sample.json
+```
+
+The dataset includes:
+- 1,000 trace spans with realistic timing
+- 9 different endpoints with varied traffic patterns
+- ~93% success rate (200), ~3% client errors (404), ~4% server errors (500)
+- Latencies ranging from 10ms to 800ms
+- Original traffic patterns preserved, shifted to current time
+
+## Send traces to ClickStack {#send-traces}
+
+Set your API key as an environment variable (if not already set):
+
+```bash
+export CLICKSTACK_API_KEY=your-api-key-here
+```
+
+**Get your API key:**
+1. Open HyperDX at your ClickStack URL
+2. Navigate to Settings → API Keys
+3. Copy your **Ingestion API Key**
+
+Then send the traces to ClickStack:
+
+```bash
+curl -X POST http://localhost:4318/v1/traces \
+ -H "Content-Type: application/json" \
+ -H "Authorization: $CLICKSTACK_API_KEY" \
+ -d @nginx-traces-sample.json
+```
+
+::::note[Running on localhost]
+This demo assumes ClickStack is running locally on `localhost:4318`. For remote instances, replace `localhost` with your ClickStack hostname.
+::::
+
+You should see a response like `{"partialSuccess":{}}` indicating the traces were successfully sent. All 1,000 traces will be ingested into ClickStack.
+
+## Verify traces in HyperDX {#verify-demo-traces}
+
+1. Open [HyperDX](http://localhost:8080/search?from=1761501600000&to=1761588000000&isLive=false&source=69023d1b4f1d41a964641b09&where=&select=Timestamp,ServiceName,StatusCode,round(Duration/1e6),SpanName&whereLanguage=lucene&orderBy=&filters=[])
+
+::::note
+It is important to use the link above to get the correct time range, if you don't use this link set your time range to Oct 26 13:00:00 - Oct 27 13:00:00 to see proper results.
+::::
+
+Here's what you should see in your search view:
+
+
+
+
+
+## Dashboards and visualization {#dashboards}
+
+To help you get started monitoring traces with ClickStack, we provide essential visualizations for trace data.
+
+
+
+## Download the dashboard configuration. {#download}
+
+## Import Pre-built Dashboard {#import-dashboard}
+1. Open HyperDX and navigate to the Dashboards section.
+2. Click "Import Dashboard" in the upper right corner under the ellipses.
+
+
+
+3. Upload the nginx-trace-dashboard.json file and click finish import.
+
+
+
+## The dashboard will be created with all visualizations pre-configured. {#created-dashboard}
+
+
+
+
+
+## Troubleshooting {#troubleshooting}
+
+### No traces appearing in HyperDX {#no-traces}
+
+**Verify nginx module is loaded:**
+```bash
+nginx -V 2>&1 | grep otel
+```
+You should see references to the OpenTelemetry module.
+
+**Check network connectivity:**
+```bash
+telnet 4317
+```
+This should connect successfully to the OTLP gRPC endpoint.
+
+**Verify API key is set:**
+```bash
+echo $CLICKSTACK_API_KEY
+```
+Should output your API key (not empty).
+
+**Check nginx error logs:**
+```bash
+# For Docker
+docker logs 2>&1 | grep -i otel
+
+# For systemd
+sudo tail -f /var/log/nginx/error.log | grep -i otel
+```
+Look for OpenTelemetry-related errors.
+
+**Verify nginx is receiving requests:**
+```bash
+# Check access logs to confirm traffic
+tail -f /var/log/nginx/access.log
+```
+
+## Next Steps {#next-steps}
+If you want to explore further, here are some next steps to experiment with your dashboard
+
+- Set up alerts for critical metrics (error rates, latency thresholds)
+- Create additional dashboards for specific use cases (API monitoring, security events)
diff --git a/docusaurus.config.en.js b/docusaurus.config.en.js
index 1c3c8c3b473..e9b00330b5b 100644
--- a/docusaurus.config.en.js
+++ b/docusaurus.config.en.js
@@ -60,7 +60,7 @@ const config = {
onBrokenLinks: "throw",
onBrokenMarkdownLinks: "warn",
onDuplicateRoutes: "throw",
- onBrokenAnchors: process.env.ON_BROKEN_ANCHORS ?? "throw",
+ onBrokenAnchors: "warn",
favicon: "img/docs_favicon.ico",
organizationName: "ClickHouse",
trailingSlash: false,
diff --git a/scripts/aspell-ignore/en/aspell-dict.txt b/scripts/aspell-ignore/en/aspell-dict.txt
index 32f237ad09a..6641d0f18d3 100644
--- a/scripts/aspell-ignore/en/aspell-dict.txt
+++ b/scripts/aspell-ignore/en/aspell-dict.txt
@@ -1,4 +1,4 @@
-personal_ws-1.1 en 3812
+personal_ws-1.1 en 3816
AArch
ACLs
AICPA
@@ -216,6 +216,7 @@ ClickPipes
ClickPipes's
ClickPy
ClickStack
+ClickStack's
ClickVisual
ClickableSquare
CloudAvailableBadge
@@ -1256,6 +1257,7 @@ SerializationLowCardinality
SerializationObject
Serverless
ServiceNow
+ServiceName
ServiceNow's
SetOperationMode
SeverityText
@@ -1280,6 +1282,7 @@ Smirnov's
Smirnov'test
Sonatype
Soundex
+SpanAttributes
SpanKind
Spearman's
Splunk
@@ -1883,6 +1886,7 @@ clickhousedb
clickhousex
clickmate
clickpipe
+clickstack
clickstream
clickvisual
clockhour
@@ -2784,6 +2788,7 @@ nestjs
netloc
newjson
nextset
+nginx
ngram
ngramDistance
ngramDistanceCaseInsensitive
@@ -3811,3 +3816,13 @@ znode
znodes
zookeeperSessionUptime
zstd
+OTELCOL
+elipses
+geolocation
+nginx's
+otel
+otelcol
+href
+useBaseUrl
+SpanName
+lucene
\ No newline at end of file
diff --git a/sidebars.js b/sidebars.js
index 84494802054..ac82c08a4eb 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -1643,6 +1643,19 @@ const sidebars = {
]
}
]
+ },
+ {
+ type: "category",
+ label: "Integration guides",
+ link: { type: "doc", id: "use-cases/observability/clickstack/integration-examples/index" },
+ collapsed: true,
+ collapsible: true,
+ items: [
+ {
+ type: "autogenerated",
+ dirName: "use-cases/observability/clickstack/integration-examples",
+ }
+ ]
}
]
},
diff --git a/src/hooks/useAskAI.js b/src/hooks/useAskAI.js
index 07cd0e92523..f9a8a8941ed 100644
--- a/src/hooks/useAskAI.js
+++ b/src/hooks/useAskAI.js
@@ -13,7 +13,7 @@ function useAskAI() {
setIsKapaLoaded(true);
return true;
}
- return false;
+ return false;
};
// Set up event listeners for Kapa widget
diff --git a/static/examples/example-logs-dashboard.json b/static/examples/example-logs-dashboard.json
new file mode 100644
index 00000000000..e665da0ca4f
--- /dev/null
+++ b/static/examples/example-logs-dashboard.json
@@ -0,0 +1 @@
+{"version":"0.1.0","name":"Example Dashboard","tiles":[{"id":"tp56x","x":0,"y":0,"w":8,"h":10,"config":{"name":"Requests over time","source":"Logs","displayType":"line","granularity":"auto","select":[{"aggFn":"count","aggCondition":"","aggConditionLanguage":"lucene","valueExpression":""}],"where":"","whereLanguage":"lucene","groupBy":""}},{"id":"yrkd9","x":8,"y":0,"w":8,"h":10,"config":{"name":"Errors Over Time","source":"Logs","displayType":"stacked_bar","granularity":"auto","select":[{"aggFn":"count","aggCondition":"toInt32(LogAttributes['status']) >= 400","aggConditionLanguage":"sql","valueExpression":""}],"where":"","whereLanguage":"lucene","groupBy":"LogAttributes['status']"}},{"id":"pha6m","x":8,"y":10,"w":8,"h":10,"config":{"name":"Request times (90,95,99 percentile)","source":"Logs","displayType":"line","granularity":"5 minute","select":[{"aggFn":"quantile","aggCondition":"","aggConditionLanguage":"lucene","valueExpression":"LogAttributes['request_time']"},{"aggFn":"quantile","aggCondition":"","aggConditionLanguage":"lucene","valueExpression":"LogAttributes['request_time']"},{"aggFn":"quantile","aggCondition":"","aggConditionLanguage":"lucene","valueExpression":"LogAttributes['request_time']"}],"where":"","whereLanguage":"lucene"}},{"id":"bwkhq","x":16,"y":10,"w":8,"h":10,"config":{"name":"Status code counts","source":"Logs","displayType":"table","granularity":"auto","select":[{"aggFn":"count","aggCondition":"","aggConditionLanguage":"lucene","valueExpression":""}],"where":"","whereLanguage":"lucene","groupBy":"LogAttributes['status']"}},{"id":"17fl0x","x":16,"y":0,"w":8,"h":10,"config":{"name":"Status codes over time","source":"Logs","displayType":"line","granularity":"auto","select":[{"aggFn":"count","aggCondition":"","aggConditionLanguage":"lucene","valueExpression":""}],"where":"","whereLanguage":"lucene","groupBy":"LogAttributes['status']"}},{"id":"9eb6o","x":0,"y":10,"w":8,"h":10,"config":{"name":"Average upstream response time","source":"Logs","displayType":"line","granularity":"auto","select":[{"aggFn":"avg","aggCondition":"","aggConditionLanguage":"lucene","valueExpression":"LogAttributes['upstream_response_time']"}],"where":"","whereLanguage":"lucene"}}],"filters":[]}
diff --git a/static/examples/example-traces.json b/static/examples/example-traces.json
new file mode 100644
index 00000000000..bf8eeb2dd39
--- /dev/null
+++ b/static/examples/example-traces.json
@@ -0,0 +1 @@
+{"version":"0.1.0","name":"My Dashboard","tiles":[{"id":"1lnqxq","x":0,"y":0,"w":8,"h":10,"config":{"name":"Request rate","source":"Traces","displayType":"stacked_bar","granularity":"auto","select":[{"aggFn":"count","aggCondition":"","aggConditionLanguage":"lucene","valueExpression":""}],"where":"","whereLanguage":"lucene","groupBy":"Events.Timestamp"}},{"id":"k0kud","x":8,"y":0,"w":8,"h":10,"config":{"name":"Errors over time","source":"Traces","displayType":"line","granularity":"auto","select":[{"aggFn":"count","aggCondition":"StatusCode:\"Error\"","aggConditionLanguage":"lucene","valueExpression":""}],"where":"","whereLanguage":"lucene","groupBy":"Events.Timestamp"}},{"id":"g222","x":16,"y":0,"w":8,"h":10,"config":{"name":"Status codes","source":"Traces","displayType":"table","granularity":"auto","select":[{"aggFn":"count","aggCondition":"","aggConditionLanguage":"lucene","valueExpression":""}],"where":"","whereLanguage":"lucene","groupBy":"SpanAttributes['http.status_code']"}},{"id":"vhsck","x":0,"y":10,"w":24,"h":9,"config":{"name":"Status codes over time","source":"Traces","displayType":"line","granularity":"auto","select":[{"aggFn":"count","aggCondition":"","aggConditionLanguage":"lucene","valueExpression":""}],"where":"","whereLanguage":"lucene","groupBy":"SpanAttributes['http.status_code']"}}],"filters":[]}
diff --git a/static/images/clickstack/example-logs-dashboard.png b/static/images/clickstack/example-logs-dashboard.png
new file mode 100644
index 00000000000..c5672bc6673
Binary files /dev/null and b/static/images/clickstack/example-logs-dashboard.png differ
diff --git a/static/images/clickstack/example-trace-dashboard.png b/static/images/clickstack/example-trace-dashboard.png
new file mode 100644
index 00000000000..b37266790ec
Binary files /dev/null and b/static/images/clickstack/example-trace-dashboard.png differ
diff --git a/static/images/clickstack/finish-import.png b/static/images/clickstack/finish-import.png
new file mode 100644
index 00000000000..53af2d527e7
Binary files /dev/null and b/static/images/clickstack/finish-import.png differ
diff --git a/static/images/clickstack/finish-trace-dashboard.png b/static/images/clickstack/finish-trace-dashboard.png
new file mode 100644
index 00000000000..24aad8d1f11
Binary files /dev/null and b/static/images/clickstack/finish-trace-dashboard.png differ
diff --git a/static/images/clickstack/import-dashboard.png b/static/images/clickstack/import-dashboard.png
new file mode 100644
index 00000000000..ec816d559fa
Binary files /dev/null and b/static/images/clickstack/import-dashboard.png differ
diff --git a/static/images/clickstack/log-view.png b/static/images/clickstack/log-view.png
new file mode 100644
index 00000000000..5cfc59eecda
Binary files /dev/null and b/static/images/clickstack/log-view.png differ
diff --git a/static/images/clickstack/nginx-logs-search-view.png b/static/images/clickstack/nginx-logs-search-view.png
new file mode 100644
index 00000000000..08351361f56
Binary files /dev/null and b/static/images/clickstack/nginx-logs-search-view.png differ
diff --git a/static/images/clickstack/nginx-traces-search-view.png b/static/images/clickstack/nginx-traces-search-view.png
new file mode 100644
index 00000000000..eedf3e2b299
Binary files /dev/null and b/static/images/clickstack/nginx-traces-search-view.png differ