Skip to content

Latest commit

 

History

History
79 lines (51 loc) · 3.41 KB

File metadata and controls

79 lines (51 loc) · 3.41 KB

Universal Profiling (Beta)

Overview

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 setup

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

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.

Collector 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.

Symbolizer integration

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.

Testing (unit, e2e)

Unit Tests (Jest)

node scripts/jest --config x-pack/plugins/observability_solution/profiling/jest.config.js [--watchAll]

E2E Tests (Cypress)

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.

Start test server

node x-pack/plugins/observability_solution/profiling/scripts/test/e2e --server

Open cypress dashboard

node x-pack/plugins/observability_solution/profiling/scripts/test/e2e --open

Run tests in terminal

node x-pack/plugins/observability_solution/profiling/scripts/test/e2e --runner

Run like CI

node x-pack/plugins/observability_solution/profiling/scripts/test/e2e

Other resources