Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bettyblocks/tracy_web
https://github.com/bettyblocks/tracy_web
elixir tracing
Last synced: 27 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/bettyblocks/tracy_web
- Owner: bettyblocks
- Created: 2017-05-23T12:40:46.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-07-22T00:01:41.000Z (over 7 years ago)
- Last Synced: 2024-11-22T23:36:01.080Z (about 2 months ago)
- Topics: elixir, tracing
- Language: Elixir
- Size: 295 KB
- Stars: 0
- Watchers: 14
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Tracy [![Build Status](https://travis-ci.org/bettyblocks/tracy_web.svg?branch=master)](https://travis-ci.org/bettyblocks/tracy_web)
## `tracy_web` - web interface
Provides a web user interface for the Tracy function tracer.
The web UI is a separate phoenix app which runs as a separate node. It
serves a web interface (ReactJS powered) which allows you to configure
how to trace a request.### User interaction
* Create new tracer definition or select one from the list of
existing definitions
* Open tracer definition details
* Copy the trace definition key using the button
* Make a HTTP request with the trace request headerNow a new trace log opens which streams the results in real time. The
tracing stops when the traced process exists or the trace limit is
hit.## `tracy` - tracing library
The tracing library is a separate OTP app which runs on the node to be
traced, similar to Recon.The tracing is limited to function call tracing, for a specific
process. The actual tracing is done on the specific node where the
process runs.Traces are defined by their "definition". Each definition defines
which function calls are going to be traced, specified on the module
level. To start a trace, a process must know its trace "definition"
key, and call `Tracy.check_start_trace/1` using this key. This key can
be put in a HTTP request header, for instance. The `Tracy.Plug`
extension automatically starts tracing a request whenever the
`x-tracy-definition` request header is set to a valid definition key.On the node, the following information is collected for each function
that a traced process hits:* Module / function / arguments
* Return value
* Return location
* TimingNote that one process can be traced at a time per node. This is a
limitation of Erlang's tracing API. In practice, this is not a big deal.## Installation
To start your Phoenix server:
* Install dependencies with `mix deps.get`
* Start Phoenix endpoint with `mix phx.server`Now you can visit [`localhost:4100`](http://localhost:4100) from your browser.