Universal Profiling provides fleet-wide, whole-system, continuous profiling with zero instrumentation. Get a comprehensive understanding of what lines of code are consuming compute resources throughout your entire fleet by visualizing your data in Kibana using the flamegraph, stacktraces, and top functions views.
Universal Profiling is enabled by default on Elastic Cloud, and you can find it under Observability. To see data in Universal Profiling, you need to initialize it.
Initialize Universal Profiling by navigating to one of the views and clicking the Set up button. Clicking this will trigger some checks and install some packages so data can be processed.
The following are some of the actions and checks that occur during initialization:
- Check that the APM integration is installed and configured.
- Create Universal Profiling indices.
- Install the Collector integration.
- Install the Symbolizer integration.
The Collector is the component that receives data from the profiling agents deployed on users machines.
It runs a gRPC server over HTTPS and exposes an endpoint where the profiling agents can send data.
To send data, agents are required to use a token-based authentication, referred as secretToken
in the agent configurations.
The token is generated by Kibana during the setup process and at the moment cannot be configured by users.
The "Add Data" page will display instructions for several deployment methodologies. The instructions contain both the endpoint and the token that allow profiling agent to connect to the Collector.
The Symbolizer is the component processing debug symbols for the received profiles data, enriching with source-code metadata the profiling visualizations.
It processes both publicly-available debug symbols and "private" debug symbols.
For public symbols, users don't have to do anything: the symbolizer asynchronously intercepts unsymbolized frames and populates them automatically.
For private symbols, an HTTPS endpoint is provided to users for uploading the debug symbols of the software they own.
The authentication and authorization on this endpoint are provided as part of the request, in form of an Elasticsearch API key.
node scripts/jest --config x-pack/plugins/observability_solution/profiling/jest.config.js [--watchAll]
The E2E tests are located in x-pack/plugins/observability_solution/profiling/e2e
.
Universal Profiling uses FTR (functional test runner) and Cypress to run the e2e tests. The tests are located at kibana/x-pack/plugins/observability_solution/profiling/e2e/cypress/e2e
.
node x-pack/plugins/observability_solution/profiling/scripts/test/e2e --server
node x-pack/plugins/observability_solution/profiling/scripts/test/e2e --open
node x-pack/plugins/observability_solution/profiling/scripts/test/e2e --runner
node x-pack/plugins/observability_solution/profiling/scripts/test/e2e