Skip to content

Commit

Permalink
[Docs] 7.0 Breaking changes, Release highlights, Migration assistant,…
Browse files Browse the repository at this point in the history
… ECS changes (elastic#1940)
  • Loading branch information
bmorelli25 committed Feb 25, 2019
1 parent d5c8f0b commit c36249e
Show file tree
Hide file tree
Showing 11 changed files with 316 additions and 132 deletions.
18 changes: 13 additions & 5 deletions changelogs/7.0.asciidoc
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
[[release-notes-7.0]]
== APM Server version 7.0

////
* <<release-notes-7.0.0-rc1>>
////
// * <<release-notes-7.7.0>>
// * <<release-notes-7.7.0-rc2>>
// * <<release-notes-7.7.0-rc1>>
* <<release-notes-7.0.0-beta1>>
* <<release-notes-7.0.0-alpha2>>
* <<release-notes-7.0.0-alpha1>>

////
[[release-notes-7.7.0]]
=== APM Server version 7.0.0
[[release-notes-7.7.0-rc2]]
=== APM Server version 7.0.0-rc2
[[release-notes-7.0.0-rc1]]
=== APM Server version 7.0.0-rc1
Expand All @@ -18,6 +24,8 @@
- Ensure host.name is not added {pull}1934[1934].
- Update Go version to 1.11.5 {pull}1840[1840] {pull}1950[1950].
[[release-notes-7.7.0-rc1]]
=== APM Server version 7.0.0-rc1
////

[[release-notes-7.0.0-beta1]]
Expand All @@ -27,7 +35,7 @@ https://github.com/elastic/apm-server/compare/v6.7.0\...v7.0.0[View commits]

[float]
==== Breaking Changes
- Move fields in ES to be ECS compliant {pull}1766[1766],{pull}1783[1783],{pull}1813[1813],{pull}1836[1836],{pull}1838[1838],{pull}1844[1844],{pull}1848[1848],{pull}1849[1849],{pull}1863[1863],{pull}1870[1870]
- Move fields in ES to be ECS compliant. {apm-overview-ref-v}/breaking-7.7.0-beta1.html#breaking-ecs[More information], {pull}1766[1766],{pull}1783[1783],{pull}1813[1813],{pull}1836[1836],{pull}1838[1838],{pull}1844[1844],{pull}1848[1848],{pull}1849[1849],{pull}1863[1863],{pull}1870[1870].

[float]
==== Added
Expand All @@ -48,7 +56,7 @@ https://github.com/elastic/apm-server/compare/v6.7.0\...v7.0.0[View commits]
[float]
==== Removed

- Remove support for deprecated Intake v1 endpoints {pull}1731[1731].
- Remove support for deprecated Intake v1 endpoints. {apm-overview-ref-v}/breaking-7.7.0-beta1.html#breaking-remove-v1[More information], {pull}1731[1731].
- Remove `concurrent_requests` setting and use number of CPUs instead {pull}1749[1749].
- Remove `frontend` setting {pull}1751[1751].
- Remove `metrics.enabled` setting {pull}1759[1759].
Expand Down
34 changes: 34 additions & 0 deletions docs/breaking-changes.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[[breaking-changes]]
=== Breaking Changes
APM Server is built on top of {beats-ref}/index.html[libbeat].
As such, any breaking change in libbeat is also considered to be a breaking change in APM Server.

[float]
==== HEAD

[float]
==== 7.0
* Removed deprecated Intake v1 API endpoints.
Upgrade agents to a version that supports APM Server >= 6.5.
{apm-overview-ref-v}/breaking-7.7.0-beta1.html#breaking-remove-v1[More information].
* Moved fields in Elasticsearch to be compliant with the Elastic Common Schema (ECS).
{apm-overview-ref-v}/breaking-7.7.0-beta1.html#breaking-ecs[More information and changed fields].
* {beats-ref}/breaking-changes-7.0.html[Breaking changes in libbeat]

[float]
==== 6.5
* There are no breaking changes in APM Server.
* Advanced users may find the <<upgrading-to-65,upgrading to 6.5 guide>> useful.

[float]
==== 6.4
* Indexing the `onboarding` document in it's own index by default.

[float]
==== 6.3
* Indexing events in separate indices by default.
* {beats-ref}/breaking-changes-6.3.html[Breaking changes in libbeat]

[float]
==== 6.2
* APM Server GA
16 changes: 6 additions & 10 deletions docs/context.asciidoc
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
The contextual data describes the environment in which an event is recorded.
It includes the `service`, the `system` where the service runs, and the `process`.

It can also contain information about the authenticated `user`.

An event's context can also include information about an authenticated `user`, a request leading to it, or a response.
For instance, HTTP requests context have `url`, `cookies`, `body`, `headers`, etc.

The agents provide some settings for users to capture customized information. This data is stored as not-indexed in a `custom` object.
Searchable information is stored as `tags` instead.
* Data about the environment in which the event is recorded:
** Service - environment, framework, language, etc.
** Host - architecture, hostname, IP, etc.
** Process - args, PID, PPID, etc.
** URL - full, domain, port, query, etc.
** User - (if supplied) email, ID, username, etc.
61 changes: 61 additions & 0 deletions docs/field-name-changes.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
[frame="topbot",options="header"]
|======================
|Old Field|New Field
|`beat.hostname` |`observer.hostname`
|`beat.name` |`observer.type`
|`beat.version` |`observer.version`
|`context.custom` |`error.custom`
|`context.db.instance` |`span.db.instance`
|`context.db.statement` |`span.db.statement`
|`context.db.type` |`span.db.type`
|`context.db.user` |`span.db.user.name`
|`context.http.method` |`span.http.method`
|`context.http.status_code` |`span.http.response.status_code`
|`context.http.url` |`span.http.url.original`
|`context.process.argv` |`process.args`
|`context.process.pid` |`process.pid`
|`context.process.ppid` |`process.ppid`
|`context.process.title` |`process.title`
|`context.request.body` |`http.request.body.original`
|`context.request.cookies` |`http.request.cookies`
|`context.request.env` |`http.request.env`
|`context.request.headers` |`http.request.headers`
|`context.request.http_version` |`http.version`
|`context.request.method` |`http.request.method`
|`context.request.socket` |`http.request.socket`
|`context.request.url.full` |`url.full`
|`context.request.url.hash` |`url.fragment`
|`context.request.url.hostname` |`url.domain`
|`context.request.url.pathname` |`url.path`
|`context.request.url.port` |`url.port`
|`context.request.url.protocol` |`url.scheme`
|`context.request.url.raw` |`url.original`
|`context.request.url.search` |`url.query`
|`context.response.finished` |`http.response.finished`
|`context.response.headers.content-type` |`http.response.headers.content-type`
|`context.response.headers_sent` |`http.response.headers_sent`
|`context.response.status_code` |`http.response.status_code`
|`context.service.agent.name` |`agent.name`
|`context.service.agent.version` |`agent.version`
|`context.service.environment` |`service.environment`
|`context.service.framework.name` |`service.framework.name`
|`context.service.framework.version` |`service.framework.version`
|`context.service.language.name` |`service.language.name`
|`context.service.language.version` |`service.language.version`
|`context.service.name` |`service.name`
|`context.service.runtime.name` |`service.runtime.name`
|`context.service.runtime.version` |`service.runtime.version`
|`context.service.version` |`service.version`
|`context.system.architecture` |`host.architecture`
|`context.system.hostname` |`host.hostname`
|`context.system.ip` |`host.ip`
|`context.system.platform` |`host.os.platform`
|`context.tags` |`labels`
|`context.user.email` |`user.email`
|`context.user.id` |`user.id`
|`context.user.ip` |`client.ip`
|`context.user.user-agent` |`user_agent.original`
|`context.user.username` |`user.name`
|`listening` |`observer.listening`
|======================

84 changes: 84 additions & 0 deletions docs/guide/apm-breaking-changes.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
[[apm-breaking-changes]]
== Breaking changes

This section discusses the changes that you need to be aware of when migrating your application from one version of APM to another.

* <<breaking-7.7.0-beta1, APM version 7.7.0-beta1>>
* <<breaking-6.4.0, APM version 6.4.0>>

Also see <<apm-release-notes>>.

[[breaking-7.7.0-beta1]]
=== Breaking changes in 7.7.0-beta1

APM Server::
+
[[breaking-remove-v1]]
**Removed deprecated Intake v1 API endpoints.** Before upgrading APM Server, ensure all APM agents are upgraded to a version that supports APM Server >= 6.5. View the <<agent-server-compatibility, agent/server compatibility matrix>> to determine if your agent versions are compatible.
+
[[breaking-ecs]]
**Moved fields in Elasticsearch to be compliant with the Elastic Common Schema (ECS).**
APM has aligned with the field names defined in the
https://github.com/elastic/ecs[Elastic Common Schema (ECS)].
Utilizing this common schema will allow for easier data correlation within Elasticsearch.
+
See the <<ecs-compliance,ECS field changes>> table for full details on which fields have changed.

APM UI::
+
[[breaking-new-endpoints]]
**Moved to new data endpoints.**+
When you upgrade to 7.x,
data in indices created prior to 7.0 will not automatically appear in the APM UI.
We offer a Kibana Migration Assistant (in the Kibana Management section) to help you migrate your data.
The migration assistant will reindex your older data in the new ECS format.
Be aware that this is a beta release.
This script is **not** meant to be run on production data at this stage.

[float]
[[ecs-compliance]]
==== Elastic Common Schema field changes

include::../field-name-changes.asciidoc[]

[[breaking-6.4.0]]
=== Breaking changes in 6.4.0

We previously split APM data into separate indices (transaction, span, error, etc.).
In 6.4 APM Kibana UI starts to leverage those separate indices for queries.

In case you only update Kibana but run an older version of APM Server you will not be able to see any APM data by default.
To fix this, use the {kibana-ref}/apm-settings-kb.html[Kibana APM settings] to specify the location of the APM index:
["source","sh"]
------------------------------------------------------------
apm_oss.errorIndices: apm-*
apm_oss.spanIndices: apm-*
apm_oss.transactionIndices: apm-*
apm_oss.onboardingIndices: apm-*
------------------------------------------------------------

In case you are upgrading APM Server from an older version, you might need to refresh your APM index pattern for certain APM UI features to work.
Also ensure to add the new config options in `apm-server.yml` in case you keep your existing configuration file:
["source","sh"]
------------------------------------------------------------
output.elasticsearch:
indices:
- index: "apm-%{[observer.version]}-sourcemap"
when.contains:
processor.event: "sourcemap"
- index: "apm-%{[observer.version]}-error-%{+yyyy.MM.dd}"
when.contains:
processor.event: "error"
- index: "apm-%{[observer.version]}-transaction-%{+yyyy.MM.dd}"
when.contains:
processor.event: "transaction"
- index: "apm-%{[observer.version]}-span-%{+yyyy.MM.dd}"
when.contains:
processor.event: "span"
- index: "apm-%{[observer.version]}-metric-%{+yyyy.MM.dd}"
when.contains:
processor.event: "metric"
- index: "apm-%{[observer.version]}-onboarding-%{+yyyy.MM.dd}"
when.contains:
processor.event: "onboarding"
------------------------------------------------------------
27 changes: 13 additions & 14 deletions docs/guide/apm-data-model.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,11 @@ and they can have a parent/child relationship with other spans.
Agents automatically instrument a variety of libraries to capture these spans from within your application.
In addition, you can use the Agent API for ad hoc instrumentation of specific code paths.

Spans have a `transaction.id` attribute that refers to their parent <<transactions,transaction>>.
They also have a `parent.id` attribute that refers to their parent span, or their transaction.
Other span data includes:
A span contains:

* start time
* duration
* A `transaction.id` attribute that refers to their parent <<transactions,transaction>>.
* A `parent.id` attribute that refers to their parent span, or their transaction.
* start time and duration
* name
* type
* `stack trace` (optional)
Expand Down Expand Up @@ -78,15 +77,14 @@ Within one transaction there can be 0, 1, or many spans captured.

A transaction contains:

* The timestamp and duration of the event
* The timestamp of the event
* A unique id, type, and name
* A result (e.g. a response code)
* Some contextual data (see below for details)
* Other relevant information depending on the agent. Example: The JavaScript RUM captures transaction marks,
include::../context.asciidoc[]
* Other relevant information depending on the agent. Example: The JavaScript RUM agent captures transaction marks,
which are points in time relative to the start of the transaction with some label.

[[transactions-context]]
include::../context.asciidoc[]
In addition, the agents provide some settings for users to capture customized information. This data is stored as not-indexed in a `custom` object.
Searchable information is stored as `labels` instead.

Transactions are stored in {apm-server-ref-v}/transaction-indices.html[transaction indices].

Expand All @@ -98,17 +96,18 @@ information about the original `exception` that occurred
or about a `log` created when the exception occurred.
For simplicity, errors are represented by a unique ID.

Error data includes:
An Error contains:

* Both the captured `exception` and the captured `log` of an error can contain a `stack trace`,
which is helpful for debugging.
* The `culprit` of an error indicates where it originated.
* An error might relate to the <<transactions,transaction>> during which it happened,
via the `transaction.id`.
* Some contextual data (see below).

include::../context.asciidoc[]

In addition, the agents provide some settings for users to capture customized information. This data is stored as not-indexed in a `custom` object.
Searchable information is stored as `labels` instead.

Errors are stored in {apm-server-ref-v}/error-indices.html[error indices].

[[metrics]]
Expand Down
Loading

0 comments on commit c36249e

Please sign in to comment.