Skip to content

Commit 6e72537

Browse files
Clean up observability apps section (#1040)
Cleans up observability apps section including: * In content that applies to both stateful and serverless, use `APM Server or the managed intake service` instead of `APM Server` as there is no APM Server in serverless. * Add missing serverless content (e.g. getting started, api keys). * Update syntax that leads to rendering issues. * Simplify internal links. * Clean up unnecessary white space. --------- Co-authored-by: Mike Birnstiehl <[email protected]>
1 parent 47e2029 commit 6e72537

File tree

182 files changed

+1127
-2275
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

182 files changed

+1127
-2275
lines changed

docset.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,3 +277,4 @@ subs:
277277
release-date: "2-April-2025"
278278
heroku: "Elasticsearch Add-on for Heroku"
279279
obs-ai-assistant: "Elastic AI Assistant for Observability and Search"
280+
apm-server-or-mis: "APM Server or the managed intake service"

solutions/observability/apps.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
---
2+
navigation_title: "Applications and services"
23
mapped_pages:
34
- https://www.elastic.co/guide/en/serverless/current/application-and-service-monitoring.html
45
- https://www.elastic.co/guide/en/observability/current/application-and-service-monitoring.html
5-
6-
navigation_title: "Applications and services"
6+
applies_to:
7+
stack:
8+
serverless:
79
---
810

911
# Application and service monitoring [application-and-service-monitoring]
@@ -15,9 +17,9 @@ Explore the topics in this section to learn how to observe and monitor software
1517

1618
| | |
1719
| --- | --- |
18-
| [LLM Observability](../../solutions/observability/apps/llm-observability.md) | Monitor LLM-powered applications to keep them reliable, efficient, cost-effective, and easy to troubleshoot.|
19-
| [Application performance monitoring (APM)](../../solutions/observability/apps/application-performance-monitoring-apm.md) | Monitor software services and applications in real time, by collecting detailed performance information on response time for incoming requests, database queries, calls to caches, external HTTP requests, and more. |
20-
| [Synthetic monitoring](../../solutions/observability/apps/synthetic-monitoring.md) | Monitor the availability of network endpoints and services. |
21-
| [Real user monitoring](../../solutions/observability/apps/real-user-monitoring-user-experience.md) | Quantify and analyze the perceived performance of your web application using real-world user experiences. |
22-
| [Uptime monitoring (deprecated)](../../solutions/observability/apps/uptime-monitoring-deprecated.md) | Periodically check the status of your services and applications. |
23-
| [Tutorial: Monitor a Java application](../../solutions/observability/apps/tutorial-monitor-java-application.md) | Monitor a Java application using Elastic Observability: Logs, Infrastructure metrics, APM, and Uptime. |
20+
| [LLM Observability](/solutions/observability/apps/llm-observability.md) | Monitor LLM-powered applications to keep them reliable, efficient, cost-effective, and easy to troubleshoot.|
21+
| [Application performance monitoring (APM)](/solutions/observability/apps/application-performance-monitoring-apm.md) | Monitor software services and applications in real time, by collecting detailed performance information on response time for incoming requests, database queries, calls to caches, external HTTP requests, and more. |
22+
| [Synthetic monitoring](/solutions/observability/apps/synthetic-monitoring.md) | Monitor the availability of network endpoints and services. |
23+
| [Real user monitoring](/solutions/observability/apps/real-user-monitoring-user-experience.md) | Quantify and analyze the perceived performance of your web application using real-world user experiences. |
24+
| [Uptime monitoring (deprecated)](/solutions/observability/apps/uptime-monitoring-deprecated.md) | Periodically check the status of your services and applications. |
25+
| [Tutorial: Monitor a Java application](/solutions/observability/apps/tutorial-monitor-java-application.md) | Monitor a Java application using Elastic Observability: Logs, Infrastructure metrics, APM, and Uptime. |
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
:::{admonition} APM Server vs managed intake service
2+
In {{ech}}, the _APM Server_ receives data from Elastic APM agents and transforms it into Elasticsearch documents. In {{serverless-full}} there is in fact no APM Server running, instead the _managed intake service_ receives and transforms data.
3+
:::

solutions/observability/apps/act-on-data.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ applies_to:
1010

1111
# Act on application data
1212

13-
1413
In addition to exploring visualizations in the Applications UI in {{kib}}, you can make your application data more actionable with:
1514

1615
| | |

solutions/observability/apps/analyze-data-from-synthetic-monitors.md

Lines changed: 13 additions & 29 deletions
Large diffs are not rendered by default.

solutions/observability/apps/analyze-monitors.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ To access this page, go to **{{observability}} > Uptime > Monitors**. Click on a
1818

1919
The monitor detail screen displays several panels of information.
2020

21-
2221
## Status panel [uptime-status-panel]
2322

2423
The **Status** panel displays a summary of the latest information regarding your monitor. You can view its availability, monitor ID, type, and any assigned tags. You can click a link to visit the targeted URL, view when the TLS certificate expires, and determine the amount of time elapsed since the last check.
@@ -32,7 +31,6 @@ The **Monitoring from** list displays service availability per monitoring locati
3231

3332
To display a map with each location as a pinpoint, you can toggle the availability view from list view to map view.
3433

35-
3634
## Monitor duration [uptime-monitor-duration]
3735

3836
The **Monitor duration** chart displays the timing for each check that was performed. The visualization helps you to gain insights into how quickly requests resolve by the targeted endpoint and give you a sense of how frequently a host or endpoint was down in your selected time span.
@@ -44,7 +42,6 @@ Included on this chart is the {{anomaly-detect}} ({{ml}}) integration. For more
4442
:screenshot:
4543
:::
4644

47-
4845
## Pings over time [uptime-pings-chart]
4946

5047
The **Pings over time** chart is a graphical representation of the check statuses over time. Hover over the charts to display crosshairs with specific numeric data.
@@ -54,7 +51,6 @@ The **Pings over time** chart is a graphical representation of the check statuse
5451
:screenshot:
5552
:::
5653

57-
5854
## Check history [uptime-history-panel]
5955

6056
The **History** table lists the total count of this monitor’s checks for the selected date range. To help find recent problems on a per-check basis, you can filter by `status` and `location`.

solutions/observability/apps/analyze.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,3 @@ Learn how to view and interpret data in the {{uptime-app}}:
2323
* [Analyze monitors](analyze-monitors.md)
2424
* [Inspect uptime duration anomalies](inspect-uptime-duration-anomalies.md)
2525

26-
27-
28-

solutions/observability/apps/anonymous-authentication.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,13 @@ Elastic APM agents can send unauthenticated (anonymous) events to the APM Server
1616

1717
In some cases, however, it makes sense to allow both authenticated and anonymous requests. For example, it isn’t possible to authenticate requests from front-end services as the secret token or API key can’t be protected. This is the case with the Real User Monitoring (RUM) agent running in a browser, or the Android or iOS/Swift agent running in a user application. However, you still likely want to authenticate requests from back-end services. To solve this problem, you can enable anonymous authentication in the APM Server to allow the ingestion of unauthenticated client-side APM data while still requiring authentication for server-side services.
1818

19-
2019
## Configuring anonymous auth for client-side services [apm-anonymous-auth-config]
2120

2221
::::{note}
2322
You can only enable and configure anonymous authentication if an [API key](api-keys.md) or [secret token](secret-token.md) is configured. If neither are configured, these settings will be ignored.
2423

2524
::::
2625

27-
2826
:::::::{tab-set}
2927

3028
::::::{tab-item} Fleet-managed
@@ -57,7 +55,6 @@ The remote IP address of an incoming request might be different from the end-use
5755

5856
If none of these headers are present, the remote address for the incoming request is used.
5957

60-
6158
### Using a reverse proxy or load balancer [apm-derive-client-ip-concerns]
6259

6360
HTTP headers are easily modified; it’s possible for anyone to spoof the derived `client.ip` value by changing or setting, for example, the value of the `X-Forwarded-For` header. For this reason, if any of your clients are not trusted, we recommend setting up a reverse proxy or load balancer in front of the APM Server.

solutions/observability/apps/api-keys.md

Lines changed: 51 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,27 @@ applies_to:
77

88
# API keys [apm-api-key]
99

10+
:::{include} _snippets/apm-server-vs-mis.md
11+
:::
12+
1013
::::{important}
1114
API keys are sent as plain-text, so they only provide security when used in combination with [TLS](apm-agent-tls-communication.md).
1215
::::
1316

14-
15-
When enabled, API keys are used to authorize requests to the APM Server. API keys are not applicable for APM agents running on clients, like the RUM agent, as there is no way to prevent them from being publicly exposed.
17+
When enabled, API keys are used to authorize requests to {{apm-server-or-mis}}. API keys are not applicable for APM agents running on clients, like the RUM agent, as there is no way to prevent them from being publicly exposed.
1618

1719
You can assign one or more unique privileges to each API key:
1820

1921
* **Agent configuration** (`config_agent:read`): Required for agents to read [Agent configuration remotely](apm-agent-central-configuration.md).
2022
* **Ingest** (`event:write`): Required for ingesting agent events.
2123

22-
To secure the communication between APM Agents and the APM Server with API keys, make sure [TLS](apm-agent-tls-communication.md) is enabled, then complete these steps:
24+
To secure the communication between APM Agents and either {{apm-server-or-mis}} with API keys, make sure [TLS](apm-agent-tls-communication.md) is enabled, then complete these steps:
2325

2426
1. [Enable API keys](#apm-enable-api-key)
2527
2. [Create an API key user](#apm-create-api-key-user)
2628
3. [Create an API key in {{kib}}](#apm-create-an-api-key)
2729
4. [Set the API key in your APM agents](#apm-agent-api-key)
2830

29-
3031
## Enable API keys [apm-enable-api-key]
3132

3233
:::::::{tab-set}
@@ -50,11 +51,20 @@ apm-server.auth.api_key.limit: 50 <2>
5051
5152
::::::
5253
54+
::::::{tab-item} {{serverless-full}}
55+
API keys are enabled by default.
56+
::::::
57+
5358
:::::::
5459
5560
## Create an API key user in {{kib}} [apm-create-api-key-user]
5661
57-
API keys can only have the same or lower access rights than the user that creates them. Instead of using a superuser account to create API keys, you can create a role with the minimum required privileges.
62+
API keys can only have the same or lower access rights than the user that creates them.
63+
64+
:::::::{tab-set}
65+
66+
::::::{tab-item} Fleet-managed or APM Server binary
67+
Instead of using a superuser account to create API keys, you can create a role with the minimum required privileges.
5868
5969
The user creating an {{apm-agent}} API key must have at least the `manage_own_api_key` cluster privilege and the APM application-level privileges that it wishes to grant. In addition, when creating an API key from the Applications UI, you’ll need the appropriate {{kib}} Space and Feature privileges.
6070

@@ -84,14 +94,23 @@ POST /_security/role/apm_agent_key_role
8494

8595
1. This example assigns privileges for the default space.
8696

87-
8897
Assign the newly created `apm_agent_key_role` role to any user that wishes to create {{apm-agent}} API keys.
98+
::::::
8999

100+
::::::{tab-item} {{serverless-full}}
101+
**For Observability Serverless projects**, the Editor role or higher is required to create and manage API keys. To learn more, refer to [Assign user roles and privileges](/deploy-manage/users-roles/cloud-organization/user-roles.md#general-assign-user-roles).
102+
::::::
103+
104+
:::::::
90105

91106
## Create an API key in the Applications UI [apm-create-an-api-key]
92107

93108
The Applications UI has a built-in workflow that you can use to easily create and view {{apm-agent}} API keys. Only API keys created in the Applications UI will show up here.
94109

110+
:::::::{tab-set}
111+
112+
::::::{tab-item} Fleet-managed or APM Server binary
113+
95114
Using a superuser account, or a user with the role created in the previous step, In {{kib}}, find **Applications** in the main menu or use the [global search field](/explore-analyze/find-and-organize/find-apps-and-objects.md). Go to **Settings** → **Agent keys**. Enter a name for your API key and select at least one privilege.
96115

97116
For example, to create an API key that can be used to ingest APM events and read agent central configuration, select `config_agent:read` and `event:write`.
@@ -103,6 +122,27 @@ Click **Create APM Agent key** and copy the Base64 encoded API key. You will nee
103122
:screenshot:
104123
:::
105124

125+
::::::
126+
127+
::::::{tab-item} {{serverless-full}}
128+
To create a new API key:
129+
130+
1. In your Elastic Observability Serverless project, go to any Applications page.
131+
1. Click **Settings**.
132+
1. Select the **Agent keys** tab.
133+
1. Click **Create APM agent key**.
134+
1. Name the key and assign privileges to it.
135+
1. Click **Create APM agent key**.
136+
1. Copy the key now. You will not be able to see it again. API keys do not expire.
137+
138+
To view all API keys for your project:
139+
140+
1. Expand **Project settings**.
141+
1. Select **Management**.
142+
1. Select **API keys**.
143+
::::::
144+
145+
:::::::
106146

107147
## Set the API key in your APM agents [apm-agent-api-key]
108148

@@ -118,15 +158,18 @@ You can now apply your newly created API keys in the configuration of each of yo
118158
* **Python agent**: [`api_key`](apm-agent-python://reference/configuration.md#config-api-key)
119159
* **Ruby agent**: [`api_key`](apm-agent-ruby://reference/configuration.md#config-api-key)
120160

121-
122161
## Alternate API key creation methods [apm-configure-api-key-alternative]
123162

163+
```{applies_to}
164+
stack:
165+
serverless: unavailable
166+
```
167+
124168
API keys can also be created and validated outside of {{kib}}:
125169

126170
* [APM Server API key workflow](#apm-create-api-key-workflow-apm-server)
127171
* [{{es}} API key workflow](#apm-create-api-key-workflow-es)
128172

129-
130173
### APM Server API key workflow [apm-create-api-key-workflow-apm-server]
131174

132175
This API creation method only works with the APM Server binary.
@@ -137,10 +180,8 @@ This API creation method only works with the APM Server binary.
137180
Users should create API Keys through {{kib}} or the {{es}} REST API
138181
::::
139182

140-
141183
APM Server provides a command line interface for creating, retrieving, invalidating, and verifying API keys. Keys created using this method can only be used for communication with APM Server.
142184

143-
144185
#### `apikey` subcommands [apm-create-api-key-subcommands]
145186

146187
**`create`**
@@ -163,10 +204,8 @@ APM Server provides a command line interface for creating, retrieving, invalidat
163204
* To **ingest agent data**, assign `event:write`.
164205
* To **upload source maps**, assign `sourcemap:write`.
165206

166-
167207
::::
168208

169-
170209
**`info`**
171210
: Query API Key(s). `--id` or `--name` required.
172211

@@ -176,7 +215,6 @@ APM Server provides a command line interface for creating, retrieving, invalidat
176215
**`verify`**
177216
: Check if a credentials string has the given privilege(s). `--credentials` required.
178217

179-
180218
#### Privileges [apm-create-api-key-privileges]
181219

182220
If privileges are not specified at creation time, the created key will have all privileges.
@@ -185,7 +223,6 @@ If privileges are not specified at creation time, the created key will have all
185223
* `--ingest` grants the `event:write` privilege
186224
* `--sourcemap` grants the `sourcemap:write` privilege
187225

188-
189226
#### Create an API key [apm-create-api-key-workflow]
190227

191228
Create an API key with the `create` subcommand.
@@ -238,7 +275,6 @@ Error count ........ 0
238275

239276
A full list of `apikey` subcommands and flags is available in the [API key command reference](apm-server-command-reference.md#apm-apikey-command).
240277

241-
242278
### {{es}} API key workflow [apm-create-api-key-workflow-es]
243279

244280
It is also possible to create API keys using the {{es}} [create API key API](https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-security-create-api-key).
@@ -268,7 +304,6 @@ POST /_security/api_key
268304
2. The expiration time of the API key
269305
3. Any assigned privileges
270306

271-
272307
The response will look similar to this:
273308

274309
```console-result

0 commit comments

Comments
 (0)