Skip to content

Commit e188358

Browse files
authored
Merge branch 'main' into shubhaat-patch-2
2 parents b2cc986 + 53b911b commit e188358

File tree

10 files changed

+347
-14
lines changed

10 files changed

+347
-14
lines changed

.github/workflows/co-docs-builder.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ on:
2121
jobs:
2222
publish:
2323
if: contains(github.event.pull_request.labels.*.name, 'ci:doc-build')
24-
uses: elastic/workflows/.github/workflows/docs-versioned-publish.yml@main
24+
uses: elastic/dev-docs-workflows/.github/workflows/docs-versioned-publish.yml@main
2525
with:
2626
# Refers to Vercel project
2727
project-name: elastic-dot-co-docs-preview-docs

deploy-manage/production-guidance/kibana-in-production-environments.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ How you deploy {{kib}} largely depends on your use case. If you are the only use
1414

1515
## Scalability
1616

17-
Historically, Kibana’s scalability was primarily influenced by the number of concurrent users and the complexity of dashboards and visualizations. However, with the introduction of new capabilities such as [{{kib}} Alerting](/explore-analyze/alerts-cases.md) and the [Detection Rules](/solutions/security/detect-and-alert.md) engine, critical components for [Observability](/solutions/observability.md) and [Security](/solutions/security.md) solutions, the scalability factors have evolved significantly.
17+
With the introduction of new capabilities such as [{{kib}} Alerting](/explore-analyze/alerts-cases.md) and the [Detection Rules](/solutions/security/detect-and-alert.md) engine, critical components for [Observability](/solutions/observability.md) and [Security](/solutions/security.md) solutions, the scalability factors have evolved significantly.
1818

1919
Now, Kibana’s resource requirements extend beyond user activity. The system must also handle workloads generated by automated processes, such as scheduled alerts, background detection rules, and other periodic tasks. These operations are managed by [{{kib}} Task Manager](./kibana-task-manager-scaling-considerations.md), which is responsible for scheduling, executing, and coordinating all background tasks.
2020

2121
Additionally, the task manager enables distributed coordination across multiple {{kib}} instances, allowing {{kib}} to function as a logical cluster in certain aspects.
2222

23-
::::{important}
23+
::::{important}
2424
* {{kib}} does not support rolling [upgrades](/deploy-manage/upgrade/deployment-or-cluster/kibana.md), and deploying mixed versions of {{kib}} can result in data loss or upgrade failures. Shut down all instances of {{kib}} before performing an upgrade, and ensure all running {{kib}} instances have matching versions.
2525
* While {{kib}} isn’t resource intensive, we still recommend running {{kib}} separate from your {{es}} data or master nodes.
2626
::::
@@ -33,6 +33,8 @@ Topics covered include:
3333

3434
* [High availability and traffic distribution](./kibana-load-balance-traffic.md): For self-managed deployments, learn how to load balance traffic across multiple {{kib}} instances, how to balance traffic to different deployments, and how to distribute {{kib}} traffic across multiple {{es}} instances.
3535

36+
* [Scaling {{kib}} based on traffic](./kibana-traffic-scaling-considerations.md): Learn the quantity of CPU and memory resources needed by {{kib}} to handle expected traffic.
37+
3638
* [Configure {{kib}} memory usage](./kibana-configure-memory.md): Configure {{kib}} memory limit in self-managed deployments.
3739

3840
* [Manage {{kib}} background tasks](./kibana-task-manager-scaling-considerations.md): Learn how {{kib}} runs background tasks like alerting and reporting, and get guidance on scaling and throughput tuning for reliable task execution. Applicable to all deployment types.

