diff --git a/demos/weather_forecast/otel-collector/Dockerfile b/demos/shared/logfire/Dockerfile similarity index 100% rename from demos/weather_forecast/otel-collector/Dockerfile rename to demos/shared/logfire/Dockerfile diff --git a/demos/weather_forecast/otel-collector/otel-collector-config.yaml b/demos/shared/logfire/otel-collector-config.yaml similarity index 100% rename from demos/weather_forecast/otel-collector/otel-collector-config.yaml rename to demos/shared/logfire/otel-collector-config.yaml diff --git a/demos/weather_forecast/README.md b/demos/weather_forecast/README.md index 5334d4a5..9c60e790 100644 --- a/demos/weather_forecast/README.md +++ b/demos/weather_forecast/README.md @@ -1,27 +1,56 @@ # Function calling + This demo shows how you can use Arch's core function calling capabilites. # Starting the demo + 1. Please make sure the [pre-requisites](https://github.com/katanemo/arch/?tab=readme-ov-file#prerequisites) are installed correctly 2. Start Arch -3. - ```sh +3. ```sh sh run_demo.sh ``` 4. Navigate to http://localhost:18080/ 5. You can type in queries like "how is the weather?" # Observability + Arch gateway publishes stats endpoint at http://localhost:19901/stats. In this demo we are using prometheus to pull stats from arch and we are using grafana to visalize the stats in dashboard. To see grafana dashboard follow instructions below, 1. Start grafana and prometheus using following command ```yaml docker compose --profile monitoring up ``` -1. Navigate to http://localhost:3000/ to open grafana UI (use admin/grafana as credentials) -1. From grafana left nav click on dashboards and select "Intelligent Gateway Overview" to view arch gateway stats - +2. Navigate to http://localhost:3000/ to open grafana UI (use admin/grafana as credentials) +3. From grafana left nav click on dashboards and select "Intelligent Gateway Overview" to view arch gateway stats Here is a sample interaction, image + +## Tracing + +To see a tracing dashboard follow instructions below, + +1. For Jaeger, you can either use the default run_demo.sh script or run the following command, + +```sh +sh run_demo.sh jaeger +``` + +2. For Logfire, first make sure to add a LOGFIRE_API_KEY to the .env file. You can either use the default run_demo.sh script or run the following command, + +```sh +sh run_demo.sh logfire +``` + +3. For Signoz, you can either use the default run_demo.sh script or run the following command, + +```sh +sh run_demo.sh signoz +``` + +If using Jaeger, navigate to http://localhost:16686/ to open Jaeger UI + +If using Signoz, navigate to http://localhost:3301/ to open Signoz UI + +If using Logfire, navigate to your logfire dashboard that you got the write key from to view the dashboard diff --git a/demos/weather_forecast/docker-compose.jaeger.yml b/demos/weather_forecast/docker-compose-jaeger.yaml similarity index 94% rename from demos/weather_forecast/docker-compose.jaeger.yml rename to demos/weather_forecast/docker-compose-jaeger.yaml index fdaa7fcd..7bff4dbd 100644 --- a/demos/weather_forecast/docker-compose.jaeger.yml +++ b/demos/weather_forecast/docker-compose-jaeger.yaml @@ -1,7 +1,7 @@ services: weather_forecast_service: build: - context: ../shared/weather_forecast_service + context: ./weather_forecast_service environment: - OLTP_HOST=http://jaeger:4317 extra_hosts: diff --git a/demos/weather_forecast/docker-compose.logfire.yml b/demos/weather_forecast/docker-compose-logfire.yaml similarity index 84% rename from demos/weather_forecast/docker-compose.logfire.yml rename to demos/weather_forecast/docker-compose-logfire.yaml index 1505d817..92371d51 100644 --- a/demos/weather_forecast/docker-compose.logfire.yml +++ b/demos/weather_forecast/docker-compose-logfire.yaml @@ -1,7 +1,7 @@ services: weather_forecast_service: build: - context: ../shared/weather_forecast_service + context: ./weather_forecast_service environment: - OLTP_HOST=http://otel-collector:4317 extra_hosts: @@ -24,12 +24,12 @@ services: otel-collector: build: - context: ./otel-collector + context: ../shared/logfire/ ports: - "4317:4317" - "4318:4318" volumes: - - ./otel-collector/otel-collector-config.yaml:/etc/otel-collector-config.yaml + - ../shared/logfire/otel-collector-config.yaml:/etc/otel-collector-config.yaml env_file: - .env environment: diff --git a/demos/weather_forecast/docker-compose.signoz.yml b/demos/weather_forecast/docker-compose-signoz.yaml similarity index 94% rename from demos/weather_forecast/docker-compose.signoz.yml rename to demos/weather_forecast/docker-compose-signoz.yaml index 1c23f464..e9e2e536 100644 --- a/demos/weather_forecast/docker-compose.signoz.yml +++ b/demos/weather_forecast/docker-compose-signoz.yaml @@ -4,7 +4,7 @@ include: services: weather_forecast_service: build: - context: ../shared/weather_forecast_service + context: ./weather_forecast_service environment: - OLTP_HOST=http://otel-collector:4317 extra_hosts: diff --git a/demos/weather_forecast/docker-compose.yaml b/demos/weather_forecast/docker-compose.yaml index fdaa7fcd..7bff4dbd 100644 --- a/demos/weather_forecast/docker-compose.yaml +++ b/demos/weather_forecast/docker-compose.yaml @@ -1,7 +1,7 @@ services: weather_forecast_service: build: - context: ../shared/weather_forecast_service + context: ./weather_forecast_service environment: - OLTP_HOST=http://jaeger:4317 extra_hosts: diff --git a/demos/weather_forecast/run_demo.sh b/demos/weather_forecast/run_demo.sh index f1c6d921..1c6067b1 100644 --- a/demos/weather_forecast/run_demo.sh +++ b/demos/weather_forecast/run_demo.sh @@ -7,16 +7,16 @@ set -e get_compose_file() { case "$1" in jaeger) - echo "docker-compose.jaeger.yml" + echo "docker-compose-jaeger.yaml" ;; logfire) - echo "docker-compose.logfire.yml" + echo "docker-compose-logfire.yaml" ;; signoz) - echo "docker-compose.signoz.yml" + echo "docker-compose-signoz.yaml" ;; *) - echo "docker-compose.jaeger.yml" # Default to Jaeger + echo "docker-compose.yaml" # Default to Jaeger ;; esac } @@ -55,7 +55,7 @@ stop_demo() { echo "Stopping all Docker Compose services..." # Stop all services by iterating through all configurations - for compose_file in ./*.yml; do + for compose_file in ./docker-compose*.yaml; do echo "Stopping services in $compose_file..." docker compose -f "$compose_file" down done diff --git a/demos/shared/weather_forecast_service/Dockerfile b/demos/weather_forecast/weather_forecast_service/Dockerfile similarity index 100% rename from demos/shared/weather_forecast_service/Dockerfile rename to demos/weather_forecast/weather_forecast_service/Dockerfile diff --git a/demos/shared/weather_forecast_service/main.py b/demos/weather_forecast/weather_forecast_service/main.py similarity index 100% rename from demos/shared/weather_forecast_service/main.py rename to demos/weather_forecast/weather_forecast_service/main.py diff --git a/demos/shared/weather_forecast_service/poetry.lock b/demos/weather_forecast/weather_forecast_service/poetry.lock similarity index 100% rename from demos/shared/weather_forecast_service/poetry.lock rename to demos/weather_forecast/weather_forecast_service/poetry.lock diff --git a/demos/shared/weather_forecast_service/pyproject.toml b/demos/weather_forecast/weather_forecast_service/pyproject.toml similarity index 100% rename from demos/shared/weather_forecast_service/pyproject.toml rename to demos/weather_forecast/weather_forecast_service/pyproject.toml