From b89ba4a0671bfa701415e096c4e1f2deb8922dde Mon Sep 17 00:00:00 2001 From: Brandon Morelli Date: Wed, 11 Sep 2019 13:18:47 +0200 Subject: [PATCH 1/6] [docs] Update Logstash output documentation (#2691) # Conflicts: # docs/copied-from-beats/outputconfig.asciidoc --- docs/copied-from-beats/outputconfig.asciidoc | 115 ++++++++++++++++--- 1 file changed, 99 insertions(+), 16 deletions(-) diff --git a/docs/copied-from-beats/outputconfig.asciidoc b/docs/copied-from-beats/outputconfig.asciidoc index fdbd2f8f4a8..4a14673f77f 100644 --- a/docs/copied-from-beats/outputconfig.asciidoc +++ b/docs/copied-from-beats/outputconfig.asciidoc @@ -712,6 +712,7 @@ include::./shared-logstash-config.asciidoc[] Every event sent to Logstash contains the following metadata fields that you can use in Logstash for indexing and filtering: +ifndef::apm-server[] ["source","json",subs="attributes"] ------------------------------------------------------------------------------ { @@ -719,7 +720,6 @@ use in Logstash for indexing and filtering: "@metadata": { <1> "beat": "{beat_default_index_prefix}", <2> "version": "{stack-version}" <3> - "type": "doc" <4> } } ------------------------------------------------------------------------------ @@ -728,21 +728,39 @@ use in Logstash for indexing and filtering: for more about the `@metadata` field. <2> The default is {beat_default_index_prefix}. To change this value, set the <> option in the {beatname_uc} config file. -<3> The beats current version. -<4> The value of `type` is currently hardcoded to `doc`. It was used by previous -Logstash configs to set the type of the document in Elasticsearch. - +<3> The current version of {beatname_uc}. +endif::[] -WARNING: The `@metadata.type` field, added by the Logstash output, is -deprecated, hardcoded to `doc`, and will be removed in {beatname_uc} 7.0. +ifdef::apm-server[] +["source","json",subs="attributes"] +------------------------------------------------------------------------------ +{ + ... + "@metadata": { <1> + "beat": "{beat_default_index_prefix}", <2> + "pipeline":"apm", <3> + "version": "{stack-version}" <4> + } +} +------------------------------------------------------------------------------ +<1> {beatname_uc} uses the `@metadata` field to send metadata to Logstash. See the +{logstash-ref}/event-dependent-configuration.html#metadata[Logstash documentation] +for more about the `@metadata` field. +<2> The default is {beat_default_index_prefix}. To change this value, set the +<> option in the {beatname_uc} config file. +<3> The default pipeline configuration: `apm`. Additional pipelines can be enabled +with a {logstash-ref}/use-ingest-pipelines.html[Logstash pipeline config]. +<4> The current version of {beatname_uc}. +endif::[] You can access this metadata from within the Logstash config file to set values dynamically based on the contents of the metadata. -For example, the following Logstash configuration file for versions 2.x and -5.x sets Logstash to use the index and document type reported by Beats for -indexing events into Elasticsearch: +For example, the following Logstash configuration file for version 7.x sets +Logstash to use the index reported by {beatname_uc} for indexing events +into Elasticsearch: +ifndef::apm-server[] [source,logstash] ------------------------------------------------------------------------------ @@ -760,14 +778,79 @@ output { } ------------------------------------------------------------------------------ <1> `%{[@metadata][beat]}` sets the first part of the index name to the value -of the `beat` metadata field, `%{[@metadata][version]}` sets the second part to -the Beat's version, and `%{+YYYY.MM.dd}` sets the third part of the -name to a date based on the Logstash `@timestamp` field. For example: -+{beat_default_index_prefix}-{version}-2017.03.29+. +of the `beat` metadata field and `%{[@metadata][version]}` sets the second part to +the Beat's version. For example: ++{beat_default_index_prefix}-{version}+. +endif::[] + +ifdef::apm-server[] +[source,logstash] +------ +input { + beats { + port => 5044 + } +} + +filter { + if [@metadata][beat] == "apm" { + if [processor][event] == "sourcemap" { + mutate { + add_field => { "[@metadata][index]" => "%{[@metadata][beat]}-%{[@metadata][version]}-%{[processor][event]}" } <1> + } + } else { + mutate { + add_field => { "[@metadata][index]" => "%{[@metadata][beat]}-%{[@metadata][version]}-%{[processor][event]}-%{+yyyy.MM.dd}" } <2> + } + } + } +} + +output { + elasticsearch { + hosts => ["http://localhost:9200"] + index => "%{[@metadata][index]}" + } +} +------ +<1> Creates a new field named `@metadata.index`. +`%{[@metadata][beat]}` sets the first part of the index name to the value of the `beat` metadata field. +`%{[@metadata][version]}` sets the second part to {beatname_uc}'s version. +`%{[processor][event]}` sets the final part based on the APM event type. +For example: +{beat_default_index_prefix}-{version}-sourcemap+. +<2> In addition to the above rules, this pattern appends a date to the `index` name so Logstash creates a new index each day. +For example: +{beat_default_index_prefix}-{version}-transaction-{sample_date_0}+. +endif::[] Events indexed into Elasticsearch with the Logstash configuration shown here -will be similar to events directly indexed by Beats into Elasticsearch. +will be similar to events directly indexed by {beatname_uc} into Elasticsearch. + +ifndef::apm-server[] +NOTE: If ILM is not being used, set `index` to `%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}` instead so Logstash creates an index per day, based on the `@timestamp` value of the events coming from Beats. +endif::[] +ifdef::apm-server[] +==== Logstash and ILM + +When used with {apm-server-ref}/manual-ilm-setup.html[Index lifecycle management], Logstash does not need to create a new index each day. +Here's a sample Logstash configuration file that would accomplish this: + +[source,logstash] +------ +input { + beats { + port => 5044 + } +} + +output { + elasticsearch { + hosts => ["http://localhost:9200"] + index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{[processor][event]}" + } +} +------ +endif::[] ==== Compatibility @@ -785,7 +868,7 @@ You can specify the following options in the `logstash` section of the The enabled config is a boolean setting to enable or disable the output. If set to false, the output is disabled. -The default value is true. +The default value is `true`. [[hosts]] ===== `hosts` From 516adc65399c34157c74ff9d1255b4f468fed406 Mon Sep 17 00:00:00 2001 From: Brandon Morelli Date: Wed, 11 Sep 2019 14:19:35 +0200 Subject: [PATCH 2/6] [docs] APM Server install and run structure (#2170) # Conflicts: # docs/setting-up-and-running.asciidoc # Conflicts: # docs/copied-from-beats/command-reference.asciidoc # Conflicts: # docs/setting-up-and-running.asciidoc --- docs/common-problems.asciidoc | 3 +- docs/configuration-process.asciidoc | 18 +- .../command-reference.asciidoc | 39 ++- docs/data-ingestion.asciidoc | 23 +- docs/getting-started-apm-server.asciidoc | 309 ++++++++++++++++++ docs/guide/apm-doc-directory.asciidoc | 2 +- docs/guide/install-and-run.asciidoc | 4 +- docs/ilm-setup.asciidoc | 2 +- docs/images/apm-architecture-cloud.png | Bin 0 -> 29073 bytes docs/images/apm-architecture-diy.png | Bin 0 -> 26872 bytes docs/index.asciidoc | 8 +- docs/installing-on-windows.asciidoc | 32 -- docs/overview.asciidoc | 2 +- docs/rum.asciidoc | 10 +- docs/setting-up-and-running.asciidoc | 92 +----- docs/storage-management.asciidoc | 14 +- docs/troubleshooting.asciidoc | 23 +- 17 files changed, 428 insertions(+), 153 deletions(-) create mode 100644 docs/getting-started-apm-server.asciidoc create mode 100644 docs/images/apm-architecture-cloud.png create mode 100644 docs/images/apm-architecture-diy.png delete mode 100644 docs/installing-on-windows.asciidoc diff --git a/docs/common-problems.asciidoc b/docs/common-problems.asciidoc index 22b7166b644..1f4fc9101cf 100644 --- a/docs/common-problems.asciidoc +++ b/docs/common-problems.asciidoc @@ -5,6 +5,7 @@ This section describes common problems you might encounter with APM Server. * <> * <> +* <> * <> * <> * <> @@ -51,7 +52,7 @@ As a result, Elasticsearch must be configured to allow {ref}/docs-index_.html#in === HTTP 400: Data decoding error / Data validation error The most likely cause for this is that you are using incompatible versions of agent and APM Server. -For instance, APM Server 6.2.0 changed the Intake API spec and requires a minimum version of each agent. +For instance, APM Server 6.2 and 6.5 changed the Intake API spec and require a minimum version of each agent. View the {apm-overview-ref-v}/agent-server-compatibility.html[agent/server compatibility matrix] for more information. diff --git a/docs/configuration-process.asciidoc b/docs/configuration-process.asciidoc index eb96806c4fd..2078be54030 100644 --- a/docs/configuration-process.asciidoc +++ b/docs/configuration-process.asciidoc @@ -6,15 +6,31 @@ Example config file: ["source","yaml"] ---- apm-server: - host: "localhost:8200" + hosts: ["localhost:8200"] rum: enabled: true +output: + elasticsearch: + hosts: ElasticsearchAddress:9200 + queue.mem.events: 4096 max_procs: 4 ---- +NOTE: If you are using an X-Pack secured version of Elastic Stack, +you need to specify credentials in the config file before you run the commands that set up and start APM Server. +For example: + +[source,yaml] +---- +output.elasticsearch: + hosts: ["ElasticsearchAddress:9200"] + username: "elastic" + password: "elastic" +---- + [float] [[configuration-apm-server]] === Configuration options: `apm-server.*` diff --git a/docs/copied-from-beats/command-reference.asciidoc b/docs/copied-from-beats/command-reference.asciidoc index 330f80909ce..5a823396817 100644 --- a/docs/copied-from-beats/command-reference.asciidoc +++ b/docs/copied-from-beats/command-reference.asciidoc @@ -11,6 +11,7 @@ // These attributes are used to resolve short descriptions +tag::attributes[] :global-flags: Also see <>. @@ -47,6 +48,7 @@ endif::[] :test-command-short-desc: Tests the configuration :version-command-short-desc: Shows information about the current version +end::attributes[] [[command-line-options]] === {beatname_uc} command reference @@ -584,6 +586,10 @@ Or: {setup-command-short-desc} * The index template ensures that fields are mapped correctly in Elasticsearch. +If index lifecycle management is enabled it also ensures that the defined ILM policy +and write alias are connected to the indices matching the index template. +The ILM policy takes care of the lifecycle of an index, when to do a rollover, +when to move an index from the hot phase to the next phase, etc. ifndef::no_dashboards[] * The {kib} dashboards make it easier for you to visualize {beatname_uc} data @@ -595,11 +601,12 @@ ifdef::has_ml_jobs[] necessary to analyze data for anomalies. endif::[] -Use this command if you want to set up the environment without actually running +This command sets up the environment without actually running {beatname_uc} and ingesting data. *SYNOPSIS* +tag::setup-command-tag[] ["source","sh",subs="attributes"] ---- {beatname_lc} setup [FLAGS] @@ -636,6 +643,15 @@ enabled modules in the +{beatname_lc}.yml+ file. If you used the directory, also specify the `--modules` flag. endif::[] +*`--index-management`*:: +Sets up components related to Elasticsearch index management including +template, ilm policy, and write alias. + +ifdef::apm-server[] +*`--pipelines`*:: +Registers the <> definitions set in `ingest/pipeline/definition.json`. +end::apm-server[] + *`--template`*:: Sets up the index template only. @@ -664,7 +680,28 @@ ifeval::["{beatname_lc}"!="filebeat"] {beatname_lc} setup --machine-learning {beatname_lc} setup --template ----- +endif::no_dashboards[] + +ifndef::apm-server[] +ifdef::no_dashboards[] +["source","sh",subs="attributes"] +----- +{beatname_lc} setup --machine-learning +{beatname_lc} setup --index-management +----- +endif::no_dashboards[] +endif::apm-server[] + +ifdef::apm-server[] +["source","sh",subs="attributes"] +----- +{beatname_lc} setup --index-management +{beatname_lc} setup --pipelines +----- +endif::apm-server[] + endif::[] +end::setup-command-tag[] [[test-command]] ==== `test` command diff --git a/docs/data-ingestion.asciidoc b/docs/data-ingestion.asciidoc index 8f669fc35ad..eb941ff04e3 100644 --- a/docs/data-ingestion.asciidoc +++ b/docs/data-ingestion.asciidoc @@ -13,8 +13,6 @@ This section explains how to adapt data ingestion according to your needs. [[tune-apm-server]] == Tune APM Server -Tuning topics: - * <> * <> * <> @@ -87,15 +85,18 @@ Increasing the <> default value will help a [[tune-es]] == Tune Elasticsearch -Get insights about tuning the Elasticsearch ingestion rate, -especially with regards to +The Elasticsearch reference provides insight on tuning Elasticsearch. + +{ref}/tune-for-indexing-speed.html[Tune for indexing speed] provides information on: -* refresh interval -* disable swapping -* optimizing filesystem cache -* considerations regarding faster hardware -* setting the indexing buffer size +* Refresh interval +* Disabling swapping +* Optimizing filesystem cache +* Considerations regarding faster hardware +* Setting the indexing buffer size -directly at the {ref}/tune-for-indexing-speed.html[Elasticsearch reference]. +{ref}/tune-for-disk-usage.html[Tune for disk usage] provides information on: -You might also want to read up on how to {ref}/tune-for-disk-usage.html[tune for disk usage]. +* Disabling unneeded features +* Shard size +* Shrink index \ No newline at end of file diff --git a/docs/getting-started-apm-server.asciidoc b/docs/getting-started-apm-server.asciidoc new file mode 100644 index 00000000000..ccfad4dc659 --- /dev/null +++ b/docs/getting-started-apm-server.asciidoc @@ -0,0 +1,309 @@ +[[getting-started-apm-server]] +== Getting Started With APM Server + +// This section was copied from the APM Overview +// Switch to tagged regions when available +The easiest way to get started with APM Server is by using our +https://www.elastic.co/cloud/elasticsearch-service[hosted {es} Service] on +Elastic Cloud. The {es} Service is available on AWS, GCP, and Azure, +and automatically configures APM Server to work with {es} and {kib}. + +[float] +=== Hosted Elasticsearch Service + +Skip managing your own {es}, {kib}, and APM Server by using our +https://www.elastic.co/cloud/elasticsearch-service[hosted {es} Service] on +Elastic Cloud. + +image::images/apm-architecture-cloud.png[Install Elastic APM on cloud] + +https://www.elastic.co/cloud/elasticsearch-service/signup[Try out the {es} Service for free], +and then begin configuring your own user settings right in the Elasticsearch Service Console. +Any changes are automatically appended to the `apm-server.yml` configuration file for your instance. +A full list of configuration options is available in Elastic Cloud's +{cloud}/ec-manage-apm-settings.html[Add APM user settings]. + +[float] +=== Install and manage the stack yourself + +If you'd rather install the stack yourself, first see the https://www.elastic.co/support/matrix[Elastic Support Matrix] for information about supported operating systems and product compatibility. + +You'll need: + +* *{es}* for storing and indexing data. +* *{kib}* for visualizing with the APM UI. + +We recommend you use the same version of Elasticsearch, Kibana, and APM Server. + +image::images/apm-architecture-diy.png[Install Elastic APM yourself] + +See {stack-gs}/get-started-elastic-stack.html[Getting started with the {stack}] +for more information about installing these products. +After installing the {stack}, read the following topics to learn how to install, +configure, and start APM Server: + +* <> +* <> +* <> +* <> + +// ******************************************************* +// STEP 1 +// ******************************************************* + +[[installing]] +=== Step 1: Install + +NOTE: *Before you begin*: If you haven't installed the {stack}, do that now. +See {stack-gs}/get-started-elastic-stack.html[Getting started with the {stack}]. + +To download and install {beatname_uc}, use the commands below that work with your system. +If you use `apt` or `yum`, you can <> +to update to the newest version more easily. + +ifeval::["{release-state}"!="unreleased"] +See our https://www.elastic.co/downloads/apm[download page] +for other installation options, such as 32-bit images. +endif::[] + +[[deb]] +*deb:* + +ifeval::["{release-state}"=="unreleased"] + +Version {version} of APM Server has not yet been released. + +endif::[] + +ifeval::["{release-state}"!="unreleased"] + +["source","sh",subs="attributes"] +---------------------------------------------------------------------- +curl -L -O {downloads}/apm-server-{version}-amd64.deb +sudo dpkg -i apm-server-{version}-amd64.deb +---------------------------------------------------------------------- + +endif::[] + +[[rpm]] +*RPM:* + +ifeval::["{release-state}"=="unreleased"] + +Version {version} of APM Server has not yet been released. + +endif::[] + +ifeval::["{release-state}"!="unreleased"] + +["source","sh",subs="attributes"] +---------------------------------------------------------------------- +curl -L -O {downloads}/apm-server-{version}-x86_64.rpm +sudo rpm -vi apm-server-{version}-x86_64.rpm +---------------------------------------------------------------------- + +endif::[] + +[[linux]] +*Other Linux:* + +ifeval::["{release-state}"=="unreleased"] + +Version {version} of APM Server has not yet been released. + +endif::[] + +ifeval::["{release-state}"!="unreleased"] + +["source","sh",subs="attributes"] +------------------------------------------------ +curl -L -O {downloads}/apm-server-{version}-linux-x86_64.tar.gz +tar xzvf apm-server-{version}-linux-x86_64.tar.gz +------------------------------------------------ +endif::[] + +[[mac]] +*Mac:* + +ifeval::["{release-state}"=="unreleased"] + +Version {version} of APM Server has not yet been released. + +endif::[] + +ifeval::["{release-state}"!="unreleased"] + +["source","sh",subs="attributes"] +------------------------------------------------ +curl -L -O {downloads}/apm-server-{version}-darwin-x86_64.tar.gz +tar xzvf apm-server-{version}-darwin-x86_64.tar.gz +------------------------------------------------ + +endif::[] + +[[installing-on-windows]] +*Windows:* + +ifeval::["{release-state}"=="unreleased"] + +Version {version} of APM Server has not yet been released. + +endif::[] + +ifeval::["{release-state}"!="unreleased"] + +. Download the APM Server Windows zip file from the +https://www.elastic.co/downloads/apm/apm-server[downloads page]. + +. Extract the contents of the zip file into `C:\Program Files`. + +. Rename the `apm-server--windows` directory to `APM-Server`. + +. Open a PowerShell prompt as an Administrator (right-click the PowerShell icon and select *Run As Administrator*). +If you are running Windows XP, you may need to download and install PowerShell. + +. From the PowerShell prompt, run the following commands to install APM Server as a Windows service: ++ +[source,shell] +---------------------------------------------------------------------- +PS > cd 'C:\Program Files\APM-Server' +PS C:\Program Files\APM-Server> .\install-service-apm-server.ps1 +---------------------------------------------------------------------- + +NOTE: If script execution is disabled on your system, +you need to set the execution policy for the current session to allow the script to run. +For example: `PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-apm-server.ps1`. + +endif::[] + +[[docker]] +*Docker:* + +See <> for deploying Docker containers. + +// ******************************************************* +// STEP 2 +// ******************************************************* + +[[apm-server-configuration]] +=== Step 2: Set up and configure + +[float] +==== Elastic Cloud + +If you're running APM Server in Elastic cloud, you can configure your own user settings right in the Elasticsearch Service Console. +Any changes are automatically appended to the `apm-server.yml` configuration file for your instance. + +Full details are available in the {cloud}/ec-manage-apm-settings.html[APM user settings] documentation. + +[float] +[[index-template-config]] +==== Self installation + +It is recommend that you run the `setup` command before starting {beatname_uc}. + +The `setup` command sets up the initial environment, including the Elasticsearch index template, +and ILM write alias. In Elasticsearch, {ref}/indices-templates.html[index templates] +are used to define field settings and mappings. + +IMPORTANT: The {kibana-ref}/xpack-apm.html[Kibana APM UI] relies on specific mappings. +Changing the default mapping or failing to setup the initial mapping may break the APM UI. + +The recommended index template file for {beatname_uc} is installed by the {beatname_uc} packages. +To see the template that comes bundled with {beatname_uc}, run `apm-server export template`. +If you accept the default configuration, +{beatname_uc} will load the template automatically after successfully connecting to Elasticsearch. +If a template already exists, it will not be overwritten unless you've explicitly configured {beatname_uc} to do so. +Running `apm-server -e setup template` will force a template overwrite. + +NOTE: Index templates cannot be applied retroactively. +They are only applied at index creation time. +Changing a template will have no impact on existing indices. +This means you need to ensure the correct index template is loaded from day one. + +Full details on the `setup` command are below: + +// This include attribute uses tagged regions to pull the **setup-command** instructions +// in from command-reference.asciidoc. There is also a tagged region for **attributes** +// as these are defined locally in the command reference file, but must also be accessed here. +include::./copied-from-beats/command-reference.asciidoc[tag=attributes] +include::./copied-from-beats/command-reference.asciidoc[tag=setup-command-tag] + +Once APM Server has been set up, you can edit the `apm-server.yml` configuration file to customize it to your needs. +The location of this file varies by platform, but the <> will help you locate it. +All available configuration options are outlined in +{apm-server-ref-v}/configuring-howto-apm-server.html[configuring APM Server]. + +// ******************************************************* +// STEP 3 +// ******************************************************* + +[[apm-server-starting]] +=== Step 3: Start + +In a production environment, you would put APM Server on its own machines, +similar to how you run Elasticsearch. +You _can_ run it on the same machines as Elasticsearch, but this is not recommended, +as the processes will be competing for resources. + +To start APM Server, run: + +[source,bash] +---------------------------------- +./apm-server -e +---------------------------------- + +NOTE: The `-e` <> enables logging to stderr and disables syslog/file output. +Remove this flag if you've enabled logging in the configuration file. +For linux systems, see <>. + +You should see APM Server start up. +It will try to connect to Elasticsearch on localhost port `9200` and expose an API to agents on port `8200`. +You can change the defaults in `apm-server.yml` or by supplying a different address on the command line: + +[source,bash] +---------------------------------- +./apm-server -e -E output.elasticsearch.hosts=ElasticsearchAddress:9200 -E apm-server.host=localhost:8200 +---------------------------------- + +[float] +[[running-deb-rpm]] +==== Debian Package / RPM + +The Debian package and RPM installations of APM Server create an `apm-server` user. +To start the APM Server in this case, run: + +[source,bash] +---------------------------------- +sudo -u apm-server apm-server [] +---------------------------------- + +By default, APM Server loads its configuration file from `/etc/apm-server/apm-server.yml`. +See the <<_deb_and_rpm,deb & rpm default paths>> for a full directory layout. + +// ******************************************************* +// STEP 4 +// ******************************************************* + +[[next-steps]] +=== Step 4: Next steps + +// Use a tagged region to pull APM Agent information from the APM Overview +If you haven't already, you can now install APM Agents in your services! + +* {apm-go-ref-v}/introduction.html[Go agent] +* {apm-java-ref-v}/intro.html[Java agent] +* {apm-dotnet-ref-v}/intro.html[.NET agent] +* {apm-node-ref-v}/intro.html[Node.js agent] +* {apm-py-ref-v}/getting-started.html[Python agent] +* {apm-ruby-ref-v}/introduction.html[Ruby agent] +* {apm-rum-ref-v}/intro.html[JavaScript Real User Monitoring (RUM) agent] + +Once you have at least one Agent sending data to APM Server, +you can start visualizing your data in the {kibana-ref}/xpack-apm.html[Kibana APM UI]. + +// Shared APM & YUM +include::./copied-from-beats/repositories.asciidoc[] + +// Shared docker +include::./copied-from-beats/shared-docker.asciidoc[] \ No newline at end of file diff --git a/docs/guide/apm-doc-directory.asciidoc b/docs/guide/apm-doc-directory.asciidoc index 1b569ba6a37..f08cd27a265 100644 --- a/docs/guide/apm-doc-directory.asciidoc +++ b/docs/guide/apm-doc-directory.asciidoc @@ -27,7 +27,7 @@ Each agent has its own documentation: === APM Server APM Server is an open source application that receives performance data from your APM agents. -It's a {apm-server-ref-v}/why-separate-component.html[separate component by design], +It's a {apm-server-ref-v}/overview.html#why-separate-component[separate component by design], which helps keep the agents light, prevents certain security risks, and improves compatibility across the Elastic Stack. After the APM Server has validated and processed events from the APM agents, diff --git a/docs/guide/install-and-run.asciidoc b/docs/guide/install-and-run.asciidoc index 049a34bff13..adfd900382c 100644 --- a/docs/guide/install-and-run.asciidoc +++ b/docs/guide/install-and-run.asciidoc @@ -3,7 +3,7 @@ The easiest way to get started with Elastic APM is by using our https://www.elastic.co/cloud/elasticsearch-service[hosted {es} Service] on -Elastic Cloud. The {es} Service is available on both AWS and GCP, +Elastic Cloud. The {es} Service is available on AWS, GCP, and Azure, and automatically configures APM Server to work with {es} and {kib}. [float] @@ -20,7 +20,7 @@ then jump straight to <>. [float] [[before-installation]] -=== Install the stack yourself +=== Install and manage the stack yourself image::images/apm-architecture-diy.png[Install Elastic APM yourself] diff --git a/docs/ilm-setup.asciidoc b/docs/ilm-setup.asciidoc index 231dc3ab7ee..68c56889d68 100644 --- a/docs/ilm-setup.asciidoc +++ b/docs/ilm-setup.asciidoc @@ -168,7 +168,7 @@ Repeat the previous steps for each index that will be using ILM. . *Modify APM Server's configuration.* + -Finally, modify the default index configuration in <>. +Finally, modify the default index configuration in <>. Trim off the date template from each index you are setting up ILM for, so that APM Server is always writing events to the same place. The name of your modified index configuration must match the `is_write_index` alias created previously diff --git a/docs/images/apm-architecture-cloud.png b/docs/images/apm-architecture-cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..6bc7001fb9f78f1bea2c45174588198b008ddd26 GIT binary patch literal 29073 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 literal 0 HcmV?d00001 diff --git a/docs/images/apm-architecture-diy.png b/docs/images/apm-architecture-diy.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e96466081ae4673c26e2341f637ec6a110946d GIT binary patch literal 26872 zcmdSBby!r}8#YV`C`c$JATkym0s;a8!%-0FMq)sPp&4=j=`caMq!Ew~X&6dWx|^X> za_G))jprOs{od>Q_kGWG9h}*F?Y-At@vQs4pL@+aWyMFN#Pq~CI5?z_Wge>H;GBC4 zJ|CVZ1bDDX6jEIo+!wR7+PC#KQpp^ z4(E2ZvH_)WaPB*cfR9#ihi4FHD@%mEh_l#@pCv@VXY65~8<3wx94y3cJW)`FJg~Nd zLj<_*a^JZjP7HxS?%Np|i>N-7{^N4+P3(rLgM*C-508_R6SosTx3!%K53jJWFwY%6 z9zH%UP=d?;1;XK(GZ(`C=I=N8^F9yZ_J($5HV$Ui2nhDR&z@T&9mH}tQS2neFum){yXJ+^q;Q+S- z5BuZlKP&iuF7d~`?(<-q>u=5Xd*A##3OYxe_&(3Cjus~-mtqgY!GYpDekiH#jEfl~ zic`}VZrm^l4y4LdO?`KRl?GZL_|~tQ_VdR|pJn31tX7}ZVXY@H4h!AN>?ebS10|4T zpYwji=h=PkE-C~sRqc7M8(IHm9NK1Ntm-kp)qJaBZq&Xu`j$|qdq)MqD@k5ryz>w* zoPYj-juWf5jEI>uUV`G_o}>8ZpEw-c8>g54br5{@zE2B*hR>hjtcd^fZrGbcz22Vv z=S~z*NGHL0in#*`oXVhoRRMgZfJ}S-_wf`>_PBTtU!0PES-tu1dgI`od%Mr{&+7iH z=%$_*j!MEA{^z6rzAW~2i2h%Dog{VKWRpbq0hhg1t3;1Ovkv}o#}O-pf#>03`t!Y= z?EIR-MkdcukCUCj=TU~tzd8i!L2Nl*g=W+uyLSH`UhqnRvC*rm&dPn_o~H-%j-d2N zGfSeSmi~)RC&ycz!k^1l@W8df2YB32hnWB&9ZAVL%`$ocbE--r1CN7GVq0zef=;WW z&!glT+iVyN+;{rRHBJ|mJpER_Rj$=AI7NplUKMrB85!)))}qy|55E2&$9keh5V_R% z&uXEG-L~3=R)^L<7zVP1k+w(kHxA@zhuMvZgk%^l2u-;07a|H9V?wCyCMB!fPZv^x za_r|j1RWNXbxX`67H5}BM-Z|2uC3hIu^i2#EIj(%eQ#`VxY&#`TK$u3MAMAC%lcOm zo}rCKrdo}#1lQGy+_Z?jm$3*`bD+o)>+(>6;S1{+%=KSGDm?7V;m)#E6wJ{!dL})= z#a!4*U{7dk*do6ozG^wIGRO1mw4(Og%5`k}NaCsBCQBSokvopRn7=)CAI=!z)J;bK zr?49OT$iPpOOHM-x1Cu5T~aKzH`-gXKkeVNz3GvJS(cXkHN=}>-n@nlL&GH&_D)0` zrky`J6W2;dGu6_G&2eL;K(S3N$Rh9Cz7pBG6inH~xK0@YbBNz4w-qx0=GX|6`LrsJ?#Iy#(9 zEjhBcRO#N-Ig73&?`-SIFWxFdMEHakZH`1-cP-1t(-dMyx2C?m8Sy;bVj2MhbyU1{ zX5#GBNqwxjylHRRpU2T8XIsa#*5UOlpI^uDge@d8L+mtk)4CJiqO*L3hAQMh}0)-J;q*7@0Vw(SA6? zYo^;`qpC8pef%TVy0lkGVypy4bfq_4$qBdYaTv4IfWmAtW)TAQzHMc&*e3E+dBXCq zWd!;hmoeLHg^4sbsV*2P|0$^+40%I(_Aj*X0gEJ~_c+ zoMzet8V)`Ma#7rfe%T223d=n(3o3UURx(IXtXHTRf;UEF9rBapcb57wpQ7{&*J{ti z3(E_COt`LzS&Wt!SfmG1_meTIarD-@?yc^E81^ABMBqmV4{_k)zPc~`jemn>&qfuG zi1eTx7?O#YWPffu%!GCA$tbT)vSClzgvSVD+0utS9};dGmY}toqg5G5yY;sT>(TP= zNFIaL-3PtJOy;%6Y(LkJxmy(H?hyMz6`y^s_&Uk?=viwd*UhrYwztN#iXZOOwUggC zd$l}}Yv1cbzWz1dakyE5oX>Ey*mbRXP^@;VLv+mko-u}u)0Xtzw4Abic}VH zjSaDHk#NX-T~xO252xBAm{H8|O3a=gNqE z-(MBtx)-vLMi9Lnaza|@H(Cs0lGIXu7eIx<;5kj@folKFw625)p`!l>K*WjtpJ#3E=u!lwUamfoIn^jeaGyRhH zml{4LtLq|5h-u@|%H7eF248~&Ff&0CjwT#FlcAy{Dg3-5-zd(dt-N9Kcq@z9LB3q` zMAN{h7UY$x>hi~a zt345(kF(cvcLC#CD_grLjqAy0NR`ZJ<5DP1o^ECXyT_Q3UO4)e5Hep)I%+^A^KC)W z=<5UDKVzd&CN$Yl1b)o=O&V70Gx@faOlkLn9D23o`@x#$nZ-@%_jizqsvC_7x38;3 zagatN9lCYf<_1cgK+rV|v4NDnlaade+8ZKyT0hk99W@Pxv{g6Y^ea=I;t9SBe2lcr zUEw?_J+FBAQQ$%UoZ{SaeyyT$5$DgxD|g_j_^KPcn2WF_%G~v>Kj_n*Xkb=|*?+UD zKXcZXsn!^_V zTUrACWeJDgXB$DD#glD*N6)p0^UmxxN0e#rQM(@;@Tf`f?CQf-+`0>i{Rnu)Br=?6aFDv3^?glmsCTUXP`=>TTJ;-y8~`d}iD7z)-$P6s|dDJb!H&~&4e6Nb9$c)9Z@ zQ09Y9dS;5(-<3x5u(zyVpp9odPaA*R89=fzJNlQ3hL>Qjn3CNAU2CaA1XYrXih(ig z+TGnBMUh{38pJid9-Soglk4ISntlG_Y#^?)_VLX%KKFuU|4p!xmAoRMl@2gSg&&`0 z200{8cgEe);db;$-U&r^N1=ALi5L$HJ-})L`=P$F>m2y!uz@HSgK@(jf38nTfoi>b zD7xizu{S-a^*tL(vxtPJs*5q*jFI$eE+jDRQ_8-JL#PIej7B(m#$V!DhOO^csk-YC zLzI#9dyTXNR(`~n53Zf_&>o|8l3yxIDF}NWw6k;EBgaFkRd0wT3Emek$*@CbJMX?{ z6cx-u7j*7?N+x$hiuEQrGI{KOtQ^+9w=AtK!j4Lg;#OmF^&f`vDmf5J85j{i#J;i? zPw&zxiHcUtx)x0NDVyH*?KDUTomPYVEma-brMRu;^VxTf!P9XFMSL}N(05l zgBX2opsfn7V&OCtP5cna+e=OE;~jNVw{J)cB^!mZCBPr3c!9F>R<%G<^PUkbYAH)t z1?;4V^yTXsJUsNdH~sdeCFmw6?T4u6FHvtZ{lg1g!V9x;f(~z3xP5evO5EFdv({gx zqovkG-QrW1Hb$%DT;rLOEtt^(pifuHqiCU}O2(u5RGtkSgmZkC~;I zAHG609fjpe4N~Jv-0287${~vn3{KT-&D_xs%J6RPrH6lF%}o{Pj1+rP@(g!?*lgqJ z1;R+jt1Ytw@U@eI>;}4?J2)|?`JN}Oa7IR(FSy*jEN<}6JvvL}PV19(+#`<~^QH`S z;8)D5ZV?nwQ4w>eKChE98hs)wGO+WFcfolNKp-TGUBt8ena7MHEG=1^R!RUSEp&Zc zRoxMJmyNIyanu;(x6;DRdH79a-^%tU_frnUlN?Z*WjC%f7WkkzOOrZaUdn-LiOd`L zbby-vkS9Xn_N8+E6r88?`*AW7J(f5Sfp8Ni=cixi0$1zpC4p zL_|9`zA0!7R$(9(>yBtV=5@45zI)fC^#Nn$(iPz=Yds}$TBrTIrGf9MPXq=wW&XwJrY&GZB4K17QXJFfnFQAM;mr@8ru!`)`s9AC`U}F#+|Q zn#WdMc@>Xf`1!hbyn_mTZeG%4C-kM(D1b0yU;0|edcO3r({n1#;1fh;IcTkHvgLYI zzu5Xw(U$z0lp%64`W&1kb0oGjEW;Ek7T@1h4sF)Yy`d7H*}>Bx#S@+9k;a?I`WF?4 zvn1KR45!ZLeK$=VFq1M<2>C#Tp|7ED_|k&7y&j4)JPedln~vM(bK1eJLUQJEAd{tI9^wpne3Ec86jq)8CTIO!ZP_^qG^F6Be zZ~Q-FUrR=CCQwoMb|OB){wn_GC#diR3J5!kso*bQ@|SjGl!b$vEbk6CrTyTKcqJJO0Jl zf8BHLma_Ipbfrf;X^e2Ybp8`_5}!t@a}-VT-f8_=x_d69E0Lv)Ia2E%Lf!G~wXBLI z^E*qr`L#xTCV9bl;8RO7i)SCGwz8_6Tc8=Z;T+cvpJ@mHLWiDiwM)t3A7ubh(X4c| zvgl5JwP;%!DditEH1>_@^SiK`&$s0wjh7K!h;w%ONzc9!4t&~55VV1MT8w6V9GUPD zUiM%cohjliwVZh!NA#5FQWLfJp+?s5Y#tHit(HPs^}3H@t8wP71BjNw$X-3b`;$D{ zTLcdZ1GO1$sX|Sc`Z7z+C=*2wjttroOk$ycP30Ok25QsYQnktGMAw!@aA?69L@`nj zYl5YLT*I3QZcPO5*g5QF>OQ8>-!1jTREbL5+uEJ*VeBNtg&*z2ZhWdPa0qEVWaxgD zZ)qxMb*uo5en3pd*k6-(vK+3dedHTPOXclGp$sjX@H8G_=+#2y)Lt?vZEhLU{1NQ) z0J%I+qM54$pCj+cd70jQJ{$_g9YYtH5Yhj1ZMqYG=IBr z?+Iw@mM5TO?3;08CinZ}@RKozZ~dB&$6D0SlSLGW_umXA#6@!Sx@y$dI`t}ZX@rM) zp&~LVuClY(2>L?V&h_QWuW3-9jdMvMsY|ndp33?h|_YjYlGc$IMKRocbALeIHG$MuL zJ$vrhwZGP>!cW@{!TCQ1^=u9p)N$@+Xx{(MT8JLf{VZ$vfKRxZ~VtJ z{~5l(GtX1pp8u};KjujXcAlW4A{ih2x%&TgeJCZ6Y~v{9{>Ky&<^a>u#6ZXK;@<=0 z@0ZFb0y))A@&A&SBi0{Qh!u=LliatPl{uPv!*pY(Gf_ff^WGSFOCh3Ur>IlB2r$SB zV;+N=QT-Ql)FV|did?TH%rmbO{pZ~Zr6Fth4}sKCCdXazorXtWkC|t9(7@9QP<(r& z1%uGIbBYyE9QsC7VdD2vT6(mdR03RqaB2ngO2lr@Cpm?q-BzC3^7*M3Qn{TD|LI~7 zgR00W-1n#6l=do$qJi$%dQ5E&R;MwCUIk4cRjOKB?5|IiI%0-p#1?ZzRn2(G0ckYR zGH@@ks>GDmbJqVi+BXq;x1hV43e9I?1T0pL)@sYHKX^UV_3;7bC8gqL*@#nG{>rn{ zqg<2Dgx%c{>yh_#{FdNeMOd9p#A$UUCN-%CXl0|Alpt|CIx$$KV~LugaD6G-I5sz? z`guKZCE(pKnh;|e8XBO0RvXVW1_`xW^rXIn+168Qrbv^jxu-k|a*UP)aHGJNOr*(5 zi%vAlaO&$TLCc{#gX3GB5)(^<`AlW2wlfXrPKh&1tC7-@@oLvtyvOXr1M_0;qp!Ylf&iw-99xXG*CFE@E$$O7PkK} z1oSD){eA(3qrNh0gTX+R6zK}fR3MI_$6eQ~-Y`0T$mSmxF`ohW`Dv7a#|xv%7IT;B zcPx5e*b`ihB(MEiH2$1BP(AN6sRz>?9hi5-2`d%z37YAOj3dw9Fs^`peLwsxplEB- zmwcGJa^<<_$+E#%A-Tly=k|EfL9X5!|1qMqb!5+&8Tm zIGGJoT4}l&RLp=VuTvCRyhVGpr^>uP3*G&Q3FGtlXr(Af>|i!54F{`pF<8_#wQvE%GUCVac2T1t7lWS9Kte>h_?OmDT(Jlr9bo?TaVrb?{kqBc}CEc|AG&5?8&QKrPr24VoC<}vCAtUzbATMWW2+CeDJb0vLkgB_fYl5?fa-8 z;U8B9nM*KLTOIbxZpRyqAy%fs1SQ3cm_$6)mRqU~DvxD>Y7LuwR3}K_Wwdj8wDu@V z^~)p8VI~3xb*v6hIq5^97n}`L$F!03L=T-=k)@u2j}M4w-)@m8B-}?=dz=dI{W&Ur zA&=k~=(rw?v#ZW*iWI z&fxff@}t%WM;3dWxcKKz@YI_3v#SvX7y9&3E4D6)M<+`b%=G74)$1>|5t*y!`#faV zDZ6Dzf?OHu&RsiW-I7hKVdaoTD^4Z1F~jB*@b&ZctB2u4Y)Nx+RmeV4g|RiNm#WO& zEfE|*FLvC@w)t;Djg5HLiZFyQeZcvCi+Hz!_eB7;3p~F{;riKtJU|whxomuFjy0aw zYQ8=(n(D$w?x+eXS3yEi@RK`R(Q`DlpC%tiT^1)>N#Vud;hUT+UCzPKkdKREYO3jfDC6iT^ouq0>K z3KlQ=Cpt3&dO#!LW}S61ZwY4;eE$8s+90QagYceB_rA~+M0({I42J;%9hM_XdV5B093Hk78YWRq0 z+{d%iz1lo|u9OYWaNFK;Tf@P2Ia~;G&jn23WIoU0Jk+xT$NFr8nPbyqCKyH@(^D?9 zG%%2>TjuPa4v#^NgUp&1g2^F&*UarxvL7lcvq_y!0~MoNE~lfiY=%NbFPagLQccasrnb{VTsTc5_C*F5UL@hN&OZ%iTp6rf=bbLl{Nw41P8ZNcc)!Pvk z&VRbiT4qpXU9>#Mb>+To>#|^uoTEV8z>VNWJoITz{5{*&`M^Lpptiw`cRfIFpKNTK_w0h_zBrmDrq?Jzw5A^a8 zTSl04Uy;nDD&dWo3`XT=>P~=URd7_@M|DeWntx#yZzC-BOZm=6cRML37qCiXHo}Rn zUxxnQ91Ti?C2v3Kd-@CRUU5*7nwd2HY$1C6+8c&OXrPV0Suhu9Bq2*zd%>n z5la?3B4hr?EpsRUV5R1v4EQBw{k00UU{NU=t;&yg-l+UbhDwTMoeu%sxNOXue>^|D z8YilP$JMYDRECcIj_0XcZ!TDn20qErT7Z1<>(X%Jf5KrnK*AZ8?wO3Z=L(@-P!*ag znY)+%-U%)0;K9+Gs>0yGVL0B&mM$fx9DjeWR5egQL?9E(GCth1eV!_?B(9;?JO}q5 zSxf$LiIrXU_2S=~KR6o;^>-rRwVV2oC|~i+6wv_HA z8A*uBfO2`3p1xpJ;(h6VgjkBVpf6c#NYpMhxp?c59i|pqe|mAf0;O%X{e<@KFH-mz z)KjoprT3BS&BuKn+Z3~yrWpm?@zc?I_zyAF7SR4tw*)88w>Cj}~zR&}`;A5;Q1Ib;~b zwP#f*`S)r-A(RB{@aHL}lz(sKKY$$c01R_k-yLlB9y4503S_CfeUanrf>y(`!==x@ zz24T8xB7c){~VOT{GiEY4^-J%`vBU)0u3x4x3vIKB8-}fs$4gMT_Xq3T*nr+^r6(p zVabtut^K*WgH#TFT42=7EMF3Els`v

R3Oe+*?fyY3>o8up9($5w$ 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

J8HnM&&n^!% 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 Vc26*Xg#5mcwZ$&;++RG8{~OIK)-windows` directory to `APM-Server`. - -. Open a PowerShell prompt as an Administrator (right-click the PowerShell icon and select *Run As Administrator*). If you are running Windows XP, you may need to download and install PowerShell. - -. From the PowerShell prompt, run the following commands to install APM Server as a -Windows service: -+ -[source,shell] ----------------------------------------------------------------------- -PS > cd 'C:\Program Files\APM-Server' -PS C:\Program Files\APM-Server> .\install-service-apm-server.ps1 ----------------------------------------------------------------------- - -NOTE: If script execution is disabled on your system, you need to set the execution policy for the current session to allow the script to run. For example: `PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-apm-server.ps1`. - -endif::[] \ No newline at end of file diff --git a/docs/overview.asciidoc b/docs/overview.asciidoc index 91fea1f104d..595c7cb8ab9 100644 --- a/docs/overview.asciidoc +++ b/docs/overview.asciidoc @@ -10,7 +10,7 @@ The APM Server works in conjunction with {apm-agents-ref}/index.html[APM agents] NOTE: APM Server is built with the {beats-ref}[Beats] framework and leverages its functionality. - +[float] [[why-separate-component]] === Why is APM Server a separate component? diff --git a/docs/rum.asciidoc b/docs/rum.asciidoc index 8b182fd50e5..a794664781d 100644 --- a/docs/rum.asciidoc +++ b/docs/rum.asciidoc @@ -26,9 +26,9 @@ Source maps are cached in memory for as long as the <> looks like in Elasticsearch. +See what an <> looks like in Elasticsearch. diff --git a/docs/setting-up-and-running.asciidoc b/docs/setting-up-and-running.asciidoc index 95327a8e200..6634d087da4 100644 --- a/docs/setting-up-and-running.asciidoc +++ b/docs/setting-up-and-running.asciidoc @@ -1,94 +1,24 @@ [[setting-up-and-running]] -== Setting up and running APM Server +== Setting up APM Server -In a production environment, -you would put APM Server on its own machines, -similar to how you run Elasticsearch. -You _can_ run it on the same machines as Elasticsearch, -but this is not recommended, -as the processes will be competing for resources. +Before reading this section, see the <> +for basic installation and running instructions. -To start APM Server, run: +This section includes additional information on how to set up and run APM Server, including: -[source,bash] ----------------------------------- -./apm-server -e ----------------------------------- +* <> +* <> +* <> +* <> +* <> -NOTE: The `-e` <> enables logging to stderr and disables syslog/file output. -Remove this flag if you've enabled logging in the configuration file. -For linux systems, see <>. - -You should see APM Server start up. -It will try to connect to Elasticsearch on localhost port 9200 and expose an API to agents on port 8200. -You can change the defaults by supplying a different address on the command line: - -[source,bash] ----------------------------------- -./apm-server -e -E output.elasticsearch.hosts=ElasticsearchAddress:9200 -E apm-server.host=localhost:8200 ----------------------------------- - -[float] -[[running-deb-rpm]] -=== Debian Package / RPM - -The Debian package and RPM installations of APM Server create an `apm-server` user. -To start the APM Server in this case, run: - -[source,bash] ----------------------------------- -sudo -u apm-server apm-server [] ----------------------------------- - -By default, APM Server loads its configuration file from `/etc/apm-server/apm-server.yml`. -See the <<_deb_and_rpm,deb & rpm default paths>> for a full directory layout. - -[[apm-server-configuration]] -=== Configuration file -To configure APM Server, you can also update the `apm-server.yml` configuration file. - -For rpm and deb, -you’ll find the configuration file at +/etc/{beatname_lc}/{beatname_lc}.yml+. -For mac and win, look in the archive that you extracted. - -See {beats-ref}/config-file-format.html[Config File Format] in _Beats Platform Reference_ for more about the structure of the config file. - -[source,yaml] ----------------------------------- -apm-server: - host: localhost:8200 - -output: - elasticsearch: - hosts: ElasticsearchAddress:9200 ----------------------------------- - -The output section, like in other Beats, contains settings describing how and where to store the data. - -NOTE: If you are using an X-Pack secured version of Elastic Stack, -you need to specify credentials in the config file before you run the commands that set up and start APM Server. -For example: - -[source,yaml] ----- -output.elasticsearch: - hosts: ["ElasticsearchAddress:9200"] - username: "elastic" - password: "elastic" ----- - -See <> for more configuration options. - - -include::./high-availability.asciidoc[] +include::./copied-from-beats/shared-directory-layout.asciidoc[] include::./copied-from-beats/keystore.asciidoc[] include::./copied-from-beats/command-reference.asciidoc[] -include::./copied-from-beats/shared-directory-layout.asciidoc[] - -include::./copied-from-beats/shared-docker.asciidoc[] +include::./high-availability.asciidoc[] include::./copied-from-beats/shared-systemd.asciidoc[] diff --git a/docs/storage-management.asciidoc b/docs/storage-management.asciidoc index cc0a30d2203..abb888e2cdc 100644 --- a/docs/storage-management.asciidoc +++ b/docs/storage-management.asciidoc @@ -151,9 +151,17 @@ deleting data collected for specific services or customers, or deleting specific indices. Depending on your use case, -you can delete data periodically with {curator-ref-current}[Curator], -by using the {ref}/docs-delete-by-query.html[Delete By Query API], -or by using the {kibana-ref}/managing-indices.html[Kibana Index Management UI]. +you can delete data periodically with <>, +{curator-ref-current}[Curator], the {ref}/docs-delete-by-query.html[Delete By Query API], +or in the {kibana-ref}/managing-indices.html[Kibana Index Management UI]. + +[float] +[[delete-data-ilm]] +==== Delete data with ILM + +Index Lifecycle management (ILM) enables you to automate how you want to manage your indices over time. +You can base actions on factors such as shard size and performance requirements. +See <> to learn more. [float] [[delete-data-periodically]] diff --git a/docs/troubleshooting.asciidoc b/docs/troubleshooting.asciidoc index 1a51f9babb6..325d557c0f8 100644 --- a/docs/troubleshooting.asciidoc +++ b/docs/troubleshooting.asciidoc @@ -11,24 +11,27 @@ If you have issues installing or running APM Server, read the following tips: * <> -* <> * <> +* <> -//sets block macro for getting-help.asciidoc included in next section +Other sections in the documentation may also be helpful: + +* <> +* <> +* <> +* <> +* {apm-overview-ref-v}/agent-server-compatibility.html[Agent/Server compatibility matrix] -- include::common-problems.asciidoc[] - -[[getting-help]] -== Get help - -include::copied-from-beats/getting-help.asciidoc[] - -//sets block macro for debugging.asciidoc included in next section - [[enable-apm-server-debugging]] == Debug include::copied-from-beats/debugging.asciidoc[] + +[[getting-help]] +== Get help + +include::copied-from-beats/getting-help.asciidoc[] \ No newline at end of file From d60caf259e28e3d7707148af6266d0670555717f Mon Sep 17 00:00:00 2001 From: Brandon Morelli Date: Wed, 18 Sep 2019 16:11:34 +0200 Subject: [PATCH 3/6] docs: fix build --- docs/storage-management.asciidoc | 8 -------- 1 file changed, 8 deletions(-) diff --git a/docs/storage-management.asciidoc b/docs/storage-management.asciidoc index abb888e2cdc..83a658fc096 100644 --- a/docs/storage-management.asciidoc +++ b/docs/storage-management.asciidoc @@ -155,14 +155,6 @@ you can delete data periodically with <> to learn more. - [float] [[delete-data-periodically]] ==== Delete data periodically From 8b741be2cf978c1d543bd89b07802a933d3fbe39 Mon Sep 17 00:00:00 2001 From: Brandon Morelli Date: Wed, 18 Sep 2019 16:21:40 +0200 Subject: [PATCH 4/6] docs: fix new problem --- docs/storage-management.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/storage-management.asciidoc b/docs/storage-management.asciidoc index 83a658fc096..b95436409d4 100644 --- a/docs/storage-management.asciidoc +++ b/docs/storage-management.asciidoc @@ -151,7 +151,7 @@ deleting data collected for specific services or customers, or deleting specific indices. Depending on your use case, -you can delete data periodically with <>, +you can delete data periodically with {curator-ref-current}[Curator], the {ref}/docs-delete-by-query.html[Delete By Query API], or in the {kibana-ref}/managing-indices.html[Kibana Index Management UI]. From 35ed263c2dd812a7e9c25a01c2decc0a6e1741a8 Mon Sep 17 00:00:00 2001 From: Brandon Morelli Date: Wed, 18 Sep 2019 16:56:13 +0200 Subject: [PATCH 5/6] docs: final fix --- docs/copied-from-beats/command-reference.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/copied-from-beats/command-reference.asciidoc b/docs/copied-from-beats/command-reference.asciidoc index 5a823396817..37ea3727981 100644 --- a/docs/copied-from-beats/command-reference.asciidoc +++ b/docs/copied-from-beats/command-reference.asciidoc @@ -680,7 +680,7 @@ ifeval::["{beatname_lc}"!="filebeat"] {beatname_lc} setup --machine-learning {beatname_lc} setup --template ----- -endif::no_dashboards[] +endif::[] ifndef::apm-server[] ifdef::no_dashboards[] From 587891b6cf1ca491b5d4c2a5d9540bf43c8f9dfc Mon Sep 17 00:00:00 2001 From: Brandon Morelli Date: Thu, 19 Sep 2019 10:25:51 +0200 Subject: [PATCH 6/6] docs: add attribute --- docs/version.asciidoc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/version.asciidoc b/docs/version.asciidoc index 237615fb921..aa6ee3002c8 100644 --- a/docs/version.asciidoc +++ b/docs/version.asciidoc @@ -16,6 +16,7 @@ :node-branch: 2.x :py-branch: 4.x :ruby-branch: 2.x +:dotnet-branch: 1.x // Agent links :apm-py-ref-v: https://www.elastic.co/guide/en/apm/agent/python/{py-branch} @@ -24,3 +25,4 @@ :apm-ruby-ref-v: https://www.elastic.co/guide/en/apm/agent/ruby/{ruby-branch} :apm-java-ref-v: https://www.elastic.co/guide/en/apm/agent/java/{java-branch} :apm-go-ref-v: https://www.elastic.co/guide/en/apm/agent/go/{go-branch} +:apm-dotnet-ref-v: https://www.elastic.co/guide/en/apm/agent/dotnet/{dotnet-branch} \ No newline at end of file