diff --git a/demos/samples_python/currency_exchange/README.md b/demos/advanced/currency_exchange/README.md similarity index 100% rename from demos/samples_python/currency_exchange/README.md rename to demos/advanced/currency_exchange/README.md diff --git a/demos/samples_python/currency_exchange/config.yaml b/demos/advanced/currency_exchange/config.yaml similarity index 100% rename from demos/samples_python/currency_exchange/config.yaml rename to demos/advanced/currency_exchange/config.yaml diff --git a/demos/samples_python/currency_exchange/docker-compose.yaml b/demos/advanced/currency_exchange/docker-compose.yaml similarity index 100% rename from demos/samples_python/currency_exchange/docker-compose.yaml rename to demos/advanced/currency_exchange/docker-compose.yaml diff --git a/demos/samples_python/currency_exchange/hurl_tests/simple.hurl b/demos/advanced/currency_exchange/hurl_tests/simple.hurl similarity index 100% rename from demos/samples_python/currency_exchange/hurl_tests/simple.hurl rename to demos/advanced/currency_exchange/hurl_tests/simple.hurl diff --git a/demos/samples_python/currency_exchange/hurl_tests/simple_stream.hurl b/demos/advanced/currency_exchange/hurl_tests/simple_stream.hurl similarity index 100% rename from demos/samples_python/currency_exchange/hurl_tests/simple_stream.hurl rename to demos/advanced/currency_exchange/hurl_tests/simple_stream.hurl diff --git a/demos/samples_java/weather_forcecast_service/run_demo.sh b/demos/advanced/currency_exchange/run_demo.sh similarity index 100% rename from demos/samples_java/weather_forcecast_service/run_demo.sh rename to demos/advanced/currency_exchange/run_demo.sh diff --git a/demos/samples_python/currency_exchange/test_data.yaml b/demos/advanced/currency_exchange/test_data.yaml similarity index 100% rename from demos/samples_python/currency_exchange/test_data.yaml rename to demos/advanced/currency_exchange/test_data.yaml diff --git a/demos/use_cases/model_choice_with_test_harness/README.md b/demos/advanced/model_choice_test_harness/README.md similarity index 100% rename from demos/use_cases/model_choice_with_test_harness/README.md rename to demos/advanced/model_choice_test_harness/README.md diff --git a/demos/use_cases/model_choice_with_test_harness/bench.py b/demos/advanced/model_choice_test_harness/bench.py similarity index 100% rename from demos/use_cases/model_choice_with_test_harness/bench.py rename to demos/advanced/model_choice_test_harness/bench.py diff --git a/demos/use_cases/model_choice_with_test_harness/evals_summarize.yaml b/demos/advanced/model_choice_test_harness/evals_summarize.yaml similarity index 100% rename from demos/use_cases/model_choice_with_test_harness/evals_summarize.yaml rename to demos/advanced/model_choice_test_harness/evals_summarize.yaml diff --git a/demos/use_cases/model_choice_with_test_harness/plano_config_with_aliases.yaml b/demos/advanced/model_choice_test_harness/plano_config_with_aliases.yaml similarity index 100% rename from demos/use_cases/model_choice_with_test_harness/plano_config_with_aliases.yaml rename to demos/advanced/model_choice_test_harness/plano_config_with_aliases.yaml diff --git a/demos/use_cases/model_choice_with_test_harness/pyproject.toml b/demos/advanced/model_choice_test_harness/pyproject.toml similarity index 100% rename from demos/use_cases/model_choice_with_test_harness/pyproject.toml rename to demos/advanced/model_choice_test_harness/pyproject.toml diff --git a/demos/use_cases/model_choice_with_test_harness/run_demo.sh b/demos/advanced/model_choice_test_harness/run_demo.sh similarity index 100% rename from demos/use_cases/model_choice_with_test_harness/run_demo.sh rename to demos/advanced/model_choice_test_harness/run_demo.sh diff --git a/demos/use_cases/model_choice_with_test_harness/uv.lock b/demos/advanced/model_choice_test_harness/uv.lock similarity index 100% rename from demos/use_cases/model_choice_with_test_harness/uv.lock rename to demos/advanced/model_choice_test_harness/uv.lock diff --git a/demos/samples_python/multi_turn_rag_agent/Dockerfile b/demos/advanced/multi_turn_rag/Dockerfile similarity index 100% rename from demos/samples_python/multi_turn_rag_agent/Dockerfile rename to demos/advanced/multi_turn_rag/Dockerfile diff --git a/demos/samples_python/multi_turn_rag_agent/README.md b/demos/advanced/multi_turn_rag/README.md similarity index 100% rename from demos/samples_python/multi_turn_rag_agent/README.md rename to demos/advanced/multi_turn_rag/README.md diff --git a/demos/samples_python/multi_turn_rag_agent/config.yaml b/demos/advanced/multi_turn_rag/config.yaml similarity index 100% rename from demos/samples_python/multi_turn_rag_agent/config.yaml rename to demos/advanced/multi_turn_rag/config.yaml diff --git a/demos/samples_python/multi_turn_rag_agent/docker-compose.yaml b/demos/advanced/multi_turn_rag/docker-compose.yaml similarity index 100% rename from demos/samples_python/multi_turn_rag_agent/docker-compose.yaml rename to demos/advanced/multi_turn_rag/docker-compose.yaml diff --git a/demos/samples_python/multi_turn_rag_agent/main.py b/demos/advanced/multi_turn_rag/main.py similarity index 100% rename from demos/samples_python/multi_turn_rag_agent/main.py rename to demos/advanced/multi_turn_rag/main.py diff --git a/demos/samples_python/multi_turn_rag_agent/mutli-turn-example.png b/demos/advanced/multi_turn_rag/mutli-turn-example.png similarity index 100% rename from demos/samples_python/multi_turn_rag_agent/mutli-turn-example.png rename to demos/advanced/multi_turn_rag/mutli-turn-example.png diff --git a/demos/samples_python/multi_turn_rag_agent/requirements.txt b/demos/advanced/multi_turn_rag/requirements.txt similarity index 100% rename from demos/samples_python/multi_turn_rag_agent/requirements.txt rename to demos/advanced/multi_turn_rag/requirements.txt diff --git a/demos/samples_python/multi_turn_rag_agent/run_demo.sh b/demos/advanced/multi_turn_rag/run_demo.sh similarity index 100% rename from demos/samples_python/multi_turn_rag_agent/run_demo.sh rename to demos/advanced/multi_turn_rag/run_demo.sh diff --git a/demos/samples_python/stock_quote/README.md b/demos/advanced/stock_quote/README.md similarity index 100% rename from demos/samples_python/stock_quote/README.md rename to demos/advanced/stock_quote/README.md diff --git a/demos/samples_python/stock_quote/config.yaml b/demos/advanced/stock_quote/config.yaml similarity index 100% rename from demos/samples_python/stock_quote/config.yaml rename to demos/advanced/stock_quote/config.yaml diff --git a/demos/samples_python/stock_quote/docker-compose.yaml b/demos/advanced/stock_quote/docker-compose.yaml similarity index 100% rename from demos/samples_python/stock_quote/docker-compose.yaml rename to demos/advanced/stock_quote/docker-compose.yaml diff --git a/demos/samples_python/currency_exchange/run_demo.sh b/demos/advanced/stock_quote/run_demo.sh similarity index 100% rename from demos/samples_python/currency_exchange/run_demo.sh rename to demos/advanced/stock_quote/run_demo.sh diff --git a/demos/samples_python/stock_quote/stock_quote_demo.png b/demos/advanced/stock_quote/stock_quote_demo.png similarity index 100% rename from demos/samples_python/stock_quote/stock_quote_demo.png rename to demos/advanced/stock_quote/stock_quote_demo.png diff --git a/demos/use_cases/multi_agent_with_crewai_langchain/Dockerfile b/demos/agent_orchestration/multi_agent_crewai_langchain/Dockerfile similarity index 100% rename from demos/use_cases/multi_agent_with_crewai_langchain/Dockerfile rename to demos/agent_orchestration/multi_agent_crewai_langchain/Dockerfile diff --git a/demos/use_cases/multi_agent_with_crewai_langchain/README.md b/demos/agent_orchestration/multi_agent_crewai_langchain/README.md similarity index 100% rename from demos/use_cases/multi_agent_with_crewai_langchain/README.md rename to demos/agent_orchestration/multi_agent_crewai_langchain/README.md diff --git a/demos/use_cases/multi_agent_with_crewai_langchain/config.yaml b/demos/agent_orchestration/multi_agent_crewai_langchain/config.yaml similarity index 100% rename from demos/use_cases/multi_agent_with_crewai_langchain/config.yaml rename to demos/agent_orchestration/multi_agent_crewai_langchain/config.yaml diff --git a/demos/use_cases/multi_agent_with_crewai_langchain/crewai/flight_agent.py b/demos/agent_orchestration/multi_agent_crewai_langchain/crewai/flight_agent.py similarity index 100% rename from demos/use_cases/multi_agent_with_crewai_langchain/crewai/flight_agent.py rename to demos/agent_orchestration/multi_agent_crewai_langchain/crewai/flight_agent.py diff --git a/demos/use_cases/multi_agent_with_crewai_langchain/docker-compose.yaml b/demos/agent_orchestration/multi_agent_crewai_langchain/docker-compose.yaml similarity index 100% rename from demos/use_cases/multi_agent_with_crewai_langchain/docker-compose.yaml rename to demos/agent_orchestration/multi_agent_crewai_langchain/docker-compose.yaml diff --git a/demos/use_cases/multi_agent_with_crewai_langchain/langchain/weather_agent.py b/demos/agent_orchestration/multi_agent_crewai_langchain/langchain/weather_agent.py similarity index 100% rename from demos/use_cases/multi_agent_with_crewai_langchain/langchain/weather_agent.py rename to demos/agent_orchestration/multi_agent_crewai_langchain/langchain/weather_agent.py diff --git a/demos/use_cases/multi_agent_with_crewai_langchain/openai_protocol.py b/demos/agent_orchestration/multi_agent_crewai_langchain/openai_protocol.py similarity index 100% rename from demos/use_cases/multi_agent_with_crewai_langchain/openai_protocol.py rename to demos/agent_orchestration/multi_agent_crewai_langchain/openai_protocol.py diff --git a/demos/use_cases/multi_agent_with_crewai_langchain/pyproject.toml b/demos/agent_orchestration/multi_agent_crewai_langchain/pyproject.toml similarity index 100% rename from demos/use_cases/multi_agent_with_crewai_langchain/pyproject.toml rename to demos/agent_orchestration/multi_agent_crewai_langchain/pyproject.toml diff --git a/demos/use_cases/multi_agent_with_crewai_langchain/traces.png b/demos/agent_orchestration/multi_agent_crewai_langchain/traces.png similarity index 100% rename from demos/use_cases/multi_agent_with_crewai_langchain/traces.png rename to demos/agent_orchestration/multi_agent_crewai_langchain/traces.png diff --git a/demos/use_cases/multi_agent_with_crewai_langchain/uv.lock b/demos/agent_orchestration/multi_agent_crewai_langchain/uv.lock similarity index 100% rename from demos/use_cases/multi_agent_with_crewai_langchain/uv.lock rename to demos/agent_orchestration/multi_agent_crewai_langchain/uv.lock diff --git a/demos/use_cases/travel_agents/Dockerfile b/demos/agent_orchestration/travel_agents/Dockerfile similarity index 100% rename from demos/use_cases/travel_agents/Dockerfile rename to demos/agent_orchestration/travel_agents/Dockerfile diff --git a/demos/use_cases/travel_agents/README.md b/demos/agent_orchestration/travel_agents/README.md similarity index 100% rename from demos/use_cases/travel_agents/README.md rename to demos/agent_orchestration/travel_agents/README.md diff --git a/demos/use_cases/travel_agents/config.yaml b/demos/agent_orchestration/travel_agents/config.yaml similarity index 100% rename from demos/use_cases/travel_agents/config.yaml rename to demos/agent_orchestration/travel_agents/config.yaml diff --git a/demos/use_cases/travel_agents/docker-compose.yaml b/demos/agent_orchestration/travel_agents/docker-compose.yaml similarity index 100% rename from demos/use_cases/travel_agents/docker-compose.yaml rename to demos/agent_orchestration/travel_agents/docker-compose.yaml diff --git a/demos/use_cases/travel_agents/pyproject.toml b/demos/agent_orchestration/travel_agents/pyproject.toml similarity index 100% rename from demos/use_cases/travel_agents/pyproject.toml rename to demos/agent_orchestration/travel_agents/pyproject.toml diff --git a/demos/use_cases/travel_agents/src/travel_agents/flight_agent.py b/demos/agent_orchestration/travel_agents/src/travel_agents/flight_agent.py similarity index 100% rename from demos/use_cases/travel_agents/src/travel_agents/flight_agent.py rename to demos/agent_orchestration/travel_agents/src/travel_agents/flight_agent.py diff --git a/demos/use_cases/travel_agents/src/travel_agents/weather_agent.py b/demos/agent_orchestration/travel_agents/src/travel_agents/weather_agent.py similarity index 100% rename from demos/use_cases/travel_agents/src/travel_agents/weather_agent.py rename to demos/agent_orchestration/travel_agents/src/travel_agents/weather_agent.py diff --git a/demos/use_cases/travel_agents/test.rest b/demos/agent_orchestration/travel_agents/test.rest similarity index 100% rename from demos/use_cases/travel_agents/test.rest rename to demos/agent_orchestration/travel_agents/test.rest diff --git a/demos/use_cases/travel_agents/tracing.png b/demos/agent_orchestration/travel_agents/tracing.png similarity index 100% rename from demos/use_cases/travel_agents/tracing.png rename to demos/agent_orchestration/travel_agents/tracing.png diff --git a/demos/use_cases/travel_agents/travel_agent_request.rest b/demos/agent_orchestration/travel_agents/travel_agent_request.rest similarity index 100% rename from demos/use_cases/travel_agents/travel_agent_request.rest rename to demos/agent_orchestration/travel_agents/travel_agent_request.rest diff --git a/demos/use_cases/travel_agents/uv.lock b/demos/agent_orchestration/travel_agents/uv.lock similarity index 100% rename from demos/use_cases/travel_agents/uv.lock rename to demos/agent_orchestration/travel_agents/uv.lock diff --git a/demos/use_cases/http_filter/Dockerfile b/demos/filter_chains/http_filter/Dockerfile similarity index 100% rename from demos/use_cases/http_filter/Dockerfile rename to demos/filter_chains/http_filter/Dockerfile diff --git a/demos/use_cases/http_filter/README.md b/demos/filter_chains/http_filter/README.md similarity index 100% rename from demos/use_cases/http_filter/README.md rename to demos/filter_chains/http_filter/README.md diff --git a/demos/use_cases/http_filter/config.yaml b/demos/filter_chains/http_filter/config.yaml similarity index 100% rename from demos/use_cases/http_filter/config.yaml rename to demos/filter_chains/http_filter/config.yaml diff --git a/demos/use_cases/http_filter/docker-compose.yaml b/demos/filter_chains/http_filter/docker-compose.yaml similarity index 100% rename from demos/use_cases/http_filter/docker-compose.yaml rename to demos/filter_chains/http_filter/docker-compose.yaml diff --git a/demos/use_cases/http_filter/http.rest b/demos/filter_chains/http_filter/http.rest similarity index 100% rename from demos/use_cases/http_filter/http.rest rename to demos/filter_chains/http_filter/http.rest diff --git a/demos/use_cases/http_filter/mcp_query.rest b/demos/filter_chains/http_filter/mcp_query.rest similarity index 100% rename from demos/use_cases/http_filter/mcp_query.rest rename to demos/filter_chains/http_filter/mcp_query.rest diff --git a/demos/use_cases/http_filter/pyproject.toml b/demos/filter_chains/http_filter/pyproject.toml similarity index 100% rename from demos/use_cases/http_filter/pyproject.toml rename to demos/filter_chains/http_filter/pyproject.toml diff --git a/demos/use_cases/http_filter/sample_queries.md b/demos/filter_chains/http_filter/sample_queries.md similarity index 100% rename from demos/use_cases/http_filter/sample_queries.md rename to demos/filter_chains/http_filter/sample_queries.md diff --git a/demos/use_cases/http_filter/src/rag_agent/__init__.py b/demos/filter_chains/http_filter/src/rag_agent/__init__.py similarity index 100% rename from demos/use_cases/http_filter/src/rag_agent/__init__.py rename to demos/filter_chains/http_filter/src/rag_agent/__init__.py diff --git a/demos/use_cases/http_filter/src/rag_agent/__main__.py b/demos/filter_chains/http_filter/src/rag_agent/__main__.py similarity index 100% rename from demos/use_cases/http_filter/src/rag_agent/__main__.py rename to demos/filter_chains/http_filter/src/rag_agent/__main__.py diff --git a/demos/use_cases/http_filter/src/rag_agent/api.py b/demos/filter_chains/http_filter/src/rag_agent/api.py similarity index 100% rename from demos/use_cases/http_filter/src/rag_agent/api.py rename to demos/filter_chains/http_filter/src/rag_agent/api.py diff --git a/demos/use_cases/http_filter/src/rag_agent/context_builder.py b/demos/filter_chains/http_filter/src/rag_agent/context_builder.py similarity index 100% rename from demos/use_cases/http_filter/src/rag_agent/context_builder.py rename to demos/filter_chains/http_filter/src/rag_agent/context_builder.py diff --git a/demos/use_cases/http_filter/src/rag_agent/input_guards.py b/demos/filter_chains/http_filter/src/rag_agent/input_guards.py similarity index 100% rename from demos/use_cases/http_filter/src/rag_agent/input_guards.py rename to demos/filter_chains/http_filter/src/rag_agent/input_guards.py diff --git a/demos/use_cases/http_filter/src/rag_agent/query_rewriter.py b/demos/filter_chains/http_filter/src/rag_agent/query_rewriter.py similarity index 100% rename from demos/use_cases/http_filter/src/rag_agent/query_rewriter.py rename to demos/filter_chains/http_filter/src/rag_agent/query_rewriter.py diff --git a/demos/use_cases/http_filter/src/rag_agent/rag_agent.py b/demos/filter_chains/http_filter/src/rag_agent/rag_agent.py similarity index 100% rename from demos/use_cases/http_filter/src/rag_agent/rag_agent.py rename to demos/filter_chains/http_filter/src/rag_agent/rag_agent.py diff --git a/demos/use_cases/http_filter/src/rag_agent/sample_knowledge_base.csv b/demos/filter_chains/http_filter/src/rag_agent/sample_knowledge_base.csv similarity index 100% rename from demos/use_cases/http_filter/src/rag_agent/sample_knowledge_base.csv rename to demos/filter_chains/http_filter/src/rag_agent/sample_knowledge_base.csv diff --git a/demos/use_cases/http_filter/start_agents.sh b/demos/filter_chains/http_filter/start_agents.sh similarity index 100% rename from demos/use_cases/http_filter/start_agents.sh rename to demos/filter_chains/http_filter/start_agents.sh diff --git a/demos/use_cases/http_filter/test.rest b/demos/filter_chains/http_filter/test.rest similarity index 100% rename from demos/use_cases/http_filter/test.rest rename to demos/filter_chains/http_filter/test.rest diff --git a/demos/use_cases/http_filter/uv.lock b/demos/filter_chains/http_filter/uv.lock similarity index 100% rename from demos/use_cases/http_filter/uv.lock rename to demos/filter_chains/http_filter/uv.lock diff --git a/demos/use_cases/mcp_filter/Dockerfile b/demos/filter_chains/mcp_filter/Dockerfile similarity index 100% rename from demos/use_cases/mcp_filter/Dockerfile rename to demos/filter_chains/mcp_filter/Dockerfile diff --git a/demos/use_cases/mcp_filter/README.md b/demos/filter_chains/mcp_filter/README.md similarity index 100% rename from demos/use_cases/mcp_filter/README.md rename to demos/filter_chains/mcp_filter/README.md diff --git a/demos/use_cases/mcp_filter/config.yaml b/demos/filter_chains/mcp_filter/config.yaml similarity index 100% rename from demos/use_cases/mcp_filter/config.yaml rename to demos/filter_chains/mcp_filter/config.yaml diff --git a/demos/use_cases/mcp_filter/docker-compose.yaml b/demos/filter_chains/mcp_filter/docker-compose.yaml similarity index 100% rename from demos/use_cases/mcp_filter/docker-compose.yaml rename to demos/filter_chains/mcp_filter/docker-compose.yaml diff --git a/demos/use_cases/mcp_filter/mcp_query.rest b/demos/filter_chains/mcp_filter/mcp_query.rest similarity index 100% rename from demos/use_cases/mcp_filter/mcp_query.rest rename to demos/filter_chains/mcp_filter/mcp_query.rest diff --git a/demos/use_cases/mcp_filter/pyproject.toml b/demos/filter_chains/mcp_filter/pyproject.toml similarity index 100% rename from demos/use_cases/mcp_filter/pyproject.toml rename to demos/filter_chains/mcp_filter/pyproject.toml diff --git a/demos/use_cases/mcp_filter/sample_queries.md b/demos/filter_chains/mcp_filter/sample_queries.md similarity index 100% rename from demos/use_cases/mcp_filter/sample_queries.md rename to demos/filter_chains/mcp_filter/sample_queries.md diff --git a/demos/use_cases/mcp_filter/src/rag_agent/__init__.py b/demos/filter_chains/mcp_filter/src/rag_agent/__init__.py similarity index 100% rename from demos/use_cases/mcp_filter/src/rag_agent/__init__.py rename to demos/filter_chains/mcp_filter/src/rag_agent/__init__.py diff --git a/demos/use_cases/mcp_filter/src/rag_agent/__main__.py b/demos/filter_chains/mcp_filter/src/rag_agent/__main__.py similarity index 100% rename from demos/use_cases/mcp_filter/src/rag_agent/__main__.py rename to demos/filter_chains/mcp_filter/src/rag_agent/__main__.py diff --git a/demos/use_cases/mcp_filter/src/rag_agent/api.py b/demos/filter_chains/mcp_filter/src/rag_agent/api.py similarity index 100% rename from demos/use_cases/mcp_filter/src/rag_agent/api.py rename to demos/filter_chains/mcp_filter/src/rag_agent/api.py diff --git a/demos/use_cases/mcp_filter/src/rag_agent/context_builder.py b/demos/filter_chains/mcp_filter/src/rag_agent/context_builder.py similarity index 100% rename from demos/use_cases/mcp_filter/src/rag_agent/context_builder.py rename to demos/filter_chains/mcp_filter/src/rag_agent/context_builder.py diff --git a/demos/use_cases/mcp_filter/src/rag_agent/input_guards.py b/demos/filter_chains/mcp_filter/src/rag_agent/input_guards.py similarity index 100% rename from demos/use_cases/mcp_filter/src/rag_agent/input_guards.py rename to demos/filter_chains/mcp_filter/src/rag_agent/input_guards.py diff --git a/demos/use_cases/mcp_filter/src/rag_agent/query_rewriter.py b/demos/filter_chains/mcp_filter/src/rag_agent/query_rewriter.py similarity index 100% rename from demos/use_cases/mcp_filter/src/rag_agent/query_rewriter.py rename to demos/filter_chains/mcp_filter/src/rag_agent/query_rewriter.py diff --git a/demos/use_cases/mcp_filter/src/rag_agent/rag_agent.py b/demos/filter_chains/mcp_filter/src/rag_agent/rag_agent.py similarity index 100% rename from demos/use_cases/mcp_filter/src/rag_agent/rag_agent.py rename to demos/filter_chains/mcp_filter/src/rag_agent/rag_agent.py diff --git a/demos/use_cases/mcp_filter/src/rag_agent/sample_knowledge_base.csv b/demos/filter_chains/mcp_filter/src/rag_agent/sample_knowledge_base.csv similarity index 100% rename from demos/use_cases/mcp_filter/src/rag_agent/sample_knowledge_base.csv rename to demos/filter_chains/mcp_filter/src/rag_agent/sample_knowledge_base.csv diff --git a/demos/use_cases/mcp_filter/start_agents.sh b/demos/filter_chains/mcp_filter/start_agents.sh similarity index 100% rename from demos/use_cases/mcp_filter/start_agents.sh rename to demos/filter_chains/mcp_filter/start_agents.sh diff --git a/demos/use_cases/mcp_filter/test.rest b/demos/filter_chains/mcp_filter/test.rest similarity index 100% rename from demos/use_cases/mcp_filter/test.rest rename to demos/filter_chains/mcp_filter/test.rest diff --git a/demos/use_cases/mcp_filter/uv.lock b/demos/filter_chains/mcp_filter/uv.lock similarity index 100% rename from demos/use_cases/mcp_filter/uv.lock rename to demos/filter_chains/mcp_filter/uv.lock diff --git a/demos/use_cases/llm_routing/README.md b/demos/getting_started/llm_gateway/README.md similarity index 100% rename from demos/use_cases/llm_routing/README.md rename to demos/getting_started/llm_gateway/README.md diff --git a/demos/use_cases/llm_routing/config.yaml b/demos/getting_started/llm_gateway/config.yaml similarity index 100% rename from demos/use_cases/llm_routing/config.yaml rename to demos/getting_started/llm_gateway/config.yaml diff --git a/demos/use_cases/llm_routing/docker-compose.yaml b/demos/getting_started/llm_gateway/docker-compose.yaml similarity index 100% rename from demos/use_cases/llm_routing/docker-compose.yaml rename to demos/getting_started/llm_gateway/docker-compose.yaml diff --git a/demos/use_cases/llm_routing/jaeger_tracing_llm_routing.png b/demos/getting_started/llm_gateway/jaeger_tracing_llm_routing.png similarity index 100% rename from demos/use_cases/llm_routing/jaeger_tracing_llm_routing.png rename to demos/getting_started/llm_gateway/jaeger_tracing_llm_routing.png diff --git a/demos/use_cases/llm_routing/llm_routing_demo.png b/demos/getting_started/llm_gateway/llm_routing_demo.png similarity index 100% rename from demos/use_cases/llm_routing/llm_routing_demo.png rename to demos/getting_started/llm_gateway/llm_routing_demo.png diff --git a/demos/use_cases/llm_routing/run_demo.sh b/demos/getting_started/llm_gateway/run_demo.sh similarity index 100% rename from demos/use_cases/llm_routing/run_demo.sh rename to demos/getting_started/llm_gateway/run_demo.sh diff --git a/demos/samples_python/weather_forecast/Dockerfile b/demos/getting_started/weather_forecast/Dockerfile similarity index 100% rename from demos/samples_python/weather_forecast/Dockerfile rename to demos/getting_started/weather_forecast/Dockerfile diff --git a/demos/samples_python/weather_forecast/README.md b/demos/getting_started/weather_forecast/README.md similarity index 100% rename from demos/samples_python/weather_forecast/README.md rename to demos/getting_started/weather_forecast/README.md diff --git a/demos/samples_python/weather_forecast/config.yaml b/demos/getting_started/weather_forecast/config.yaml similarity index 100% rename from demos/samples_python/weather_forecast/config.yaml rename to demos/getting_started/weather_forecast/config.yaml diff --git a/demos/samples_python/weather_forecast/docker-compose.yaml b/demos/getting_started/weather_forecast/docker-compose.yaml similarity index 100% rename from demos/samples_python/weather_forecast/docker-compose.yaml rename to demos/getting_started/weather_forecast/docker-compose.yaml diff --git a/demos/samples_python/weather_forecast/hurl_tests/simple.hurl b/demos/getting_started/weather_forecast/hurl_tests/simple.hurl similarity index 100% rename from demos/samples_python/weather_forecast/hurl_tests/simple.hurl rename to demos/getting_started/weather_forecast/hurl_tests/simple.hurl diff --git a/demos/samples_python/weather_forecast/hurl_tests/simple_stream.hurl b/demos/getting_started/weather_forecast/hurl_tests/simple_stream.hurl similarity index 100% rename from demos/samples_python/weather_forecast/hurl_tests/simple_stream.hurl rename to demos/getting_started/weather_forecast/hurl_tests/simple_stream.hurl diff --git a/demos/samples_python/weather_forecast/main.py b/demos/getting_started/weather_forecast/main.py similarity index 100% rename from demos/samples_python/weather_forecast/main.py rename to demos/getting_started/weather_forecast/main.py diff --git a/demos/samples_python/weather_forecast/pyproject.toml b/demos/getting_started/weather_forecast/pyproject.toml similarity index 100% rename from demos/samples_python/weather_forecast/pyproject.toml rename to demos/getting_started/weather_forecast/pyproject.toml diff --git a/demos/samples_python/weather_forecast/run_demo.sh b/demos/getting_started/weather_forecast/run_demo.sh similarity index 100% rename from demos/samples_python/weather_forecast/run_demo.sh rename to demos/getting_started/weather_forecast/run_demo.sh diff --git a/demos/samples_python/weather_forecast/uv.lock b/demos/getting_started/weather_forecast/uv.lock similarity index 100% rename from demos/samples_python/weather_forecast/uv.lock rename to demos/getting_started/weather_forecast/uv.lock diff --git a/demos/use_cases/ollama/README.md b/demos/integrations/ollama/README.md similarity index 100% rename from demos/use_cases/ollama/README.md rename to demos/integrations/ollama/README.md diff --git a/demos/use_cases/ollama/config.yaml b/demos/integrations/ollama/config.yaml similarity index 100% rename from demos/use_cases/ollama/config.yaml rename to demos/integrations/ollama/config.yaml diff --git a/demos/use_cases/ollama/docker-compose.yaml b/demos/integrations/ollama/docker-compose.yaml similarity index 100% rename from demos/use_cases/ollama/docker-compose.yaml rename to demos/integrations/ollama/docker-compose.yaml diff --git a/demos/samples_python/stock_quote/run_demo.sh b/demos/integrations/ollama/run_demo.sh similarity index 100% rename from demos/samples_python/stock_quote/run_demo.sh rename to demos/integrations/ollama/run_demo.sh diff --git a/demos/use_cases/spotify_bearer_auth/README.md b/demos/integrations/spotify_bearer_auth/README.md similarity index 100% rename from demos/use_cases/spotify_bearer_auth/README.md rename to demos/integrations/spotify_bearer_auth/README.md diff --git a/demos/use_cases/spotify_bearer_auth/config.yaml b/demos/integrations/spotify_bearer_auth/config.yaml similarity index 100% rename from demos/use_cases/spotify_bearer_auth/config.yaml rename to demos/integrations/spotify_bearer_auth/config.yaml diff --git a/demos/use_cases/spotify_bearer_auth/docker-compose.yaml b/demos/integrations/spotify_bearer_auth/docker-compose.yaml similarity index 100% rename from demos/use_cases/spotify_bearer_auth/docker-compose.yaml rename to demos/integrations/spotify_bearer_auth/docker-compose.yaml diff --git a/demos/use_cases/ollama/run_demo.sh b/demos/integrations/spotify_bearer_auth/run_demo.sh similarity index 100% rename from demos/use_cases/ollama/run_demo.sh rename to demos/integrations/spotify_bearer_auth/run_demo.sh diff --git a/demos/use_cases/spotify_bearer_auth/spotify_bearer_auth.png b/demos/integrations/spotify_bearer_auth/spotify_bearer_auth.png similarity index 100% rename from demos/use_cases/spotify_bearer_auth/spotify_bearer_auth.png rename to demos/integrations/spotify_bearer_auth/spotify_bearer_auth.png diff --git a/demos/use_cases/claude_code_router/README.md b/demos/llm_routing/claude_code_router/README.md similarity index 100% rename from demos/use_cases/claude_code_router/README.md rename to demos/llm_routing/claude_code_router/README.md diff --git a/demos/use_cases/claude_code_router/claude_code.png b/demos/llm_routing/claude_code_router/claude_code.png similarity index 100% rename from demos/use_cases/claude_code_router/claude_code.png rename to demos/llm_routing/claude_code_router/claude_code.png diff --git a/demos/use_cases/claude_code_router/config.yaml b/demos/llm_routing/claude_code_router/config.yaml similarity index 100% rename from demos/use_cases/claude_code_router/config.yaml rename to demos/llm_routing/claude_code_router/config.yaml diff --git a/demos/use_cases/claude_code_router/model_selection.png b/demos/llm_routing/claude_code_router/model_selection.png similarity index 100% rename from demos/use_cases/claude_code_router/model_selection.png rename to demos/llm_routing/claude_code_router/model_selection.png diff --git a/demos/use_cases/claude_code_router/pretty_model_resolution.sh b/demos/llm_routing/claude_code_router/pretty_model_resolution.sh similarity index 100% rename from demos/use_cases/claude_code_router/pretty_model_resolution.sh rename to demos/llm_routing/claude_code_router/pretty_model_resolution.sh diff --git a/demos/use_cases/model_alias_routing/README.md b/demos/llm_routing/model_alias_routing/README.md similarity index 100% rename from demos/use_cases/model_alias_routing/README.md rename to demos/llm_routing/model_alias_routing/README.md diff --git a/demos/use_cases/model_alias_routing/config_with_aliases.yaml b/demos/llm_routing/model_alias_routing/config_with_aliases.yaml similarity index 100% rename from demos/use_cases/model_alias_routing/config_with_aliases.yaml rename to demos/llm_routing/model_alias_routing/config_with_aliases.yaml diff --git a/demos/use_cases/model_alias_routing/run_demo.sh b/demos/llm_routing/model_alias_routing/run_demo.sh similarity index 100% rename from demos/use_cases/model_alias_routing/run_demo.sh rename to demos/llm_routing/model_alias_routing/run_demo.sh diff --git a/demos/use_cases/preference_based_routing/README.md b/demos/llm_routing/preference_based_routing/README.md similarity index 100% rename from demos/use_cases/preference_based_routing/README.md rename to demos/llm_routing/preference_based_routing/README.md diff --git a/demos/use_cases/preference_based_routing/config.yaml b/demos/llm_routing/preference_based_routing/config.yaml similarity index 100% rename from demos/use_cases/preference_based_routing/config.yaml rename to demos/llm_routing/preference_based_routing/config.yaml diff --git a/demos/use_cases/preference_based_routing/docker-compose.yaml b/demos/llm_routing/preference_based_routing/docker-compose.yaml similarity index 100% rename from demos/use_cases/preference_based_routing/docker-compose.yaml rename to demos/llm_routing/preference_based_routing/docker-compose.yaml diff --git a/demos/use_cases/preference_based_routing/hurl_tests/simple.hurl b/demos/llm_routing/preference_based_routing/hurl_tests/simple.hurl similarity index 100% rename from demos/use_cases/preference_based_routing/hurl_tests/simple.hurl rename to demos/llm_routing/preference_based_routing/hurl_tests/simple.hurl diff --git a/demos/use_cases/preference_based_routing/hurl_tests/simple_stream.hurl b/demos/llm_routing/preference_based_routing/hurl_tests/simple_stream.hurl similarity index 100% rename from demos/use_cases/preference_based_routing/hurl_tests/simple_stream.hurl rename to demos/llm_routing/preference_based_routing/hurl_tests/simple_stream.hurl diff --git a/demos/use_cases/preference_based_routing/plano_config_local.yaml b/demos/llm_routing/preference_based_routing/plano_config_local.yaml similarity index 100% rename from demos/use_cases/preference_based_routing/plano_config_local.yaml rename to demos/llm_routing/preference_based_routing/plano_config_local.yaml diff --git a/demos/use_cases/preference_based_routing/test_router_endpoint.rest b/demos/llm_routing/preference_based_routing/test_router_endpoint.rest similarity index 100% rename from demos/use_cases/preference_based_routing/test_router_endpoint.rest rename to demos/llm_routing/preference_based_routing/test_router_endpoint.rest diff --git a/demos/samples_java/weather_forcecast_service/.classpath b/demos/samples_java/weather_forcecast_service/.classpath deleted file mode 100644 index e16ec965..00000000 --- a/demos/samples_java/weather_forcecast_service/.classpath +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/demos/samples_java/weather_forcecast_service/.project b/demos/samples_java/weather_forcecast_service/.project deleted file mode 100644 index efcdddf7..00000000 --- a/demos/samples_java/weather_forcecast_service/.project +++ /dev/null @@ -1,34 +0,0 @@ - - - weather-forecast-service - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature - - - - 1742579142020 - - 30 - - org.eclipse.core.resources.regexFilterMatcher - node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ - - - - diff --git a/demos/samples_java/weather_forcecast_service/.settings/org.eclipse.core.resources.prefs b/demos/samples_java/weather_forcecast_service/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index abdea9ac..00000000 --- a/demos/samples_java/weather_forcecast_service/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,4 +0,0 @@ -eclipse.preferences.version=1 -encoding//src/main/java=UTF-8 -encoding//src/main/resources=UTF-8 -encoding/=UTF-8 diff --git a/demos/samples_java/weather_forcecast_service/.settings/org.eclipse.jdt.apt.core.prefs b/demos/samples_java/weather_forcecast_service/.settings/org.eclipse.jdt.apt.core.prefs deleted file mode 100644 index d4313d4b..00000000 --- a/demos/samples_java/weather_forcecast_service/.settings/org.eclipse.jdt.apt.core.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.apt.aptEnabled=false diff --git a/demos/samples_java/weather_forcecast_service/.settings/org.eclipse.jdt.core.prefs b/demos/samples_java/weather_forcecast_service/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 951833c6..00000000 --- a/demos/samples_java/weather_forcecast_service/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,10 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.methodParameters=generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore -org.eclipse.jdt.core.compiler.processAnnotations=disabled -org.eclipse.jdt.core.compiler.release=disabled -org.eclipse.jdt.core.compiler.source=1.8 diff --git a/demos/samples_java/weather_forcecast_service/.settings/org.eclipse.m2e.core.prefs b/demos/samples_java/weather_forcecast_service/.settings/org.eclipse.m2e.core.prefs deleted file mode 100644 index f897a7f1..00000000 --- a/demos/samples_java/weather_forcecast_service/.settings/org.eclipse.m2e.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/demos/samples_java/weather_forcecast_service/.vscode/launch.json b/demos/samples_java/weather_forcecast_service/.vscode/launch.json deleted file mode 100644 index a9232a53..00000000 --- a/demos/samples_java/weather_forcecast_service/.vscode/launch.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "java", - "name": "WeatherForecastApplication", - "request": "launch", - "mainClass": "weather.WeatherForecastApplication", - "projectName": "weather-forecast-service" - } - ] -} diff --git a/demos/samples_java/weather_forcecast_service/Dockerfile b/demos/samples_java/weather_forcecast_service/Dockerfile deleted file mode 100644 index 909d9796..00000000 --- a/demos/samples_java/weather_forcecast_service/Dockerfile +++ /dev/null @@ -1,23 +0,0 @@ -# Stage 1: Build the application using Maven -FROM maven:3.8.7-openjdk-18-slim AS build -WORKDIR /app -# Copy pom.xml and download dependencies first (caching) -COPY pom.xml . -RUN mvn dependency:go-offline -# Copy the source code and build the application -COPY src ./src -RUN mvn clean package -DskipTests - -# Stage 2: Run the application using a slim JDK image -FROM openjdk:17-jdk-slim -WORKDIR /app -# Copy the built jar from the previous stage -COPY --from=build /app/target/weather-forecast-service-0.0.1-SNAPSHOT.jar app.jar -# Expose the port on which the app runs (default Spring Boot is 8080) - -# Expose the application port and the debug port -EXPOSE 8081 -EXPOSE 5005 - -# Start the application with remote debugging enabled -ENTRYPOINT ["java", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005", "-jar", "app.jar"] diff --git a/demos/samples_java/weather_forcecast_service/config.yaml b/demos/samples_java/weather_forcecast_service/config.yaml deleted file mode 100644 index 68c3841d..00000000 --- a/demos/samples_java/weather_forcecast_service/config.yaml +++ /dev/null @@ -1,50 +0,0 @@ -version: v0.1.0 - -listeners: - ingress_traffic: - address: 0.0.0.0 - port: 10000 - message_format: openai - timeout: 30s - -# Centralized way to manage LLMs, manage keys, retry logic, failover and limits in a central way -llm_providers: - - access_key: $OPENAI_API_KEY - model: openai/gpt-4o-mini - default: true - -# Arch creates a round-robin load balancing between different endpoints, managed via the cluster subsystem. -endpoints: - weather_forecast_service: - # value could be ip address or a hostname with port - # this could also be a list of endpoints for load balancing - # for example endpoint: [ ip1:port, ip2:port ] - endpoint: host.docker.internal:18081 - # max time to wait for a connection to be established - connect_timeout: 0.005s - -# default system prompt used by all prompt targets -system_prompt: | - You are a helpful weather assistant. - -prompt_targets: - - name: weather_forecast - description: get the weather forecast - parameters: - - name: location - description: the location for which to get the weather forecast - required: true - type: string - format: City, State - - name: days - description: the number of days for the forecast - required: true - type: int - endpoint: - name: weather_forecast_service - path: /weather - http_method: POST - -tracing: - random_sampling: 100 - trace_arch_internal: true diff --git a/demos/samples_java/weather_forcecast_service/docker-compose.yaml b/demos/samples_java/weather_forcecast_service/docker-compose.yaml deleted file mode 100644 index b3df0266..00000000 --- a/demos/samples_java/weather_forcecast_service/docker-compose.yaml +++ /dev/null @@ -1,29 +0,0 @@ -services: - weather_forecast_service: - build: - context: . - dockerfile: Dockerfile - ports: - - "18081:8081" - - "5005:5005" - - chatbot_ui: - build: - context: ../../shared/chatbot_ui - dockerfile: Dockerfile - ports: - - "18080:8080" - environment: - - CHAT_COMPLETION_ENDPOINT=http://host.docker.internal:10000/v1 - extra_hosts: - - "host.docker.internal:host-gateway" - volumes: - - ./config.yaml:/app/plano_config.yaml - - jaeger: - build: - context: ../../shared/jaeger - ports: - - "16686:16686" - - "4317:4317" - - "4318:4318" diff --git a/demos/samples_java/weather_forcecast_service/pom.xml b/demos/samples_java/weather_forcecast_service/pom.xml deleted file mode 100644 index db65d95a..00000000 --- a/demos/samples_java/weather_forcecast_service/pom.xml +++ /dev/null @@ -1,49 +0,0 @@ - - 4.0.0 - - weather - weather-forecast-service - 0.0.1-SNAPSHOT - jar - - - org.springframework.boot - spring-boot-starter-parent - 2.7.10 - - - - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.1 - - true - lines,vars,source - - - - - diff --git a/demos/samples_java/weather_forcecast_service/src/main/java/weather/WeatherForecastApplication.java b/demos/samples_java/weather_forcecast_service/src/main/java/weather/WeatherForecastApplication.java deleted file mode 100644 index b31a3444..00000000 --- a/demos/samples_java/weather_forcecast_service/src/main/java/weather/WeatherForecastApplication.java +++ /dev/null @@ -1,12 +0,0 @@ -// File: src/main/java/com/example/weather/WeatherForecastApplication.java -package weather; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class WeatherForecastApplication { - public static void main(String[] args) { - SpringApplication.run(WeatherForecastApplication.class, args); - } -} diff --git a/demos/samples_java/weather_forcecast_service/src/main/java/weather/controller/WeatherController.java b/demos/samples_java/weather_forcecast_service/src/main/java/weather/controller/WeatherController.java deleted file mode 100644 index d7caeaf9..00000000 --- a/demos/samples_java/weather_forcecast_service/src/main/java/weather/controller/WeatherController.java +++ /dev/null @@ -1,53 +0,0 @@ -package weather.controller; - -import weather.model.DayForecast; -import weather.model.WeatherForecastResponse; -import weather.model.WeatherRequest; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; - -import java.time.LocalDate; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -@RestController -public class WeatherController { - - private Random random = new Random(); - - @PostMapping("/weather") - public WeatherForecastResponse getRandomWeatherForecast(@RequestBody WeatherRequest req) { - WeatherForecastResponse response = new WeatherForecastResponse(); - response.setLocation(req.getLocation()); - response.setUnits(req.getUnits()); - - List forecasts = new ArrayList<>(); - for (int i = 0; i < req.getDays(); i++) { - // Generate a random min temperature between 50 and 89 (inclusive) - int minTemp = random.nextInt(90 - 50) + 50; - // Generate a max temperature between (minTemp + 5) and (minTemp + 19) - int maxTemp = random.nextInt(15) + (minTemp + 5); - - double finalMinTemp = minTemp; - double finalMaxTemp = maxTemp; - - // Convert to Celsius if necessary - if (req.getUnits().equalsIgnoreCase("celsius") || req.getUnits().equalsIgnoreCase("c")) { - finalMinTemp = (minTemp - 32) * 5.0 / 9.0; - finalMaxTemp = (maxTemp - 32) * 5.0 / 9.0; - } - - DayForecast dayForecast = new DayForecast(); - dayForecast.setDate(LocalDate.now().plusDays(i).toString()); - dayForecast.setMin(finalMinTemp); - dayForecast.setMax(finalMaxTemp); - dayForecast.setUnits(req.getUnits()); - - forecasts.add(dayForecast); - } - response.setDailyForecast(forecasts); - return response; - } -} diff --git a/demos/samples_java/weather_forcecast_service/src/main/java/weather/model/DayForecast.java b/demos/samples_java/weather_forcecast_service/src/main/java/weather/model/DayForecast.java deleted file mode 100644 index 0077a3a7..00000000 --- a/demos/samples_java/weather_forcecast_service/src/main/java/weather/model/DayForecast.java +++ /dev/null @@ -1,40 +0,0 @@ -package weather.model; - -public class DayForecast { - private String date; - private String units; - private double min; - private double max; - - public DayForecast() {} - - // Getters and setters - public String getDate() { - return date; - } - - public void setDate(String date) { - this.date = date; - } - - public String getUnits() { - return units; - } - - public void setUnits(String units) { - this.units = units; - } - - public double getMin() { - return min; - } - public void setMin(double min) { - this.min = min; - } - public double getMax() { - return max; - } - public void setMax(double max) { - this.max = max; - } -} diff --git a/demos/samples_java/weather_forcecast_service/src/main/java/weather/model/WeatherForecastResponse.java b/demos/samples_java/weather_forcecast_service/src/main/java/weather/model/WeatherForecastResponse.java deleted file mode 100644 index 3fc4d116..00000000 --- a/demos/samples_java/weather_forcecast_service/src/main/java/weather/model/WeatherForecastResponse.java +++ /dev/null @@ -1,37 +0,0 @@ -package weather.model; - -import java.util.List; - -public class WeatherForecastResponse { - private String location; - private String units; - private List forecast; - - // Default Constructor - public WeatherForecastResponse() {} - - // Getters and Setters - public String getLocation() { - return location; - } - - public void setLocation(String location) { - this.location = location; - } - - public String getUnits() { - return units; - } - - public void setUnits(String units) { - this.units = units; - } - - public List getDailyForecast() { - return forecast; - } - - public void setDailyForecast(List forecast) { - this.forecast = forecast; - } -} diff --git a/demos/samples_java/weather_forcecast_service/src/main/java/weather/model/WeatherRequest.java b/demos/samples_java/weather_forcecast_service/src/main/java/weather/model/WeatherRequest.java deleted file mode 100644 index 8b5e1340..00000000 --- a/demos/samples_java/weather_forcecast_service/src/main/java/weather/model/WeatherRequest.java +++ /dev/null @@ -1,29 +0,0 @@ -package weather.model; - -public class WeatherRequest { - private String location; - private int days = 7; - private String units = "Farenheit"; - - public WeatherRequest() {} - - // Getters and setters - public String getLocation() { - return location; - } - public void setLocation(String location) { - this.location = location; - } - public int getDays() { - return days; - } - public void setDays(int days) { - this.days = days; - } - public String getUnits() { - return units; - } - public void setUnits(String units) { - this.units = units; - } -} diff --git a/demos/samples_java/weather_forcecast_service/src/main/resources/application.properties b/demos/samples_java/weather_forcecast_service/src/main/resources/application.properties deleted file mode 100644 index 4d360de1..00000000 --- a/demos/samples_java/weather_forcecast_service/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ -server.port=8081 diff --git a/demos/samples_python/weather_forecast/docker-compose-honeycomb.yaml b/demos/samples_python/weather_forecast/docker-compose-honeycomb.yaml deleted file mode 100644 index 5d5e1786..00000000 --- a/demos/samples_python/weather_forecast/docker-compose-honeycomb.yaml +++ /dev/null @@ -1,46 +0,0 @@ -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: - - ./config.yaml:/app/plano_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" diff --git a/demos/samples_python/weather_forecast/docker-compose-jaeger.yaml b/demos/samples_python/weather_forecast/docker-compose-jaeger.yaml deleted file mode 100644 index 1a64e8fa..00000000 --- a/demos/samples_python/weather_forecast/docker-compose-jaeger.yaml +++ /dev/null @@ -1,41 +0,0 @@ -services: - weather_forecast_service: - build: - context: ./ - environment: - - OLTP_HOST=http://jaeger: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 environemtn as archgw - - CHAT_COMPLETION_ENDPOINT=http://host.docker.internal:10000/v1 - extra_hosts: - - "host.docker.internal:host-gateway" - volumes: - - ./config.yaml:/app/plano_config.yaml - - jaeger: - build: - context: ../../shared/jaeger - ports: - - "16686:16686" - - "4317:4317" - - "4318:4318" - - prometheus: - build: - context: ../../shared/prometheus - - grafana: - build: - context: ../../shared/grafana - ports: - - "3000:3000" diff --git a/demos/samples_python/weather_forecast/docker-compose-logfire.yaml b/demos/samples_python/weather_forecast/docker-compose-logfire.yaml deleted file mode 100644 index db3363f4..00000000 --- a/demos/samples_python/weather_forecast/docker-compose-logfire.yaml +++ /dev/null @@ -1,46 +0,0 @@ -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: - - ./config.yaml:/app/plano_config.yaml - - otel-collector: - build: - context: ../../shared/logfire/ - ports: - - "4317:4317" - - "4318:4318" - volumes: - - ../../shared/logfire/otel-collector-config.yaml:/etc/otel-collector-config.yaml - env_file: - - .env - environment: - - LOGFIRE_API_KEY - - prometheus: - build: - context: ../../shared/prometheus - - grafana: - build: - context: ../../shared/grafana - ports: - - "3000:3000" diff --git a/demos/samples_python/weather_forecast/docker-compose-signoz.yaml b/demos/samples_python/weather_forecast/docker-compose-signoz.yaml deleted file mode 100644 index 4cfb56a9..00000000 --- a/demos/samples_python/weather_forecast/docker-compose-signoz.yaml +++ /dev/null @@ -1,36 +0,0 @@ -include: - - ../../shared/signoz/docker-compose-minimal.yaml - -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 environemtn as archgw - - CHAT_COMPLETION_ENDPOINT=http://host.docker.internal:10000/v1 - extra_hosts: - - "host.docker.internal:host-gateway" - volumes: - - ./config.yaml:/app/plano_config.yaml - - prometheus: - build: - context: ../../shared/prometheus - - grafana: - build: - context: ../../shared/grafana - ports: - - "3000:3000" diff --git a/demos/shared/chatbot_ui/.vscode/launch.json b/demos/shared/chatbot_ui/.vscode/launch.json deleted file mode 100644 index 9586ef4c..00000000 --- a/demos/shared/chatbot_ui/.vscode/launch.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "python": "${workspaceFolder}/venv/bin/python", - "name": "chatbot-ui", - "type": "debugpy", - "request": "launch", - "program": "run_stream.py", - "console": "integratedTerminal", - "env": { - "LLM": "1", - "CHAT_COMPLETION_ENDPOINT": "http://localhost:10000/v1", - "STREAMING": "True", - "PLANO_CONFIG": "../../samples_python/weather_forecast/plano_config.yaml" - } - }, - { - "python": "${workspaceFolder}/venv/bin/python", - "name": "chatbot-ui llm", - "type": "debugpy", - "request": "launch", - "program": "run_stream.py", - "console": "integratedTerminal", - "env": { - "LLM": "1", - "CHAT_COMPLETION_ENDPOINT": "http://localhost:12000/v1", - "STREAMING": "True", - "PLANO_CONFIG": "../../samples_python/weather_forecast/plano_config.yaml" - } - }, - ] -} diff --git a/demos/shared/chatbot_ui/Dockerfile b/demos/shared/chatbot_ui/Dockerfile deleted file mode 100644 index 588f9721..00000000 --- a/demos/shared/chatbot_ui/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM python:3.12 AS base - -FROM base AS builder - -WORKDIR /src - -COPY requirements.txt /src/ - -RUN pip install --prefix=/runtime --force-reinstall -r requirements.txt - -FROM python:3.12-slim AS output - -COPY --from=builder /runtime /usr/local - -WORKDIR /app -COPY *.py . - -CMD ["python", "run_stream.py"] diff --git a/demos/shared/chatbot_ui/common.py b/demos/shared/chatbot_ui/common.py deleted file mode 100644 index 278d86d1..00000000 --- a/demos/shared/chatbot_ui/common.py +++ /dev/null @@ -1,206 +0,0 @@ -from datetime import datetime -import json -import logging -import os -import yaml -import gradio as gr -from typing import List, Optional, Tuple -from functools import partial - -logging.basicConfig( - level=logging.INFO, - format="%(asctime)s - %(levelname)s - %(message)s", -) - -log = logging.getLogger(__name__) - -GRADIO_CSS_STYLE = """ -.json-container { - height: 80vh !important; - overflow-y: auto !important; -} -.chatbot { - height: calc(80vh - 100px) !important; - overflow-y: auto !important; -} -footer {visibility: hidden} -""" - - -def chat( - query: Optional[str], - conversation: Optional[List[Tuple[str, str]]], - history: List[dict], - client, -): - history.append({"role": "user", "content": query}) - - try: - response = client.chat.completions.create( - # we select model from plano_config file - model="None", - messages=history, - temperature=1.0, - stream=True, - ) - except Exception as e: - # remove last user message in case of exception - history.pop() - log.info("Error calling gateway API: {}".format(e)) - raise gr.Error("Error calling gateway API: {}".format(e)) - - conversation.append((query, "")) - - for chunk in response: - tokens = process_stream_chunk(chunk, history) - if tokens: - conversation[-1] = ( - conversation[-1][0], - conversation[-1][1] + tokens, - ) - - yield "", conversation, history - - -def create_gradio_app(demo_description, client): - with gr.Blocks( - theme=gr.themes.Default( - font_mono=[gr.themes.GoogleFont("IBM Plex Mono"), "Arial", "sans-serif"] - ), - fill_height=True, - css=GRADIO_CSS_STYLE, - ) as demo: - with gr.Row(equal_height=True): - history = gr.State([]) - - with gr.Column(scale=1): - gr.Markdown(demo_description), - with gr.Accordion("Available Tools/APIs", open=True): - with gr.Column(scale=1): - gr.JSON( - value=get_prompt_targets(), - show_indices=False, - elem_classes="json-container", - min_height="80vh", - ) - - with gr.Column(scale=2): - chatbot = gr.Chatbot( - label="Plano Chatbot", - elem_classes="chatbot", - ) - textbox = gr.Textbox( - show_label=False, - placeholder="Enter text and press enter", - autofocus=True, - elem_classes="textbox", - ) - chat_with_client = partial(chat, client=client) - - textbox.submit( - chat_with_client, - [textbox, chatbot, history], - [textbox, chatbot, history], - ) - - return demo - - -def process_stream_chunk(chunk, history): - delta = chunk.choices[0].delta - if delta.role and delta.role != history[-1]["role"]: - # create new history item if role changes - # this is likely due to Plano tool call and api response - history.append({"role": delta.role}) - - history[-1]["model"] = chunk.model - # append tool calls to history if there are any in the chunk - if delta.tool_calls: - history[-1]["tool_calls"] = delta.tool_calls - - if delta.content: - # append content to the last history item - if history[-1]["model"] != "Arch-Function-Chat": - history[-1]["content"] = history[-1].get("content", "") + delta.content - # yield content if it is from assistant - if history[-1]["model"] == "Arch-Function": - return None - if history[-1]["role"] == "assistant": - return delta.content - - return None - - -def convert_prompt_target_to_openai_format(target): - tool = { - "description": target["description"], - "parameters": {"type": "object", "properties": {}, "required": []}, - } - - if "parameters" in target: - for param_info in target["parameters"]: - parameter = { - "type": param_info["type"], - "description": param_info["description"], - } - - for key in ["default", "format", "enum", "items", "minimum", "maximum"]: - if key in param_info: - parameter[key] = param_info[key] - - tool["parameters"]["properties"][param_info["name"]] = parameter - - required = param_info.get("required", False) - if required: - tool["parameters"]["required"].append(param_info["name"]) - - return {"name": target["name"], "info": tool} - - -def get_prompt_targets(): - try: - with open(os.getenv("PLANO_CONFIG", "config.yaml"), "r") as file: - config = yaml.safe_load(file) - - available_tools = [] - if "prompt_targets" in config: - for target in config["prompt_targets"]: - if not target.get("default", False): - available_tools.append( - convert_prompt_target_to_openai_format(target) - ) - - return {tool["name"]: tool["info"] for tool in available_tools} - elif "llm_providers" in config: - return config["llm_providers"] - - except Exception as e: - log.info(e) - return None - - -def get_llm_models(): - try: - with open(os.getenv("PLANO_CONFIG", "config.yaml"), "r") as file: - config = yaml.safe_load(file) - - available_models = [""] - default_llm = None - for llm_providers in config["llm_providers"]: - if llm_providers.get("default", False): - default_llm = llm_providers["name"] - else: - available_models.append(llm_providers["name"]) - - # place default model at the beginning of the list - if default_llm: - available_models.insert(0, default_llm) - return available_models - except Exception as e: - log.info(e) - return [] - - -def format_log(message): - time_now = datetime.now().strftime("%Y-%m-%d %H:%M:%S,%f")[:-3] - return f"{time_now} - {message}" diff --git a/demos/shared/chatbot_ui/requirements.txt b/demos/shared/chatbot_ui/requirements.txt deleted file mode 100644 index 7d94088a..00000000 --- a/demos/shared/chatbot_ui/requirements.txt +++ /dev/null @@ -1,9 +0,0 @@ -gradio==5.3.0 -huggingface_hub<1.0.0 -async_timeout==4.0.3 -loguru==0.7.2 -asyncio==3.4.3 -httpx==0.27.0 -python-dotenv==1.0.1 -pydantic==2.8.2 -openai==1.54.0 diff --git a/demos/shared/chatbot_ui/run_stream.py b/demos/shared/chatbot_ui/run_stream.py deleted file mode 100644 index 89448355..00000000 --- a/demos/shared/chatbot_ui/run_stream.py +++ /dev/null @@ -1,160 +0,0 @@ -import json -import os -import logging -import yaml -import gradio as gr - -from typing import List, Optional, Tuple -from openai import OpenAI -from dotenv import load_dotenv - -from common import format_log, get_llm_models, get_prompt_targets, process_stream_chunk - -load_dotenv() - - -logging.basicConfig( - level=logging.INFO, - format="%(asctime)s - %(levelname)s - %(message)s", -) - -log = logging.getLogger(__name__) - -CHAT_COMPLETION_ENDPOINT = os.getenv("CHAT_COMPLETION_ENDPOINT") -log.info(f"CHAT_COMPLETION_ENDPOINT: {CHAT_COMPLETION_ENDPOINT}") - - -CSS_STYLE = """ -.json-container { - height: 95vh !important; - overflow-y: auto !important; -} -.chatbot { - height: calc(95vh - 100px) !important; - overflow-y: auto !important; -} -footer {visibility: hidden} -""" - - -def chat( - query: Optional[str], - conversation: Optional[List[Tuple[str, str]]], - history: List[dict], - debug_output: str, - model_selector: str, -): - history.append({"role": "user", "content": query}) - - if debug_output is None: - debug_output = "" - - try: - headers = {} - if model_selector and model_selector != "": - headers["x-arch-llm-provider-hint"] = model_selector - client = OpenAI( - api_key="None", - base_url=CHAT_COMPLETION_ENDPOINT, - default_headers=headers, - ) - response = client.chat.completions.create( - # we select model from arch_config file - model="None", - messages=history, - temperature=1.0, - stream=True, - ) - except Exception as e: - # remove last user message in case of exception - history.pop() - log.info("Error calling gateway API: {}".format(e)) - raise gr.Error("Error calling gateway API: {}".format(e)) - - conversation.append((query, "")) - - model_is_set = False - for chunk in response: - tokens = process_stream_chunk(chunk, history) - if tokens and not model_is_set: - model_is_set = True - model = history[-1]["model"] - debug_output = debug_output + "\n" + format_log(f"model: {model}") - if tokens: - conversation[-1] = ( - conversation[-1][0], - conversation[-1][1] + tokens, - ) - - yield "", conversation, history, debug_output, model_selector - - # update assistant response to have correct format - # arch-fc 1.1 expects following format: - # { - # "response": "", - # } - # and this entire block needs to be encoded in ```json\n{json_encoded_content}\n``` - - if not history[-1]["model"].startswith("Arch"): - assistant_response = { - "response": history[-1]["content"], - } - history[-1]["content"] = "```json\n{}\n```".format( - json.dumps(assistant_response) - ) - log.info("history: {}".format(json.dumps(history))) - - -def main(): - with gr.Blocks( - theme=gr.themes.Default( - font_mono=[gr.themes.GoogleFont("IBM Plex Mono"), "Arial", "sans-serif"] - ), - fill_height=True, - css=CSS_STYLE, - ) as demo: - with gr.Row(equal_height=True): - history = gr.State([]) - - with gr.Column(scale=1): - with gr.Accordion("See available tools", open=False): - with gr.Column(scale=1): - gr.JSON( - value=get_prompt_targets(), - show_indices=False, - elem_classes="json-container", - min_height="50vh", - ) - model_selector_textbox = gr.Dropdown( - get_llm_models(), - label="override model", - elem_classes="dropdown", - ) - debug_output = gr.TextArea( - label="debug output", - elem_classes="debug_output", - ) - - with gr.Column(scale=2): - chatbot = gr.Chatbot( - label="Arch Chatbot", - elem_classes="chatbot", - ) - textbox = gr.Textbox( - show_label=False, - placeholder="Enter text and press enter", - autofocus=True, - elem_classes="textbox", - ) - - textbox.submit( - chat, - [textbox, chatbot, history, debug_output, model_selector_textbox], - [textbox, chatbot, history, debug_output, model_selector_textbox], - ) - - demo.launch(server_name="0.0.0.0", server_port=8080, show_error=True, debug=True) - - -if __name__ == "__main__": - main() diff --git a/demos/shared/grafana/Dockerfile b/demos/shared/grafana/Dockerfile deleted file mode 100644 index 40ec1b54..00000000 --- a/demos/shared/grafana/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM grafana/grafana:latest - -FROM grafana/grafana:latest - -# Set environment variables -ENV GF_SECURITY_ADMIN_USER=admin -ENV GF_SECURITY_ADMIN_PASSWORD=grafana - -# Copy provisioning files -COPY ./datasource.yaml /etc/grafana/provisioning/datasources/datasource.yaml -COPY ./dashboard.yaml /etc/grafana/provisioning/dashboards/main.yaml -COPY ./dashboards /var/lib/grafana/dashboards - -# Expose Grafana port -EXPOSE 3000 diff --git a/demos/shared/grafana/dashboard.yaml b/demos/shared/grafana/dashboard.yaml deleted file mode 100644 index fd66a479..00000000 --- a/demos/shared/grafana/dashboard.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: 1 - -providers: - - name: "Dashboard provider" - orgId: 1 - type: file - disableDeletion: false - updateIntervalSeconds: 10 - allowUiUpdates: false - options: - path: /var/lib/grafana/dashboards - foldersFromFilesStructure: true diff --git a/demos/shared/grafana/dashboards/envoy_overview.json b/demos/shared/grafana/dashboards/envoy_overview.json deleted file mode 100644 index e74e1fa1..00000000 --- a/demos/shared/grafana/dashboards/envoy_overview.json +++ /dev/null @@ -1,794 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": { - "type": "grafana", - "uid": "-- Grafana --" - }, - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "fiscalYearStartMonth": 0, - "graphTooltip": 1, - "id": 1, - "links": [], - "panels": [ - { - "datasource": { - "default": true, - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 5, - "x": 0, - "y": 0 - }, - "id": 4, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "percentChangeColorMode": "standard", - "reduceOptions": { - "calcs": ["lastNotNull"], - "fields": "", - "values": false - }, - "showPercentChange": false, - "textMode": "auto", - "wideLayout": true - }, - "pluginVersion": "11.3.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "disableTextWrap": false, - "editorMode": "builder", - "exemplar": false, - "expr": "envoy_cluster_upstream_rq_completed{envoy_cluster_name=~\"openai|api_server\"}", - "fullMetaSearch": false, - "includeNullMetadata": false, - "instant": true, - "legendFormat": "{{envoy_cluster_name}}", - "range": false, - "refId": "A", - "useBackend": false - } - ], - "title": "# of Completed Requests", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "barWidthFactor": 0.6, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "histogram_quantile(0.5, sum by(le) (rate(input_sequence_length_bucket[1h])))" - }, - "properties": [ - { - "id": "displayName", - "value": "Input Sequence Length" - } - ] - } - ] - }, - "gridPos": { - "h": 9, - "w": 9, - "x": 5, - "y": 0 - }, - "id": 7, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "11.3.0", - "targets": [ - { - "disableTextWrap": false, - "editorMode": "code", - "expr": "histogram_quantile(0.9, sum by(le) (rate(input_sequence_length_bucket[5m])))", - "fullMetaSearch": false, - "includeNullMetadata": false, - "legendFormat": "__auto", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "input sequence length (p90)", - "type": "timeseries" - }, - { - "datasource": { - "default": true, - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "barWidthFactor": 0.6, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "histogram_quantile(0.5, sum(rate(output_sequence_length_bucket[1h])) by(le))" - }, - "properties": [ - { - "id": "displayName", - "value": "Output Sequence Length" - } - ] - } - ] - }, - "gridPos": { - "h": 9, - "w": 10, - "x": 14, - "y": 0 - }, - "id": 3, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "11.3.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "disableTextWrap": false, - "editorMode": "code", - "expr": "histogram_quantile(0.9, sum(rate(output_sequence_length_bucket[5m])) by(le))", - "fullMetaSearch": false, - "includeNullMetadata": false, - "instant": false, - "legendFormat": "__auto", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "output sequence length (p90)", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "barWidthFactor": 0.6, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "histogram_quantile(0.5, sum by(le) (rate(time_to_first_token_bucket[1h])))" - }, - "properties": [ - { - "id": "displayName", - "value": "Time to First Token" - } - ] - } - ] - }, - "gridPos": { - "h": 14, - "w": 11, - "x": 0, - "y": 9 - }, - "id": 8, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "11.3.0", - "targets": [ - { - "disableTextWrap": false, - "editorMode": "code", - "expr": "histogram_quantile(0.5, sum by(le) (rate(time_to_first_token_bucket[5m])))", - "fullMetaSearch": false, - "includeNullMetadata": false, - "legendFormat": "__auto", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "time to first token (p90)", - "type": "timeseries" - }, - { - "datasource": { - "default": true, - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "barWidthFactor": 0.6, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "histogram_quantile(0.5, sum by(le) (rate(request_latency_bucket[1h])))" - }, - "properties": [ - { - "id": "displayName", - "value": "Request Latency" - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "histogram_quantile(0.5, sum(rate(time_to_first_token_bucket[60m])) by (le))" - }, - "properties": [ - { - "id": "displayName", - "value": "Time to First Token" - } - ] - } - ] - }, - "gridPos": { - "h": 14, - "w": 13, - "x": 11, - "y": 9 - }, - "id": 1, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "11.3.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "histogram_quantile(0.5, sum by(le) (rate(request_latency_bucket[5m])))", - "fullMetaSearch": false, - "hide": false, - "includeNullMetadata": false, - "instant": false, - "legendFormat": "__auto", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "request latency (p90)", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "barWidthFactor": 0.6, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "histogram_quantile(0.5, sum by(le) (rate(time_per_output_token_bucket[1h])))" - }, - "properties": [ - { - "id": "displayName", - "value": "Time per Output Token" - } - ] - } - ] - }, - "gridPos": { - "h": 13, - "w": 12, - "x": 0, - "y": 23 - }, - "id": 9, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "11.3.0", - "targets": [ - { - "disableTextWrap": false, - "editorMode": "builder", - "expr": "histogram_quantile(0.5, sum by(le) (rate(time_per_output_token_bucket[1h])))", - "fullMetaSearch": false, - "includeNullMetadata": false, - "legendFormat": "__auto", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "Time per Output Token (50p)", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "PBFA97CFB590B2093" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "barWidthFactor": 0.6, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "histogram_quantile(0.5, sum by(le) (rate(tokens_per_second_bucket[1h])))" - }, - "properties": [ - { - "id": "displayName", - "value": "Tokens per Second" - } - ] - } - ] - }, - "gridPos": { - "h": 13, - "w": 12, - "x": 12, - "y": 23 - }, - "id": 10, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "11.3.0", - "targets": [ - { - "disableTextWrap": false, - "editorMode": "builder", - "expr": "histogram_quantile(0.5, sum by(le) (rate(tokens_per_second_bucket[1h])))", - "fullMetaSearch": false, - "includeNullMetadata": false, - "legendFormat": "__auto", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "Tokens per Second(50p)", - "type": "timeseries" - } - ], - "preload": false, - "refresh": "", - "schemaVersion": 40, - "tags": [], - "templating": { - "list": [] - }, - "time": { - "from": "now-15m", - "to": "now" - }, - "timepicker": {}, - "timezone": "browser", - "title": "Plano Gateway Dashboard", - "uid": "adt6uhx5lk8aob", - "version": 1, - "weekStart": "" -} diff --git a/demos/shared/grafana/datasource.yaml b/demos/shared/grafana/datasource.yaml deleted file mode 100644 index 44999d46..00000000 --- a/demos/shared/grafana/datasource.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: 1 - -datasources: - - name: Prometheus - type: prometheus - url: http://prometheus:9090 - isDefault: true - access: proxy - editable: true diff --git a/demos/shared/honeycomb/Dockerfile b/demos/shared/honeycomb/Dockerfile deleted file mode 100644 index eec82c08..00000000 --- a/demos/shared/honeycomb/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM otel/opentelemetry-collector:latest - -COPY otel-collector-config.yaml /etc/otel-collector-config.yaml - -ENTRYPOINT ["/otelcol", "--config=/etc/otel-collector-config.yaml"] diff --git a/demos/shared/honeycomb/otel-collector-config.yaml b/demos/shared/honeycomb/otel-collector-config.yaml deleted file mode 100644 index e261be84..00000000 --- a/demos/shared/honeycomb/otel-collector-config.yaml +++ /dev/null @@ -1,24 +0,0 @@ -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] diff --git a/demos/shared/logfire/Dockerfile b/demos/shared/logfire/Dockerfile deleted file mode 100644 index eec82c08..00000000 --- a/demos/shared/logfire/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM otel/opentelemetry-collector:latest - -COPY otel-collector-config.yaml /etc/otel-collector-config.yaml - -ENTRYPOINT ["/otelcol", "--config=/etc/otel-collector-config.yaml"] diff --git a/demos/shared/logfire/otel-collector-config.yaml b/demos/shared/logfire/otel-collector-config.yaml deleted file mode 100644 index d26939e4..00000000 --- a/demos/shared/logfire/otel-collector-config.yaml +++ /dev/null @@ -1,24 +0,0 @@ -receivers: - otlp: - protocols: - grpc: - endpoint: 0.0.0.0:4317 - http: - endpoint: 0.0.0.0:4318 - -exporters: - otlphttp: - endpoint: "https://logfire-api.pydantic.dev" - headers: - Authorization: "${LOGFIRE_API_KEY}" - -processors: - batch: - timeout: 5s - -service: - pipelines: - traces: - receivers: [otlp] - processors: [batch] - exporters: [otlphttp] diff --git a/demos/shared/prometheus/Dockerfile b/demos/shared/prometheus/Dockerfile deleted file mode 100644 index 1c245059..00000000 --- a/demos/shared/prometheus/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ - -FROM prom/prometheus:latest - -# Set the command to run Prometheus with the specified configuration file -CMD ["--config.file=/etc/prometheus/prometheus.yaml"] - -# Copy the Prometheus configuration files -COPY ./prometheus.yaml /etc/prometheus/prometheus.yaml - -# Expose Prometheus port -EXPOSE 9090 diff --git a/demos/shared/prometheus/prometheus.yaml b/demos/shared/prometheus/prometheus.yaml deleted file mode 100644 index b0e1a7bb..00000000 --- a/demos/shared/prometheus/prometheus.yaml +++ /dev/null @@ -1,23 +0,0 @@ -global: - scrape_interval: 15s - scrape_timeout: 10s - evaluation_interval: 15s -alerting: - alertmanagers: - - static_configs: - - targets: [] - scheme: http - timeout: 10s - api_version: v2 -scrape_configs: - - job_name: envoy - honor_timestamps: true - scrape_interval: 15s - scrape_timeout: 10s - metrics_path: /stats - scheme: http - static_configs: - - targets: - - host.docker.internal:19901 - params: - format: ["prometheus"] diff --git a/demos/shared/signoz/alertmanager.yml b/demos/shared/signoz/alertmanager.yml deleted file mode 100644 index f59b6655..00000000 --- a/demos/shared/signoz/alertmanager.yml +++ /dev/null @@ -1,35 +0,0 @@ -global: - resolve_timeout: 1m - slack_api_url: 'https://hooks.slack.com/services/xxx' - -route: - receiver: 'slack-notifications' - -receivers: -- name: 'slack-notifications' - slack_configs: - - channel: '#alerts' - send_resolved: true - icon_url: https://avatars3.githubusercontent.com/u/3380462 - title: |- - [{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .CommonLabels.alertname }} for {{ .CommonLabels.job }} - {{- if gt (len .CommonLabels) (len .GroupLabels) -}} - {{" "}}( - {{- with .CommonLabels.Remove .GroupLabels.Names }} - {{- range $index, $label := .SortedPairs -}} - {{ if $index }}, {{ end }} - {{- $label.Name }}="{{ $label.Value -}}" - {{- end }} - {{- end -}} - ) - {{- end }} - text: >- - {{ range .Alerts -}} - *Alert:* {{ .Annotations.title }}{{ if .Labels.severity }} - `{{ .Labels.severity }}`{{ end }} - - *Description:* {{ .Annotations.description }} - - *Details:* - {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}` - {{ end }} - {{ end }} diff --git a/demos/shared/signoz/alerts.yml b/demos/shared/signoz/alerts.yml deleted file mode 100644 index 810a2075..00000000 --- a/demos/shared/signoz/alerts.yml +++ /dev/null @@ -1,11 +0,0 @@ -groups: -- name: ExampleCPULoadGroup - rules: - - alert: HighCpuLoad - expr: system_cpu_load_average_1m > 0.1 - for: 0m - labels: - severity: warning - annotations: - summary: High CPU load - description: "CPU load is > 0.1\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" diff --git a/demos/shared/signoz/clickhouse-cluster.xml b/demos/shared/signoz/clickhouse-cluster.xml deleted file mode 100644 index 8b475ffe..00000000 --- a/demos/shared/signoz/clickhouse-cluster.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - zookeeper-1 - 2181 - - - - - - - - - - - - - - - - clickhouse - 9000 - - - - - - - - diff --git a/demos/shared/signoz/clickhouse-config.xml b/demos/shared/signoz/clickhouse-config.xml deleted file mode 100644 index 12086ec8..00000000 --- a/demos/shared/signoz/clickhouse-config.xml +++ /dev/null @@ -1,1143 +0,0 @@ - - - - - - information - - json - - /var/log/clickhouse-server/clickhouse-server.log - /var/log/clickhouse-server/clickhouse-server.err.log - - 1000M - 10 - - - - - - - - - - - - - - - - - - 8123 - - - 9000 - - - 9004 - - - 9005 - - - - - - - - - - - - 9009 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4096 - - - 3 - - - - - false - - - /path/to/ssl_cert_file - /path/to/ssl_key_file - - - false - - - /path/to/ssl_ca_cert_file - - - none - - - 0 - - - -1 - -1 - - - false - - - - - - - - - - - none - true - true - sslv2,sslv3 - true - - - - true - true - sslv2,sslv3 - true - - - - RejectCertificateHandler - - - - - - - - - 100 - - - 0 - - - - 10000 - - - - - - 0.9 - - - 4194304 - - - 0 - - - - - - 8589934592 - - - 5368709120 - - - - 1000 - - - 134217728 - - - 10000 - - - /var/lib/clickhouse/ - - - /var/lib/clickhouse/tmp/ - - - - ` - - - - - - /var/lib/clickhouse/user_files/ - - - - - - - - - - - - - users.xml - - - - /var/lib/clickhouse/access/ - - - - - - - default - - - - - - - - - - - - default - - - - - - - - - true - - - false - - ' | sed -e 's|.*>\(.*\)<.*|\1|') - wget https://github.com/ClickHouse/clickhouse-jdbc-bridge/releases/download/v$PKG_VER/clickhouse-jdbc-bridge_$PKG_VER-1_all.deb - apt install --no-install-recommends -f ./clickhouse-jdbc-bridge_$PKG_VER-1_all.deb - clickhouse-jdbc-bridge & - - * [CentOS/RHEL] - export MVN_URL=https://repo1.maven.org/maven2/ru/yandex/clickhouse/clickhouse-jdbc-bridge - export PKG_VER=$(curl -sL $MVN_URL/maven-metadata.xml | grep '' | sed -e 's|.*>\(.*\)<.*|\1|') - wget https://github.com/ClickHouse/clickhouse-jdbc-bridge/releases/download/v$PKG_VER/clickhouse-jdbc-bridge-$PKG_VER-1.noarch.rpm - yum localinstall -y clickhouse-jdbc-bridge-$PKG_VER-1.noarch.rpm - clickhouse-jdbc-bridge & - - Please refer to https://github.com/ClickHouse/clickhouse-jdbc-bridge#usage for more information. - ]]> - - - - - - - - - - - - - - - 01 - example01-01-1 - - - - - - 3600 - - - - 3600 - - - 60 - - - - - - - - - - - - - system - query_log
- - toYYYYMM(event_date) - - - - - - 7500 -
- - - - system - trace_log
- - toYYYYMM(event_date) - 7500 -
- - - - system - query_thread_log
- toYYYYMM(event_date) - 7500 -
- - - - system - query_views_log
- toYYYYMM(event_date) - 7500 -
- - - - system - part_log
- toYYYYMM(event_date) - 7500 -
- - - - - - system - metric_log
- 7500 - 1000 -
- - - - system - asynchronous_metric_log
- - 7000 -
- - - - - - engine MergeTree - partition by toYYYYMM(finish_date) - order by (finish_date, finish_time_us, trace_id) - - system - opentelemetry_span_log
- 7500 -
- - - - - system - crash_log
- - - 1000 -
- - - - - - - system - processors_profile_log
- - toYYYYMM(event_date) - 7500 -
- - - - - - - - - *_dictionary.xml - - - *function.xml - /var/lib/clickhouse/user_scripts/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /clickhouse/task_queue/ddl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - click_cost - any - - 0 - 3600 - - - 86400 - 60 - - - - max - - 0 - 60 - - - 3600 - 300 - - - 86400 - 3600 - - - - - - /var/lib/clickhouse/format_schemas/ - - - - - hide encrypt/decrypt arguments - ((?:aes_)?(?:encrypt|decrypt)(?:_mysql)?)\s*\(\s*(?:'(?:\\'|.)+'|.*?)\s*\) - - \1(???) - - - - - - - - - - false - - false - - - https://6f33034cfe684dd7a3ab9875e57b1c8d@o388870.ingest.sentry.io/5226277 - - - - - - - - - - - 268435456 - true - -
diff --git a/demos/shared/signoz/clickhouse-storage.xml b/demos/shared/signoz/clickhouse-storage.xml deleted file mode 100644 index 54ec4976..00000000 --- a/demos/shared/signoz/clickhouse-storage.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - 10485760 - - - s3 - - https://BUCKET-NAME.s3-REGION-NAME.amazonaws.com/data/ - ACCESS-KEY-ID - SECRET-ACCESS-KEY - - - - - - - - - - - default - - - s3 - 0 - - - - - - diff --git a/demos/shared/signoz/clickhouse-users.xml b/demos/shared/signoz/clickhouse-users.xml deleted file mode 100644 index f1856207..00000000 --- a/demos/shared/signoz/clickhouse-users.xml +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - 10000000000 - - - random - - - - - 1 - - - - - - - - - - - - - ::/0 - - - - default - - - default - - - - - - - - - - - - - - 3600 - - - 0 - 0 - 0 - 0 - 0 - - - - diff --git a/demos/shared/signoz/custom-function.xml b/demos/shared/signoz/custom-function.xml deleted file mode 100644 index b2b3f91a..00000000 --- a/demos/shared/signoz/custom-function.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - executable - histogramQuantile - Float64 - - Array(Float64) - buckets - - - Array(Float64) - counts - - - Float64 - quantile - - CSV - ./histogramQuantile - - diff --git a/demos/shared/signoz/docker-compose-core.yaml b/demos/shared/signoz/docker-compose-core.yaml deleted file mode 100644 index ec9e0697..00000000 --- a/demos/shared/signoz/docker-compose-core.yaml +++ /dev/null @@ -1,133 +0,0 @@ -version: "2.4" - -include: - - test-app-docker-compose.yaml - -services: - zookeeper-1: - image: bitnami/zookeeper:3.7.1 - container_name: signoz-zookeeper-1 - hostname: zookeeper-1 - user: root - ports: - - "2181:2181" - - "2888:2888" - - "3888:3888" - volumes: - - ./data/zookeeper-1:/bitnami/zookeeper - environment: - - ZOO_SERVER_ID=1 - # - ZOO_SERVERS=0.0.0.0:2888:3888,zookeeper-2:2888:3888,zookeeper-3:2888:3888 - - ALLOW_ANONYMOUS_LOGIN=yes - - ZOO_AUTOPURGE_INTERVAL=1 - - clickhouse: - image: clickhouse/clickhouse-server:24.1.2-alpine - container_name: signoz-clickhouse - # ports: - # - "9000:9000" - # - "8123:8123" - tty: true - volumes: - - ./clickhouse-config.xml:/etc/clickhouse-server/config.xml - - ./clickhouse-users.xml:/etc/clickhouse-server/users.xml - - ./custom-function.xml:/etc/clickhouse-server/custom-function.xml - - ./clickhouse-cluster.xml:/etc/clickhouse-server/config.d/cluster.xml - # - ./clickhouse-storage.xml:/etc/clickhouse-server/config.d/storage.xml - - ./data/clickhouse/:/var/lib/clickhouse/ - - ./user_scripts:/var/lib/clickhouse/user_scripts/ - restart: on-failure - logging: - options: - max-size: 50m - max-file: "3" - healthcheck: - # "clickhouse", "client", "-u ${CLICKHOUSE_USER}", "--password ${CLICKHOUSE_PASSWORD}", "-q 'SELECT 1'" - test: - [ - "CMD", - "wget", - "--spider", - "-q", - "0.0.0.0:8123/ping" - ] - interval: 30s - timeout: 5s - retries: 3 - - alertmanager: - container_name: signoz-alertmanager - image: signoz/alertmanager:0.23.7 - volumes: - - ./data/alertmanager:/data - depends_on: - query-service: - condition: service_healthy - restart: on-failure - command: - - --queryService.url=http://query-service:8085 - - --storage.path=/data - - otel-collector-migrator: - image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-0.111.5} - container_name: otel-migrator - command: - - "--dsn=tcp://clickhouse:9000" - depends_on: - clickhouse: - condition: service_healthy - # clickhouse-2: - # condition: service_healthy - # clickhouse-3: - # condition: service_healthy - - # Notes for Maintainers/Contributors who will change Line Numbers of Frontend & Query-Section. Please Update Line Numbers in `./scripts/commentLinesForSetup.sh` & `./CONTRIBUTING.md` - otel-collector: - container_name: signoz-otel-collector - image: signoz/signoz-otel-collector:0.111.5 - command: - [ - "--config=/etc/otel-collector-config.yaml", - "--manager-config=/etc/manager-config.yaml", - "--copy-path=/var/tmp/collector-config.yaml", - "--feature-gates=-pkg.translator.prometheus.NormalizeName" - ] - # user: root # required for reading docker container logs - volumes: - - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml - - ./otel-collector-opamp-config.yaml:/etc/manager-config.yaml - - /var/lib/docker/containers:/var/lib/docker/containers:ro - - /:/hostfs:ro - environment: - - OTEL_RESOURCE_ATTRIBUTES=host.name=signoz-host,os.type=linux - ports: - # - "1777:1777" # pprof extension - - "4317:4317" # OTLP gRPC receiver - - "4318:4318" # OTLP HTTP receiver - # - "8888:8888" # OtelCollector internal metrics - # - "8889:8889" # signoz spanmetrics exposed by the agent - # - "9411:9411" # Zipkin port - # - "13133:13133" # health check extension - # - "14250:14250" # Jaeger gRPC - # - "14268:14268" # Jaeger thrift HTTP - # - "55678:55678" # OpenCensus receiver - # - "55679:55679" # zPages extension - restart: on-failure - depends_on: - clickhouse: - condition: service_healthy - otel-collector-migrator: - condition: service_completed_successfully - query-service: - condition: service_healthy - - logspout: - image: "gliderlabs/logspout:v3.2.14" - container_name: signoz-logspout - volumes: - - /etc/hostname:/etc/host_hostname:ro - - /var/run/docker.sock:/var/run/docker.sock - command: syslog+tcp://otel-collector:2255 - depends_on: - - otel-collector - restart: on-failure diff --git a/demos/shared/signoz/docker-compose-local.yaml b/demos/shared/signoz/docker-compose-local.yaml deleted file mode 100644 index 7effc129..00000000 --- a/demos/shared/signoz/docker-compose-local.yaml +++ /dev/null @@ -1,67 +0,0 @@ -version: "2.4" - -services: - query-service: - hostname: query-service - build: - context: "../../../" - dockerfile: "./pkg/query-service/Dockerfile" - args: - LDFLAGS: "" - TARGETPLATFORM: "${GOOS}/${GOARCH}" - container_name: signoz-query-service - environment: - - ClickHouseUrl=tcp://clickhouse:9000 - - ALERTMANAGER_API_PREFIX=http://alertmanager:9093/api/ - - SIGNOZ_LOCAL_DB_PATH=/var/lib/signoz/signoz.db - - DASHBOARDS_PATH=/root/config/dashboards - - STORAGE=clickhouse - - GODEBUG=netdns=go - - TELEMETRY_ENABLED=true - volumes: - - ./prometheus.yml:/root/config/prometheus.yml - - ../dashboards:/root/config/dashboards - - ./data/signoz/:/var/lib/signoz/ - command: - [ - "-config=/root/config/prometheus.yml", - "--use-logs-new-schema=true" - ] - ports: - - "6060:6060" - - "8080:8080" - restart: on-failure - healthcheck: - test: - [ - "CMD", - "wget", - "--spider", - "-q", - "localhost:8080/api/v1/health" - ] - interval: 30s - timeout: 5s - retries: 3 - depends_on: - clickhouse: - condition: service_healthy - - frontend: - build: - context: "../../../frontend" - dockerfile: "./Dockerfile" - args: - TARGETOS: "${GOOS}" - TARGETPLATFORM: "${GOARCH}" - container_name: signoz-frontend - environment: - - FRONTEND_API_ENDPOINT=http://query-service:8080 - restart: on-failure - depends_on: - - alertmanager - - query-service - ports: - - "3301:3301" - volumes: - - ../common/nginx-config.conf:/etc/nginx/conf.d/default.conf diff --git a/demos/shared/signoz/docker-compose-minimal.yaml b/demos/shared/signoz/docker-compose-minimal.yaml deleted file mode 100644 index d4861a41..00000000 --- a/demos/shared/signoz/docker-compose-minimal.yaml +++ /dev/null @@ -1,296 +0,0 @@ -x-clickhouse-defaults: &clickhouse-defaults - restart: on-failure - # addding non LTS version due to this fix https://github.com/ClickHouse/ClickHouse/commit/32caf8716352f45c1b617274c7508c86b7d1afab - image: clickhouse/clickhouse-server:24.1.2-alpine - tty: true - depends_on: - - zookeeper-1 - # - zookeeper-2 - # - zookeeper-3 - logging: - options: - max-size: 50m - max-file: "3" - healthcheck: - # "clickhouse", "client", "-u ${CLICKHOUSE_USER}", "--password ${CLICKHOUSE_PASSWORD}", "-q 'SELECT 1'" - test: - [ - "CMD", - "wget", - "--spider", - "-q", - "0.0.0.0:8123/ping" - ] - interval: 30s - timeout: 5s - retries: 3 - ulimits: - nproc: 65535 - nofile: - soft: 262144 - hard: 262144 - -x-db-depend: &db-depend - depends_on: - clickhouse: - condition: service_healthy - otel-collector-migrator-sync: - condition: service_completed_successfully - # clickhouse-2: - # condition: service_healthy - # clickhouse-3: - # condition: service_healthy - -services: - - zookeeper-1: - image: bitnami/zookeeper:3.7.1 - container_name: signoz-zookeeper-1 - hostname: zookeeper-1 - user: root - ports: - - "2181:2181" - - "2888:2888" - - "3888:3888" - volumes: - - ./data/zookeeper-1:/bitnami/zookeeper - environment: - - ZOO_SERVER_ID=1 - # - ZOO_SERVERS=0.0.0.0:2888:3888,zookeeper-2:2888:3888,zookeeper-3:2888:3888 - - ALLOW_ANONYMOUS_LOGIN=yes - - ZOO_AUTOPURGE_INTERVAL=1 - - # zookeeper-2: - # image: bitnami/zookeeper:3.7.0 - # container_name: signoz-zookeeper-2 - # hostname: zookeeper-2 - # user: root - # ports: - # - "2182:2181" - # - "2889:2888" - # - "3889:3888" - # volumes: - # - ./data/zookeeper-2:/bitnami/zookeeper - # environment: - # - ZOO_SERVER_ID=2 - # - ZOO_SERVERS=zookeeper-1:2888:3888,0.0.0.0:2888:3888,zookeeper-3:2888:3888 - # - ALLOW_ANONYMOUS_LOGIN=yes - # - ZOO_AUTOPURGE_INTERVAL=1 - - # zookeeper-3: - # image: bitnami/zookeeper:3.7.0 - # container_name: signoz-zookeeper-3 - # hostname: zookeeper-3 - # user: root - # ports: - # - "2183:2181" - # - "2890:2888" - # - "3890:3888" - # volumes: - # - ./data/zookeeper-3:/bitnami/zookeeper - # environment: - # - ZOO_SERVER_ID=3 - # - ZOO_SERVERS=zookeeper-1:2888:3888,zookeeper-2:2888:3888,0.0.0.0:2888:3888 - # - ALLOW_ANONYMOUS_LOGIN=yes - # - ZOO_AUTOPURGE_INTERVAL=1 - - clickhouse: - <<: *clickhouse-defaults - container_name: signoz-clickhouse - hostname: clickhouse - ports: - - "9000:9000" - - "8123:8123" - - "9181:9181" - volumes: - - ./clickhouse-config.xml:/etc/clickhouse-server/config.xml - - ./clickhouse-users.xml:/etc/clickhouse-server/users.xml - - ./custom-function.xml:/etc/clickhouse-server/custom-function.xml - - ./clickhouse-cluster.xml:/etc/clickhouse-server/config.d/cluster.xml - # - ./clickhouse-storage.xml:/etc/clickhouse-server/config.d/storage.xml - - ./data/clickhouse/:/var/lib/clickhouse/ - - ./user_scripts:/var/lib/clickhouse/user_scripts/ - - # clickhouse-2: - # <<: *clickhouse-defaults - # container_name: signoz-clickhouse-2 - # hostname: clickhouse-2 - # ports: - # - "9001:9000" - # - "8124:8123" - # - "9182:9181" - # volumes: - # - ./clickhouse-config.xml:/etc/clickhouse-server/config.xml - # - ./clickhouse-users.xml:/etc/clickhouse-server/users.xml - # - ./custom-function.xml:/etc/clickhouse-server/custom-function.xml - # - ./clickhouse-cluster.xml:/etc/clickhouse-server/config.d/cluster.xml - # # - ./clickhouse-storage.xml:/etc/clickhouse-server/config.d/storage.xml - # - ./data/clickhouse-2/:/var/lib/clickhouse/ - # - ./user_scripts:/var/lib/clickhouse/user_scripts/ - - - # clickhouse-3: - # <<: *clickhouse-defaults - # container_name: signoz-clickhouse-3 - # hostname: clickhouse-3 - # ports: - # - "9002:9000" - # - "8125:8123" - # - "9183:9181" - # volumes: - # - ./clickhouse-config.xml:/etc/clickhouse-server/config.xml - # - ./clickhouse-users.xml:/etc/clickhouse-server/users.xml - # - ./custom-function.xml:/etc/clickhouse-server/custom-function.xml - # - ./clickhouse-cluster.xml:/etc/clickhouse-server/config.d/cluster.xml - # # - ./clickhouse-storage.xml:/etc/clickhouse-server/config.d/storage.xml - # - ./data/clickhouse-3/:/var/lib/clickhouse/ - # - ./user_scripts:/var/lib/clickhouse/user_scripts/ - - alertmanager: - image: signoz/alertmanager:${ALERTMANAGER_TAG:-0.23.7} - container_name: signoz-alertmanager - volumes: - - ./data/alertmanager:/data - depends_on: - query-service: - condition: service_healthy - restart: on-failure - command: - - --queryService.url=http://query-service:8085 - - --storage.path=/data - - # Notes for Maintainers/Contributors who will change Line Numbers of Frontend & Query-Section. Please Update Line Numbers in `./scripts/commentLinesForSetup.sh` & `./CONTRIBUTING.md` - - query-service: - image: signoz/query-service:${DOCKER_TAG:-0.57.0} - container_name: signoz-query-service - command: - [ - "-config=/root/config/prometheus.yml", - "--use-logs-new-schema=true" - ] - # ports: - # - "6060:6060" # pprof port - # - "8080:8080" # query-service port - volumes: - - ./prometheus.yml:/root/config/prometheus.yml - - ../dashboards:/root/config/dashboards - - ./data/signoz/:/var/lib/signoz/ - environment: - - ClickHouseUrl=tcp://clickhouse:9000 - - ALERTMANAGER_API_PREFIX=http://alertmanager:9093/api/ - - SIGNOZ_LOCAL_DB_PATH=/var/lib/signoz/signoz.db - - DASHBOARDS_PATH=/root/config/dashboards - - STORAGE=clickhouse - - GODEBUG=netdns=go - - TELEMETRY_ENABLED=true - - DEPLOYMENT_TYPE=docker-standalone-amd - restart: on-failure - healthcheck: - test: - [ - "CMD", - "wget", - "--spider", - "-q", - "localhost:8080/api/v1/health" - ] - interval: 30s - timeout: 5s - retries: 3 - <<: *db-depend - - frontend: - image: signoz/frontend:${DOCKER_TAG:-0.57.0} - container_name: signoz-frontend - restart: on-failure - depends_on: - - alertmanager - - query-service - ports: - - "3301:3301" - volumes: - - ./nginx-config.conf:/etc/nginx/conf.d/default.conf - - otel-collector-migrator-sync: - image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-0.111.5} - container_name: otel-migrator-sync - command: - - "sync" - - "--dsn=tcp://clickhouse:9000" - - "--up=" - depends_on: - clickhouse: - condition: service_healthy - # clickhouse-2: - # condition: service_healthy - # clickhouse-3: - # condition: service_healthy - - otel-collector-migrator-async: - image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-0.111.5} - container_name: otel-migrator-async - command: - - "async" - - "--dsn=tcp://clickhouse:9000" - - "--up=" - depends_on: - clickhouse: - condition: service_healthy - otel-collector-migrator-sync: - condition: service_completed_successfully - # clickhouse-2: - # condition: service_healthy - # clickhouse-3: - # condition: service_healthy - - otel-collector: - image: signoz/signoz-otel-collector:${OTELCOL_TAG:-0.111.5} - container_name: signoz-otel-collector - command: - [ - "--config=/etc/otel-collector-config.yaml", - "--manager-config=/etc/manager-config.yaml", - "--copy-path=/var/tmp/collector-config.yaml", - "--feature-gates=-pkg.translator.prometheus.NormalizeName" - ] - user: root # required for reading docker container logs - volumes: - - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml - - ./otel-collector-opamp-config.yaml:/etc/manager-config.yaml - - /var/lib/docker/containers:/var/lib/docker/containers:ro - - /:/hostfs:ro - environment: - - OTEL_RESOURCE_ATTRIBUTES=host.name=signoz-host,os.type=linux - - LOW_CARDINAL_EXCEPTION_GROUPING=false - ports: - # - "1777:1777" # pprof extension - - "4317:4317" # OTLP gRPC receiver - - "4318:4318" # OTLP HTTP receiver - # - "8888:8888" # OtelCollector internal metrics - # - "8889:8889" # signoz spanmetrics exposed by the agent - # - "9411:9411" # Zipkin port - # - "13133:13133" # health check extension - # - "14250:14250" # Jaeger gRPC - # - "14268:14268" # Jaeger thrift HTTP - # - "55678:55678" # OpenCensus receiver - # - "55679:55679" # zPages extension - restart: on-failure - depends_on: - clickhouse: - condition: service_healthy - otel-collector-migrator-sync: - condition: service_completed_successfully - query-service: - condition: service_healthy - - logspout: - image: "gliderlabs/logspout:v3.2.14" - container_name: signoz-logspout - volumes: - - /etc/hostname:/etc/host_hostname:ro - - /var/run/docker.sock:/var/run/docker.sock - command: syslog+tcp://otel-collector:2255 - depends_on: - - otel-collector - restart: on-failure diff --git a/demos/shared/signoz/docker-compose.testing.yaml b/demos/shared/signoz/docker-compose.testing.yaml deleted file mode 100644 index d8c0db25..00000000 --- a/demos/shared/signoz/docker-compose.testing.yaml +++ /dev/null @@ -1,284 +0,0 @@ -version: "2.4" - -include: - - test-app-docker-compose.yaml - -x-clickhouse-defaults: &clickhouse-defaults - restart: on-failure - # addding non LTS version due to this fix https://github.com/ClickHouse/ClickHouse/commit/32caf8716352f45c1b617274c7508c86b7d1afab - image: clickhouse/clickhouse-server:24.1.2-alpine - tty: true - depends_on: - - zookeeper-1 - # - zookeeper-2 - # - zookeeper-3 - logging: - options: - max-size: 50m - max-file: "3" - healthcheck: - # "clickhouse", "client", "-u ${CLICKHOUSE_USER}", "--password ${CLICKHOUSE_PASSWORD}", "-q 'SELECT 1'" - test: - [ - "CMD", - "wget", - "--spider", - "-q", - "0.0.0.0:8123/ping" - ] - interval: 30s - timeout: 5s - retries: 3 - ulimits: - nproc: 65535 - nofile: - soft: 262144 - hard: 262144 - -x-db-depend: &db-depend - depends_on: - clickhouse: - condition: service_healthy - otel-collector-migrator: - condition: service_completed_successfully - # clickhouse-2: - # condition: service_healthy - # clickhouse-3: - # condition: service_healthy - -services: - - zookeeper-1: - image: bitnami/zookeeper:3.7.1 - container_name: signoz-zookeeper-1 - hostname: zookeeper-1 - user: root - ports: - - "2181:2181" - - "2888:2888" - - "3888:3888" - volumes: - - ./data/zookeeper-1:/bitnami/zookeeper - environment: - - ZOO_SERVER_ID=1 - # - ZOO_SERVERS=0.0.0.0:2888:3888,zookeeper-2:2888:3888,zookeeper-3:2888:3888 - - ALLOW_ANONYMOUS_LOGIN=yes - - ZOO_AUTOPURGE_INTERVAL=1 - - # zookeeper-2: - # image: bitnami/zookeeper:3.7.0 - # container_name: signoz-zookeeper-2 - # hostname: zookeeper-2 - # user: root - # ports: - # - "2182:2181" - # - "2889:2888" - # - "3889:3888" - # volumes: - # - ./data/zookeeper-2:/bitnami/zookeeper - # environment: - # - ZOO_SERVER_ID=2 - # - ZOO_SERVERS=zookeeper-1:2888:3888,0.0.0.0:2888:3888,zookeeper-3:2888:3888 - # - ALLOW_ANONYMOUS_LOGIN=yes - # - ZOO_AUTOPURGE_INTERVAL=1 - - # zookeeper-3: - # image: bitnami/zookeeper:3.7.0 - # container_name: signoz-zookeeper-3 - # hostname: zookeeper-3 - # user: root - # ports: - # - "2183:2181" - # - "2890:2888" - # - "3890:3888" - # volumes: - # - ./data/zookeeper-3:/bitnami/zookeeper - # environment: - # - ZOO_SERVER_ID=3 - # - ZOO_SERVERS=zookeeper-1:2888:3888,zookeeper-2:2888:3888,0.0.0.0:2888:3888 - # - ALLOW_ANONYMOUS_LOGIN=yes - # - ZOO_AUTOPURGE_INTERVAL=1 - - clickhouse: - <<: *clickhouse-defaults - container_name: signoz-clickhouse - hostname: clickhouse - ports: - - "9000:9000" - - "8123:8123" - - "9181:9181" - volumes: - - ./clickhouse-config.xml:/etc/clickhouse-server/config.xml - - ./clickhouse-users.xml:/etc/clickhouse-server/users.xml - - ./custom-function.xml:/etc/clickhouse-server/custom-function.xml - - ./clickhouse-cluster.xml:/etc/clickhouse-server/config.d/cluster.xml - # - ./clickhouse-storage.xml:/etc/clickhouse-server/config.d/storage.xml - - ./data/clickhouse/:/var/lib/clickhouse/ - - ./user_scripts:/var/lib/clickhouse/user_scripts/ - - # clickhouse-2: - # <<: *clickhouse-defaults - # container_name: signoz-clickhouse-2 - # hostname: clickhouse-2 - # ports: - # - "9001:9000" - # - "8124:8123" - # - "9182:9181" - # volumes: - # - ./clickhouse-config.xml:/etc/clickhouse-server/config.xml - # - ./clickhouse-users.xml:/etc/clickhouse-server/users.xml - # - ./custom-function.xml:/etc/clickhouse-server/custom-function.xml - # - ./clickhouse-cluster.xml:/etc/clickhouse-server/config.d/cluster.xml - # # - ./clickhouse-storage.xml:/etc/clickhouse-server/config.d/storage.xml - # - ./data/clickhouse-2/:/var/lib/clickhouse/ - # - ./user_scripts:/var/lib/clickhouse/user_scripts/ - - - # clickhouse-3: - # <<: *clickhouse-defaults - # container_name: signoz-clickhouse-3 - # hostname: clickhouse-3 - # ports: - # - "9002:9000" - # - "8125:8123" - # - "9183:9181" - # volumes: - # - ./clickhouse-config.xml:/etc/clickhouse-server/config.xml - # - ./clickhouse-users.xml:/etc/clickhouse-server/users.xml - # - ./custom-function.xml:/etc/clickhouse-server/custom-function.xml - # - ./clickhouse-cluster.xml:/etc/clickhouse-server/config.d/cluster.xml - # # - ./clickhouse-storage.xml:/etc/clickhouse-server/config.d/storage.xml - # - ./data/clickhouse-3/:/var/lib/clickhouse/ - # - ./user_scripts:/var/lib/clickhouse/user_scripts/ - - alertmanager: - image: signoz/alertmanager:${ALERTMANAGER_TAG:-0.23.7} - container_name: signoz-alertmanager - volumes: - - ./data/alertmanager:/data - depends_on: - query-service: - condition: service_healthy - restart: on-failure - command: - - --queryService.url=http://query-service:8085 - - --storage.path=/data - - # Notes for Maintainers/Contributors who will change Line Numbers of Frontend & Query-Section. Please Update Line Numbers in `./scripts/commentLinesForSetup.sh` & `./CONTRIBUTING.md` - - query-service: - image: signoz/query-service:${DOCKER_TAG:-0.57.0} - container_name: signoz-query-service - command: - [ - "-config=/root/config/prometheus.yml", - "-gateway-url=https://api.staging.signoz.cloud", - "--use-logs-new-schema=true" - ] - # ports: - # - "6060:6060" # pprof port - # - "8080:8080" # query-service port - volumes: - - ./prometheus.yml:/root/config/prometheus.yml - - ../dashboards:/root/config/dashboards - - ./data/signoz/:/var/lib/signoz/ - environment: - - ClickHouseUrl=tcp://clickhouse:9000 - - ALERTMANAGER_API_PREFIX=http://alertmanager:9093/api/ - - SIGNOZ_LOCAL_DB_PATH=/var/lib/signoz/signoz.db - - DASHBOARDS_PATH=/root/config/dashboards - - STORAGE=clickhouse - - GODEBUG=netdns=go - - TELEMETRY_ENABLED=true - - DEPLOYMENT_TYPE=docker-standalone-amd - restart: on-failure - healthcheck: - test: - [ - "CMD", - "wget", - "--spider", - "-q", - "localhost:8080/api/v1/health" - ] - interval: 30s - timeout: 5s - retries: 3 - <<: *db-depend - - frontend: - image: signoz/frontend:${DOCKER_TAG:-0.57.0} - container_name: signoz-frontend - restart: on-failure - depends_on: - - alertmanager - - query-service - ports: - - "3301:3301" - volumes: - - ../common/nginx-config.conf:/etc/nginx/conf.d/default.conf - - otel-collector-migrator: - image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-0.111.5} - container_name: otel-migrator - command: - - "--dsn=tcp://clickhouse:9000" - depends_on: - clickhouse: - condition: service_healthy - # clickhouse-2: - # condition: service_healthy - # clickhouse-3: - # condition: service_healthy - - - otel-collector: - image: signoz/signoz-otel-collector:${OTELCOL_TAG:-0.111.5} - container_name: signoz-otel-collector - command: - [ - "--config=/etc/otel-collector-config.yaml", - "--manager-config=/etc/manager-config.yaml", - "--copy-path=/var/tmp/collector-config.yaml", - "--feature-gates=-pkg.translator.prometheus.NormalizeName" - ] - user: root # required for reading docker container logs - volumes: - - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml - - ./otel-collector-opamp-config.yaml:/etc/manager-config.yaml - - /var/lib/docker/containers:/var/lib/docker/containers:ro - - /:/hostfs:ro - environment: - - OTEL_RESOURCE_ATTRIBUTES=host.name=signoz-host,os.type=linux - - LOW_CARDINAL_EXCEPTION_GROUPING=false - ports: - # - "1777:1777" # pprof extension - - "4317:4317" # OTLP gRPC receiver - - "4318:4318" # OTLP HTTP receiver - # - "8888:8888" # OtelCollector internal metrics - # - "8889:8889" # signoz spanmetrics exposed by the agent - # - "9411:9411" # Zipkin port - # - "13133:13133" # health check extension - # - "14250:14250" # Jaeger gRPC - # - "14268:14268" # Jaeger thrift HTTP - # - "55678:55678" # OpenCensus receiver - # - "55679:55679" # zPages extension - restart: on-failure - depends_on: - clickhouse: - condition: service_healthy - otel-collector-migrator: - condition: service_completed_successfully - query-service: - condition: service_healthy - - logspout: - image: "gliderlabs/logspout:v3.2.14" - container_name: signoz-logspout - volumes: - - /etc/hostname:/etc/host_hostname:ro - - /var/run/docker.sock:/var/run/docker.sock - command: syslog+tcp://otel-collector:2255 - depends_on: - - otel-collector - restart: on-failure diff --git a/demos/shared/signoz/docker-compose.yaml b/demos/shared/signoz/docker-compose.yaml deleted file mode 100644 index 251ca253..00000000 --- a/demos/shared/signoz/docker-compose.yaml +++ /dev/null @@ -1,3 +0,0 @@ -include: - - test-app-docker-compose.yaml - - docker-compose-minimal.yaml diff --git a/demos/shared/signoz/keeper_config.xml b/demos/shared/signoz/keeper_config.xml deleted file mode 100644 index f9a96dca..00000000 --- a/demos/shared/signoz/keeper_config.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - information - /var/log/clickhouse-keeper/clickhouse-keeper.log - /var/log/clickhouse-keeper/clickhouse-keeper.err.log - - 1000M - 10 - - - - 0.0.0.0 - 4096 - - - 9181 - - - 1 - - /var/lib/clickhouse/coordination/logs - /var/lib/clickhouse/coordination/snapshots - - - 10000 - 10000 - 100000 - information - false - - - - - true - - - 1 - - - clickhouses-keeper-1 - 9234 - - - - - - - diff --git a/demos/shared/signoz/nginx-config.conf b/demos/shared/signoz/nginx-config.conf deleted file mode 100644 index 442a2899..00000000 --- a/demos/shared/signoz/nginx-config.conf +++ /dev/null @@ -1,64 +0,0 @@ -map $http_upgrade $connection_upgrade { - default upgrade; - '' close; -} - -server { - listen 3301; - server_name _; - - gzip on; - gzip_static on; - gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; - gzip_proxied any; - gzip_vary on; - gzip_comp_level 6; - gzip_buffers 16 8k; - gzip_http_version 1.1; - - # to handle uri issue 414 from nginx - client_max_body_size 24M; - large_client_header_buffers 8 128k; - - location / { - if ( $uri = '/index.html' ) { - add_header Cache-Control no-store always; - } - root /usr/share/nginx/html; - index index.html index.htm; - try_files $uri $uri/ /index.html; - } - - location ~ ^/api/(v1|v3)/logs/(tail|livetail){ - proxy_pass http://query-service:8080; - proxy_http_version 1.1; - - # connection will be closed if no data is read for 600s between successive read operations - proxy_read_timeout 600s; - - # dont buffer the data send it directly to client. - proxy_buffering off; - proxy_cache off; - } - - location /api { - proxy_pass http://query-service:8080/api; - # connection will be closed if no data is read for 600s between successive read operations - proxy_read_timeout 600s; - } - - location /ws { - proxy_pass http://query-service:8080/ws; - proxy_http_version 1.1; - proxy_set_header Upgrade "websocket"; - proxy_set_header Connection "upgrade"; - proxy_read_timeout 86400; - } - - # redirect server error pages to the static page /50x.html - # - error_page 500 502 503 504 /50x.html; - location = /50x.html { - root /usr/share/nginx/html; - } -} diff --git a/demos/shared/signoz/otel-collector-config.yaml b/demos/shared/signoz/otel-collector-config.yaml deleted file mode 100644 index d7b491b7..00000000 --- a/demos/shared/signoz/otel-collector-config.yaml +++ /dev/null @@ -1,188 +0,0 @@ -receivers: - tcplog/docker: - listen_address: "0.0.0.0:2255" - operators: - - type: regex_parser - regex: '^<([0-9]+)>[0-9]+ (?P[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]+)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?) (?P\S+) (?P\S+) [0-9]+ - -( (?P.*))?' - timestamp: - parse_from: attributes.timestamp - layout: '%Y-%m-%dT%H:%M:%S.%LZ' - - type: move - from: attributes["body"] - to: body - - type: remove - field: attributes.timestamp - # please remove names from below if you want to collect logs from them - - type: filter - id: signoz_logs_filter - expr: 'attributes.container_name matches "^signoz-(logspout|frontend|alertmanager|query-service|otel-collector|clickhouse|zookeeper)"' - opencensus: - endpoint: 0.0.0.0:55678 - otlp: - protocols: - grpc: - endpoint: 0.0.0.0:4317 - http: - endpoint: 0.0.0.0:4318 - jaeger: - protocols: - grpc: - endpoint: 0.0.0.0:14250 - thrift_http: - endpoint: 0.0.0.0:14268 - # thrift_compact: - # endpoint: 0.0.0.0:6831 - # thrift_binary: - # endpoint: 0.0.0.0:6832 - hostmetrics: - collection_interval: 30s - root_path: /hostfs - scrapers: - cpu: {} - load: {} - memory: {} - disk: {} - filesystem: {} - network: {} - prometheus: - config: - global: - scrape_interval: 60s - scrape_configs: - # otel-collector internal metrics - - job_name: otel-collector - static_configs: - - targets: - - localhost:8888 - labels: - job_name: otel-collector - - -processors: - batch: - send_batch_size: 10000 - send_batch_max_size: 11000 - timeout: 10s - signozspanmetrics/cumulative: - metrics_exporter: clickhousemetricswrite - metrics_flush_interval: 60s - latency_histogram_buckets: [100us, 1ms, 2ms, 6ms, 10ms, 50ms, 100ms, 250ms, 500ms, 1000ms, 1400ms, 2000ms, 5s, 10s, 20s, 40s, 60s ] - dimensions_cache_size: 100000 - dimensions: - - name: service.namespace - default: default - - name: deployment.environment - default: default - # This is added to ensure the uniqueness of the timeseries - # Otherwise, identical timeseries produced by multiple replicas of - # collectors result in incorrect APM metrics - - name: signoz.collector.id - - name: service.version - - name: browser.platform - - name: browser.mobile - - name: k8s.cluster.name - - name: k8s.node.name - - name: k8s.namespace.name - - name: host.name - - name: host.type - - name: container.name - # memory_limiter: - # # 80% of maximum memory up to 2G - # limit_mib: 1500 - # # 25% of limit up to 2G - # spike_limit_mib: 512 - # check_interval: 5s - # - # # 50% of the maximum memory - # limit_percentage: 50 - # # 20% of max memory usage spike expected - # spike_limit_percentage: 20 - # queued_retry: - # num_workers: 4 - # queue_size: 100 - # retry_on_failure: true - resourcedetection: - # Using OTEL_RESOURCE_ATTRIBUTES envvar, env detector adds custom labels. - detectors: [env, system] # include ec2 for AWS, gcp for GCP and azure for Azure. - timeout: 2s - signozspanmetrics/delta: - metrics_exporter: clickhousemetricswrite - metrics_flush_interval: 60s - latency_histogram_buckets: [100us, 1ms, 2ms, 6ms, 10ms, 50ms, 100ms, 250ms, 500ms, 1000ms, 1400ms, 2000ms, 5s, 10s, 20s, 40s, 60s ] - dimensions_cache_size: 100000 - aggregation_temporality: AGGREGATION_TEMPORALITY_DELTA - enable_exp_histogram: true - dimensions: - - name: service.namespace - default: default - - name: deployment.environment - default: default - # This is added to ensure the uniqueness of the timeseries - # Otherwise, identical timeseries produced by multiple replicas of - # collectors result in incorrect APM metrics - - name: signoz.collector.id - - name: service.version - - name: browser.platform - - name: browser.mobile - - name: k8s.cluster.name - - name: k8s.node.name - - name: k8s.namespace.name - - name: host.name - - name: host.type - - name: container.name - -extensions: - health_check: - endpoint: 0.0.0.0:13133 - zpages: - endpoint: 0.0.0.0:55679 - pprof: - endpoint: 0.0.0.0:1777 - -exporters: - clickhousetraces: - datasource: tcp://clickhouse:9000/signoz_traces - low_cardinal_exception_grouping: ${env:LOW_CARDINAL_EXCEPTION_GROUPING} - clickhousemetricswrite: - endpoint: tcp://clickhouse:9000/signoz_metrics - resource_to_telemetry_conversion: - enabled: true - clickhousemetricswrite/prometheus: - endpoint: tcp://clickhouse:9000/signoz_metrics - clickhouselogsexporter: - dsn: tcp://clickhouse:9000/signoz_logs - timeout: 10s - use_new_schema: true - # logging: {} - -service: - telemetry: - logs: - encoding: json - metrics: - address: 0.0.0.0:8888 - extensions: - - health_check - - zpages - - pprof - pipelines: - traces: - receivers: [jaeger, otlp] - processors: [signozspanmetrics/cumulative, signozspanmetrics/delta, batch] - exporters: [clickhousetraces] - metrics: - receivers: [otlp] - processors: [batch] - exporters: [clickhousemetricswrite] - metrics/generic: - receivers: [hostmetrics] - processors: [resourcedetection, batch] - exporters: [clickhousemetricswrite] - metrics/prometheus: - receivers: [prometheus] - processors: [batch] - exporters: [clickhousemetricswrite/prometheus] - logs: - receivers: [otlp, tcplog/docker] - processors: [batch] - exporters: [clickhouselogsexporter] diff --git a/demos/shared/signoz/otel-collector-opamp-config.yaml b/demos/shared/signoz/otel-collector-opamp-config.yaml deleted file mode 100644 index e408b55e..00000000 --- a/demos/shared/signoz/otel-collector-opamp-config.yaml +++ /dev/null @@ -1 +0,0 @@ -server_endpoint: ws://query-service:4320/v1/opamp diff --git a/demos/shared/signoz/prometheus.yml b/demos/shared/signoz/prometheus.yml deleted file mode 100644 index d7c52893..00000000 --- a/demos/shared/signoz/prometheus.yml +++ /dev/null @@ -1,25 +0,0 @@ -# my global config -global: - scrape_interval: 5s # Set the scrape interval to every 15 seconds. Default is every 1 minute. - evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. - # scrape_timeout is set to the global default (10s). - -# Alertmanager configuration -alerting: - alertmanagers: - - static_configs: - - targets: - - alertmanager:9093 - -# Load rules once and periodically evaluate them according to the global 'evaluation_interval'. -rule_files: - # - "first_rules.yml" - # - "second_rules.yml" - - 'alerts.yml' - -# A scrape configuration containing exactly one endpoint to scrape: -# Here it's Prometheus itself. -scrape_configs: [] - -remote_read: - - url: tcp://clickhouse:9000/signoz_metrics diff --git a/demos/shared/signoz/test-app-docker-compose.yaml b/demos/shared/signoz/test-app-docker-compose.yaml deleted file mode 100644 index c043d75d..00000000 --- a/demos/shared/signoz/test-app-docker-compose.yaml +++ /dev/null @@ -1,26 +0,0 @@ -services: - hotrod: - image: jaegertracing/example-hotrod:1.30 - container_name: hotrod - logging: - options: - max-size: 50m - max-file: "3" - command: [ "all" ] - environment: - - JAEGER_ENDPOINT=http://otel-collector:14268/api/traces - - load-hotrod: - image: "signoz/locust:1.2.3" - container_name: load-hotrod - hostname: load-hotrod - environment: - ATTACKED_HOST: http://hotrod:8080 - LOCUST_MODE: standalone - NO_PROXY: standalone - TASK_DELAY_FROM: 5 - TASK_DELAY_TO: 30 - QUIET_MODE: "${QUIET_MODE:-false}" - LOCUST_OPTS: "--headless -u 10 -r 1" - volumes: - - ../common/locust-scripts:/locust diff --git a/demos/shared/signoz/user_scripts/histogramQuantile b/demos/shared/signoz/user_scripts/histogramQuantile deleted file mode 100755 index 3b77a7b2..00000000 Binary files a/demos/shared/signoz/user_scripts/histogramQuantile and /dev/null differ diff --git a/demos/shared/signoz/user_scripts/histogramQuantile.go b/demos/shared/signoz/user_scripts/histogramQuantile.go deleted file mode 100644 index 9540a774..00000000 --- a/demos/shared/signoz/user_scripts/histogramQuantile.go +++ /dev/null @@ -1,237 +0,0 @@ -package main - -import ( - "bufio" - "fmt" - "math" - "os" - "sort" - "strconv" - "strings" -) - -// NOTE: executable must be built with target OS and architecture set to linux/amd64 -// env GOOS=linux GOARCH=amd64 go build -o histogramQuantile histogramQuantile.go - -// The following code is adapted from the following source: -// https://github.com/prometheus/prometheus/blob/main/promql/quantile.go - -type bucket struct { - upperBound float64 - count float64 -} - -// buckets implements sort.Interface. -type buckets []bucket - -func (b buckets) Len() int { return len(b) } -func (b buckets) Swap(i, j int) { b[i], b[j] = b[j], b[i] } -func (b buckets) Less(i, j int) bool { return b[i].upperBound < b[j].upperBound } - -// bucketQuantile calculates the quantile 'q' based on the given buckets. The -// buckets will be sorted by upperBound by this function (i.e. no sorting -// needed before calling this function). The quantile value is interpolated -// assuming a linear distribution within a bucket. However, if the quantile -// falls into the highest bucket, the upper bound of the 2nd highest bucket is -// returned. A natural lower bound of 0 is assumed if the upper bound of the -// lowest bucket is greater 0. In that case, interpolation in the lowest bucket -// happens linearly between 0 and the upper bound of the lowest bucket. -// However, if the lowest bucket has an upper bound less or equal 0, this upper -// bound is returned if the quantile falls into the lowest bucket. -// -// There are a number of special cases (once we have a way to report errors -// happening during evaluations of AST functions, we should report those -// explicitly): -// -// If 'buckets' has 0 observations, NaN is returned. -// -// If 'buckets' has fewer than 2 elements, NaN is returned. -// -// If the highest bucket is not +Inf, NaN is returned. -// -// If q==NaN, NaN is returned. -// -// If q<0, -Inf is returned. -// -// If q>1, +Inf is returned. -func bucketQuantile(q float64, buckets buckets) float64 { - if math.IsNaN(q) { - return math.NaN() - } - if q < 0 { - return math.Inf(-1) - } - if q > 1 { - return math.Inf(+1) - } - sort.Sort(buckets) - if !math.IsInf(buckets[len(buckets)-1].upperBound, +1) { - return math.NaN() - } - - buckets = coalesceBuckets(buckets) - ensureMonotonic(buckets) - - if len(buckets) < 2 { - return math.NaN() - } - observations := buckets[len(buckets)-1].count - if observations == 0 { - return math.NaN() - } - rank := q * observations - b := sort.Search(len(buckets)-1, func(i int) bool { return buckets[i].count >= rank }) - - if b == len(buckets)-1 { - return buckets[len(buckets)-2].upperBound - } - if b == 0 && buckets[0].upperBound <= 0 { - return buckets[0].upperBound - } - var ( - bucketStart float64 - bucketEnd = buckets[b].upperBound - count = buckets[b].count - ) - if b > 0 { - bucketStart = buckets[b-1].upperBound - count -= buckets[b-1].count - rank -= buckets[b-1].count - } - return bucketStart + (bucketEnd-bucketStart)*(rank/count) -} - -// coalesceBuckets merges buckets with the same upper bound. -// -// The input buckets must be sorted. -func coalesceBuckets(buckets buckets) buckets { - last := buckets[0] - i := 0 - for _, b := range buckets[1:] { - if b.upperBound == last.upperBound { - last.count += b.count - } else { - buckets[i] = last - last = b - i++ - } - } - buckets[i] = last - return buckets[:i+1] -} - -// The assumption that bucket counts increase monotonically with increasing -// upperBound may be violated during: -// -// * Recording rule evaluation of histogram_quantile, especially when rate() -// has been applied to the underlying bucket timeseries. -// * Evaluation of histogram_quantile computed over federated bucket -// timeseries, especially when rate() has been applied. -// -// This is because scraped data is not made available to rule evaluation or -// federation atomically, so some buckets are computed with data from the -// most recent scrapes, but the other buckets are missing data from the most -// recent scrape. -// -// Monotonicity is usually guaranteed because if a bucket with upper bound -// u1 has count c1, then any bucket with a higher upper bound u > u1 must -// have counted all c1 observations and perhaps more, so that c >= c1. -// -// Randomly interspersed partial sampling breaks that guarantee, and rate() -// exacerbates it. Specifically, suppose bucket le=1000 has a count of 10 from -// 4 samples but the bucket with le=2000 has a count of 7 from 3 samples. The -// monotonicity is broken. It is exacerbated by rate() because under normal -// operation, cumulative counting of buckets will cause the bucket counts to -// diverge such that small differences from missing samples are not a problem. -// rate() removes this divergence.) -// -// bucketQuantile depends on that monotonicity to do a binary search for the -// bucket with the φ-quantile count, so breaking the monotonicity -// guarantee causes bucketQuantile() to return undefined (nonsense) results. -// -// As a somewhat hacky solution until ingestion is atomic per scrape, we -// calculate the "envelope" of the histogram buckets, essentially removing -// any decreases in the count between successive buckets. - -func ensureMonotonic(buckets buckets) { - max := buckets[0].count - for i := 1; i < len(buckets); i++ { - switch { - case buckets[i].count > max: - max = buckets[i].count - case buckets[i].count < max: - buckets[i].count = max - } - } -} - -// End of copied code. - -func readLines() []string { - r := bufio.NewReader(os.Stdin) - bytes := []byte{} - lines := []string{} - for { - line, isPrefix, err := r.ReadLine() - if err != nil { - break - } - bytes = append(bytes, line...) - if !isPrefix { - str := strings.TrimSpace(string(bytes)) - if len(str) > 0 { - lines = append(lines, str) - bytes = []byte{} - } - } - } - if len(bytes) > 0 { - lines = append(lines, string(bytes)) - } - return lines -} - -func main() { - lines := readLines() - for _, text := range lines { - // Example input - // "[1, 2, 4, 8, 16]", "[1, 5, 8, 10, 14]", 0.9" - // bounds - counts - quantile - parts := strings.Split(text, "\",") - - var bucketNumbers []float64 - // Strip the ends with square brackets - text = parts[0][2 : len(parts[0])-1] - // Parse the bucket bounds - for _, num := range strings.Split(text, ",") { - num = strings.TrimSpace(num) - number, err := strconv.ParseFloat(num, 64) - if err == nil { - bucketNumbers = append(bucketNumbers, number) - } - } - - var bucketCounts []float64 - // Strip the ends with square brackets - text = parts[1][2 : len(parts[1])-1] - // Parse the bucket counts - for _, num := range strings.Split(text, ",") { - num = strings.TrimSpace(num) - number, err := strconv.ParseFloat(num, 64) - if err == nil { - bucketCounts = append(bucketCounts, number) - } - } - - // Parse the quantile - q, err := strconv.ParseFloat(parts[2], 64) - var b buckets - - if err == nil { - for i := 0; i < len(bucketNumbers); i++ { - b = append(b, bucket{upperBound: bucketNumbers[i], count: bucketCounts[i]}) - } - } - fmt.Println(bucketQuantile(q, b)) - } -} diff --git a/demos/use_cases/ollama/docker-compose_honeycomb.yaml b/demos/use_cases/ollama/docker-compose_honeycomb.yaml deleted file mode 100644 index 9b44c0c2..00000000 --- a/demos/use_cases/ollama/docker-compose_honeycomb.yaml +++ /dev/null @@ -1,26 +0,0 @@ -services: - 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 environemtn as archgw - - CHAT_COMPLETION_ENDPOINT=http://host.docker.internal:10000/v1 - extra_hosts: - - "host.docker.internal:host-gateway" - volumes: - - ./config.yaml:/app/plano_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=${HONEYCOMB_API_KEY:?error} diff --git a/demos/use_cases/spotify_bearer_auth/run_demo.sh b/demos/use_cases/spotify_bearer_auth/run_demo.sh deleted file mode 100644 index 6623dee5..00000000 --- a/demos/use_cases/spotify_bearer_auth/run_demo.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -set -e - -# Function to start the demo -start_demo() { - # Step 1: Check if .env file exists - if [ -f ".env" ]; then - echo ".env file already exists. Skipping creation." - else - # Step 2: Create `.env` file and set OpenAI key - if [ -z "$OPENAI_API_KEY" ]; then - echo "Error: OPENAI_API_KEY environment variable is not set for the demo." - exit 1 - fi - - echo "Creating .env file..." - echo "OPENAI_API_KEY=$OPENAI_API_KEY" > .env - echo ".env file created with OPENAI_API_KEY." - fi - - # Step 3: Start Plano - echo "Starting Plano with config.yaml..." - planoai up config.yaml - - # Step 4: Start developer services - echo "Starting Network Agent using Docker Compose..." - docker compose up -d # Run in detached mode -} - -# Function to stop the demo -stop_demo() { - # Step 1: Stop Docker Compose services - echo "Stopping Network Agent using Docker Compose..." - docker compose down - - # Step 2: Stop Plano - echo "Stopping Plano..." - planoai down -} - -# Main script logic -if [ "$1" == "down" ]; then - stop_demo -else - # Default action is to bring the demo up - start_demo -fi