mirror of
https://github.com/apache/impala.git
synced 2025-12-19 18:12:08 -05:00
IMPALA-13237: [Patch 4 of 5] - Helpers to Visualize OpenTelemetry Traces
Adds helper scripts and configurations to run an OpenTelemetry OTLP collector and a Jaeger instance. The collector is configured to receive telemetry data on port 55888 via OTLP-over-http and to forward traces to a Jaeger-all-in-one container receiving data on port 4317. Testing was accomplished by running this setup locally and verifying traces appeared in the Jaeger UI. Generated-by: Github Copilot (GPT-4.1) Change-Id: I198c00ddc99a87c630a6f654042bffece2c9d0fd Reviewed-on: http://gerrit.cloudera.org:8080/23100 Reviewed-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com> Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
This commit is contained in:
committed by
Impala Public Jenkins
parent
3e6326538c
commit
fdad954ce4
@@ -104,6 +104,7 @@ README*.md
|
||||
*/README.txt
|
||||
testdata/bin/README-BENCHMARK-TEST-GENERATION
|
||||
testdata/bin/minicluster_lakekeeper/README.md
|
||||
testdata/bin/otel-collector/README.md
|
||||
testdata/scale_test_metadata/README.md
|
||||
tests/comparison/ORACLE.txt
|
||||
bin/distcc/README.md
|
||||
|
||||
110
testdata/bin/otel-collector/README.md
vendored
Normal file
110
testdata/bin/otel-collector/README.md
vendored
Normal file
@@ -0,0 +1,110 @@
|
||||
# OpenTelemetry Collector & Jaeger Integration
|
||||
|
||||
This directory contains configuration to run an [OpenTelemetry Collector](https://opentelemetry.io/docs/collector/) and a [Jaeger](https://www.jaegertracing.io/) instance for collecting and visualizing telemetry, primarily for Impala development and testing.
|
||||
|
||||
---
|
||||
|
||||
## Contents
|
||||
|
||||
- [`otel-config.yml`](./otel-config.yml): OpenTelemetry Collector configuration file.
|
||||
- [`docker-compose.yml`](./docker-compose.yml): Alternative Docker Compose setup for both services.
|
||||
|
||||
---
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Option 1: Run Interactively
|
||||
|
||||
```bash
|
||||
docker-compose -f testdata/bin/otel-collector/docker-compose.yml up
|
||||
```
|
||||
|
||||
- This command:
|
||||
- Starts the OpenTelemetry Collector container with the `otel-config.yml` config.
|
||||
- Starts the Jaeger container.
|
||||
- Waits for both containers to be running.
|
||||
- Continuously outputs both container logs to the terminal window.
|
||||
|
||||
### Option 2: Run Detached
|
||||
|
||||
```bash
|
||||
docker-compose -f testdata/bin/otel-collector/docker-compose.yml up -d
|
||||
```
|
||||
|
||||
- This command:
|
||||
- Starts the OpenTelemetry Collector container with the `otel-config.yml` config.
|
||||
- Starts the Jaeger container.
|
||||
- Waits for both containers to be running.
|
||||
- Exits back to the terminal prompt.
|
||||
|
||||
### Stop the Collector and Jaeger
|
||||
|
||||
```bash
|
||||
docker-compose -f testdata/bin/otel-collector/docker-compose.yml down
|
||||
```
|
||||
|
||||
- This command gracefully stops and removes the containers and network. Note this command must always be run. Pressing ctrl+c when the containers are run interactively does not stop the containers.
|
||||
|
||||
---
|
||||
|
||||
## Configuration Details
|
||||
|
||||
- **OpenTelemetry Collector** listens for OTLP traces on port `55888` (HTTP).
|
||||
- **Jaeger** is configured to receive OTLP traces on port `4317` and exposes its UI on port `16686`.
|
||||
|
||||
The collector forwards all received traces to Jaeger using OTLP/gRPC.
|
||||
|
||||
---
|
||||
|
||||
## Sending Traces from Impala
|
||||
|
||||
To send traces from an Impala cluster to this collector, start Impala with the following arguments:
|
||||
|
||||
```bash
|
||||
./bin/start-impala-cluster.py \
|
||||
--cluster_size=2 \
|
||||
--num_coordinators=1 \
|
||||
--use_exclusive_coordinators \
|
||||
--impalad_args="-v=2 --otel_trace_enabled=true \
|
||||
--otel_trace_collector_url=http://localhost:55888/v1/traces
|
||||
--otel_trace_span_processor=simple \
|
||||
--cluster_id=local_cluster"
|
||||
```
|
||||
|
||||
- Ensure the collector is running before starting Impala.
|
||||
- Adjust `--otel_trace_collector_url` if running on a remote host.
|
||||
|
||||
---
|
||||
|
||||
## Viewing Traces
|
||||
|
||||
- Open the Jaeger UI in your browser: [http://localhost:16686/](http://localhost:16686/)
|
||||
- If running remotely, use SSH port forwarding:
|
||||
|
||||
```bash
|
||||
ssh -L 16686:localhost:16686 <your-dev-machine>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
||||
- The scripts and Docker Compose setup are idempotent and safe to run multiple times.
|
||||
- All containers and the custom network are cleaned up on stop.
|
||||
- The provided configuration is suitable for local development and testing only.
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- **Ports already in use:** Ensure no other services are using ports `55888`, `4317`, or `16686`.
|
||||
- **Containers not starting:** Check Docker logs for `otel-collector` and `jaeger` for errors:
|
||||
|
||||
```bash
|
||||
docker logs otel-collector
|
||||
docker logs jaeger
|
||||
```
|
||||
|
||||
- **Configuration changes:** Edit `otel-config.yml` as needed and restart the services.
|
||||
|
||||
---
|
||||
43
testdata/bin/otel-collector/docker-compose.yml
vendored
Normal file
43
testdata/bin/otel-collector/docker-compose.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
##############################################################################
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
##############################################################################
|
||||
|
||||
version: '3.0'
|
||||
|
||||
services:
|
||||
jaeger:
|
||||
image: jaegertracing/jaeger:2.5.0
|
||||
container_name: jaeger
|
||||
ports:
|
||||
- "16686:16686" # Jaeger UI
|
||||
- "5778:5778" # Config REST API
|
||||
- "4317:4317" # ingest
|
||||
environment:
|
||||
- COLLECTOR_OTLP_ENABLED=true
|
||||
- COLLECTOR_OTLP_HTTP_ENABLED=true
|
||||
|
||||
otel-collector:
|
||||
image: otel/opentelemetry-collector:latest
|
||||
container_name: otel-collector
|
||||
depends_on:
|
||||
- jaeger
|
||||
volumes:
|
||||
- ./otel-config.yml:/etc/otel/config.yml
|
||||
command: ["--config", "/etc/otel/config.yml"]
|
||||
ports:
|
||||
- "55888:55888" # Expose OTLP HTTP externally
|
||||
36
testdata/bin/otel-collector/otel-config.yml
vendored
Normal file
36
testdata/bin/otel-collector/otel-config.yml
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
##############################################################################
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
##############################################################################
|
||||
|
||||
receivers:
|
||||
otlp:
|
||||
protocols:
|
||||
http:
|
||||
endpoint: 0.0.0.0:55888
|
||||
|
||||
exporters:
|
||||
otlp:
|
||||
endpoint: jaeger:4317
|
||||
tls:
|
||||
insecure: true
|
||||
|
||||
service:
|
||||
pipelines:
|
||||
traces:
|
||||
receivers: [otlp]
|
||||
exporters: [otlp]
|
||||
Reference in New Issue
Block a user