[7.x] [APM] docs: restructure APM documentation for 7.7 (#63280) (#63607)

This commit is contained in:
Brandon Morelli 2020-04-15 12:40:15 -07:00 committed by GitHub
parent cfdcec8896
commit 9af6bd536b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 377 additions and 252 deletions

View file

@ -1,14 +1,11 @@
[role="xpack"]
[[advanced-queries]]
=== Advanced queries
=== Query your data
When querying in the APM app, you're simply searching and selecting data from fields in Elasticsearch documents.
Queries entered into the query bar are also added as parameters to the URL,
so it's easy to share a specific query or view with others.
You can begin to see some of the transaction fields available for filtering:
[role="screenshot"]
image::apm/images/apm-query-bar.png[Example of the Kibana Query bar in APM app in Kibana]
Querying your APM data is a powerful tool that can make finding bottlenecks in your code even easier.
Imagine you have a user that complains about a slow response time in a specific service.
With the query bar, you can easily filter the APM app to only display trace data for that user,
or, to only show transactions that are slower than a specified time threshold.
[float]
==== Example APM app queries
@ -17,15 +14,24 @@ image::apm/images/apm-query-bar.png[Example of the Kibana Query bar in APM app i
* Filter by response status code: `context.response.status_code >= 400`
* Filter by single user ID: `context.user.id : 12`
When querying in the APM app, you're merely searching and selecting data from fields in Elasticsearch documents.
Queries entered into the query bar are also added as parameters to the URL,
so it's easy to share a specific query or view with others.
When you type, you can begin to see some of the transaction fields available for filtering:
[role="screenshot"]
image::apm/images/apm-query-bar.png[Example of the Kibana Query bar in APM app in Kibana]
TIP: Read the {kibana-ref}/kuery-query.html[Kibana Query Language Enhancements] documentation to learn more about the capabilities of the {kib} query language.
[float]
[[discover-advanced-queries]]
=== Querying in Discover
It may also be helpful to view your APM data in {kibana-ref}/discover.html[*Discover*].
Alternatively, you can query your APM documents in {kibana-ref}/discover.html[*Discover*].
Querying documents in *Discover* works the same way as querying in the APM app,
and all of the example APM app queries can also be used in *Discover*.
and *Discover* supports all of the example APM app queries shown on this page.
[float]
==== Example Discover query
@ -33,7 +39,7 @@ and all of the example APM app queries can also be used in *Discover*.
One example where you may want to make use of *Discover*,
is for viewing _all_ transactions for an endpoint, instead of just a sample.
TIP: Starting in v7.6, you can view 10 samples per bucket in the APM app, instead of just one.
TIP: Starting in v7.6, you can view ten samples per bucket in the APM app, instead of just one.
Use the APM app to find a transaction name and time bucket that you're interested in learning more about.
Then, switch to *Discover* and make a search:

View file

@ -1,12 +1,16 @@
[role="xpack"]
[[agent-configuration]]
=== APM Agent configuration
=== APM Agent central configuration
APM Agent configuration allows you to fine-tune your agent configuration directly in Kibana.
Best of all, changes are automatically propagated to your APM agents so there's no need to redeploy.
++++
<titleabbrev>Configure APM agents with central config</titleabbrev>
++++
To get started, simply choose the services and environments you wish to configure.
The APM app will let you know when your configurations have been applied by your agents.
APM Agent configuration allows you to fine-tune your agent configuration from within the APM app.
Changes are automatically propagated to your APM agents, so there's no need to redeploy.
To get started, choose the services and environments you wish to configure.
The APM app will let you know when your agents have applied your configurations.
[role="screenshot"]
image::apm/images/apm-agent-configuration.png[APM Agent configuration in Kibana]
@ -14,29 +18,28 @@ image::apm/images/apm-agent-configuration.png[APM Agent configuration in Kibana]
[float]
==== Precedence
Configurations set with APM Agent configuration take precedence over configurations set locally in the Agent.
Configurations set from the APM app take precedence over configurations set locally in each Agent.
However, if APM Server is slow to respond, is offline, reports an error, etc.,
APM agents will use local defaults until they're able to update the configuration.
For this reason, it is still important to set custom default configurations locally in each of your agents.
For this reason, it is still essential to set custom default configurations locally in each of your agents.
[float]
==== APM Server setup
This feature requires https://www.elastic.co/guide/en/apm/server/master/setup-kibana-endpoint.html[Kibana endpoint configuration] in APM Server.
Why is additional configuration needed in APM Server?
That's because APM Server acts as a proxy between the agents and Kibana.
APM Server acts as a proxy between the agents and Kibana.
Kibana communicates any changed settings to APM Server so that your agents only need to poll APM Server to determine which settings have changed.
[float]
==== Supported configurations
Each Agent has its own list of supported configurations.
Each Agent has a list of supported configurations.
After selecting a Service name and environment in the APM app,
a list of all available configuration options,
a list of all supported configuration options,
including descriptions and default values, will be displayed.
Supported configurations are also marked in each Agent's configuration documentation:
Supported configurations are also tagged with the image:./images/dynamic-config.svg[] badge in each Agent's configuration reference:
[horizontal]
Go Agent:: {apm-go-ref}/configuration.html[Configuration reference]

View file

@ -1,6 +1,10 @@
[role="xpack"]
[[apm-api]]
== API
== APM app API
++++
<titleabbrev>REST API</titleabbrev>
++++
Some APM app features are provided via a REST API:

View file

@ -1,12 +1,16 @@
[role="xpack"]
[[apm-alerts]]
=== Create an alert
=== Alerts
++++
<titleabbrev>Create an alert</titleabbrev>
++++
beta::[]
The APM app is integrated with Kibana's {kibana-ref}/alerting-getting-started.html[alerting and actions] feature.
It provides a set of built-in **actions** and APM specific threshold **alerts** for you to use,
and allows all alerts to be centrally managed from <<management,Kibana Management>>.
The APM app integrates with Kibana's {kibana-ref}/alerting-getting-started.html[alerting and actions] feature.
It provides a set of built-in **actions** and APM specific threshold **alerts** for you to use
and enables central management of all alerts from <<management,Kibana Management>>.
[role="screenshot"]
image::apm/images/apm-alert.png[Create an alert in the APM app]
@ -28,9 +32,9 @@ This guide creates an alert for the `opbeans-java` service based on the followin
From the APM app, navigate to the `opbeans-java` service and select
**Alerts** > **Create threshold alert** > **Transaction duration**.
The name of your alert will automatically be set as `Transaction duration | opbeans-java`,
and the alert will be tagged with `apm` and `service.name:opbeans-java`.
Feel free to edit either of these defaults.
`Transaction duration | opbeans-java` is automatically set as the name of the alert,
and `apm` and `service.name:opbeans-java` are added as tags.
It's fine to change the name of the alert, but do not edit the tags.
Based on the alert criteria, define the following alert details:
@ -42,7 +46,7 @@ Based on the alert criteria, define the following alert details:
* **FOR THE LAST** - `5 minutes`
Select an action type.
Multiple action types can be selected, but in this example we want to post to a slack channel.
Multiple action types can be selected, but in this example, we want to post to a Slack channel.
Select **Slack** > **Create a connector**.
Enter a name for the connector,
and paste the webhook URL.
@ -63,9 +67,9 @@ This guide creates an alert for the `opbeans-python` service based on the follow
From the APM app, navigate to the `opbeans-python` service and select
**Alerts** > **Create threshold alert** > **Error rate**.
The name of your alert will automatically be set as `Error rate | opbeans-python`,
and the alert will be tagged with `apm` and `service.name:opbeans-python`.
Feel free to edit either of these defaults.
`Error rate | opbeans-python` is automatically set as the name of the alert,
and `apm` and `service.name:opbeans-python` are added as tags.
It's fine to change the name of the alert, but do not edit the tags.
Based on the alert criteria, define the following alert details:
@ -93,5 +97,5 @@ From this page, you can create, edit, disable, mute, and delete alerts, and crea
See {kibana-ref}/alerting-getting-started.html[alerting and actions] for more information.
NOTE: If you are using an **on-premise** Elastic Stack deployment with security,
TLS must be configured for communication between Elasticsearch and Kibana.
communication between Elasticsearch and Kibana must have TLS configured.
More information is in the alerting {kibana-ref}/alerting-getting-started.html#alerting-setup-prerequisites[prerequisites].

View file

@ -1,25 +0,0 @@
[role="xpack"]
[[apm-bottlenecks]]
== Visualizing Application Bottlenecks
Elastic APM captures different types of information from within instrumented applications:
* {apm-overview-ref-70}/transaction-spans.html[*Spans*] contain information about a specific code path that has been executed.
They measure from the start to end of an activity,
and they can have a parent/child relationship with other spans.
* {apm-overview-ref-70}/transactions.html[*Transactions*] are a special kind of span that have extra metadata associated with them.
You can think of transactions as the highest level of work youre measuring within a service.
As an example, a transaction could be a request to your server, a batch job, or a custom transaction type.
* {apm-overview-ref-70}/errors.html[*Errors*] contain information about the original exception that occurred or about a log created when the exception occurred.
Each of these information types have a specific page associated with them in the APM app.
These various pages display the captured data in curated charts and tables that allow you to easily compare and debug your applications.
For example, you can see information about response times, requests per minute, and status codes per endpoint.
You can even dive into a specific request sample and get a complete waterfall view of what your application is spending its time on.
You might see that your bottlenecks are in database queries, cache calls, or external requests.
For each incoming request and each application error,
you can also see contextual information such as the request header, user information,
system values, or custom data that you manually attached to the request.
Having access to application-level insights with just a few clicks can drastically decrease the time you spend debugging errors, slow response times, and crashes.

View file

@ -1,6 +1,11 @@
[role="xpack"]
[[custom-links]]
=== Custom links
++++
<titleabbrev>Create custom links</titleabbrev>
++++
Elastic's custom link feature allows you to easily create up to 500 dynamic links
based on your specific APM data.
Custom links can be filtered to only appear in the APM app for relevant services,
@ -12,7 +17,7 @@ Ready to dive in? Jump straight to the <<custom-links-examples,examples>>.
[[custom-links-create]]
=== Create a link
Each custom link consists of a label, url, and optional filter.
Each custom link consists of a label, URL, and optional filter.
The easiest way to create a custom link is from within the actions dropdown in the transaction detail page.
This method will automatically apply filters, scoping the link to that specific service,
environment, transaction type, and transaction name.
@ -25,8 +30,7 @@ and selecting **Create custom link**.
==== Label
The name of your custom link.
This text will be shown in the actions context menu,
so keep it as short as possible.
The actions context menu displays this text, so keep it as short as possible.
TIP: Custom links are displayed alphabetically in the actions menu.
@ -39,8 +43,8 @@ URLs support dynamic field name variables, encapsulated in double curly brackets
These variables will be replaced with transaction metadata when the link is clicked.
Because everyone's data is different,
you'll need to examine your own traces to see what metadata is available for use.
The easiest way to do this is to select a trace in the APM app, and click **Metadata** in the **Trace Sample** table.
you'll need to examine your traces to see what metadata is available for use.
To do this, select a trace in the APM app, and click **Metadata** in the **Trace Sample** table.
[role="screenshot"]
image::apm/images/example-metadata.png[Example metadata]
@ -49,7 +53,7 @@ image::apm/images/example-metadata.png[Example metadata]
[[custom-links-filters]]
==== Filters
Filter each link to only appear so it only appears for specific services or transactions.
Filter each link to only appear for specific services or transactions.
You can filter on the following fields:
* `service.name`
@ -57,7 +61,7 @@ You can filter on the following fields:
* `transaction.type`
* `transaction.name`
Multiple values are allowed when comma separated.
Multiple values are allowed when comma-separated.
[float]
[[custom-links-examples]]
@ -68,7 +72,7 @@ Multiple values are allowed when comma separated.
:github-query-params: https://help.github.com/en/github/managing-your-work-on-github/about-automation-for-issues-and-pull-requests-with-query-parameters
Not sure where to start with custom links?
Take a look at the examples below, and customize them to your liking!
Take a look at the examples below and customize them to your liking!
[float]
[[custom-links-examples-email]]

View file

@ -0,0 +1,17 @@
[role="xpack"]
[[transactions-annotations]]
=== Track deployments with annotations
++++
<titleabbrev>Track deployments</titleabbrev>
++++
For enhanced visibility into your deployments, we offer deployment annotations on all transaction charts.
This feature automatically tags new deployments, so you can easily see if your deploy has increased response times
for an end-user, or if the memory/CPU footprint of your application has changed.
Being able to identify bad deployments quickly enables you to rollback and fix issues without causing costly outages.
Deployment annotations are automatically enabled, and appear when the `service.version` of your app changes.
[role="screenshot"]
image::apm/images/apm-transaction-annotation.png[Example view of transactions annotation in the APM app in Kibana]

View file

@ -0,0 +1,18 @@
[role="xpack"]
[[errors-alerts-with-watcher]]
=== Error reports with Watcher
++++
<titleabbrev>Enable error reports</titleabbrev>
++++
You can use the power of the alerting features with Watcher to get reports on error occurrences.
The Watcher assistant, which is available on the errors overview, can help you set up a watch per service.
Configure the watch with an occurrences threshold, time interval, and the desired actions, such as email or Slack notifications.
With Watcher, your team can set up reports within minutes.
Watches are managed separately in the dedicated Watcher UI available in Advanced Settings.
[role="screenshot"]
image::apm/images/apm-errors-watcher-assistant.png[Example view of the Watcher assistant for errors in APM app in Kibana]

View file

@ -1,7 +1,8 @@
[role="xpack"]
[[errors]]
=== Errors overview
TIP: {apm-overview-ref-70}/errors.html[Errors] are defined as groups of exceptions with matching exception or log messages.
TIP: {apm-overview-ref-v}/errors.html[Errors] are groups of exceptions with a similar exception or log message.
The *Errors* overview provides a high-level view of the error message and culprit,
the number of occurrences, and the most recent occurrence.
@ -20,7 +21,7 @@ image::apm/images/apm-error-group.png[Example view of the error group page in th
Here, you'll see the error message, culprit, and the number of occurrences over time.
Further down, you'll see the Error occurrence table.
This is where you can see the details of a sampled error within this group.
This table shows the details of a sampled error within this group.
The error shown is always the most recent to occur.
Each error occurrence features a breakdown of the exception, including the stack trace from when the error occurred,
@ -28,19 +29,4 @@ and additional contextual information to help debug the issue.
In some cases, you might also see a Transaction sample ID.
This feature allows you to make a connection between the errors and transactions,
by linking you to the specific transaction where the error occurred.
This allows you to see the whole trace, including which services the request went through.
[float]
[[errors-alerts-with-watcher]]
==== Error reports with Watcher
You can use the power of the alerting features with Watcher to get reports on error occurrences.
The Watcher assistant, which is available on the errors overview, can help you set up a watch per service.
Configure the watch with an occurrences threshold, time interval, and the desired actions, such as email or Slack notifications.
With Watcher, your team can set up reports within minutes.
Watches are managed separately in the dedicated Watcher UI available in Advanced Settings.
[role="screenshot"]
image::apm/images/apm-errors-watcher-assistant.png[Example view of the Watcher assistant for errors in APM app in Kibana]
This allows you to see the whole trace, including which services the request went through.

View file

@ -1,6 +1,11 @@
[role="xpack"]
[[filters]]
=== Filters
++++
<titleabbrev>Filter data</titleabbrev>
++++
APM provides two different ways you can filter your data within the APM App:
* <<global-filters>>
@ -42,7 +47,7 @@ It allows you to view only relevant data, and is especially useful for separatin
By default, all environments are displayed. If there are no environment options, you'll see "not defined".
Service environments are defined when configuring your APM agents.
It's very important to be consistent when naming environments in your agents.
It's vital to be consistent when naming environments in your agents.
See the documentation for each agent you're using to learn how to configure service environments:
* *Go:* {apm-go-ref}/configuration.html#config-environment[`ELASTIC_APM_ENVIRONMENT`]
@ -62,9 +67,9 @@ but only where they are applicable -- they are typically most useful in their or
As an example, if you select a host on the Services overview, then select a transaction group,
the host filter will still be applied.
These filters are very useful for quickly and easily removing noise from your data.
These filters are very useful for quickly and easily removing noise from your data.
With just a click, you can filter your transactions by the transaction result,
host, container ID, and more.
host, container ID, and more.
[role="screenshot"]
image::apm/images/local-filter.png[Local filters available in the APM app in Kibana]

View file

@ -1,22 +1,45 @@
[role="xpack"]
[[apm-getting-started]]
== Getting Started
== Get started with the APM app
If you have not already installed and configured Elastic APM,
the *Setup Instructions* will get you started.
++++
<titleabbrev>Get started</titleabbrev>
++++
[role="screenshot"]
image::apm/images/apm-setup.png[Installation instructions on the APM page in Kibana]
Elastic APM captures different types of information from within instrumented applications:
* *Spans* contain information about the execution of a specific code path.
They measure from the start to end of an activity,
and they can have a parent/child relationship with other spans.
* *Transactions* are a special kind of span;
they are the first span for a particular service and have extra metadata associated with them.
As an example, a transaction could be a request to your server, a batch job, or a custom transaction type.
*Traces* link together related transactions to show an end-to-end performance of how a request was served and which services were part of it.
* *Errors* contain information about the original exception that occurred or about a log created when the exception occurred.
Index patterns tell Kibana which Elasticsearch indices you want to explore.
An APM index pattern is necessary for certain features in the APM app, like the query bar.
To set up the correct index pattern,
simply click *Load Kibana objects* at the bottom of the Setup Instructions.
Curated charts and tables display the different types of APM data, which allows you to compare and debug your applications easily.
After you install an Elastic APM agent library in your application,
the application automatically appears in the APM app in {kib}.
No further configuration is required.
* <<services>>
* <<traces>>
* <<transactions>>
* <<spans>>
* <<errors>>
* <<metrics>>
* <<service-maps>>
[role="screenshot"]
image::apm/images/apm-index-pattern.png[Setup index pattern for APM in Kibana]
TIP: Want to learn more about the Elastic APM ecosystem?
See the {apm-overview-ref-v}/overview.html[APM Overview].
include::services.asciidoc[]
include::traces.asciidoc[]
include::transactions.asciidoc[]
include::spans.asciidoc[]
include::errors.asciidoc[]
include::metrics.asciidoc[]
include::service-maps.asciidoc[]

View file

@ -0,0 +1,32 @@
[role="xpack"]
[[apm-how-to]]
== How-to guides
Learn how to perform common APM app tasks.
* <<agent-configuration>>
* <<apm-alerts>>
* <<custom-links>>
* <<errors-alerts-with-watcher>>
* <<filters>>
* <<machine-learning-integration>>
* <<advanced-queries>>
* <<transactions-annotations>>
include::agent-configuration.asciidoc[]
include::apm-alerts.asciidoc[]
include::custom-links.asciidoc[]
include::error-reports-watcher.asciidoc[]
include::filters.asciidoc[]
include::machine-learning.asciidoc[]
include::advanced-queries.asciidoc[]
include::deployment-annotations.asciidoc[]

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="59" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="59" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#9f9f9f" d="M0 0h0v20H0z"/><path fill="#9f9f9f" d="M0 0h59v20H0z"/><path fill="url(#b)" d="M0 0h59v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> <text x="295" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="490">Dynamic</text><text x="295" y="140" transform="scale(.1)" textLength="490">Dynamic</text></g> </svg>

After

Width:  |  Height:  |  Size: 775 B

View file

@ -1,7 +1,8 @@
// APM Server does not build a `7.x` branch.
// This check changes `7.x` links to `master` instaed
// APM Overview and Server do not build a `7.x` branch.
// This check changes `7.x` links to `master` instead
ifeval::[{branch} == 7.x]
:apm-server-ref: https://www.elastic.co/guide/en/apm/server/master
:apm-overview-ref-v: https://www.elastic.co/guide/en/apm/get-started/master
endif::[]
[role="xpack"]
@ -10,25 +11,35 @@ endif::[]
[partintro]
--
Elastic Application Performance Monitoring (APM) automatically collects in-depth
performance metrics and errors from inside your applications.
The APM app in {kib} is provided with the basic license.
It allows you to monitor your software services and applications in real-time;
visualize detailed performance information on your services,
identify and analyze errors,
and monitor host-level and agent-specific metrics like JVM and Go runtime metrics.
The **APM** app in {kib} is provided with the basic license. It
enables developers to drill down into the performance data for their applications
and quickly locate the performance bottlenecks.
[float]
[[apm-bottlenecks]]
== Visualizing application bottlenecks
* <<apm-getting-started>>
* <<apm-bottlenecks>>
* <<apm-ui>>
Having access to application-level insights with just a few clicks can drastically decrease the time you spend
debugging errors, slow response times, and crashes.
NOTE: For more information about the components of Elastic APM,
see the {apm-overview-ref-70}/overview.html[APM Overview].
For example, you can see information about response times, requests per minute, and status codes per endpoint.
You can even dive into a specific request sample and get a complete waterfall view of what your application is spending its time on.
You might see that your bottlenecks are in database queries, cache calls, or external requests.
For each incoming request and each application error,
you can also see contextual information such as the request header, user information,
system values, or custom data that you manually attached to the request.
--
include::set-up.asciidoc[]
include::getting-started.asciidoc[]
include::bottlenecks.asciidoc[]
include::how-to-guides.asciidoc[]
include::using-the-apm-ui.asciidoc[]
include::settings.asciidoc[]
include::api.asciidoc[]
include::troubleshooting.asciidoc[]

View file

@ -0,0 +1,27 @@
[role="xpack"]
[[machine-learning-integration]]
=== Machine Learning integration
++++
<titleabbrev>Integrate with machine learning</titleabbrev>
++++
The Machine Learning integration will initiate a new job predefined to calculate anomaly scores on transaction response times.
The response time graph will show the expected bounds and add an annotation when the anomaly score is 75 or above.
Jobs can be created per transaction type, and based on the average response time.
Manage jobs in the *Machine Learning jobs management*.
[role="screenshot"]
image::apm/images/apm-ml-integration.png[Example view of anomaly scores on response times in APM app in Kibana]
[float]
[[create-ml-integration]]
=== Create a new machine learning job
To enable machine learning anomaly detection, first choose a service to monitor.
Then, select **Integrations** > **Enable ML anomaly detection** and click **Create job**.
That's it! After a few minutes, the job will begin calculating results;
it might take additional time for results to appear on your graph.
APM specific anomaly detection wizards are also available for certain Agents.
See the machine learning {ml-docs}/ootb-ml-jobs-apm.html[APM anomaly detection configurations] for more information.

View file

@ -1,3 +1,4 @@
[role="xpack"]
[[metrics]]
=== Metrics overview
@ -5,7 +6,7 @@ The *Metrics* overview provides agent-specific metrics,
which lets you perform more in-depth root cause analysis investigations within the APM app.
If you're experiencing a problem with your service, you can use this page to attempt to find the underlying cause.
For example, you might be able to correlate a high number of errors with a long transaction duration, high CPU usage, or a memory leak.
For example, you might be able to correlate a high number of errors with a long transaction duration, high CPU usage, or a memory leak.
[role="screenshot"]
image::apm/images/apm-metrics.png[Example view of the Metrics overview in APM app in Kibana]
@ -17,19 +18,3 @@ thread count, garbage collection rate, and garbage collection time spent per min
[role="screenshot"]
image::apm/images/jvm-metrics.png[Example view of the Metrics overview for the Java Agent]
[[machine-learning-integration]]
=== Machine Learning integration
The Machine Learning integration will initiate a new job predefined to calculate anomaly scores on transaction response times.
The response time graph will show the expected bounds and annotate the graph when the anomaly score is 75 or above.
[role="screenshot"]
image::apm/images/apm-ml-integration.png[Example view of anomaly scores on response times in APM app in Kibana]
Jobs can be created per transaction type and based on the average response time.
You can manage jobs in the *Machine Learning jobs management*.
It might take some time for results to appear on the graph.
Machine learning is a platinum feature. For a comparison of the Elastic license levels,
see https://www.elastic.co/subscriptions[the subscription page].

View file

@ -1,37 +1,53 @@
[role="xpack"]
[[service-maps]]
=== Service maps
beta::[]
A service map is a real-time diagram of the interactions occurring in your applications architecture.
It allows you to easily visualize data flow and high-level statistics, like average transaction duration,
requests per minute, errors per minute, and metrics, allowing you to quickly assess the status of your services.
WARNING: Service map support for Internet Explorer 11 is extremely limited.
Please use Chrome or Firefox if available.
Our beta offering creates two types of service maps:
A service map is a real-time visual representation of the instrumented services in your application's architecture.
It shows you how these services are connected, along with high-level metrics like average transaction duration,
requests per minute, and errors per minute, that allow you to quickly assess the status of your services.
* Global: All services and connections are shown.
* Service-specific: Selecting a specific service will highlight it's connections.
We currently surface two types of service maps:
* Global: All services instrumented with APM agents and the connections between them are shown.
* Service-specific: Highlight connections for a selected service.
[role="screenshot"]
image::apm/images/service-maps.png[Example view of service maps in the APM app in Kibana]
[float]
[[service-maps-how]]
=== How do service maps work?
Service maps rely on distributed traces to draw connections between services.
As {apm-overview-ref-v}/distributed-tracing.html[distributed tracing] is enabled out-of-the-box for supported technologies, so are service maps.
However, if a service isn't instrumented,
or a `traceparent` header isn't being propagated to it,
distributed tracing will not work, and the connection will not be drawn on the map.
[float]
[[visualize-your-architecture]]
=== Visualize your architecture
Select the **Service Map** tab to get started.
By default, all services and connections are shown.
Whether your onboarding a new engineer, or just trying to grasp the big picture,
By default, all instrumented services and connections are shown.
Whether you're onboarding a new engineer, or just trying to grasp the big picture,
click around, zoom in and out, and begin to visualize how your services are connected.
If there's a specific service that interests you, select that service to highlight its connections.
Clicking **Focus map** will refocus the map on that specific service and lock the connection highlighting.
From here, select **Service Details**, or click on the **Transaction** tab to jump to the Transaction overview.
From here, select **Service Details**, or click on the **Transaction** tab to jump to the Transaction overview
for the selected service.
You can also use the tabs at the top of the page to easily jump to the **Errors** or **Metrics** overview.
While it's not possible to query in service maps, it is possible to filter by environment.
Filter out your maps by picking the environment from the environment drop-down filter.
This can be useful if you have two or more services, in separate environments, but with the same name.
Use the environment drop down to only see the data you're interested in, like `dev` or `production`.
Use the environment drop-down to only see the data you're interested in, like `dev` or `production`.
Additional filters are not currently available for service maps.
[role="screenshot"]
image::apm/images/service-maps-java.png[Example view of service maps with Java highlighted in the APM app in Kibana]
@ -46,3 +62,18 @@ Nodes appear on the map in one of two shapes:
* **Diamond**: Databases, external, and messaging. Interior icons represent the generic type,
with specific icons for known entities, like Elasticsearch.
Type and subtype are based on `span.type`, and `span.subtype`.
[float]
[[service-maps-supported]]
=== Supported APM Agents
Service maps are supported for the following Agent versions:
[horizontal]
Go Agent:: >= v1.7.0
Java Agent:: >= v1.13.0
.NET Agent:: >= v1.3.0
Node.js Agent:: >= v3.6.0
Python Agent:: >= v5.5.0
Ruby Agent:: >= v3.6.0
Real User Monitoring (RUM) Agent:: >= v4.7.0

View file

@ -1,9 +1,9 @@
[role="xpack"]
[[services]]
=== Services overview
The *Services* overview gives you quick insights into the health and general performance of each service.
You can add services by setting the `service.name` configuration in each of the {apm-agents-ref}[APM agents] youre instrumenting.
The *Services* overview gives you quick insights into the health and general performance of all of your instrumented services.
Services are sorted by the `service.name` configured in each of the {apm-agents-ref}[APM agents] youve installed.
[role="screenshot"]
image::apm/images/apm-services-overview.png[Example view of services table the APM app in Kibana]

35
docs/apm/set-up.asciidoc Normal file
View file

@ -0,0 +1,35 @@
[role="xpack"]
[[apm-ui]]
== Set up the APM app
++++
<titleabbrev>Set up</titleabbrev>
++++
APM is available via the navigation sidebar in {Kib}.
If you have not already installed and configured Elastic APM,
the *Setup Instructions* in Kibana will get you started.
[role="screenshot"]
image::apm/images/apm-setup.png[Installation instructions on the APM page in Kibana]
[float]
[[apm-configure-index-pattern]]
=== Load the index pattern
Index patterns tell Kibana which Elasticsearch indices you want to explore.
An APM index pattern is necessary for certain features in the APM app, like the query bar.
To set up the correct index pattern,
simply click *Load Kibana objects* at the bottom of the Setup Instructions.
[role="screenshot"]
image::apm/images/apm-index-pattern.png[Setup index pattern for APM in Kibana]
To use a custom index pattern, see <<apm-settings-in-kibana>>.
[float]
[[apm-getting-started-next]]
=== Next steps
No further configuration in the APM app is required.
Install an APM Agent library in your service to begin visualizing and analyzing your data!

View file

@ -1,18 +1,23 @@
// Do not link directly to this page.
// Link to the anchor in `/docs/settings/apm-settings.asciidoc` instead.
[role="xpack"]
[[apm-settings-in-kibana]]
=== APM settings in Kibana
== APM app settings
++++
<titleabbrev>Settings</titleabbrev>
++++
You do not need to configure any settings to use the APM app. It is enabled by default.
[float]
[[apm-indices-settings]]
==== APM Indices
=== APM Indices
include::./../settings/apm-settings.asciidoc[tag=apm-indices-settings]
[float]
[[general-apm-settings]]
==== General APM settings
=== General APM settings
include::./../settings/apm-settings.asciidoc[tag=general-apm-settings]

View file

@ -1,7 +1,8 @@
[role="xpack"]
[[spans]]
=== Span timeline
TIP: A {apm-overview-ref-70}/transaction-spans.html[span] is defined as the duration of a single event.
TIP: A {apm-overview-ref-v}/transaction-spans.html[span] is the duration of a single event.
Spans are automatically captured by APM agents, and you can also define custom spans.
Each span has a type and is defined by a different color in the timeline/waterfall visualization.
@ -28,7 +29,7 @@ Services in a distributed trace are separated by color and listed in the order t
[role="screenshot"]
image::apm/images/apm-services-trace.png[Example of distributed trace colors in the APM app in Kibana]
Don't forget, a distributed trace includes more than one transaction.
Don't forget; a distributed trace includes more than one transaction.
When viewing these distributed traces in the timeline waterfall, you'll see this image:apm/images/transaction-icon.png[APM icon] icon,
which indicates the next transaction in the trace.
These transactions can be expanded and viewed in detail by clicking on them.

View file

@ -1,12 +1,17 @@
[role="xpack"]
[[traces]]
=== Traces overview
TIP: Traces link together related transactions to show an end-to-end performance of how a request was served
and which services were part of it.
In addition to the Traces overview, you can view your application traces in the <<spans,span timeline waterfall>>.
The *Traces* overview displays the entry transaction for all traces in your application.
If you're using <<distributed-tracing>>, this view is key to finding the critical paths within your application.
Transactions with the same name are grouped together and only shown once in this table.
By default, transactions are sorted by _Impact_.
Impact helps show the most used and slowest endpoints in your service - in other words,
Impact helps show the most used and slowest endpoints in your service--in other words,
it's the collective amount of pain a specific endpoint is causing your users.
If there's a particular endpoint you're worried about, you can click on it to view the <<transaction-details, transaction details>>.
@ -33,4 +38,4 @@ You can use the <<spans,span timeline visualization>> to view a waterfall displa
[role="screenshot"]
image::apm/images/apm-distributed-tracing.png[Example view of the distributed tracing in APM app in Kibana]
TIP: Distributed tracing is supported by all APM agents and theres no additional configuration needed.
TIP: Distributed tracing is supported by all APM agents, and there's no additional configuration needed.

View file

@ -1,10 +1,7 @@
[role="xpack"]
[[transactions]]
=== Transaction overview
ifeval::[{branch} == 7.x]
:apm-overview-ref-v: https://www.elastic.co/guide/en/apm/get-started/master
endif::[]
TIP: A {apm-overview-ref-v}/transactions.html[transaction] describes an event captured by an Elastic APM agent instrumenting a service.
APM agents automatically collect performance metrics on HTTP requests, database queries, and much more.
@ -60,20 +57,6 @@ For further details, including troubleshooting and custom implementation instruc
refer to the documentation for each {apm-agents-ref}[APM Agent] you've implemented.
====
[[transactions-annotations]]
==== Transaction annotations
For enhanced visibility into your deployments, we offer deployment annotations on all transaction charts.
This feature automatically tags new deployments, so you can easily see if your deploy has increased response times
for an end-user, or if the memory/CPU footprint of your application has increased.
Being able to quickly identify bad deployments enables you to rollback and fix issues without causing costly outages.
Deployment annotations are automatically enabled, and appear when the `service.version` of your app changes.
[role="screenshot"]
image::apm/images/apm-transaction-annotation.png[Example view of transactions annotation in the APM app in Kibana]
[[rum-transaction-overview]]
==== RUM Transaction overview
@ -86,7 +69,7 @@ image::apm/images/apm-geo-ui.jpg[average page load duration distribution]
This data is available due to the geo-ip and user agent pipelines being enabled by default,
which allows for the capture of geo-location and user agent data.
These visualizations make it easy for you to visualize performance information about your
end users' experience based on their location.
end-users' experience based on their location.
[[transaction-details]]
==== Transaction details
@ -107,7 +90,7 @@ The number of requests per bucket is displayed when hovering over the graph, and
[role="screenshot"]
image::apm/images/apm-transaction-duration-dist.png[Example view of transactions duration distribution graph]
This graph shows a typical distribution, and indicates most of our requests were served quickly - awesome!
This graph shows a typical distribution, and indicates most of our requests were served quickly--awesome!
It's the requests on the right, the ones taking longer than average, that we probably want to focus on.
When you select one of these buckets,

View file

@ -1,19 +1,24 @@
[[troubleshooting]]
=== Troubleshooting common problems
[[troubleshooting]]
== Troubleshoot common problems
++++
<titleabbrev>Troubleshooting</titleabbrev>
++++
If you have something to add to this section, please consider creating a pull request with
your proposed changes in the https://github.com/elastic/kibana[Kibana repository].
Also check out the https://discuss.elastic.co/c/apm[APM discussion forum].
Also, check out the https://discuss.elastic.co/c/apm[APM discussion forum].
[float]
[[no-apm-data-found]]
==== No APM data found
=== No APM data found
This section can help with any of the following:
* Data isn't displaying in the APM app
* You're seeing a message like "No Services Found",
* You're seeing errors like "Fielddata is disabled on text fields by default..."
* You see a message like "No Services Found",
* You see errors like "Fielddata is disabled on text fields by default..."
There are a number of factors that could be at play here.
One important thing to double-check first is your index template.
@ -52,12 +57,13 @@ you can customize the indices that the APM app uses to display data.
Navigate to *APM* > *Settings* > *Indices*, and change all `apm_oss.*Pattern` values to
include the new index pattern. For example: `customIndexName-*`.
==== Unknown route
[float]
=== Unknown route
The {apm-app-ref}/transactions.html[transaction overview] will only display helpful information
when the transactions in your services are named correctly.
If you're seeing "GET unknown route" or "unknown route" in the APM app,
it could be a sign that something isn't working like it should.
it could be a sign that something isn't working as it should.
Elastic APM Agents come with built-in support for popular frameworks out-of-the-box.
This means, among other things, that the Agent will try to automatically name HTTP requests.
@ -71,7 +77,8 @@ To resolve this, you'll need to head over to the relevant {apm-agents-ref}[Agent
Specifically, view the Agent's supported technologies page.
You can also use the Agent's public API to manually set a name for the transaction.
==== Fields are not searchable
[float]
=== Fields are not searchable
In Elasticsearch, index templates are used to define settings and mappings that determine how fields should be analyzed.
The recommended index template file for APM Server is installed by the APM Server packages.
@ -92,7 +99,7 @@ Selecting the `apm-*` index pattern shows a listing of every field defined in th
*Ensure a field is searchable*
There are two things you can do to if you'd like to ensure a field is searchable:
1. Index your additional data as {apm-overview-ref}/metadata.html[labels] instead.
1. Index your additional data as {apm-overview-ref-v}/metadata.html[labels] instead.
These are dynamic by default, which means they will be indexed and become searchable and aggregatable.
2. Use the {apm-server-ref}/configuration-template.html[`append_fields`] feature. As an example,

View file

@ -1,51 +0,0 @@
[role="xpack"]
[[apm-ui]]
== Using APM
APM is designed to be as intuitive as possible,
but you might come across certain terms or concepts that dont feel native to you.
Not to worry, we've created this guide to help you get the most out of Elastic APM.
APM is available via the navigation sidebar in {Kib}.
* <<filters>>
* <<services>>
* <<traces>>
* <<transactions>>
* <<spans>>
* <<errors>>
* <<metrics>>
* <<apm-alerts>>
* <<machine-learning-integration>>
* <<agent-configuration>>
* <<advanced-queries>>
* <<apm-settings-in-kibana>>
* <<troubleshooting>>
include::filters.asciidoc[]
include::services.asciidoc[]
include::traces.asciidoc[]
include::transactions.asciidoc[]
include::spans.asciidoc[]
include::service-maps.asciidoc[]
include::errors.asciidoc[]
include::metrics.asciidoc[]
include::apm-alerts.asciidoc[]
include::agent-configuration.asciidoc[]
include::custom-links.asciidoc[]
include::advanced-queries.asciidoc[]
include::settings.asciidoc[]
include::troubleshooting.asciidoc[]

View file

@ -5,7 +5,15 @@
<titleabbrev>APM settings</titleabbrev>
++++
You do not need to configure any settings to use the APM app. It is enabled by default.
ifeval::[{branch} == 7.x]
:apm-server-ref: https://www.elastic.co/guide/en/apm/server/master
:apm-overview-ref-v: https://www.elastic.co/guide/en/apm/get-started/master
endif::[]
These settings allow the APM app to function, and specify the data that it surfaces.
Unless you've customized your setup,
you do not need to configure any settings to use the APM app.
It is enabled by default.
[float]
[[apm-indices-settings-kb]]
@ -33,29 +41,29 @@ image::settings/images/apm-settings.png[APM app settings in Kibana]
If you'd like to change any of the default values,
copy and paste the relevant settings into your `kibana.yml` configuration file.
Changing these settings may disable features of the APM App.
xpack.apm.enabled:: Set to `false` to disabled the APM plugin {kib}. Defaults to
`true`.
xpack.apm.enabled:: Set to `false` to disable the APM app. Defaults to `true`.
xpack.apm.ui.enabled:: Set to `false` to hide the APM plugin {kib} from the menu. Defaults to
`true`.
xpack.apm.ui.enabled:: Set to `false` to hide the APM app from the menu. Defaults to `true`.
xpack.apm.ui.transactionGroupBucketSize:: Number of top transaction groups displayed in APM plugin in Kibana. Defaults to `100`.
xpack.apm.ui.transactionGroupBucketSize:: Number of top transaction groups displayed in the APM app. Defaults to `100`.
xpack.apm.ui.maxTraceItems:: Max number of child items displayed when viewing trace details. Defaults to `1000`.
xpack.apm.ui.maxTraceItems:: Maximum number of child items displayed when viewing trace details. Defaults to `1000`.
apm_oss.indexPattern:: Index pattern is used for integrations with Machine Learning and Kuery Bar. It must match all apm indices. Defaults to `apm-*`.
apm_oss.indexPattern:: The index pattern used for integrations with Machine Learning and Query Bar.
It must match all apm indices. Defaults to `apm-*`.
apm_oss.errorIndices:: Matcher for indices containing error documents. Defaults to `apm-*`.
apm_oss.errorIndices:: Matcher for all {apm-server-ref}/error-indices.html[error indices]. Defaults to `apm-*`.
apm_oss.onboardingIndices:: Matcher for indices containing onboarding documents. Defaults to `apm-*`.
apm_oss.onboardingIndices:: Matcher for all onboarding indices. Defaults to `apm-*`.
apm_oss.spanIndices:: Matcher for indices containing span documents. Defaults to `apm-*`.
apm_oss.spanIndices:: Matcher for all {apm-server-ref}/span-indices.html[span indices]. Defaults to `apm-*`.
apm_oss.transactionIndices:: Matcher for indices containing transaction documents. Defaults to `apm-*`.
apm_oss.transactionIndices:: Matcher for all {apm-server-ref}/transaction-indices.html[transaction indices]. Defaults to `apm-*`.
apm_oss.metricsIndices:: Matcher for indices containing metric documents. Defaults to `apm-*`.
apm_oss.metricsIndices:: Matcher for all {apm-server-ref}/metricset-indices.html[metrics indices]. Defaults to `apm-*`.
apm_oss.sourcemapIndices:: Matcher for indices containing sourcemap documents. Defaults to `apm-*`.
apm_oss.sourcemapIndices:: Matcher for all {apm-server-ref}/sourcemap-indices.html[source map indices]. Defaults to `apm-*`.
// end::general-apm-settings[]