add in honeycomb support for weather-forecast demo (#345)

This commit is contained in:
Aayush 2025-01-21 17:15:27 -08:00 committed by GitHub
parent bea0dd4a83
commit fcd8cfb9fc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 101 additions and 15 deletions

View file

@ -0,0 +1,5 @@
FROM otel/opentelemetry-collector:latest
COPY otel-collector-config.yaml /etc/otel-collector-config.yaml
ENTRYPOINT ["/otelcol", "--config=/etc/otel-collector-config.yaml"]

View file

@ -0,0 +1,24 @@
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
exporters:
otlp:
endpoint: "api.honeycomb.io:443"
headers:
"x-honeycomb-team": "${HONEYCOMB_API_KEY}"
processors:
batch:
timeout: 5s
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [otlp]

View file

@ -0,0 +1,46 @@
services:
weather_forecast_service:
build:
context: ./
environment:
- OLTP_HOST=http://otel-collector:4317
extra_hosts:
- "host.docker.internal:host-gateway"
ports:
- "18083:80"
chatbot_ui:
build:
context: ../shared/chatbot_ui
ports:
- "18080:8080"
environment:
# this is only because we are running the sample app in the same docker container environment as archgw
- CHAT_COMPLETION_ENDPOINT=http://host.docker.internal:10000/v1
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- ./arch_config.yaml:/app/arch_config.yaml
otel-collector:
build:
context: ../shared/honeycomb/
ports:
- "4317:4317"
- "4318:4318"
volumes:
- ../shared/honeycomb/otel-collector-config.yaml:/etc/otel-collector-config.yaml
env_file:
- .env
environment:
- HONEYCOMB_API_KEY
prometheus:
build:
context: ../shared/prometheus
grafana:
build:
context: ../shared/grafana
ports:
- "3000:3000"

View file

@ -11,18 +11,21 @@ load_env() {
# Function to determine the docker-compose file based on the argument # Function to determine the docker-compose file based on the argument
get_compose_file() { get_compose_file() {
case "$1" in case "$1" in
jaeger) jaeger)
echo "docker-compose-jaeger.yaml" echo "docker-compose-jaeger.yaml"
;; ;;
logfire) logfire)
echo "docker-compose-logfire.yaml" echo "docker-compose-logfire.yaml"
;; ;;
signoz) signoz)
echo "docker-compose-signoz.yaml" echo "docker-compose-signoz.yaml"
;; ;;
*) honeycomb)
echo "docker-compose.yaml" echo "docker-compose-honeycomb.yaml"
;; ;;
*)
echo "docker-compose.yaml"
;;
esac esac
} }
@ -44,12 +47,16 @@ start_demo() {
echo "Error: LOGFIRE_API_KEY environment variable is required for Logfire." echo "Error: LOGFIRE_API_KEY environment variable is required for Logfire."
exit 1 exit 1
fi fi
if [ "$1" == "honeycomb" ] && [ -z "$HONEYCOMB_API_KEY" ]; then
echo "Error: HONEYCOMB_API_KEY environment variable is required for Honeycomb."
exit 1
fi
# Create .env file # Create .env file
echo "Creating .env file..." echo "Creating .env file..."
echo "OPENAI_API_KEY=$OPENAI_API_KEY" > .env echo "OPENAI_API_KEY=$OPENAI_API_KEY" >.env
if [ "$1" == "logfire" ]; then if [ "$1" == "logfire" ]; then
echo "LOGFIRE_API_KEY=$LOGFIRE_API_KEY" >> .env echo "LOGFIRE_API_KEY=$LOGFIRE_API_KEY" >>.env
fi fi
echo ".env file created with required API keys." echo ".env file created with required API keys."
fi fi
@ -60,6 +67,10 @@ start_demo() {
echo "Error: LOGFIRE_API_KEY environment variable is required for Logfire." echo "Error: LOGFIRE_API_KEY environment variable is required for Logfire."
exit 1 exit 1
fi fi
if [ "$1" == "honeycomb" ] && [ -z "$HONEYCOMB_API_KEY" ]; then
echo "Error: HONEYCOMB_API_KEY environment variable is required for Honeycomb."
exit 1
fi
# Step 4: Start Arch # Step 4: Start Arch
echo "Starting Arch with arch_config.yaml..." echo "Starting Arch with arch_config.yaml..."
@ -67,7 +78,7 @@ start_demo() {
# Step 5: Start Network Agent with the chosen Docker Compose file # Step 5: Start Network Agent with the chosen Docker Compose file
echo "Starting Network Agent with $COMPOSE_FILE..." echo "Starting Network Agent with $COMPOSE_FILE..."
docker compose -f "$COMPOSE_FILE" up -d # Run in detached mode docker compose -f "$COMPOSE_FILE" up -d # Run in detached mode
} }
# Function to stop the demo # Function to stop the demo