Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: add just otel-ui to view traces through browser #2076

Merged
merged 3 commits into from
Jul 15, 2024
Merged

Conversation

deniseli
Copy link
Contributor

@deniseli deniseli commented Jul 15, 2024

Part 2 of #2020

This PR adds just otel-ui, which wraps the otel collector so you can view signals generated in ftl dev through a webapp without separately needing to start the collector.

Unfortunately, the latest version of otel-desktop-viewer that we can install only supports traces, not metrics or logs. The latest version on their github repo does have metrics/logs support, but can't be installed without cloning the whole repo and building from source code. Instead of doing that, I filed this issue: CtrlSpice/otel-desktop-viewer#146

For now, when we're only debugging/developing traces, we can use this desktop viewer, which is quite nice. When working with metrics/logs, we'll still need to use the collector itself: just otel-stream. After the upgrade is complete for otel-desktop-viewer, we hopefully won't need the otel-stream command anymore.

Its terminal output looks like this:

$ just otel-ui
Installing otel-desktop-viewer...
otel-desktop-viewer --grpc 4317
2024-07-15T14:05:07.769-0400	info	service/telemetry.go:113	Setting up own telemetry...
2024-07-15T14:05:07.769-0400	info	service/telemetry.go:136	Serving Prometheus metrics	{"address": ":8888", "level": "Basic"}
2024-07-15T14:05:07.769-0400	info	[email protected]/exporter.go:286	Development component. May change in the future.	{"kind": "exporter", "data_type": "traces", "name": "desktop"}
2024-07-15T14:05:07.769-0400	info	[email protected]/exporter.go:286	Development component. May change in the future.	{"kind": "exporter", "data_type": "logs", "name": "desktop"}
2024-07-15T14:05:07.769-0400	info	[email protected]/exporter.go:286	Development component. May change in the future.	{"kind": "exporter", "data_type": "metrics", "name": "desktop"}
2024-07-15T14:05:07.769-0400	info	service/service.go:141	Starting otel-desktop-viewer...	{"Version": "0.1.1", "NumCPU": 12}
2024-07-15T14:05:07.769-0400	info	extensions/extensions.go:41	Starting extensions...
2024-07-15T14:05:07.769-0400	info	[email protected]/otlp.go:94	Starting GRPC server	{"kind": "receiver", "name": "otlp", "data_type": "logs", "endpoint": "localhost:4317"}
2024-07-15T14:05:07.771-0400	info	[email protected]/otlp.go:112	Starting HTTP server	{"kind": "receiver", "name": "otlp", "data_type": "logs", "endpoint": "localhost:4318"}
2024-07-15T14:05:07.771-0400	info	service/service.go:158	Everything is ready. Begin running and processing data.
^C2024-07-15T14:06:40.238-0400	info	otelcol/collector.go:238	Received signal from OS	{"signal": "interrupt"}
2024-07-15T14:06:40.238-0400	info	service/service.go:167	Starting shutdown...
2024-07-15T14:06:40.238-0400	info	extensions/extensions.go:55	Stopping extensions...
2024-07-15T14:06:40.238-0400	info	service/service.go:181	Shutdown complete.

Screenshot of traces after starting ftl dev and calling echo.echo via the console:

Screenshot 2024-07-15 at 2 06 31 PM

For posterity, an alternative to using the desktop viewer is the following command to start a terminal ui. However, that doesn't include nearly as much viewable data as the desktop alternative.

otel-cli server tui --verbose --protocol grpc --endpoint http://localhost:4317

just changes

revert cient
@ftl-robot ftl-robot mentioned this pull request Jul 15, 2024
@deniseli deniseli marked this pull request as ready for review July 15, 2024 18:27
@deniseli deniseli requested a review from alecthomas as a code owner July 15, 2024 18:27
@deniseli deniseli requested review from a team, worstell and wesbillman and removed request for a team July 15, 2024 18:27
Justfile Outdated
@@ -175,11 +175,32 @@ debug *args:
dlv_pid=$!
wait "$dlv_pid"

# grpcPort is used for observing the system via otel.
# otel is short for OpenTelemetry.
grpcPort := `cat docker-compose.yml | grep "OTLP gRPC" | sed 's/:.*//' | sed -r 's/ +- //'`
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this is a top-level var, maybe we should name it otelGrpcPort? Then, you might be able to remove this comment grpcPort is used for observing the system via otel

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah great call!

@deniseli deniseli merged commit 6d72743 into main Jul 15, 2024
55 checks passed
@deniseli deniseli deleted the dli/tui branch July 15, 2024 21:11
@worstell worstell added the approved Marks an already closed PR as approved label Jul 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Marks an already closed PR as approved
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants