# Vespa client
This app contains the **Query Builder** and the **Trace Visualizer**.
Install and start:
$ nvm install --lts node # in case the installed node.js is too old
$ yarn install
$ yarn dev # then open link, like http://127.0.0.1:3000/
Alternatively, use Docker to start it without installing node:
$ docker run -v `pwd`:/w -w /w --publish 3000:3000 node:16 sh -c 'yarn install && yarn dev --host'
When started, open [http://127.0.0.1:3000/](http://127.0.0.1:3000/).
_Troubleshooting:_ Remove the generated `node_modules` directory and try again.
This is also relevant when switching between running local and in the container.
## Query Builder
The Query Builder is a tool for creating Vespa queries to send to a local Vespa application.
The tool provides all of the options for query parameters from dropdowns.
The input fields provide hints to what is the expected type of value.
![Query Builder](img/querybuilder.png)
To access a Vespa endpoint from the Query Builder,
deploy with [CORS filters](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS).
To the query-serving container, add an `http` element in _services.xml_ like:
```
*http://*/search/*http://*/search/
```
Deploy again, and (possibly) restart Vespa (internal port changes can be triggered by this).
## Trace Visualizer
The Trace Visualizer is a tool for converting and visualizing traces from Vespa in a flame graph.
To use the visualizer, a [Jaeger](https://www.jaegertracing.io/) instance must be run locally with Docker:
docker run -d --rm \
-p 16685:16685 \
-p 16686:16686 \
-p 16687:16687 \
-e SPAN_STORAGE_TYPE=memory \
jaegertracing/jaeger-query:latest
The Jaeger UI can then be reached at **localhost:16686/search**
To use the visualizer,
paste the Vespa trace into the text box
and press the button to convert the trace to a format supported by Jaeger and download it.
Only traces using _trace.timestamps=true_ **and** _traceLevel_ between 3 and 5 (inclusive) will work correctly -
see [query tracing](https://docs.vespa.ai/en/query-api.html#query-tracing):
![Trace Converter](img/TraceConverter.png)
After downloading the converted trace, it can be used with the Jaeger UI.
Press the _JSON File_ button as shown in the image, and drag and drop the trace you just downloaded:
![Jaeger Image](img/JaegerExample.png)
Then click on the newly added trace and see it displayed as a flame graph:
![Example Image](img/result.png)