deploy-manage/production-guidance/kibana-task-manager-scaling-considerations.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ For detailed troubleshooting guidance, see [Troubleshooting](../../troubleshoot/
6565

6666
## Scaling guidance [task-manager-scaling-guidance]
6767

68-
How you deploy {{kib}} largely depends on your use case. Predicting the throughout a deployment might require to support Task Management is difficult because features can schedule an unpredictable number of tasks at a variety of scheduled cadences.
68+
How you deploy {{kib}} largely depends on your use case. Predicting the throughput a deployment requires to support Task Management is difficult because features can schedule an unpredictable number of tasks at a variety of scheduled cadences.
6969

7070
However, there is a relatively straight forward method you can follow to produce a rough estimate based on your expected usage.
7171

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
---
2+
navigation_title: Traffic scaling considerations
3+
mapped_pages:
4+
- https://www.elastic.co/guide/en/kibana/current/kibana-traffic-scaling-considerations.html
5+
applies_to:
6+
deployment:
7+
ess: all
8+
ece: all
9+
eck: all
10+
self: all
11+
products:
12+
- id: kibana
13+
---
14+
15+
# Scale {{kib}} for your traffic workload
16+
17+
::::{important}
18+
This guidance does not apply to scaling {{kib}} for task manager. If you intend to optimize {{kib}} for alerting capabilities, see [](./kibana-task-manager-scaling-considerations.md).
19+
::::
20+
21+
{{kib}}'s HTTP traffic is diverse and can be unpredictable. Traffic includes serving static assets like files, processing large search responses from {{es}}, and managing CRUD operations against complex domain objects like SLOs. The scale of the load created by each of these kinds of traffic will vary depending on your usage patterns. While difficult to predict, there are two important aspects to consider when provisioning CPU and memory resources for your {{kib}} instances:
22+
23+
* **Concurrency**: How many users you expect to be interacting with {{kib}} simultaneously. Concurrency performance is largely **CPU-bound**. Approaching this limit increases response times.
24+
* **Request and response size**: The size of requests and responses you expect {{kib}} to service. Performance when managing large requests and responses is largely **memory-bound**. Approaching this limit increases response times and may cause {{kib}} to crash.
25+
26+
::::{tip}
27+
On [{{serverless-full}}](../deploy/elastic-cloud/serverless.md) scaling {{kib}} is fully managed for you.
28+
::::
29+
30+
CPU and memory boundedness often interact in important ways. If CPU-bound activity is reaching its limit, memory pressure will likely increase as {{kib}} has less time for activities like garbage collection. If memory-bound activity is reaching its limit, there may be more CPU work to free claimed memory, increasing CPU pressure. [Tracking CPU and memory metrics over time](#advanced-scaling-using-stack-monitoring-metrics) can be very useful for understanding where your {{kib}} is experiencing a bottleneck.
31+
32+
::::{note}
33+
Traffic to {{kib}} often comes in short bursts or spikes that can overwhelm an underprovisioned {{kib}} instance. In production environments, an overwhelmed {{kib}} instance will typically return 502 or 503 error responses.
34+
35+
Load balancing helps to mitigate traffic spikes by horizontally scaling your {{kib}} deployments and improving {{kib}}'s availability. To learn more about load balancing, refer to [](./kibana-load-balance-traffic.md).
36+
::::
37+
38+
## Before you start [_before_sizing_kibana]
39+
40+
{{es}} is the search engine and backing database of {{kib}}. Any performance issues in {{es}} will manifest in {{kib}}. Additionally, while Elastic tries to mitigate this possibility, {{kib}} may be sending requests to {{es}} that degrade performance if {{es}} is underprovisioned.
41+
42+
### Is the {{es}} cluster correctly sized?
43+
44+
Follow [the production guidance for {{es}}](./elasticsearch-in-production-environments.md).
45+
46+
### What requests is {{kib}} sending to {{es}}?
47+
48+
In user interfaces like Dashboards or Discover, you can view the full query that {{kib}} is sending to {{es}}. This is a good way to get an idea of the volume of data and work a {{kib}} visualization or dashboard is creating for {{es}}. Dashboards with many visualizations will generate higher load for {{es}} and {{kib}}.
49+
50+
## Basic scaling using number of concurrent users
51+
52+
Follow this strategy if you know the maximum number of expected concurrent users.
53+
54+
Start {{kib}} on **1 vCPU** and **2GB** of memory. This should comfortably serve a set of 10 concurrent users performing analytics activities like browsing dashboards.
55+
56+
If you are experiencing performance issues, you can scale {{kib}} vertically by adding the following resources for every 10 additional concurrent users:
57+
* 1 vCPU
58+
* 2GB of memory
59+
60+
These amounts are a safe minimum to ensure that {{kib}} is not resource-starved for common analytics use cases.
61+
62+
It is recommended to scale vertically to a maximum of **8.4 vCPU** and **8GB** of memory.
63+
64+
You should also combine vertical scaling with horizontal scaling to handle greater concurrency or bursty traffic. Refer to [](./kibana-load-balance-traffic.md) for guidance.
65+
66+
### Scaling examples
67+
68+
| Concurrent users | Minimum vCPU | Minimum memory | ECH and ECE deployment examples |
69+
| --- | --- | --- | --- |
70+
| 50 | 5 vCPU | 10GB | • {{kib}} size per zone of 16GB RAM and 8 vCPU in 1 availability zone (creates 2 x 8GB nodes)<br><br>• {{kib}} size per zone of 8GB RAM and up to 8 vCPU across 2 availability zones<br><br>• {{kib}} size per zone of 4GB RAM and up to 8 vCPU across 3 availability zones |
71+
| 100 | 10 vCPU | 20GB | • {{kib}} size per zone of 24 GB RAM and 12 vCPU in 1 availability zone (creates 3 x 8GB nodes)<br><br>• {{kib}} size per zone of 8GB RAM and up to 8 vCPU across 3 availability zones<br><br>|
72+
73+
Refer to the [guidance on adjusting {{kib}}'s allocated resources](#adjust-resource-allocations) once you have determined sizing.
74+
75+
## Advanced scaling using stack monitoring metrics
76+
77+
Building on the simple strategy outlined above, we can identify where {{kib}} is resource constrained more precisely. **Self-managed** and **{{eck}}** users manage CPU and memory allocations independently and can further tailor resources based on performance metrics.
78+
79+
### Gather usage information [_monitoring-kibana-metrics]
80+
81+
In order to understand the impact of your usage patterns on a single {{kib}} instance, use the [stack monitoring](../monitor/stack-monitoring.md) feature.
82+
83+
Using stack monitoring, you can gather the following metrics for your {{kib}} instance:
84+
85+
* **Event loop delay (ELD) in milliseconds:** A Node.js concept that roughly translates to the number of milliseconds by which processing of events is delayed due to CPU-intensive activities.
86+
* **Heap size in bytes:** The amount of bytes currently held in memory dedicated to {{kib}}'s heap space.
87+
* **HTTP connections:** The number of sockets that the {{kib}} server has open.
88+
89+
### Scale CPU using ELD metrics [kibana-traffic-load-cpu-sizing]
90+
91+
Event loop delay (ELD) is an important metric for understanding whether {{kib}} is engaged in CPU-bound activity.
92+
93+
**As a general target, ELD should be below ~220ms 95% of the time**. Higher delays may mean {{kib}} is CPU-starved. Sporadic increases above 200ms may mean that {{kib}} is periodically processing CPU-intensive activities like large responses from {{es}}, whereas consistently high ELD may mean {{kib}} is struggling to service tasks and requests.
94+
95+
Before increasing CPU resources, consider the impact of ELD on user experience. If users are able to use {{kib}} without the frustration that comes from a blocked CPU, provisioning additional CPU resources will not be impactful, although having spare resources in case of unexpected spikes is useful.
96+
97+
Monitoring {{kib}}'s ELD over time is a solid strategy for knowing when additional CPU resource is needed based on your usage patterns.
98+
99+
Refer to the [guidance on adjusting {{kib}}'s allocated resources](#adjust-resource-allocations) once you have determined vCPU sizing.
100+
101+
### Scale memory using heap size metrics [kibana-traffic-load-memory-sizing]
102+
103+
Heap size is an important metric to track. If {{kib}}'s heap size grows beyond the heap limit, {{kib}} will crash. By monitoring heap size, you can help ensure that {{kib}} has enough memory available.
104+
105+
Self-managed users must provision memory to the host that {{kib}} is running on as well as configure allocated heap. See [the guidance on configuring {{kib}} memory](./kibana-configure-memory.md).
106+
107+
Refer to the [guidance on adjusting {{kib}}'s allocated resources](#adjust-resource-allocations) once you have determined memory sizing.
108+
109+
## Adjust resource allocations for {{kib}} [adjust-resource-allocations]
110+
The way that you alter the resources allocated to your {{kib}} instance depends on your deployment type:
111+
* **[{{ech}}](/deploy-manage/deploy/elastic-cloud/ec-customize-deployment-components.md) and [{{ece}}](/deploy-manage/deploy/elastic-cloud/configure.md):** Users can adjust {{kib}}'s memory by viewing their deployment and editing the {{kib}} instance's resource configuration. In these environments, size increments are predetermined.
112+
* **{{eck}}:** Users can configure pod memory and CPU resources. Refer to [](../deploy/cloud-on-k8s/manage-compute-resources.md).
113+
* **Self-managed:** Users must provision memory to the host that {{kib}} is running on as well as configure allocated heap. See [the guidance on configuring {{kib}} memory](./kibana-configure-memory.md).
114+
115+
:::{note}
116+
For {{eck}} and self-managed deployments, Node.js suggests allocating 80% of available host memory to heap, assuming that {{kib}} is the only server process running on the (virtual) host. This allows for memory resources to be used for other activities, for example, allowing for HTTP sockets to be allocated.
117+
:::

deploy-manage/toc.yml

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ toc:
1616
- hidden: deploy/elastic-cloud/azure-marketplace-pricing.md
1717
- hidden: deploy/elastic-cloud/create-monthly-pay-as-you-go-subscription-on-gcp-marketplace.md
1818
- file: deploy/elastic-cloud/aws-marketplace.md
19-
- file: deploy/elastic-cloud/azure-native-isv-service.md
20-
- file: deploy/elastic-cloud/google-cloud-platform-marketplace.md
19+
- file: deploy/elastic-cloud/azure-native-isv-service.md
20+
- file: deploy/elastic-cloud/google-cloud-platform-marketplace.md
2121
- file: deploy/elastic-cloud/heroku.md
2222
children:
2323
- file: deploy/elastic-cloud/heroku-getting-started-installing.md
@@ -47,7 +47,7 @@ toc:
4747
children:
4848
- file: deploy/elastic-cloud/ec-change-hardware-profile.md
4949
children:
50-
- file: deploy/elastic-cloud/change-hardware.md
50+
- file: deploy/elastic-cloud/change-hardware.md
5151
- file: deploy/elastic-cloud/ec-customize-deployment-components.md
5252
- file: deploy/elastic-cloud/edit-stack-settings.md
5353
- file: deploy/elastic-cloud/add-plugins-extensions.md
@@ -358,6 +358,7 @@ toc:
358358
- file: production-guidance/kibana-load-balance-traffic.md
359359
- file: production-guidance/kibana-configure-memory.md
360360
- file: production-guidance/kibana-task-manager-scaling-considerations.md
361+
- file: production-guidance/kibana-traffic-scaling-considerations.md
361362
- file: production-guidance/kibana-alerting-production-considerations.md
362363
- file: production-guidance/kibana-reporting-production-considerations.md
363364
- file: reference-architectures.md
@@ -452,7 +453,7 @@ toc:
452453
- file: autoscaling/autoscaling-deciders.md
453454
- file: autoscaling/trained-model-autoscaling.md
454455
- file: security.md
455-
children:
456+
children:
456457
- file: security/secure-hosting-environment.md
457458
children:
458459
- file: security/secure-your-elastic-cloud-enterprise-installation.md
@@ -578,7 +579,7 @@ toc:
578579
- file: users-roles/cluster-or-deployment-auth/pki.md
579580
- file: users-roles/cluster-or-deployment-auth/custom.md
580581
- file: users-roles/cluster-or-deployment-auth/built-in-users.md
581-
children:
582+
children:
582583
- file: users-roles/cluster-or-deployment-auth/built-in-sm.md
583584
- file: users-roles/cluster-or-deployment-auth/orchestrator-managed-users-overview.md
584585
children:
@@ -610,7 +611,7 @@ toc:
610611
- file: users-roles/cluster-or-deployment-auth/kibana-role-management.md
611612
- file: users-roles/cluster-or-deployment-auth/role-restriction.md
612613
- title: "Elasticsearch privileges"
613-
crosslink: elasticsearch://reference/elasticsearch/security-privileges.md
614+
crosslink: elasticsearch://reference/elasticsearch/security-privileges.md
614615
- file: users-roles/cluster-or-deployment-auth/kibana-privileges.md
615616
- file: users-roles/cluster-or-deployment-auth/mapping-users-groups-to-roles.md
616617
children:
@@ -704,7 +705,7 @@ toc:
704705
children:
705706
- file: monitor/stack-monitoring/kibana-monitoring-elastic-agent.md
706707
- file: monitor/stack-monitoring/kibana-monitoring-metricbeat.md
707-
- file: monitor/stack-monitoring/kibana-monitoring-legacy.md
708+
- file: monitor/stack-monitoring/kibana-monitoring-legacy.md
708709
- file: monitor/stack-monitoring/kibana-monitoring-data.md
709710
- file: monitor/monitoring-data/visualizing-monitoring-data.md
710711
children:
@@ -803,7 +804,7 @@ toc:
803804
- file: upgrade/plan-upgrade.md
804805
- file: upgrade/prepare-to-upgrade.md
805806
children:
806-
- file: upgrade/prepare-to-upgrade/upgrade-assistant.md
807+
- file: upgrade/prepare-to-upgrade/upgrade-assistant.md
807808
- file: upgrade/deployment-or-cluster.md
808809
children:
809810
- file: upgrade/deployment-or-cluster/upgrade-on-ech.md
@@ -819,8 +820,8 @@ toc:
819820
children:
820821
- file: upgrade/deployment-or-cluster/saved-object-migrations.md
821822
- file: upgrade/deployment-or-cluster/kibana-roll-back.md
822-
- file: upgrade/deployment-or-cluster/enterprise-search.md
823-
- file: upgrade/ingest-components.md
823+
- file: upgrade/deployment-or-cluster/enterprise-search.md
824+
- file: upgrade/ingest-components.md
824825
- file: upgrade/orchestrator.md
825826
children:
826827
- file: upgrade/orchestrator/upgrade-cloud-enterprise.md

explore-analyze/discover/discover-get-started.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,26 @@ Learn how to use **Discover** to:
2222
* You must have data in {{es}}. Examples on this page use the [ecommerce sample data set](../index.md#gs-get-data-into-kibana), but you can use your own data.
2323
* You should have an understanding of [{{es}} documents and indices](../../manage-data/data-store/index-basics.md).
2424

25+
## Context-aware data exploration [context-aware-discover]
26+
27+
**Discover** provides tailored interfaces and features for the following data types when accessed from Observability or Security project types or {{kib}} solution views:
28+
29+
* Observability:
30+
* **[Logs exploration](/solutions/observability/logs/explore-logs.md)**
31+
% LINK/PAGE TBD * **Traces exploration**
32+
% LINK/PAGE TBD * **Metrics exploration**
33+
% * Security:
34+
% LINK/PAGE TBD * **Security data exploration**
35+
36+
This context-aware experience is determined by both your solution context and the type of data you query. When both conditions align, **Discover** provides specific capabilities useful for exploring that specific type of data, and integrates features or paths to other relevant solution applications.
37+
38+
When you access **Discover** outside of a specific solution context, or when working with data types that don't have specialized experiences, you get the default **Discover** interface with all its core functionality for general-purpose data exploration.
39+
40+
### Context-awareness with multiple data types
41+
42+
Your query may include multiple data types that each have tailored experiences; for example, if you query both `logs-*` and `traces-*` indices within an Observability context.
43+
44+
In this case **Discover** provides the default experience until it detects that you're interacting with a single type of data. For example, when you [](#look-inside-a-document).
2545

2646
## Load data into Discover [find-the-data-you-want-to-use]
2747

0 commit comments

Comments
 (0)