From bc801bdb40bba019c8138972de5181eb78ceafed Mon Sep 17 00:00:00 2001 From: Colleen McGinnis Date: Mon, 2 Jun 2025 12:24:59 -0500 Subject: [PATCH 1/3] delete files from fleet and ea guide --- ...nt-policies-environment-variables.asciidoc | 6 - .../ingest-management/agent-policies.asciidoc | 562 - .../beats-agent-comparison.asciidoc | 346 - docs/en/ingest-management/commands.asciidoc | 1391 --- .../create-agent-policies-no-UI.asciidoc | 88 - .../ingest-management/data-streams.asciidoc | 1132 -- ...anced-kubernetes-managed-by-fleet.asciidoc | 110 - .../kerberos-shared-settings.asciidoc | 121 - .../authentication/ssl-settings.asciidoc | 496 - ...ic-agent-kubernetes-autodiscovery.asciidoc | 30 - ...ubernetes-conditions-autodiscover.asciidoc | 311 - .../kubernetes-hints-autodiscover.asciidoc | 430 - .../create-standalone-agent-policy.asciidoc | 102 - .../elastic-agent-configuration.asciidoc | 59 - .../elastic-agent-monitoring.asciidoc | 55 - ...elastic-agent-standalone-download.asciidoc | 56 - ...elastic-agent-standalone-features.asciidoc | 47 - .../elastic-agent-standalone-logging.asciidoc | 176 - .../configuration/env/container-envs.asciidoc | 180 - .../configuration/env/shared-env.asciidoc | 688 -- .../config-file-example-apache.asciidoc | 131 - .../config-file-example-nginx.asciidoc | 139 - .../examples/config-file-examples.asciidoc | 10 - .../inputs/input-configuration.asciidoc | 76 - .../configuration/inputs/inputs-list.asciidoc | 408 - .../simplified-input-configuration.asciidoc | 22 - .../outputs/output-configuration.asciidoc | 44 - .../outputs/output-elasticsearch.asciidoc | 711 -- .../outputs/output-kafka.asciidoc | 530 - .../outputs/output-logstash.asciidoc | 436 - .../outputs/output-shared-settings.asciidoc | 95 - .../providers/agent-provider.asciidoc | 32 - .../providers/docker-provider.asciidoc | 75 - .../elastic-agent-providers.asciidoc | 126 - .../providers/env-provider.asciidoc | 14 - .../providers/host-provider.asciidoc | 28 - .../providers/kubernetes-provider.asciidoc | 349 - ...ubernetes_leaderelection-provider.asciidoc | 90 - .../kubernetes_secrets-provider.asciidoc | 45 - .../providers/local-dynamic-provider.asciidoc | 45 - .../providers/local-provider.asciidoc | 12 - .../structure-config-file.asciidoc | 38 - .../elastic-agent-reference-yaml.asciidoc | 15 - .../yaml/elastic-agent-reference-yaml.yml | 377 - .../configuring-kubernetes-metadata.asciidoc | 119 - .../debug-standalone-elastic-agent.asciidoc | 220 - .../elastic-agent-capabilities.asciidoc | 170 - .../elastic-agent-conditions.asciidoc | 108 - .../elastic-agent-container.asciidoc | 425 - ...elastic-agent-debug-input-configs.asciidoc | 130 - .../elastic-agent-dynamic-inputs.asciidoc | 62 - .../elastic-agent-encryption.asciidoc | 29 - .../elastic-agent-functions.asciidoc | 237 - .../elastic-agent-unprivileged-mode.asciidoc | 268 - ...astic-agent-variable-substitution.asciidoc | 139 - ...bernetes-fleet-managed-agent-helm.asciidoc | 152 - ...-kubernetes-standalone-agent-helm.asciidoc | 290 - ...mple-standalone-monitor-nginx-ess.asciidoc | 280 - ...andalone-monitor-nginx-serverless.asciidoc | 285 - .../grant-access-to-elasticsearch.asciidoc | 158 - .../helm-example-fleet-metrics-dashboard.png | Bin 319521 -> 0 bytes ...-example-nodes-enrollment-confirmation.png | Bin 38122 -> 0 bytes .../helm-example-nodes-logs-and-metrics.png | Bin 26464 -> 0 bytes .../helm-example-nodes-metrics-dashboard.png | Bin 253105 -> 0 bytes .../helm-example-pods-metrics-dashboard.png | Bin 340490 -> 0 bytes .../ingest-pipeline-kubernetes.asciidoc | 83 - .../elastic-agent/install-agent-msi.asciidoc | 72 - ...nstall-elastic-agent-in-container.asciidoc | 32 - .../install-elastic-agent.asciidoc | 110 - .../install-fleet-managed-agent.asciidoc | 45 - ...stall-fleet-managed-elastic-agent.asciidoc | 150 - .../install-on-kubernetes-using-helm.asciidoc | 24 - .../install-standalone-elastic-agent.asciidoc | 87 - .../installation-layout.asciidoc | 6 - .../otel-agent-transform.asciidoc | 81 - .../elastic-agent/otel-agent.asciidoc | 12 - .../agent-tolerations.asciidoc | 15 - .../deploy-elastic-agent.asciidoc | 25 - .../deploy-kube-state-metrics.asciidoc | 15 - .../download-elastic-agent.asciidoc | 39 - .../kibana-fleet-data.asciidoc | 15 - .../running-on-aks-managed-by-fleet.asciidoc | 27 - .../running-on-eks-managed-by-fleet.asciidoc | 27 - .../running-on-gke-managed-by-fleet.asciidoc | 27 - ...ng-on-kubernetes-managed-by-fleet.asciidoc | 103 - .../running-on-kubernetes-standalone.asciidoc | 175 - .../scaling-on-kubernetes.asciidoc | 298 - .../start-stop-elastic-agent.asciidoc | 22 - .../uninstall-elastic-agent.asciidoc | 68 - .../upgrade-standalone-elastic-agent.asciidoc | 89 - .../fleet-agent-proxy-host-variables.asciidoc | 92 - .../fleet-agent-proxy-managed.asciidoc | 184 - ...leet-agent-proxy-package-registry.asciidoc | 26 - .../fleet-agent-proxy-standalone.asciidoc | 53 - .../fleet-agent-proxy-support.asciidoc | 30 - ...eet-agent-proxy-when-to-configure.asciidoc | 19 - .../fleet/add-fleet-server-cloud.asciidoc | 94 - ...d-fleet-server-kubernetes-content.asciidoc | 209 - .../add-fleet-server-kubernetes.asciidoc | 449 - .../fleet/add-fleet-server-mixed.asciidoc | 190 - .../fleet/add-fleet-server-on-prem.asciidoc | 263 - .../fleet/agent-health-status.asciidoc | 51 - .../fleet/air-gapped.asciidoc | 346 - .../fleet/api-generated/README.md | 41 - .../rules/.openapi-generator-ignore | 23 - .../rules/.openapi-generator/FILES | 1 - .../rules/.openapi-generator/VERSION | 1 - .../rules/fleet-apis-passthru.asciidoc | 9221 ----------------- .../api-generated/rules/fleet-apis.asciidoc | 10 - .../api-generated/template/index.mustache | 173 - docs/en/ingest-management/fleet/apis.asciidoc | 14 - .../diagrams/fleet-server-diagram.asciidoc | 93 - .../fleet/filter-agent-list-by-tags.asciidoc | 106 - .../fleet/fleet-api-docs.asciidoc | 422 - .../fleet/fleet-deployment-models.asciidoc | 126 - .../fleet/fleet-manage-agents.asciidoc | 36 - .../fleet/fleet-server-monitoring.asciidoc | 56 - .../fleet/fleet-server-scaling.asciidoc | 248 - .../fleet/fleet-server-secrets.asciidoc | 264 - .../fleet-settings-changing-outputs.asciidoc | 15 - ...eet-settings-output-elasticsearch.asciidoc | 355 - .../fleet-settings-output-kafka.asciidoc | 576 - .../fleet-settings-output-logstash.asciidoc | 237 - ...eet-settings-remote-elasticsearch.asciidoc | 72 - .../fleet/fleet-settings.asciidoc | 147 - .../en/ingest-management/fleet/fleet.asciidoc | 61 - .../images/add-fleet-server-advanced.png | Bin 85871 -> 0 bytes .../fleet/images/add-fleet-server.png | Bin 68686 -> 0 bytes .../fleet/images/agent-health-status.png | Bin 90685 -> 0 bytes .../images/collect-agent-diagnostics1.png | Bin 135801 -> 0 bytes .../images/collect-agent-diagnostics2.png | Bin 230232 -> 0 bytes .../fleet/images/dashboard-datastream01.png | Bin 159278 -> 0 bytes .../fleet/images/datastream-namespace.png | Bin 257567 -> 0 bytes .../images/elastic-agent-status-rule.png | Bin 102377 -> 0 bytes .../images/elastic-cloud-agent-policy.png | Bin 82943 -> 0 bytes .../fleet/images/fleet-add-output-button.png | Bin 39936 -> 0 bytes .../fleet/images/fleet-epr-proxy.png | Bin 21062 -> 0 bytes .../fleet/images/fleet-proxy-settings-ui.png | Bin 83502 -> 0 bytes .../images/fleet-server-agent-policy-page.png | Bin 185497 -> 0 bytes .../images/fleet-server-cloud-deployment.png | Bin 131185 -> 0 bytes .../images/fleet-server-configuration.png | Bin 54920 -> 0 bytes .../fleet-server-on-prem-deployment.png | Bin 150431 -> 0 bytes .../images/fleet-server-on-prem-es-cloud.png | Bin 160036 -> 0 bytes .../integrations-server-hosted-container.png | Bin 136311 -> 0 bytes .../fleet/images/upgrade-agent-custom.png | Bin 33194 -> 0 bytes .../fleet/migrate-elastic-agent.asciidoc | 221 - .../fleet/monitor-elastic-agent.asciidoc | 337 - ...-elastic-agent-enrollment-timeout.asciidoc | 86 - .../fleet/set-inactivity-timeout.asciidoc | 33 - .../fleet/unenroll-elastic-agent.asciidoc | 23 - .../fleet/upgrade-elastic-agent.asciidoc | 313 - .../images/add-agent-to-hosts.png | Bin 114458 -> 0 bytes .../images/add-fleet-server-to-policy.png | Bin 54066 -> 0 bytes .../images/add-integration-standalone.png | Bin 138068 -> 0 bytes .../images/add-integration.png | Bin 138406 -> 0 bytes .../images/add-logstash-output.png | Bin 231566 -> 0 bytes .../images/add-processor.png | Bin 112715 -> 0 bytes .../images/add-remove-tags.png | Bin 131573 -> 0 bytes .../images/add_resource_metadata.png | Bin 85824 -> 0 bytes .../images/agent-activity.png | Bin 83387 -> 0 bytes .../images/agent-architecture.png | Bin 128069 -> 0 bytes .../agent-detail-integrations-health.png | Bin 140177 -> 0 bytes .../images/agent-detail-overview.png | Bin 183124 -> 0 bytes .../images/agent-metrics-dashboard.png | Bin 186356 -> 0 bytes .../images/agent-monitoring-assets.png | Bin 50667 -> 0 bytes .../images/agent-monitoring-settings.png | Bin 99364 -> 0 bytes .../images/agent-output-settings.png | Bin 31816 -> 0 bytes .../images/agent-policy-custom-field.png | Bin 24028 -> 0 bytes .../images/agent-privilege-mode.png | Bin 92852 -> 0 bytes .../agent-proxy-server-managed-deployment.png | Bin 49562 -> 0 bytes .../images/agent-proxy-server.png | Bin 41004 -> 0 bytes .../images/agent-set-logging-level.png | Bin 311322 -> 0 bytes .../images/agent-status-diagram.png | Bin 143762 -> 0 bytes .../images/agent-status-filter.png | Bin 94794 -> 0 bytes .../ingest-management/images/agent-tags.png | Bin 112544 -> 0 bytes .../images/apply-agent-policy.png | Bin 129102 -> 0 bytes docs/en/ingest-management/images/ca-certs.png | Bin 4445 -> 0 bytes docs/en/ingest-management/images/ca.png | Bin 4077 -> 0 bytes .../ingest-management/images/client-certs.png | Bin 5035 -> 0 bytes .../images/component-templates-list.png | Bin 205239 -> 0 bytes .../ingest-management/images/copy-api-key.png | Bin 30739 -> 0 bytes .../images/create-agent-policy.png | Bin 108125 -> 0 bytes .../images/create-component-template.png | Bin 804042 -> 0 bytes .../images/create-index-template.png | Bin 1722089 -> 0 bytes .../images/create-standalone-agent-role.png | Bin 78203 -> 0 bytes .../ingest-management/images/create-token.png | Bin 113012 -> 0 bytes .../images/data-stream-info.png | Bin 248031 -> 0 bytes .../images/data-stream-overview.png | Bin 262785 -> 0 bytes .../images/download-agent-policy.png | Bin 597676 -> 0 bytes ...astic-agent-edit-proxy-secure-settings.png | Bin 68841 -> 0 bytes ...c-agent-proxy-edit-agent-binary-source.png | Bin 85125 -> 0 bytes .../elastic-agent-proxy-edit-fleet-server.png | Bin 104538 -> 0 bytes .../elastic-agent-proxy-edit-output.png | Bin 97943 -> 0 bytes .../images/elastic-agent-proxy-edit-proxy.png | Bin 145803 -> 0 bytes .../elastic-agent-proxy-gateway-secure.png | Bin 117633 -> 0 bytes .../ingest-management/images/fleet-agents.png | Bin 266377 -> 0 bytes .../images/fleet-policy-hidden-secret.png | Bin 51518 -> 0 bytes .../images/fleet-proxy-server.png | Bin 28471 -> 0 bytes .../images/fleet-server-certs.png | Bin 6264 -> 0 bytes .../images/fleet-server-hosted-container.png | Bin 58401 -> 0 bytes .../images/fleet-server-prompt-managed.png | Bin 404074 -> 0 bytes .../ingest-management/images/green-check.svg | 1 - .../ingest-management/images/gsub_cronjob.png | Bin 93810 -> 0 bytes .../images/gsub_deployment.png | Bin 94714 -> 0 bytes .../images/guide-add-agent-standalone01.png | Bin 80505 -> 0 bytes .../images/guide-add-nginx-integration.png | Bin 94912 -> 0 bytes .../images/guide-agent-logs-flowing.png | Bin 299486 -> 0 bytes .../images/guide-agent-metrics-flowing.png | Bin 902499 -> 0 bytes .../images/guide-agent-policies.png | Bin 896673 -> 0 bytes .../images/guide-create-agent-policy.png | Bin 54072 -> 0 bytes .../images/guide-create-first-deployment.png | Bin 50551 -> 0 bytes .../images/guide-install-agent-on-host.png | Bin 67182 -> 0 bytes .../images/guide-integrations-page.png | Bin 100381 -> 0 bytes .../images/guide-nginx-browser-breakdown.png | Bin 37022 -> 0 bytes .../images/guide-nginx-integration-added.png | Bin 31331 -> 0 bytes .../images/guide-nginx-logs-dashboard.png | Bin 310690 -> 0 bytes .../images/guide-nginx-policy.png | Bin 46425 -> 0 bytes .../images/guide-nginx-welcome.png | Bin 23642 -> 0 bytes .../images/guide-sign-up-trial.png | Bin 38551 -> 0 bytes .../images/guide-system-metrics-dashboard.png | Bin 130778 -> 0 bytes .../images/index-template-system-auth.png | Bin 579524 -> 0 bytes .../images/ingest_pipeline_custom_k8s.png | Bin 142451 -> 0 bytes .../images/integration-root-requirement.png | Bin 57157 -> 0 bytes .../ingest-management/images/integrations.png | Bin 120597 -> 0 bytes .../ingest-management/images/k8skibanaUI.png | Bin 319407 -> 0 bytes .../ingest-management/images/k8sscaling.png | Bin 115439 -> 0 bytes .../images/kibana-agent-flyout.png | Bin 98168 -> 0 bytes .../images/kibana-fleet-agents.png | Bin 90379 -> 0 bytes .../images/kibana-fleet-datasets.png | Bin 226082 -> 0 bytes .../images/kibana-fleet-datastreams.png | Bin 149883 -> 0 bytes .../images/kibana-fleet-enable.png | Bin 72172 -> 0 bytes .../images/kibana-fleet-enroll.png | Bin 130719 -> 0 bytes .../images/kibana-fleet-log-levels.png | Bin 148651 -> 0 bytes .../kibana-fleet-policies-default-yaml.png | Bin 168133 -> 0 bytes .../images/kibana-fleet-privileges-all.png | Bin 196407 -> 0 bytes .../images/kibana-fleet-privileges-read.png | Bin 196934 -> 0 bytes .../images/kibana-fleet-privileges.png | Bin 87548 -> 0 bytes ...st-manager-configurations-default-yaml.png | Bin 172339 -> 0 bytes ...st-manager-integrations-list-installed.png | Bin 130080 -> 0 bytes .../images/kubernetes_metadata.png | Bin 197044 -> 0 bytes .../images/logstash-certs.png | Bin 6247 -> 0 bytes .../images/logstash-output-certs.png | Bin 138450 -> 0 bytes .../images/migrate-agent-agents-offline.png | Bin 117193 -> 0 bytes .../images/migrate-agent-deployment-id.png | Bin 43896 -> 0 bytes .../migrate-agent-elasticsearch-output.png | Bin 38056 -> 0 bytes .../migrate-agent-fleet-server-host.png | Bin 71694 -> 0 bytes .../migrate-agent-host-output-settings.png | Bin 141606 -> 0 bytes .../migrate-agent-install-command-output.png | Bin 58735 -> 0 bytes .../images/migrate-agent-install-command.png | Bin 65110 -> 0 bytes .../images/migrate-agent-new-deployment.png | Bin 193836 -> 0 bytes .../migrate-agent-newly-enrolled-agents.png | Bin 75393 -> 0 bytes .../images/migrate-agent-policy-settings.png | Bin 39070 -> 0 bytes .../images/migrate-agent-take-snapshot.png | Bin 199593 -> 0 bytes .../migration-add-integration-policy.png | Bin 105138 -> 0 bytes .../migration-add-nginx-integration.png | Bin 191601 -> 0 bytes .../images/migration-add-processor.png | Bin 77206 -> 0 bytes .../images/migration-agent-data-streams01.png | Bin 142091 -> 0 bytes .../images/migration-agent-details01.png | Bin 95561 -> 0 bytes .../migration-agent-status-healthy01.png | Bin 90726 -> 0 bytes .../images/migration-event-from-agent.png | Bin 52874 -> 0 bytes .../images/migration-event-from-filebeat.png | Bin 57969 -> 0 bytes .../migration-index-lifecycle-policies.png | Bin 113471 -> 0 bytes .../images/migration-preserve-raw-event.png | Bin 28336 -> 0 bytes .../images/mutual-tls-cloud-proxy.png | Bin 35374 -> 0 bytes .../images/mutual-tls-cloud.png | Bin 32169 -> 0 bytes .../images/mutual-tls-fs-onprem-proxy.png | Bin 34295 -> 0 bytes .../images/mutual-tls-fs-onprem.png | Bin 31985 -> 0 bytes .../images/mutual-tls-on-prem.png | Bin 32928 -> 0 bytes .../mutual-tls-onprem-advanced-yaml.png | Bin 103486 -> 0 bytes .../ingest-management/images/pod-latency.png | Bin 132529 -> 0 bytes .../privileged-and-unprivileged-agents.png | Bin 35617 -> 0 bytes .../images/proxy_url_settings.png | Bin 8402 -> 0 bytes docs/en/ingest-management/images/red-x.svg | 1 - .../images/review-component-template01.png | Bin 180474 -> 0 bytes .../images/review-component-template02.png | Bin 207124 -> 0 bytes .../ingest-management/images/revoke-token.png | Bin 54349 -> 0 bytes .../images/rolling-agent-upgrade.png | Bin 94512 -> 0 bytes ...ot-integration-and-unprivileged-agents.png | Bin 49871 -> 0 bytes .../images/schedule-upgrade.png | Bin 130994 -> 0 bytes .../selected-agent-metrics-dashboard.png | Bin 176267 -> 0 bytes .../ingest-management/images/show-token.png | Bin 55774 -> 0 bytes .../en/ingest-management/images/state-pod.png | Bin 147027 -> 0 bytes .../images/system-managed.png | Bin 226328 -> 0 bytes .../images/tls-overview-mutual-all.jpg | Bin 169133 -> 0 bytes .../images/tls-overview-mutual-fs-agent.png | Bin 43481 -> 0 bytes .../images/tls-overview-mutual-fs-es.png | Bin 39604 -> 0 bytes .../images/tls-overview-oneway-all.jpg | Bin 109030 -> 0 bytes .../images/tls-overview-oneway-fs-agent.png | Bin 37789 -> 0 bytes .../images/tls-overview-oneway-fs-es.png | Bin 30496 -> 0 bytes .../images/unified-view-selector.png | Bin 15218 -> 0 bytes .../images/unprivileged-agent-warning.png | Bin 133044 -> 0 bytes .../images/upgrade-available-indicator.png | Bin 23209 -> 0 bytes .../images/upgrade-detailed-state01.png | Bin 38031 -> 0 bytes .../images/upgrade-detailed-state02.png | Bin 34912 -> 0 bytes .../images/upgrade-failure.png | Bin 115293 -> 0 bytes ...ade-integration-policies-automatically.png | Bin 73618 -> 0 bytes .../images/upgrade-integration.png | Bin 78687 -> 0 bytes .../images/upgrade-non-detailed-old.png | Bin 44584 -> 0 bytes .../images/upgrade-non-detailed.png | Bin 26914 -> 0 bytes .../images/upgrade-package-policy.png | Bin 76344 -> 0 bytes .../images/upgrade-policy-editor.png | Bin 106246 -> 0 bytes .../images/upgrade-resolve-conflicts.png | Bin 288630 -> 0 bytes .../images/upgrade-single-agent.png | Bin 93068 -> 0 bytes .../images/upgrade-states.png | Bin 204902 -> 0 bytes .../images/upgrade-status.png | Bin 92129 -> 0 bytes .../images/upgrade-view-previous-config.png | Bin 163316 -> 0 bytes .../images/user-settings.png | Bin 66444 -> 0 bytes .../images/view-agent-logs.png | Bin 162964 -> 0 bytes docs/en/ingest-management/index.asciidoc | 246 - .../add-integration-to-policy.asciidoc | 44 - ...edit-or-delete-integration-policy.asciidoc | 23 - .../install-integration-assets.asciidoc | 76 - .../integration-level-outputs.asciidoc | 46 - ...ntegrations-assets-best-practices.asciidoc | 90 - .../integrations/integrations.asciidoc | 63 - .../managed-integrations-content.asciidoc | 20 - .../integrations/package-signatures.asciidoc | 68 - .../integrations/upgrade-integration.asciidoc | 161 - .../view-integration-assets.asciidoc | 20 - .../view-integration-policies.asciidoc | 18 - .../migrate-auditbeat-to-agent.asciidoc | 131 - .../migrate-beats-to-agent.asciidoc | 479 - .../override-policy-settings.asciidoc | 30 - docs/en/ingest-management/overview.asciidoc | 181 - .../processors/indexers-and-matchers.asciidoc | 129 - .../processor-add_cloud_metadata.asciidoc | 225 - ...ocessor-add_cloudfoundry_metadata.asciidoc | 109 - .../processor-add_docker_metadata.asciidoc | 122 - .../processors/processor-add_fields.asciidoc | 73 - .../processor-add_host_metadata.asciidoc | 136 - .../processors/processor-add_id.asciidoc | 36 - ...processor-add_kubernetes_metadata.asciidoc | 219 - .../processors/processor-add_labels.asciidoc | 61 - .../processors/processor-add_locale.asciidoc | 48 - .../processor-add_network_direction.asciidoc | 54 - .../processor-add_nomad_metadata.asciidoc | 207 - .../processor-add_observer_metadata.asciidoc | 119 - .../processor-add_process_metadata.asciidoc | 125 - .../processors/processor-add_tags.asciidoc | 50 - .../processors/processor-communityid.asciidoc | 90 - .../processors/processor-convert.asciidoc | 67 - .../processors/processor-copy_fields.asciidoc | 69 - .../processor-decode_base64_field.asciidoc | 60 - .../processors/processor-decode_cef.asciidoc | 75 - .../processor-decode_csv_fields.asciidoc | 73 - .../processor-decode_duration.asciidoc | 31 - .../processor-decode_json_fields.asciidoc | 78 - .../processors/processor-decode_xml.asciidoc | 133 - .../processor-decode_xml_wineventlog.asciidoc | 190 - .../processor-decompress_gzip_field.asciidoc | 61 - .../processor-detect_mime_type.asciidoc | 50 - .../processors/processor-dissect.asciidoc | 129 - .../processors/processor-dns.asciidoc | 144 - .../processors/processor-drop_event.asciidoc | 24 - .../processors/processor-drop_fields.asciidoc | 53 - .../processor-extract_array.asciidoc | 73 - .../processors/processor-fingerprint.asciidoc | 63 - .../processor-include_fields.asciidoc | 37 - .../processors/processor-move_fields.asciidoc | 97 - .../processor-parse_aws_vpc_flow_log.asciidoc | 263 - .../processors/processor-rate_limit.asciidoc | 63 - .../processor-registered_domain.asciidoc | 79 - .../processors/processor-rename.asciidoc | 69 - .../processors/processor-replace.asciidoc | 70 - .../processors/processor-script.asciidoc | 191 - .../processors/processor-syntax.asciidoc | 326 - .../processors/processor-syslog.asciidoc | 156 - .../processors/processor-timestamp.asciidoc | 113 - .../processor-translate_sid.asciidoc | 80 - .../processor-truncate_fields.asciidoc | 65 - .../processors/processor-urldecode.asciidoc | 60 - .../processors/processors-list.asciidoc | 89 - .../processors/processors.asciidoc | 152 - .../ingest-management/quick-starts.asciidoc | 8 - docs/en/ingest-management/redirects.asciidoc | 21 - .../release-notes/release-notes-8.10.asciidoc | 636 -- .../release-notes/release-notes-8.11.asciidoc | 808 -- .../release-notes/release-notes-8.12.asciidoc | 776 -- .../release-notes/release-notes-8.13.asciidoc | 551 - .../release-notes/release-notes-8.14.asciidoc | 365 - .../release-notes/release-notes-8.15.asciidoc | 527 - .../release-notes/release-notes-8.16.asciidoc | 492 - .../release-notes/release-notes-8.17.asciidoc | 348 - .../release-notes/release-notes-8.18.asciidoc | 229 - .../release-notes/release-notes-8.3.asciidoc | 300 - .../release-notes/release-notes-8.4.asciidoc | 350 - .../release-notes/release-notes-8.5.asciidoc | 342 - .../release-notes/release-notes-8.6.asciidoc | 682 -- .../release-notes/release-notes-8.7.asciidoc | 333 - .../release-notes/release-notes-8.8.asciidoc | 392 - .../release-notes/release-notes-8.9.asciidoc | 523 - .../security/certificates-rotation.asciidoc | 200 - .../security/certificates.asciidoc | 334 - .../security/enrollment-tokens.asciidoc | 94 - .../fleet-roles-and-privileges.asciidoc | 63 - .../security/generate-certificates.asciidoc | 12 - .../images/certificate-rotation-agent-es.png | Bin 114546 -> 0 bytes .../security/logstash-certificates.asciidoc | 273 - .../security/mutual-tls.asciidoc | 249 - .../security/tls-overview.asciidoc | 83 - .../serverless-restrictions.asciidoc | 43 - .../standalone-note.asciidoc | 3 - .../add-fleet-server/content.asciidoc | 94 - .../add-fleet-server/widget.asciidoc | 40 - .../tab-widgets/code.asciidoc | 166 - .../tab-widgets/download-widget.asciidoc | 95 - .../tab-widgets/download.asciidoc | 109 - .../tab-widgets/enroll-widget.asciidoc | 0 .../tab-widgets/event-logging-widget.asciidoc | 95 - .../tab-widgets/event-logging.asciidoc | 29 - .../install-layout-widget.asciidoc | 95 - .../tab-widgets/install-layout.asciidoc | 81 - .../tab-widgets/install-widget.asciidoc | 94 - .../tab-widgets/install.asciidoc | 86 - .../tab-widgets/logging-widget.asciidoc | 95 - .../tab-widgets/logging.asciidoc | 29 - .../tab-widgets/prereq-widget.asciidoc | 40 - .../tab-widgets/prereq.asciidoc | 67 - .../remove-endpoint-files/content.asciidoc | 30 - .../remove-endpoint-files/widget.asciidoc | 58 - .../run-agent-image/content.asciidoc | 44 - .../run-agent-image/widget.asciidoc | 40 - .../run-standalone-widget.asciidoc | 94 - .../tab-widgets/run-standalone.asciidoc | 65 - .../tab-widgets/start-widget.asciidoc | 94 - .../tab-widgets/start.asciidoc | 57 - .../tab-widgets/stop-widget.asciidoc | 94 - .../tab-widgets/stop.asciidoc | 68 - .../tab-widgets/uninstall-widget.asciidoc | 58 - .../tab-widgets/uninstall.asciidoc | 39 - .../tab-widgets/upgrade-fleet-widget.asciidoc | 40 - .../tab-widgets/upgrade-fleet.asciidoc | 84 - .../troubleshooting/faq.asciidoc | 285 - .../images/collect-agent-diagnostics.png | Bin 264477 -> 0 bytes .../troubleshooting-intro.asciidoc | 6 - .../troubleshooting/troubleshooting.asciidoc | 981 -- 436 files changed, 49443 deletions(-) delete mode 100644 docs/en/ingest-management/agent-policies-environment-variables.asciidoc delete mode 100644 docs/en/ingest-management/agent-policies.asciidoc delete mode 100644 docs/en/ingest-management/beats-agent-comparison.asciidoc delete mode 100644 docs/en/ingest-management/commands.asciidoc delete mode 100644 docs/en/ingest-management/create-agent-policies-no-UI.asciidoc delete mode 100644 docs/en/ingest-management/data-streams.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/advanced-kubernetes-managed-by-fleet.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/authentication/kerberos-shared-settings.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/authentication/ssl-settings.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/autodiscovery/elastic-agent-kubernetes-autodiscovery.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/autodiscovery/kubernetes-conditions-autodiscover.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/autodiscovery/kubernetes-hints-autodiscover.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/create-standalone-agent-policy.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/elastic-agent-configuration.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/elastic-agent-monitoring.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/elastic-agent-standalone-download.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/elastic-agent-standalone-features.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/elastic-agent-standalone-logging.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/env/container-envs.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/env/shared-env.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/examples/config-file-example-apache.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/examples/config-file-example-nginx.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/examples/config-file-examples.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/inputs/input-configuration.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/inputs/inputs-list.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/inputs/simplified-input-configuration.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/outputs/output-configuration.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/outputs/output-elasticsearch.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/outputs/output-kafka.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/outputs/output-logstash.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/outputs/output-shared-settings.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/providers/agent-provider.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/providers/docker-provider.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/providers/elastic-agent-providers.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/providers/env-provider.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/providers/host-provider.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/providers/kubernetes-provider.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/providers/kubernetes_leaderelection-provider.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/providers/kubernetes_secrets-provider.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/providers/local-dynamic-provider.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/providers/local-provider.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/structure-config-file.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/yaml/elastic-agent-reference-yaml.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/configuration/yaml/elastic-agent-reference-yaml.yml delete mode 100644 docs/en/ingest-management/elastic-agent/configuring-kubernetes-metadata.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/debug-standalone-elastic-agent.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/elastic-agent-capabilities.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/elastic-agent-conditions.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/elastic-agent-container.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/elastic-agent-debug-input-configs.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/elastic-agent-dynamic-inputs.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/elastic-agent-encryption.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/elastic-agent-functions.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/elastic-agent-unprivileged-mode.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/elastic-agent-variable-substitution.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/example-kubernetes-fleet-managed-agent-helm.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/example-kubernetes-standalone-agent-helm.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/example-standalone-monitor-nginx-ess.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/example-standalone-monitor-nginx-serverless.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/grant-access-to-elasticsearch.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/images/helm-example-fleet-metrics-dashboard.png delete mode 100644 docs/en/ingest-management/elastic-agent/images/helm-example-nodes-enrollment-confirmation.png delete mode 100644 docs/en/ingest-management/elastic-agent/images/helm-example-nodes-logs-and-metrics.png delete mode 100644 docs/en/ingest-management/elastic-agent/images/helm-example-nodes-metrics-dashboard.png delete mode 100644 docs/en/ingest-management/elastic-agent/images/helm-example-pods-metrics-dashboard.png delete mode 100644 docs/en/ingest-management/elastic-agent/ingest-pipeline-kubernetes.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/install-agent-msi.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/install-elastic-agent-in-container.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/install-elastic-agent.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/install-fleet-managed-agent.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/install-fleet-managed-elastic-agent.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/install-on-kubernetes-using-helm.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/install-standalone-elastic-agent.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/installation-layout.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/otel-agent-transform.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/otel-agent.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/run-container-common/agent-tolerations.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/run-container-common/deploy-elastic-agent.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/run-container-common/deploy-kube-state-metrics.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/run-container-common/download-elastic-agent.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/run-container-common/kibana-fleet-data.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/running-on-aks-managed-by-fleet.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/running-on-eks-managed-by-fleet.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/running-on-gke-managed-by-fleet.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/running-on-kubernetes-managed-by-fleet.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/running-on-kubernetes-standalone.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/scaling-on-kubernetes.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/start-stop-elastic-agent.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/uninstall-elastic-agent.asciidoc delete mode 100644 docs/en/ingest-management/elastic-agent/upgrade-standalone-elastic-agent.asciidoc delete mode 100644 docs/en/ingest-management/fleet-agent-proxy-host-variables.asciidoc delete mode 100644 docs/en/ingest-management/fleet-agent-proxy-managed.asciidoc delete mode 100644 docs/en/ingest-management/fleet-agent-proxy-package-registry.asciidoc delete mode 100644 docs/en/ingest-management/fleet-agent-proxy-standalone.asciidoc delete mode 100644 docs/en/ingest-management/fleet-agent-proxy-support.asciidoc delete mode 100644 docs/en/ingest-management/fleet-agent-proxy-when-to-configure.asciidoc delete mode 100644 docs/en/ingest-management/fleet/add-fleet-server-cloud.asciidoc delete mode 100644 docs/en/ingest-management/fleet/add-fleet-server-kubernetes-content.asciidoc delete mode 100644 docs/en/ingest-management/fleet/add-fleet-server-kubernetes.asciidoc delete mode 100644 docs/en/ingest-management/fleet/add-fleet-server-mixed.asciidoc delete mode 100644 docs/en/ingest-management/fleet/add-fleet-server-on-prem.asciidoc delete mode 100644 docs/en/ingest-management/fleet/agent-health-status.asciidoc delete mode 100644 docs/en/ingest-management/fleet/air-gapped.asciidoc delete mode 100644 docs/en/ingest-management/fleet/api-generated/README.md delete mode 100644 docs/en/ingest-management/fleet/api-generated/rules/.openapi-generator-ignore delete mode 100644 docs/en/ingest-management/fleet/api-generated/rules/.openapi-generator/FILES delete mode 100644 docs/en/ingest-management/fleet/api-generated/rules/.openapi-generator/VERSION delete mode 100644 docs/en/ingest-management/fleet/api-generated/rules/fleet-apis-passthru.asciidoc delete mode 100644 docs/en/ingest-management/fleet/api-generated/rules/fleet-apis.asciidoc delete mode 100644 docs/en/ingest-management/fleet/api-generated/template/index.mustache delete mode 100644 docs/en/ingest-management/fleet/apis.asciidoc delete mode 100644 docs/en/ingest-management/fleet/diagrams/fleet-server-diagram.asciidoc delete mode 100644 docs/en/ingest-management/fleet/filter-agent-list-by-tags.asciidoc delete mode 100644 docs/en/ingest-management/fleet/fleet-api-docs.asciidoc delete mode 100644 docs/en/ingest-management/fleet/fleet-deployment-models.asciidoc delete mode 100644 docs/en/ingest-management/fleet/fleet-manage-agents.asciidoc delete mode 100644 docs/en/ingest-management/fleet/fleet-server-monitoring.asciidoc delete mode 100644 docs/en/ingest-management/fleet/fleet-server-scaling.asciidoc delete mode 100644 docs/en/ingest-management/fleet/fleet-server-secrets.asciidoc delete mode 100644 docs/en/ingest-management/fleet/fleet-settings-changing-outputs.asciidoc delete mode 100644 docs/en/ingest-management/fleet/fleet-settings-output-elasticsearch.asciidoc delete mode 100644 docs/en/ingest-management/fleet/fleet-settings-output-kafka.asciidoc delete mode 100644 docs/en/ingest-management/fleet/fleet-settings-output-logstash.asciidoc delete mode 100644 docs/en/ingest-management/fleet/fleet-settings-remote-elasticsearch.asciidoc delete mode 100644 docs/en/ingest-management/fleet/fleet-settings.asciidoc delete mode 100644 docs/en/ingest-management/fleet/fleet.asciidoc delete mode 100644 docs/en/ingest-management/fleet/images/add-fleet-server-advanced.png delete mode 100644 docs/en/ingest-management/fleet/images/add-fleet-server.png delete mode 100644 docs/en/ingest-management/fleet/images/agent-health-status.png delete mode 100644 docs/en/ingest-management/fleet/images/collect-agent-diagnostics1.png delete mode 100644 docs/en/ingest-management/fleet/images/collect-agent-diagnostics2.png delete mode 100644 docs/en/ingest-management/fleet/images/dashboard-datastream01.png delete mode 100644 docs/en/ingest-management/fleet/images/datastream-namespace.png delete mode 100644 docs/en/ingest-management/fleet/images/elastic-agent-status-rule.png delete mode 100644 docs/en/ingest-management/fleet/images/elastic-cloud-agent-policy.png delete mode 100644 docs/en/ingest-management/fleet/images/fleet-add-output-button.png delete mode 100644 docs/en/ingest-management/fleet/images/fleet-epr-proxy.png delete mode 100644 docs/en/ingest-management/fleet/images/fleet-proxy-settings-ui.png delete mode 100644 docs/en/ingest-management/fleet/images/fleet-server-agent-policy-page.png delete mode 100644 docs/en/ingest-management/fleet/images/fleet-server-cloud-deployment.png delete mode 100644 docs/en/ingest-management/fleet/images/fleet-server-configuration.png delete mode 100644 docs/en/ingest-management/fleet/images/fleet-server-on-prem-deployment.png delete mode 100644 docs/en/ingest-management/fleet/images/fleet-server-on-prem-es-cloud.png delete mode 100644 docs/en/ingest-management/fleet/images/integrations-server-hosted-container.png delete mode 100644 docs/en/ingest-management/fleet/images/upgrade-agent-custom.png delete mode 100644 docs/en/ingest-management/fleet/migrate-elastic-agent.asciidoc delete mode 100644 docs/en/ingest-management/fleet/monitor-elastic-agent.asciidoc delete mode 100644 docs/en/ingest-management/fleet/set-elastic-agent-enrollment-timeout.asciidoc delete mode 100644 docs/en/ingest-management/fleet/set-inactivity-timeout.asciidoc delete mode 100644 docs/en/ingest-management/fleet/unenroll-elastic-agent.asciidoc delete mode 100644 docs/en/ingest-management/fleet/upgrade-elastic-agent.asciidoc delete mode 100644 docs/en/ingest-management/images/add-agent-to-hosts.png delete mode 100644 docs/en/ingest-management/images/add-fleet-server-to-policy.png delete mode 100644 docs/en/ingest-management/images/add-integration-standalone.png delete mode 100644 docs/en/ingest-management/images/add-integration.png delete mode 100644 docs/en/ingest-management/images/add-logstash-output.png delete mode 100644 docs/en/ingest-management/images/add-processor.png delete mode 100644 docs/en/ingest-management/images/add-remove-tags.png delete mode 100644 docs/en/ingest-management/images/add_resource_metadata.png delete mode 100644 docs/en/ingest-management/images/agent-activity.png delete mode 100644 docs/en/ingest-management/images/agent-architecture.png delete mode 100644 docs/en/ingest-management/images/agent-detail-integrations-health.png delete mode 100644 docs/en/ingest-management/images/agent-detail-overview.png delete mode 100644 docs/en/ingest-management/images/agent-metrics-dashboard.png delete mode 100644 docs/en/ingest-management/images/agent-monitoring-assets.png delete mode 100644 docs/en/ingest-management/images/agent-monitoring-settings.png delete mode 100644 docs/en/ingest-management/images/agent-output-settings.png delete mode 100644 docs/en/ingest-management/images/agent-policy-custom-field.png delete mode 100644 docs/en/ingest-management/images/agent-privilege-mode.png delete mode 100644 docs/en/ingest-management/images/agent-proxy-server-managed-deployment.png delete mode 100644 docs/en/ingest-management/images/agent-proxy-server.png delete mode 100644 docs/en/ingest-management/images/agent-set-logging-level.png delete mode 100644 docs/en/ingest-management/images/agent-status-diagram.png delete mode 100644 docs/en/ingest-management/images/agent-status-filter.png delete mode 100644 docs/en/ingest-management/images/agent-tags.png delete mode 100644 docs/en/ingest-management/images/apply-agent-policy.png delete mode 100644 docs/en/ingest-management/images/ca-certs.png delete mode 100644 docs/en/ingest-management/images/ca.png delete mode 100644 docs/en/ingest-management/images/client-certs.png delete mode 100644 docs/en/ingest-management/images/component-templates-list.png delete mode 100644 docs/en/ingest-management/images/copy-api-key.png delete mode 100644 docs/en/ingest-management/images/create-agent-policy.png delete mode 100644 docs/en/ingest-management/images/create-component-template.png delete mode 100644 docs/en/ingest-management/images/create-index-template.png delete mode 100644 docs/en/ingest-management/images/create-standalone-agent-role.png delete mode 100644 docs/en/ingest-management/images/create-token.png delete mode 100644 docs/en/ingest-management/images/data-stream-info.png delete mode 100644 docs/en/ingest-management/images/data-stream-overview.png delete mode 100644 docs/en/ingest-management/images/download-agent-policy.png delete mode 100644 docs/en/ingest-management/images/elastic-agent-edit-proxy-secure-settings.png delete mode 100644 docs/en/ingest-management/images/elastic-agent-proxy-edit-agent-binary-source.png delete mode 100644 docs/en/ingest-management/images/elastic-agent-proxy-edit-fleet-server.png delete mode 100644 docs/en/ingest-management/images/elastic-agent-proxy-edit-output.png delete mode 100644 docs/en/ingest-management/images/elastic-agent-proxy-edit-proxy.png delete mode 100644 docs/en/ingest-management/images/elastic-agent-proxy-gateway-secure.png delete mode 100644 docs/en/ingest-management/images/fleet-agents.png delete mode 100644 docs/en/ingest-management/images/fleet-policy-hidden-secret.png delete mode 100644 docs/en/ingest-management/images/fleet-proxy-server.png delete mode 100644 docs/en/ingest-management/images/fleet-server-certs.png delete mode 100644 docs/en/ingest-management/images/fleet-server-hosted-container.png delete mode 100644 docs/en/ingest-management/images/fleet-server-prompt-managed.png delete mode 100644 docs/en/ingest-management/images/green-check.svg delete mode 100644 docs/en/ingest-management/images/gsub_cronjob.png delete mode 100644 docs/en/ingest-management/images/gsub_deployment.png delete mode 100644 docs/en/ingest-management/images/guide-add-agent-standalone01.png delete mode 100644 docs/en/ingest-management/images/guide-add-nginx-integration.png delete mode 100644 docs/en/ingest-management/images/guide-agent-logs-flowing.png delete mode 100644 docs/en/ingest-management/images/guide-agent-metrics-flowing.png delete mode 100644 docs/en/ingest-management/images/guide-agent-policies.png delete mode 100644 docs/en/ingest-management/images/guide-create-agent-policy.png delete mode 100644 docs/en/ingest-management/images/guide-create-first-deployment.png delete mode 100644 docs/en/ingest-management/images/guide-install-agent-on-host.png delete mode 100644 docs/en/ingest-management/images/guide-integrations-page.png delete mode 100644 docs/en/ingest-management/images/guide-nginx-browser-breakdown.png delete mode 100644 docs/en/ingest-management/images/guide-nginx-integration-added.png delete mode 100644 docs/en/ingest-management/images/guide-nginx-logs-dashboard.png delete mode 100644 docs/en/ingest-management/images/guide-nginx-policy.png delete mode 100644 docs/en/ingest-management/images/guide-nginx-welcome.png delete mode 100644 docs/en/ingest-management/images/guide-sign-up-trial.png delete mode 100644 docs/en/ingest-management/images/guide-system-metrics-dashboard.png delete mode 100644 docs/en/ingest-management/images/index-template-system-auth.png delete mode 100644 docs/en/ingest-management/images/ingest_pipeline_custom_k8s.png delete mode 100644 docs/en/ingest-management/images/integration-root-requirement.png delete mode 100644 docs/en/ingest-management/images/integrations.png delete mode 100644 docs/en/ingest-management/images/k8skibanaUI.png delete mode 100644 docs/en/ingest-management/images/k8sscaling.png delete mode 100644 docs/en/ingest-management/images/kibana-agent-flyout.png delete mode 100644 docs/en/ingest-management/images/kibana-fleet-agents.png delete mode 100644 docs/en/ingest-management/images/kibana-fleet-datasets.png delete mode 100644 docs/en/ingest-management/images/kibana-fleet-datastreams.png delete mode 100644 docs/en/ingest-management/images/kibana-fleet-enable.png delete mode 100644 docs/en/ingest-management/images/kibana-fleet-enroll.png delete mode 100644 docs/en/ingest-management/images/kibana-fleet-log-levels.png delete mode 100644 docs/en/ingest-management/images/kibana-fleet-policies-default-yaml.png delete mode 100644 docs/en/ingest-management/images/kibana-fleet-privileges-all.png delete mode 100644 docs/en/ingest-management/images/kibana-fleet-privileges-read.png delete mode 100644 docs/en/ingest-management/images/kibana-fleet-privileges.png delete mode 100644 docs/en/ingest-management/images/kibana-ingest-manager-configurations-default-yaml.png delete mode 100644 docs/en/ingest-management/images/kibana-ingest-manager-integrations-list-installed.png delete mode 100644 docs/en/ingest-management/images/kubernetes_metadata.png delete mode 100644 docs/en/ingest-management/images/logstash-certs.png delete mode 100644 docs/en/ingest-management/images/logstash-output-certs.png delete mode 100644 docs/en/ingest-management/images/migrate-agent-agents-offline.png delete mode 100644 docs/en/ingest-management/images/migrate-agent-deployment-id.png delete mode 100644 docs/en/ingest-management/images/migrate-agent-elasticsearch-output.png delete mode 100644 docs/en/ingest-management/images/migrate-agent-fleet-server-host.png delete mode 100644 docs/en/ingest-management/images/migrate-agent-host-output-settings.png delete mode 100644 docs/en/ingest-management/images/migrate-agent-install-command-output.png delete mode 100644 docs/en/ingest-management/images/migrate-agent-install-command.png delete mode 100644 docs/en/ingest-management/images/migrate-agent-new-deployment.png delete mode 100644 docs/en/ingest-management/images/migrate-agent-newly-enrolled-agents.png delete mode 100644 docs/en/ingest-management/images/migrate-agent-policy-settings.png delete mode 100644 docs/en/ingest-management/images/migrate-agent-take-snapshot.png delete mode 100644 docs/en/ingest-management/images/migration-add-integration-policy.png delete mode 100644 docs/en/ingest-management/images/migration-add-nginx-integration.png delete mode 100644 docs/en/ingest-management/images/migration-add-processor.png delete mode 100644 docs/en/ingest-management/images/migration-agent-data-streams01.png delete mode 100644 docs/en/ingest-management/images/migration-agent-details01.png delete mode 100644 docs/en/ingest-management/images/migration-agent-status-healthy01.png delete mode 100644 docs/en/ingest-management/images/migration-event-from-agent.png delete mode 100644 docs/en/ingest-management/images/migration-event-from-filebeat.png delete mode 100644 docs/en/ingest-management/images/migration-index-lifecycle-policies.png delete mode 100644 docs/en/ingest-management/images/migration-preserve-raw-event.png delete mode 100644 docs/en/ingest-management/images/mutual-tls-cloud-proxy.png delete mode 100644 docs/en/ingest-management/images/mutual-tls-cloud.png delete mode 100644 docs/en/ingest-management/images/mutual-tls-fs-onprem-proxy.png delete mode 100644 docs/en/ingest-management/images/mutual-tls-fs-onprem.png delete mode 100644 docs/en/ingest-management/images/mutual-tls-on-prem.png delete mode 100644 docs/en/ingest-management/images/mutual-tls-onprem-advanced-yaml.png delete mode 100644 docs/en/ingest-management/images/pod-latency.png delete mode 100644 docs/en/ingest-management/images/privileged-and-unprivileged-agents.png delete mode 100644 docs/en/ingest-management/images/proxy_url_settings.png delete mode 100644 docs/en/ingest-management/images/red-x.svg delete mode 100644 docs/en/ingest-management/images/review-component-template01.png delete mode 100644 docs/en/ingest-management/images/review-component-template02.png delete mode 100644 docs/en/ingest-management/images/revoke-token.png delete mode 100644 docs/en/ingest-management/images/rolling-agent-upgrade.png delete mode 100644 docs/en/ingest-management/images/root-integration-and-unprivileged-agents.png delete mode 100644 docs/en/ingest-management/images/schedule-upgrade.png delete mode 100644 docs/en/ingest-management/images/selected-agent-metrics-dashboard.png delete mode 100644 docs/en/ingest-management/images/show-token.png delete mode 100644 docs/en/ingest-management/images/state-pod.png delete mode 100644 docs/en/ingest-management/images/system-managed.png delete mode 100644 docs/en/ingest-management/images/tls-overview-mutual-all.jpg delete mode 100644 docs/en/ingest-management/images/tls-overview-mutual-fs-agent.png delete mode 100644 docs/en/ingest-management/images/tls-overview-mutual-fs-es.png delete mode 100644 docs/en/ingest-management/images/tls-overview-oneway-all.jpg delete mode 100644 docs/en/ingest-management/images/tls-overview-oneway-fs-agent.png delete mode 100644 docs/en/ingest-management/images/tls-overview-oneway-fs-es.png delete mode 100644 docs/en/ingest-management/images/unified-view-selector.png delete mode 100644 docs/en/ingest-management/images/unprivileged-agent-warning.png delete mode 100644 docs/en/ingest-management/images/upgrade-available-indicator.png delete mode 100644 docs/en/ingest-management/images/upgrade-detailed-state01.png delete mode 100644 docs/en/ingest-management/images/upgrade-detailed-state02.png delete mode 100644 docs/en/ingest-management/images/upgrade-failure.png delete mode 100644 docs/en/ingest-management/images/upgrade-integration-policies-automatically.png delete mode 100644 docs/en/ingest-management/images/upgrade-integration.png delete mode 100644 docs/en/ingest-management/images/upgrade-non-detailed-old.png delete mode 100644 docs/en/ingest-management/images/upgrade-non-detailed.png delete mode 100644 docs/en/ingest-management/images/upgrade-package-policy.png delete mode 100644 docs/en/ingest-management/images/upgrade-policy-editor.png delete mode 100644 docs/en/ingest-management/images/upgrade-resolve-conflicts.png delete mode 100644 docs/en/ingest-management/images/upgrade-single-agent.png delete mode 100644 docs/en/ingest-management/images/upgrade-states.png delete mode 100644 docs/en/ingest-management/images/upgrade-status.png delete mode 100644 docs/en/ingest-management/images/upgrade-view-previous-config.png delete mode 100755 docs/en/ingest-management/images/user-settings.png delete mode 100644 docs/en/ingest-management/images/view-agent-logs.png delete mode 100644 docs/en/ingest-management/index.asciidoc delete mode 100644 docs/en/ingest-management/integrations/add-integration-to-policy.asciidoc delete mode 100644 docs/en/ingest-management/integrations/edit-or-delete-integration-policy.asciidoc delete mode 100644 docs/en/ingest-management/integrations/install-integration-assets.asciidoc delete mode 100644 docs/en/ingest-management/integrations/integration-level-outputs.asciidoc delete mode 100644 docs/en/ingest-management/integrations/integrations-assets-best-practices.asciidoc delete mode 100644 docs/en/ingest-management/integrations/integrations.asciidoc delete mode 100644 docs/en/ingest-management/integrations/managed-integrations-content.asciidoc delete mode 100644 docs/en/ingest-management/integrations/package-signatures.asciidoc delete mode 100644 docs/en/ingest-management/integrations/upgrade-integration.asciidoc delete mode 100644 docs/en/ingest-management/integrations/view-integration-assets.asciidoc delete mode 100644 docs/en/ingest-management/integrations/view-integration-policies.asciidoc delete mode 100644 docs/en/ingest-management/migrate-auditbeat-to-agent.asciidoc delete mode 100644 docs/en/ingest-management/migrate-beats-to-agent.asciidoc delete mode 100644 docs/en/ingest-management/override-policy-settings.asciidoc delete mode 100644 docs/en/ingest-management/overview.asciidoc delete mode 100644 docs/en/ingest-management/processors/indexers-and-matchers.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-add_cloud_metadata.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-add_cloudfoundry_metadata.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-add_docker_metadata.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-add_fields.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-add_host_metadata.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-add_id.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-add_kubernetes_metadata.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-add_labels.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-add_locale.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-add_network_direction.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-add_nomad_metadata.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-add_observer_metadata.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-add_process_metadata.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-add_tags.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-communityid.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-convert.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-copy_fields.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-decode_base64_field.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-decode_cef.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-decode_csv_fields.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-decode_duration.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-decode_json_fields.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-decode_xml.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-decode_xml_wineventlog.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-decompress_gzip_field.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-detect_mime_type.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-dissect.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-dns.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-drop_event.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-drop_fields.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-extract_array.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-fingerprint.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-include_fields.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-move_fields.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-parse_aws_vpc_flow_log.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-rate_limit.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-registered_domain.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-rename.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-replace.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-script.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-syntax.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-syslog.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-timestamp.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-translate_sid.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-truncate_fields.asciidoc delete mode 100644 docs/en/ingest-management/processors/processor-urldecode.asciidoc delete mode 100644 docs/en/ingest-management/processors/processors-list.asciidoc delete mode 100644 docs/en/ingest-management/processors/processors.asciidoc delete mode 100644 docs/en/ingest-management/quick-starts.asciidoc delete mode 100644 docs/en/ingest-management/redirects.asciidoc delete mode 100644 docs/en/ingest-management/release-notes/release-notes-8.10.asciidoc delete mode 100644 docs/en/ingest-management/release-notes/release-notes-8.11.asciidoc delete mode 100644 docs/en/ingest-management/release-notes/release-notes-8.12.asciidoc delete mode 100644 docs/en/ingest-management/release-notes/release-notes-8.13.asciidoc delete mode 100644 docs/en/ingest-management/release-notes/release-notes-8.14.asciidoc delete mode 100644 docs/en/ingest-management/release-notes/release-notes-8.15.asciidoc delete mode 100644 docs/en/ingest-management/release-notes/release-notes-8.16.asciidoc delete mode 100644 docs/en/ingest-management/release-notes/release-notes-8.17.asciidoc delete mode 100644 docs/en/ingest-management/release-notes/release-notes-8.18.asciidoc delete mode 100644 docs/en/ingest-management/release-notes/release-notes-8.3.asciidoc delete mode 100644 docs/en/ingest-management/release-notes/release-notes-8.4.asciidoc delete mode 100644 docs/en/ingest-management/release-notes/release-notes-8.5.asciidoc delete mode 100644 docs/en/ingest-management/release-notes/release-notes-8.6.asciidoc delete mode 100644 docs/en/ingest-management/release-notes/release-notes-8.7.asciidoc delete mode 100644 docs/en/ingest-management/release-notes/release-notes-8.8.asciidoc delete mode 100644 docs/en/ingest-management/release-notes/release-notes-8.9.asciidoc delete mode 100644 docs/en/ingest-management/security/certificates-rotation.asciidoc delete mode 100644 docs/en/ingest-management/security/certificates.asciidoc delete mode 100644 docs/en/ingest-management/security/enrollment-tokens.asciidoc delete mode 100644 docs/en/ingest-management/security/fleet-roles-and-privileges.asciidoc delete mode 100644 docs/en/ingest-management/security/generate-certificates.asciidoc delete mode 100644 docs/en/ingest-management/security/images/certificate-rotation-agent-es.png delete mode 100644 docs/en/ingest-management/security/logstash-certificates.asciidoc delete mode 100644 docs/en/ingest-management/security/mutual-tls.asciidoc delete mode 100644 docs/en/ingest-management/security/tls-overview.asciidoc delete mode 100644 docs/en/ingest-management/serverless-restrictions.asciidoc delete mode 100644 docs/en/ingest-management/standalone-note.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/add-fleet-server/content.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/add-fleet-server/widget.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/code.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/download-widget.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/download.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/enroll-widget.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/event-logging-widget.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/event-logging.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/install-layout-widget.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/install-layout.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/install-widget.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/install.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/logging-widget.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/logging.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/prereq-widget.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/prereq.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/remove-endpoint-files/content.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/remove-endpoint-files/widget.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/run-agent-image/content.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/run-agent-image/widget.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/run-standalone-widget.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/run-standalone.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/start-widget.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/start.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/stop-widget.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/stop.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/uninstall-widget.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/uninstall.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/upgrade-fleet-widget.asciidoc delete mode 100644 docs/en/ingest-management/tab-widgets/upgrade-fleet.asciidoc delete mode 100644 docs/en/ingest-management/troubleshooting/faq.asciidoc delete mode 100644 docs/en/ingest-management/troubleshooting/images/collect-agent-diagnostics.png delete mode 100644 docs/en/ingest-management/troubleshooting/troubleshooting-intro.asciidoc delete mode 100644 docs/en/ingest-management/troubleshooting/troubleshooting.asciidoc diff --git a/docs/en/ingest-management/agent-policies-environment-variables.asciidoc b/docs/en/ingest-management/agent-policies-environment-variables.asciidoc deleted file mode 100644 index 8ffa6aa8e..000000000 --- a/docs/en/ingest-management/agent-policies-environment-variables.asciidoc +++ /dev/null @@ -1,6 +0,0 @@ -[[fleet-agent-environment-variables]] -= Set environment variables in an {agent} policy - -As an advanced use case, you may wish to configure environment variables in your {agent} policy. This is useful, for example, if there are configuration details about the system on which {agent} is running that you may not know in advance. As a solution, you may want to configure environment variables to be interpreted by {agent} at runtime, using information from the running environment. - -For {fleet}-managed {agents}, you can configure environment variables using the <>. Refer to <> in the standalone {agent} documentation for more detail. \ No newline at end of file diff --git a/docs/en/ingest-management/agent-policies.asciidoc b/docs/en/ingest-management/agent-policies.asciidoc deleted file mode 100644 index 03c6ad4f7..000000000 --- a/docs/en/ingest-management/agent-policies.asciidoc +++ /dev/null @@ -1,562 +0,0 @@ -:y: image:images/green-check.svg[yes] -:n: image:images/red-x.svg[no] - -[[agent-policy]] -= {agent} policies - -++++ -Policies -++++ - -A policy is a collection of inputs and settings that defines the data to be collected -by an {agent}. Each {agent} can only be enrolled in a single policy. - -Within an {agent} policy is a set of individual integration policies. -These integration policies define the settings for each input type. -The available settings in an integration depend on the version of -the integration in use. - -{fleet} uses {agent} policies in two ways: - -* Policies are stored in a plain-text YAML file and sent to each {agent} to configure its inputs. -* Policies provide a visual representation of an {agent}s configuration -in the {fleet} UI. - -[discrete] -[[policy-benefits]] -== Policy benefits - -{agent} policies have many benefits that allow you to: - -* Apply a logical grouping of inputs aimed for a particular set of hosts. -* Maintain flexibility in large-scale deployments by quickly testing changes before rolling them out. -* Provide a way to group and manage larger swaths of your infrastructure landscape. - -For example, it might make sense to create a policy per operating system type: -Windows, macOS, and Linux hosts. -Or, organize policies by functional groupings of how the hosts are -used: IT email servers, Linux servers, user work-stations, etc. -Or perhaps by user categories: engineering department, marketing department, etc. - -[discrete] -[[agent-policy-types]] -== Policy types - -In most use cases, {fleet} provides complete central management of {agent}s. -However some use cases, like running in Kubernetes or using our hosted {ess} on {ecloud}, -require {agent} infrastructure management outside of {fleet}. -With this in mind, there are two types of {agent} policies: - -* **regular policy**: The default use case, where {fleet} provides full central -management for {agent}s. Users can manage {agent} infrastructure by adding, -removing, or upgrading {agent}s. Users can also manage {agent} configuration by updating -the {agent} policy. - -* **hosted policy**: A policy where _something else_ provides central management for {agent}s. -For example, in Kubernetes, adding, removing, and upgrading {agent}s should be configured directly in Kubernetes. -Allowing {fleet} users to manage {agent}s would conflict with any Kubernetes configuration. -+ -TIP: Hosted policies also apply when using our hosted {ess} on {ecloud}. -{ecloud} is responsible for hosting {agent}s and assigning them to a policy. -Platform operators, who create and manage Elastic deployments can add, upgrade, -and remove {agent}s through the {ecloud} console. - -Hosted policies display a lock icon in the {fleet} UI, and actions are restricted. -The following table illustrates the {fleet} user actions available to different policy types: - -[options,header] -|=== -|{fleet} user action |Regular policy |Hosted policy - -|<> -|{y} -|{n} - -|<> -|{y} -|{n} - -|<> -|{y} -|{n} - -|<> -|{y} -|{n} - -|<> -|{y} -|{n} - -|<> -|{y} -|{n} - -|<> -|{y} -|{n} - -|<> -|{y} -|{n} - -|<> -|{y} -|{n} - -|<> -|{y} -|{n} - -|<> -|{y} -|{n} - -|<> -|{y} -|{n} - -|<> -|{y} -|{n} - -|<> -|{y} -|{n} - -|<> -|{y} -|{n} - -|<> -|{y} -|{n} - -|=== - -See also the <> for an {agent} policy. - -[discrete] -[[create-a-policy]] -== Create a policy - -To manage your {agent}s and the data they collect, create a new policy: - -In {fleet}, open the **Agent policies** tab and click **Create agent policy**. - -. Name your policy. All other fields are optional and can be modified later. -By default, each policy enables the _system_ integration, which collects system information and metrics. -. Create the agent policy: -* To use the UI, click **Create agent policy**. -* To use the {fleet} API, click **Preview API request** and run the -request. - -Also see <>. - -[discrete] -[[add-integration]] -== Add an integration to a policy - -An {agent} policy consists of one or more integrations that are applied to the agents enrolled in that policy. -When you add an integration, the policy created for that integration can be shared with multiple {agent} policies. -This reduces the number of integrations policies that you need to actively manage. - -To add a new integration to one or more {agent} policies: - -. In {fleet}, click **Agent policies**. -Click the name of a policy you want to add an integration to. -. Click **Add **. -. The Integrations page shows {agent} integrations along with other types, such as {beats}. Scroll down and select **Elastic Agent only** to view only integrations that work with {agent}. -. You can opt to install an {agent} if you haven't already, or choose **Add integration only** to proceed. -. In Step 1 on the **Add ** page, you can select the configuration settings specific to the integration. -. In Step 2 on the page, you have two options: -.. If you'd like to create a new policy for your {agent}s, on the **New hosts** tab specify a name for the new agent policy and choose whether or not to collect system logs and metrics. -Collecting logs and metrics will add the System integration to the new agent policy. -.. If you already have an {agent} policy created, on the **Existing hosts** tab use the drop-down menu to specify one or more agent policies that you'd like to add the integration to. Please note this this feature, known as "reusable integrations", requires an link:https://www.elastic.co/subscriptions[Enterprise subscription]. -. Click **Save and continue** to confirm your settings. - -This action installs the integration and adds it to the {agent} policies that you specified. -{fleet} distributes the new integration policy to all {agent}s that are enrolled in the agent policies. - -You can update the settings for an installed integration at any time: - -. In {kib}, go to the **Integrations** page. -. On the **Integration policies** tab, for the integration that you like to update open the **Actions** menu and select **Edit integration**. -. On the **Edit ** page you can update any configuration settings and also update the list of {agent} polices to which the integration is added. -+ -If you clear the **Agent policies** field, the integration will be removed from any {agent} policies to which it had been added. -+ -To identify any integrations that have been "orphaned", that is, not associated with any {agent} policies, check the **Agent polices** column on the **Integration policies** tab. -Any integrations that are installed but not associated with an {agent} policy are as labeled as `No agent policies`. - -[discrete] -[[apply-a-policy]] -== Apply a policy - -You can apply policies to one or more {agent}s. -To apply a policy: - -. In {fleet}, click **Agents**. - -. Select the {agent}s you want to assign to the new policy. -+ -After selecting one or more {agent}s, click **Assign to new policy** under the -Actions menu. -+ -[role="screenshot"] -image::images/apply-agent-policy.png[Assign to new policy dropdown] -+ -Unable to select multiple agents? Confirm that your subscription level supports -selective agent policy reassignment in {fleet}. For more information, refer to -{subscriptions}[{stack} subscriptions]. - -. Select the {agent} policy from the dropdown list, and click **Assign policy**. - -The {agent} status indicator and {agent} logs indicate that the policy is being applied. -It may take a few minutes for the policy change to complete before the {agent} status updates to "Healthy". - -[discrete] -[[policy-edit-or-delete]] -== Edit or delete an integration policy - -Integrations can easily be reconfigured or deleted. -To edit or delete an integration policy: - -. In {fleet}, click **Agent policies**. -Click the name of the policy you want to edit or delete. - -. Search or scroll to a specific integration. -Open the **Actions** menu and select **Edit integration** or **Delete integration**. -+ -Editing or deleting an integration is permanent and cannot be undone. -If you make a mistake, you can always re-configure or re-add an integration. - -Any saved changes are immediately distributed and applied to all {agent}s enrolled in the given policy. - -To update any secret values in an integration policy, refer to <>. - -[discrete] -[[copy-policy]] -== Copy a policy - -Policy definitions are stored in a plain-text YAML file that can be downloaded or copied to another policy: - -. In {fleet}, click **Agent policies**. -Click the name of the policy you want to copy or download. - -. To copy a policy, click **Actions -> Copy policy**. -Name the new policy, and provide a description. -The exact policy definition is copied to the new policy. -+ -Alternatively, view and download the policy definition by clicking **Actions -> View policy**. - -[discrete] -[[policy-main-settings]] -== Edit or delete a policy - -You can change high-level configurations like a policy's name, description, default namespace, -and agent monitoring status as necessary: - -. In {fleet}, click **Agent policies**. -Click the name of the policy you want to edit or delete. - -. Click the **Settings** tab, make changes, and click **Save changes** -+ -Alternatively, click **Delete policy** to delete the policy. -Existing data is not deleted. -Any agents assigned to a policy must be unenrolled or assigned to a different policy before a policy can be deleted. - -[discrete] -[[add-custom-fields]] -== Add custom fields - -Use this setting to add a custom field and value set to all data collected from the {agents} enrolled in an {agent} policy. -Custom fields are useful when you want to identify or visualize all of the data from a group of agents, and possibly manipulate the data downstream. - -To add a custom field: - -. In {fleet}, click **Agent policies**. -Select the name of the policy you want to edit. - -. Click the **Settings** tab and scroll to **Custom fields**. - -. Click **Add field**. - -. Specify a field name and value. -+ -[role="screenshot"] -image::images/agent-policy-custom-field.png[Sceen capture showing the UI to add a custom field and value] - -. Click **Add another field** for additional fields. Click **Save changes** when you're done. - -To edit a custom field: - -. In {fleet}, click **Agent policies**. -Select the name of the policy you want to edit. - -. Click the **Settings** tab and scroll to **Custom fields**. Any custom fields that have been configured are shown. - -. Click the edit icon to update a field or click the delete icon to remove it. - -Note that adding custom tags is not supported for a small set of inputs: - -* `apm` -* `cloudbeat` and all `cloudbeat/*` inputs -* `cloud-defend` -* `fleet-server` -* `pf-elastic-collector`, `pf-elastic-symbolizer`, and `pf-host-agent` -* `endpoint` inputs. Instead, use the advanced settings (`*.advanced.document_enrichment.fields`) of the {elastic-defend} Integration. - - -[discrete] -[[change-policy-enable-agent-monitoring]] -== Configure agent monitoring - -Use these settings to collect monitoring logs and metrics from {agent}. All monitoring data will be written to the specified **Default namespace**. - -. In {fleet}, click **Agent policies**. -Select the name of the policy you want to edit. - -. Click the **Settings** tab and scroll to **Agent monitoring**. - -. Select whether to collect agent logs, agent metrics, or both, from the {agents} that use the policy. -+ -When this setting is enabled an {agent} integration is created automatically. - -. Expand the **Advanced monitoring options** section to access <>. - -. Save your changes for the updated monitoring settings to take effect. - -[discrete] -[[advanced-agent-monitoring-settings]] -=== Advanced agent monitoring settings - -**HTTP monitoring endpoint** - -Enabling this setting exposes a `/liveness` API endpoint that you can use to monitor {agent} health according to the following HTTP codes: - -* `200`: {agent} is healthy. The endpoint returns a `200` OK status as long as {agent} is responsive and can process configuration changes. -* `500`: A component or unit is in a failed state. -* `503`: The agent coordinator is unresponsive. - -You can pass a `failon` parameter to the `/liveness` endpoint to determine what component state will result in a `500` status. For example, `curl 'localhost:6792/liveness?failon=degraded'` will return `500` if a component is in a degraded state. - -The possible values for `failon` are: - -* `degraded`: Return an error if a component is in a degraded state or failed state, or if the agent coordinator is unresponsive. -* `failed`: Return an error if a unit is in a failed state, or if the agent coordinator is unresponsive. -* `heartbeat`: Return an error only if the agent coordinator is unresponsive. - -If no `failon` parameter is provided, the default `failon` behavior is `heartbeat`. - -The HTTP monitoring endpoint can also be link:https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-a-liveness-http-request[used with Kubernetes], to restart the container for example. - -When you enable this setting, you need to provide the host URL and port where the endpoint can be accessed. Using the default `localhost` is recommended. - -When the HTTP monitoring endpoint is enabled you can also select to **Enable profiling at `/debug/pprof`**. This controls whether the {agent} exposes the `/debug/pprof/` endpoints together with the monitoring endpoints. - -The heap profiles available from `/debug/pprof/` are included in <> by default. CPU profiles are also included when the `--cpu-profile` option is included. For full details about the profiles exposed by `/debug/pprof/` refer to the link:https://pkg.go.dev/net/http/pprof[pprof package documentation]. - -Profiling at `/debug/pprof` is disabled by default. Data produced by these endpoints can be useful for debugging but present a security risk. It's recommended to leave this option disabled if the monitoring endpoint is accessible over a network. - -**Diagnostics rate limiting** - -You can set a rate limit for the action handler for diagnostics requests coming from {fleet}. The setting affects only {fleet}-managed {agents}. By default, requests are limited to an interval of `1m` and a burst value of `1`. This setting does not affect diagnostics collected through the CLI. - -**Diagnostics file upload** - -This setting configures retries for the file upload client handling diagnostics requests coming from {fleet}. The setting affects only {fleet}-managed {agents}. By default, a maximum of `10` retries are allowed with an initial duration of `1s` and a backoff duration of `1m`. The client may retry failed requests with exponential backoff. - -[discrete] -[[change-policy-output]] -== Change the output of a policy - -Assuming your {subscriptions}[{stack} subscription level] supports per-policy -outputs, you can change the output of a policy to send data to a different -output. - -. In {fleet}, click **Settings** and view the list of available outputs. -If necessary, click **Add output** to add a new output with the settings you -require. For more information, refer to <>. - -. Click **Agent policies**. -Click the name of the policy you want to change, then click **Settings**. - -. Set **Output for integrations** and (optionally) **Output for agent monitoring** -to use a different output, for example, {ls}. You might need to scroll down to -see these options. -+ -Unable to select a different output? Confirm that your subscription level -supports per-policy outputs in {fleet}. -+ -[role="screenshot"] -image::images/agent-output-settings.png[Screen capture showing the {ls} output policy selected in an agent policy] - -. Save your changes. - -Any {agent}s enrolled in the agent policy will begin sending data to the -specified outputs. - -[discrete] -[[add-fleet-server-to-policy]] -== Add a {fleet-server} to a policy - -If you want to connect multiple agents to a specific on-premises {fleet-server}, -you can add that {fleet-server} to a policy. - -[role="screenshot"] -image::images/add-fleet-server-to-policy.png[Screen capture showing how to add a {fleet-server} to a policy when creating or updating the policy.] - -When the policy is saved, all agents assigned to the policy are configured -to use the new {fleet-server} as the controller. - -Make sure that the {agent}s assigned to this policy all have connectivity to the {fleet-server} -that you added. Lack of connectivity will prevent the {agent} -from checking in with the {fleet-server} and receiving policy updates, but the agents -will still forward data to the cluster. - -[discrete] -[[agent-policy-secret-values]] -== Configure secret values in a policy - -When you create an integration policy you often need to provide sensitive information such as an API key or a password. To help ensure that data can't be accessed inappropriately, any secret values used in an integration policy are stored separately from other policy details. - -As well, after you've saved a secret value in {fleet}, the value is hidden in both the {fleet} UI and in the agent policy definition. When you view the agent policy (**Actions -> View policy**), an environment variable is displayed in place of any secret values, for example `${SECRET_0}`. - -WARNING: In order for sensitive values to be stored secretly in {fleet}, all configured {fleet-server}s must be on version 8.10.0 or higher. - -Though secret values stored in {fleet} are hidden, they can be updated. To update a secret value in an integration policy: - -. In {fleet}, click **Agent policies**. -Select the name of the policy you want to edit. - -. Search or scroll to a specific integration. -Open the **Actions** menu and select **Edit integration**. Any secret information is marked as being hidden. - -. Click the link to replace the secret value with a new one. -+ -[role="screenshot"] -image::images/fleet-policy-hidden-secret.png[Screen capture showing a hidden secret value as part of an integration policy] -// This graphic should be updated once a higher resolution version is available. - -. Click **Save integration**. The original secret value is overwritten in the policy. - -[discrete] -[[agent-policy-limit-cpu]] -== Set the maximum CPU usage - -You can limit the amount of CPU consumed by {agent}. This parameter limits the number of operating system threads that can be executing Go code simultaneously in each Go process. You can specify an integer value not less than `0`, which is the default value that stands for "all available CPUs". - -This limit applies independently to the agent and each underlying Go process that it supervises. For example, if {agent} is configured to supervise two {beats} with a CPU usage limit of `2` set in the policy, then the total CPU limit is six, where each of the three processes (one {agent} and two {beats}) may execute independently on two CPUs. - -This setting is similar to the {beats} {filebeat-ref}/configuration-general-options.html#_max_procs[`max_procs`] setting. For more detail, refer to the link:https://pkg.go.dev/runtime#GOMAXPROCS[GOMAXPROCS] function in the Go runtime documentation. - -. In {fleet}, click **Agent policies**. -Select the name of the policy you want to edit. - -. Click the **Settings** tab and scroll to **Advanced settings**. - -. Set **Limit CPU usage** as needed. For example, to limit Go processes supervised by {agent} to two operating system threads each, set this value to `2`. - -[discrete] -[[agent-policy-log-level]] -== Set the {agent} log level - -You can set the minimum log level that {agents} using the selected policy will send to the configured output. The default setting is `info`. - -. In {fleet}, click **Agent policies**. -Select the name of the policy you want to edit. - -. Click the **Settings** tab and scroll to **Advanced settings**. - -. Set the **Agent logging level**. - -. Save your changes. - -You can also set the log level for an individual agent: - -. In {fleet}, click **Agents**. -Under the **Host** header, select the {agent} you want to edit. - -. On the **Logs** tab, set the **Agent logging level** and apply your changes. Or, you can choose to reset the agent to use the logging level specified in the agent policy. - -[discrete] -[[agent-binary-download-settings]] -== Change the {agent} binary download location - -{agent}s must be able to access the {artifact-registry} to download -binaries during upgrades. By default {agent}s download artifacts from the -artifact registry at `https://artifacts.elastic.co/downloads/`. - -For {agent}s that cannot access the internet, you can specify agent binary -download settings, and then configure agents to download their artifacts from -the alternate location. For more information about running {agent}s in a -restricted environment, refer to <>. - -To change the binary download location: - -. In {fleet}, click **Agent policies**. -Select the name of the policy you want to edit. - -. Click the **Settings** tab and scroll to **Agent binary download**. - -. Specify the address where you are hosting the artifacts repository or select the default to use the location specified in the {fleet} <>. - -[discrete] -[[fleet-agent-hostname-format-settings]] -== Set the {agent} host name format - -The **Host name format** setting controls the format of information provided about the current host through the <> key, in events produced by {agent}. - -. In {fleet}, click **Agent policies**. -Select the name of the policy you want to edit. - -. Click the **Settings** tab and scroll to **Host name format**. - -. Select one of the following: - -** **Hostname**: Information about the current host is in a non-fully-qualified format (`somehost`, rather than `somehost.example.com`). This is the default reporting format. - -** **Fully Qualified Domain Name (FQDN)**: Information about the current host is in FQDN format (`somehost.example.com` rather than `somehost`). This helps you to distinguish between hosts on different domains that have similar names. The fully qualified hostname allows each host to be more easily identified when viewed in {kib}, for example. - -. Save your changes. - -NOTE: FQDN reporting is not currently supported in APM. - -For FQDN reporting to work as expected, the hostname of the current host must either: - -* Have a CNAME entry defined in DNS. -* Have one of its corresponding IP addresses respond successfully to a reverse DNS lookup. - -If neither pre-requisite is satisfied, `host.name` continues to report the hostname of the current host in a non-fully-qualified format. - - -[discrete] -[[fleet-agent-unenrollment-timeout]] -== Set an unenrollment timeout for inactive agents - -You can configure a length of time after which any inactive {agent}s are automatically unenrolled and their API keys invalidated. -This setting is useful when you have agents running in an ephemeral environment, such as Docker or {k8s}, and you want to prevent inactive agents from consuming unused API keys. - - -To configure an unenrollment timeout for inactive agents: - -. In {fleet}, click **Agent policies**. -Select the name of the policy you want to edit. - -. Click the **Settings** tab and scroll to **Inactive agent unenrollment timeout**. - -. Specify an unenrollment timeout period in seconds. - -. Save your changes. - -After you set an unenrollment timeout, any inactive agents are unenrolled automatically after the specified period of time. -The unenroll task runs every ten minutes, and it unenrolls a maximum of one thousand agents at a time. - -[discrete] -[[agent-policy-scale]] -== Policy scaling recommendations - -A single instance of {fleet} supports a maximum of 1000 {agent} policies. If more policies are configured, UI performance might be impacted. The maximum number of policies is not affected by the number of spaces in which the policies are used. - -If you are using {agent} with link:{serverless-docs}[{serverless-full}], the maximum supported number of {agent} policies is 500. diff --git a/docs/en/ingest-management/beats-agent-comparison.asciidoc b/docs/en/ingest-management/beats-agent-comparison.asciidoc deleted file mode 100644 index b90c8d23f..000000000 --- a/docs/en/ingest-management/beats-agent-comparison.asciidoc +++ /dev/null @@ -1,346 +0,0 @@ -:y: image:images/green-check.svg[yes] -:n: image:images/red-x.svg[no] - -[[beats-agent-comparison]] -= {beats} and {agent} capabilities - -Elastic provides two main ways to send data to {es}: - -* *{beats}* are lightweight data shippers that send operational data to -{es}. Elastic provides separate {beats} for different types of data, such as -logs, metrics, and uptime. Depending on what data you want to collect, you may -need to install multiple shippers on a single host. - -* *{agent}* is a single agent for logs, metrics, security data, and threat -prevention. The {agent} can be deployed in two different modes: - -** *Managed by {fleet}* -- The {agent} policies and lifecycle are centrally managed by the {fleet} app in {kib}. The Integrations app also lets you centrally add integrations with other popular services and systems. This is the recommended option for most users. - -** *Standalone mode* -- All policies are applied to the {agent} manually as a YAML file. This is intended for more advanced users. -See <> for more information. - -The method you use depends on your use case, which features you need, and -whether you want to centrally manage your agents. - -{beats} and {agent} can both send data directly to {es} or via {ls}, where you -can further process and enhance the data, before visualizing it in {kib}. - -This article summarizes the features and functionality you need to be aware of -before adding new {agent}s or replacing your current {beats} with {agent}s. -Starting in version 7.14.0, {agent} is generally available (GA). - -[discrete] -[[choosing-between-agent-and-beats]] -== Choosing between {agent} and {beats} - -{agent} is a single binary designed to provide the same functionality that the various {beats} provide today. However, some functionality gaps are being addressed as we strive to reach feature parity. - -The following steps will help you determine if {agent} can support your use case: - -. Determine if the integrations you need are supported and Generally Available -(GA) on {agent}. To find out if an integration is GA, see the -{integrations-docs}/all_integrations[{integrations} quick reference table]. - -. If the integration is available, check <> to see whether the required output is also supported. - -. Review <> to determine if any features required by your deployment are supported. {agent} should support most of the features available on {beats} and is updated for each release. - -If you are satisfied with all three steps, then {agent} is suitable for your deployment. However, if any steps fail your assessment, you should continue using {beats}, and review future updates or contact us in the {forum}[discuss forum]. - -[discrete] -[[supported-inputs-beats-and-agent]] -== Supported inputs - -For {agent}s that are centrally managed by {fleet}, data collection is -further simplified and defined by integrations. In this model, the decision on -the inputs is driven by the integration you want to collect data from. The -complexity of configuration details of various inputs is driven centrally by -{fleet} and specifically by the integrations. - -To find out if an integration is GA, see the -{integrations-docs}/all_integrations[{integrations} quick reference table]. - - -[discrete] -[[supported-outputs-beats-and-agent]] -== Supported outputs - -The following table shows the outputs supported by the {agent} in {version}: - - -NOTE: {elastic-defend} and APM Server have a different output matrix. - -[options,header] -|=== -|Output |{beats} |{fleet}-managed {agent} |Standalone {agent} - -|{es} Service -|{y} -|{y} -|{y} - -|{es} -|{y} -|{y} -|{y} - -|{ls} -|{y} -|{y} -|{y} - -|Kafka -|{y} -|{y} -|{y} - -|Remote {es} -|{y} -|{y} -|{y} - -|Redis -|{y} -|{n} -|{n} - -|File -|{y} -|{n} -|{n} - -|Console -|{y} -|{n} -|{n} -|=== - - -[discrete] -[[supported-configurations]] -== Supported configurations - -[options,header] -|=== -|{beats} configuration |{agent} support - -|{filebeat-ref}/configuration-filebeat-modules.html[Modules] -|Supported via integrations. - -|{filebeat-ref}/advanced-settings.html[Input setting overrides] -|Not configurable. Set to default values. - -|{filebeat-ref}/configuration-general-options.html[General settings] -| Many of these global settings are now internal to the agent and for proper -operations should not be modified. - -|{filebeat-ref}/configuration-path.html[Project paths] -|{agent} configures these paths to provide a simpler and more streamlined -configuration experience. - -|{filebeat-ref}/filebeat-configuration-reloading.html[External configuration file loading] -|Config is distributed via policy. - -|{filebeat-ref}/_live_reloading.html[Live reloading] -|Related to the config file reload. - -|{filebeat-ref}/configuring-output.html[Outputs] -|Configured through {fleet}. See <>. - -|{filebeat-ref}/configuration-ssl.html[SSL] -|Supported - -|{filebeat-ref}/ilm.html[{ilm-cap}] -|Enabled by default although the Agent uses <>. - -|{filebeat-ref}/configuration-template.html[{es} index template loading] -|No longer applicable - -|{filebeat-ref}/setup-kibana-endpoint.html[{kib} endpoint] -|New {agent} workflow doesn’t need this. - -|{filebeat-ref}/configuration-dashboards.html[{kib} dashboard loading] -|New {agent} workflow doesn’t need this. - -|{filebeat-ref}/defining-processors.html[Processors] -|Processors can be defined at the integration level. Global processors, configured at the policy level, are currently under consideration. - -|{filebeat-ref}/configuration-autodiscover.html[Autodiscover] -|Autodiscover is facilitated through <>. {agent} does not support hints-based autodiscovery. - -|{filebeat-ref}/configuring-internal-queue.html[Internal queues] -|{fleet}-managed {agent} and Standalone {agent} both support configuration of the internal memory -queues by an end user. Neither support configuration of the internal disk queues by an end user. - -|{filebeat-ref}/elasticsearch-output.html#_loadbalance[Load balance output hosts] -|Within the {fleet} UI, you can add YAML settings to configure multiple hosts -per output type, which enables load balancing. - -|{filebeat-ref}/configuration-logging.html[Logging] -|Supported - -|{filebeat-ref}/http-endpoint.html[HTTP Endpoint] -|Supported - -|{filebeat-ref}/regexp-support.html[Regular expressions] -|Supported -|=== - -[discrete] -[[additional-capabilities-beats-and-agent]] -== Capabilities comparison - -The following table shows a comparison of capabilities supported by {beats} and the {agent} in {version}: - - -[options,header] -|=== -|Item |{beats} |{fleet}-managed {agent} |Standalone {agent} |Description - -|Single agent for all use cases -|{n} -|{y} -|{y} -|{agent} provides logs, metrics, and more. You'd need to install multiple {beats} for these use cases. - -|Install integrations from web UI or API -|{n} -|{y} -|{y} -|{agent} integrations are installed with a convenient web UI or API, but {beats} modules are installed with a CLI. This installs {es} assets such as index templates and ingest pipelines, and {kib} assets such as dashboards. - -|Configure from web UI or API -|{n} -|{y} -|{y} (optional) -|{fleet}-managed {agent} integrations can be configured in the web UI or API. Standalone {agent} can use the web UI, API, or YAML. {beats} can only be configured via YAML files. - -|Central, remote agent policy management -|{n} -|{y} -|{n} -|{agent} policies can be centrally managed through {fleet}. You have to manage {beats} configuration yourself or with a third-party solution. - -|Central, remote agent binary upgrades -|{n} -|{y} -|{n} -|{agent}s can be remotely upgraded through {fleet}. You have to upgrade {beats} yourself or with a third-party solution. - -|Add {kib} and {es} assets for a single integration or module -|{n} -|{y} -|{y} -|{agent} integrations allow you to add {kib} and {es} assets for a single integration at a time. {beats} installs hundreds of assets for all modules at once. - -|Auto-generated {es} API keys -|{n} -|{y} -|{n} -|{fleet} can automatically generate API keys with limited permissions for each {agent}, which can be individually revoked. Standalone {agent} and {beats} require you to create and manage credentials, and users often share them across hosts. - -|Auto-generate minimal {es} permissions -|{n} -|{y} -|{n} -|{fleet} can automatically give {agent}s minimal output permissions based on the inputs running. With standalone {agent} and {beats}, users often give overly broad permissions because it's more convenient. - -|Data streams support -|{y} -|{y} -|{y} -|Both {beats} (default as of version 8.0) and {agent}s use <> with easier index life cycle management and the https://www.elastic.co/blog/an-introduction-to-the-elastic-data-stream-naming-scheme[data stream naming scheme]. - -|Variables and input conditions -|{n} -|{y} (limited) -|{y} -|{agent} offers {fleet-guide}/dynamic-input-configuration.html[variables and input conditions] to dynamically adjust based on the local host environment. Users can configure these directly in YAML for standalone {agent} or using the {fleet} API for {fleet}-managed {agent}. The Integrations app allows users to enter variables, and we are considering a https://github.com/elastic/kibana/issues/108525[UI to edit conditions]. {beats} only offers static configuration. - -|Allow non-superusers to manage assets and agents -|{y} -|{y} -|{y} (it's optional) -|Starting with version 8.1.0, a superuser role is no longer required to use the {fleet} and Integrations apps and corresponding APIs. These apps are optional for standalone {agent}. {beats} offers {filebeat-ref}/feature-roles.html[finer grained] roles. - -|Air-gapped network support -|{y} -|{y} (with Limits) -|{y} -|The {integrations} and {fleet} apps can be deployed in an air-gapped environment {fleet-guide}/air-gapped.html#air-gapped-diy-epr[self-managed deployment of the {package-registry}]. {fleet}-managed {agent}s require a connection to our artifact repository for agent binary upgrades. However the policy can be modified to have agents point to a local server in order to fetch the agent binary. - -|Run without root on host -|{y} -|{y} -|{y} -|{fleet}-managed {agent}s, Standalone {agent}s, and {beats} require root permission only if they're configured to capture data that requires that level of permission. - -|Multiple outputs -|{y} -|{y} -|{y} -|The policy for a single {fleet}-managed {agent} can specify multiple outputs. - -|Separate monitoring cluster -|{y} -|{y} -|{y} -|{fleet}-managed {agent}s, Standalone {agent} and {beats} can send to a remote monitoring cluster. - -|Secret management -|{y} -|{n} -|{n} -|{agent} stores credentials in the agent policy. We are considering adding https://github.com/elastic/integrations/issues/244[keystore support]. {beats} allows users to access credentials in a local {filebeat-ref}/keystore.html[keystore]. - -|Progressive or canary deployments -|{y} -|{n} -|{y} -|{fleet} does not have a feature to deploy an {agent} policy update progressively but we are considering https://github.com/elastic/kibana/issues/108267[improved support]. With standalone {agent} and {beats} you can deploy configuration files progressively using third party solutions. - -|Multiple configurations per host -|{y} -|{n} (uses input conditions instead) -|{n} (uses input conditions instead) -|{agent} uses a single {agent} policy for configuration, and uses {fleet-guide}/dynamic-input-configuration.html[variables and input conditions] to adapt on a per-host basis. {beats} supports multiple configuration files per host, enabling third party solutions to deploy files hierarchically or in multiple groups, and enabling finer-grained access control to those files. - -|Compatible with version control and infrastructure as code solutions -|{y} -|{n} (only via API) -|{y} -|{fleet} stores the agent policy in {es}. It does not integrate with external version control or infrastructure as code solutions, but we are considering https://github.com/elastic/kibana/issues/108524[improved support]. However, {beats} and {agent} in standalone mode use a YAML file that is compatible with these solutions. - -|Spooling data to local disk -|{y} -|{n} -|{n} -|This feature is currently being link:https://github.com/elastic/elastic-agent/issues/3490[considered for development]. -|=== - -[discrete] -[[agent-monitoring-support]] -== {agent} monitoring support - -You configure the collection of agent metrics in the agent policy. If metrics -collection is selected (the default), all {agent}s enrolled in the policy will -send metrics data to {es} (the output is configured globally). - -The following image shows the *Agent monitoring* settings for the default agent -policy: - -[role="screenshot"] -image::images/agent-monitoring-settings.png[Screen capture of agent monitoring settings in the default agent policy] - -There are also pre-built dashboards for agent metrics that you can access -under *Assets* in the {agent} integration: - -[role="screenshot"] -image::images/agent-monitoring-assets.png[Screen capture of {agent} monitoring assets] - -The *[{agent}] Agent metrics* dashboard shows an aggregated view of agent metrics: - -[role="screenshot"] -image::images/agent-metrics-dashboard.png[Screen capture showing {agent} metrics] - -For more information, refer to <>. diff --git a/docs/en/ingest-management/commands.asciidoc b/docs/en/ingest-management/commands.asciidoc deleted file mode 100644 index a56492a4d..000000000 --- a/docs/en/ingest-management/commands.asciidoc +++ /dev/null @@ -1,1391 +0,0 @@ -:global-flags-link: For more flags, see <>. - -[[elastic-agent-cmd-options]] -= {agent} command reference - -++++ -Command reference -++++ - -{agent} provides commands for running {agent}, managing {fleet-server}, and -doing common tasks. The commands listed here apply to both <> -and <> {agent}. - -[IMPORTANT] -.Restrictions -==== -Note the following restrictions for running {agent} commands: - -* You might need to log in as a root user (or Administrator on Windows) to -run the commands described here. After the {agent} service is installed and running, -make sure you run these commands without prepending them with `./` to avoid -invoking the wrong binary. -* Running {agent} commands using the Windows PowerShell ISE is not supported. -==== - -* <> -* <> -* <> -* <> -* <> -* <> preview:[] -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -//* <> - -++++ -
-++++ - -[discrete] -[[elastic-agent-diagnostics-command]] -== elastic-agent diagnostics - -Gather diagnostics information from the {agent} and component/unit it's running. -This command produces an archive that contains: - -* version.txt - version information -* pre-config.yaml - pre-configuration before variable substitution -* variables.yaml - current variable contexts from providers -* computed-config.yaml - configuration after variable substitution -* components-expected.yaml - expected computed components model from the computed-config.yaml -* components-actual.yaml - actual running components model as reported by the runtime manager -* state.yaml - current state information of all running components -* Components Directory - diagnostic information from each running component: -** goroutine.txt - goroutine dump -** heap.txt - memory allocation of live objects -** allocs.txt - sampling past memory allocations -** threadcreate.txt - traces led to creation of new OS threads -** block.txt - stack traces that led to blocking on synchronization primitives -** mutex.txt - stack traces of holders of contended mutexes -** Unit Directory - If a given unit provides specific diagnostics, it will be placed here. - -Note that *credentials may not be redacted* in the archive; they may appear in plain text in the configuration or policy files inside the archive. - -This command is intended for debugging purposes only. The output format and structure of the archive may change between releases. - -[discrete] -=== Synopsis - -[source,shell] ----- -elastic-agent diagnostics [--file ] - [--cpu-profile] - [--exclude-events] - [--help] - [global-flags] ----- - -[discrete] -=== Options - -`--file`:: -Specifies the output archive name. Defaults to `elastic-agent-diagnostics-.zip`, where the timestamp is the current time in UTC. - -`--help`:: -Show help for the `diagnostics` command. - -`--cpu-profile`:: -Additionally runs a 30-second CPU profile on each running component. This will generate an additional `cpu.pprof` file for each component. - -`--p`:: -Alias for `--cpu-profile`. - -`--exclude-events`:: -Exclude the events log files from the diagnostics archive. - -{global-flags-link} - -[discrete] -=== Example - -[source,shell] ----- -elastic-agent diagnostics ----- - -++++ -
-++++ - -[discrete] -[[elastic-agent-enroll-command]] -== elastic-agent enroll - -//MAINTAINERs: There's a GitHub issue open to consolidate the enroll and install -//entries here, but for now, make sure the syntax stays in sync. - -Enroll the {agent} in {fleet}. - -Use this command to enroll the {agent} in {fleet} without installing the -agent as a service. You will need to do this if you installed -the {agent} from a DEB or RPM package and plan to use systemd commands to -start and manage the service. This command is also useful for testing -{agent} prior to installing it. - -If you've already installed {agent}, use this command to modify the settings that {agent} runs with. - -TIP: To enroll an {agent} _and_ install it as a service, use the -<> instead. Installing as a service is the most common scenario. - -We recommend that you run the `enroll` (or `install`) command as the root user because some -integrations require root privileges to collect sensitive data. This command -overwrites the `elastic-agent.yml` file in the agent directory. - -This command includes optional flags to set up <>. - -IMPORTANT: This command enrolls the {agent} in {fleet}; it does not start the -agent. To start the agent, either <>, if one exists, or use the <> -to start the agent from a terminal. - - -[discrete] -=== Synopsis - -// tag::enroll[] - -To enroll the {agent} in {fleet}: - -[source,shell] ----- -elastic-agent enroll --url - --enrollment-token - [--ca-sha256 ] - [--certificate-authorities ] - [--daemon-timeout ] - [--delay-enroll] - [--elastic-agent-cert ] - [--elastic-agent-cert-key ] - [--elastic-agent-cert-key-passphrase ] - [--force] - [--header ] - [--help] - [--insecure ] - [--proxy-disabled] - [--proxy-header ] - [--proxy-url ] - [--staging ] - [--tag ] - [global-flags] ----- - -// end::enroll[] - -To enroll the {agent} in {fleet} and set up {fleet-server}: - -[source,shell] ----- -elastic-agent enroll --fleet-server-es - --fleet-server-service-token - [--fleet-server-service-token-path ] - [--ca-sha256 ] - [--certificate-authorities ] - [--daemon-timeout ] - [--delay-enroll] - [--elastic-agent-cert ] - [--elastic-agent-cert-key ] - [--elastic-agent-cert-key-passphrase ] - [--fleet-server-cert ] <1> - [--fleet-server-cert-key ] - [--fleet-server-cert-key-passphrase ] - [--fleet-server-client-auth ] - [--fleet-server-es-ca ] - [--fleet-server-es-ca-trusted-fingerprint ] <2> - [--fleet-server-es-cert ] - [--fleet-server-es-cert-key ] - [--fleet-server-es-insecure] - [--fleet-server-host ] - [--fleet-server-policy ] - [--fleet-server-port ] - [--fleet-server-timeout ] - [--force] - [--header ] - [--help] - [--proxy-disabled] - [--proxy-header ] - [--proxy-url ] - [--staging ] - [--tag ] - [--url ] <3> - [global-flags] ----- -<1> If no `fleet-server-cert*` flags are specified, {agent} auto-generates a -self-signed certificate with the hostname of the machine. Remote {agent}s -enrolling into a {fleet-server} with self-signed certificates must specify -the `--insecure` flag. -<2> Required when using self-signed certificates with {es}. -<3> Required when enrolling in a {fleet-server} with custom certificates. The -URL must match the DNS name used to generate the certificate specified by -`--fleet-server-cert`. - -For more information about custom certificates, refer to <>. - -[discrete] -=== Options - -`--ca-sha256 `:: -Comma-separated list of certificate authority hash pins used for certificate -verification. - -`--certificate-authorities `:: -Comma-separated list of root certificates used for server verification. - -`--daemon-timeout `:: -Timeout waiting for {agent} daemon. - -`--delay-enroll`:: -Delays enrollment to occur on first start of the {agent} service. This setting -is useful when you don't want the {agent} to enroll until the next reboot or manual start of the service, for -example, when you're preparing an image that includes {agent}. - -`--elastic-agent-cert`:: -Certificate to use as the client certificate for the {agent}'s connections to {fleet-server}. - -`--elastic-agent-cert-key`:: -Private key to use as for the {agent}'s connections to {fleet-server}. - -`--elastic-agent-cert-key-passphrase`:: -The path to the file that contains the passphrase for the mutual TLS private key that {agent} will use to connect to {fleet-server}. -The file must only contain the characters of the passphrase, no newline or extra non-printing characters. -+ -This option is only used if the `--elastic-agent-cert-key` is encrypted and requires a passphrase to use. - -`--enrollment-token `:: -Enrollment token to use to enroll {agent} into {fleet}. You can use -the same enrollment token for multiple agents. - -`--fleet-server-cert `:: -Certificate to use for exposed {fleet-server} HTTPS endpoint. - -`--fleet-server-cert-key `:: -Private key to use for exposed {fleet-server} HTTPS endpoint. - -`--fleet-server-cert-key-passphrase `:: -Path to passphrase file for decrypting {fleet-server}'s private key if an encrypted private key is used. - -`--fleet-server-client-auth `:: -One of `none`, `optional`, or `required`. Defaults to `none`. {fleet-server}'s `client_authentication` option -for client mTLS connections. If `optional`, or `required` is specified, client certificates are verified -using CAs specified in the `--certificate-authorities` flag. - -`--fleet-server-es `:: -Start a {fleet-server} process when {agent} is started, and connect to the -specified {es} URL. - -`--fleet-server-es-ca `:: -Path to certificate authority to use to communicate with {es}. - -`--fleet-server-es-ca-trusted-fingerprint `:: -The SHA-256 fingerprint (hash) of the certificate authority used to self-sign {es} certificates. -This fingerprint will be used to verify self-signed certificates presented by {fleet-server} and any inputs started by {agent} for communication. -This flag is required when using self-signed certificates with {es}. - -`--fleet-server-es-cert`:: -The path to the client certificate that {fleet-server} will use when connecting to {es}. - -`--fleet-server-es-cert-key`:: -The path to the private key that {fleet-server} will use when connecting to {es}. - -`--fleet-server-es-insecure`:: -Allows fleet server to connect to {es} in the following situations: -+ --- -* When connecting to an HTTP server. -* When connecting to an HTTPs server and the certificate chain cannot be -verified. The content is encrypted, but the certificate is not verified. --- -+ -When this flag is used the certificate verification is disabled. - -`--fleet-server-host `:: -{fleet-server} HTTP binding host (overrides the policy). - -`--fleet-server-policy `:: -Used when starting a self-managed {fleet-server} to allow a specific policy to be used. - -`--fleet-server-port `:: -{fleet-server} HTTP binding port (overrides the policy). - -`--fleet-server-service-token `:: -Service token to use for communication with {es}. -Mutually exclusive with `--fleet-server-service-token-path`. - -`--fleet-server-service-token-path `:: -Service token file to use for communication with {es}. -Mutually exclusive with `--fleet-server-service-token`. - -`--fleet-server-timeout `:: -Timeout waiting for {fleet-server} to be ready to start enrollment. - -`--force`:: -Force overwrite of current configuration without prompting for confirmation. -This flag is helpful when using automation software or scripted deployments. -+ -NOTE: If the {agent} is already installed on the host, using `--force` may -result in unpredictable behavior with duplicate {agent}s appearing in {fleet}. - -`--header `:: -Headers used in communication with elasticsearch. - -`--help`:: -Show help for the `enroll` command. - -`--insecure`:: -Allow the {agent} to connect to {fleet-server} over insecure connections. This -setting is required in the following situations: -+ --- -* When connecting to an HTTP server. The API keys are sent in clear text. -* When connecting to an HTTPs server and the certificate chain cannot be -verified. The content is encrypted, but the certificate is not verified. -* When using self-signed certificates generated by {agent}. --- -+ -We strongly recommend that you use a secure connection. - -`--proxy-disabled`:: -Disable proxy support including environment variables. - -`--proxy-header `:: -Proxy headers used with CONNECT request. - -`--proxy-url `:: -Configures the proxy URL. - -`--staging `:: -Configures agent to download artifacts from a staging build. - -`--tag `:: -A comma-separated list of tags to apply to {fleet}-managed {agent}s. You can -use these tags to filter the list of agents in {fleet}. -+ -NOTE: Currently, there is no way to remove or edit existing tags. To change the -tags, you must unenroll the {agent}, then re-enroll it using new tags. - -`--url `:: -{fleet-server} URL to use to enroll the {agent} into {fleet}. - -{global-flags-link} - -[discrete] -=== Examples - -Enroll the {agent} in {fleet}: - -[source,shell] ----- -elastic-agent enroll \ - --url=https://cedd4e0e21e240b4s2bbbebdf1d6d52f.fleet.eu-west-1.aws.cld.elstc.co:443 \ - --enrollment-token=NEFmVllaa0JLRXhKebVKVTR5TTI6N2JaVlJpSGpScmV0ZUVnZVlRUExFQQ== ----- - -Enroll the {agent} in {fleet} and set up {fleet-server}: - -[source,shell] ----- -elastic-agent enroll --fleet-server-es=http://elasticsearch:9200 \ - --fleet-server-service-token=AbEAAdesYXN1abMvZmxlZXQtc2VldmVyL3Rva2VuLTE2MTkxMzg3MzIzMTg7dzEta0JDTmZUcGlDTjlwRmNVTjNVQQ \ - --fleet-server-policy=a35fd520-26f5-11ec-8bd9-3374690g57b6 ----- - -Start {agent} with {fleet-server} (running on a custom CA). This example -assumes you've generated the certificates with the following names: - -* `ca.crt`: Root CA certificate -* `fleet-server.crt`: {fleet-server} certificate -* `fleet-server.key`: {fleet-server} private key -* `elasticsearch-ca.crt`: CA certificate to use to connect to {es} - -[source,shell] ----- -elastic-agent enroll \ - --url=https://fleet-server:8220 \ - --fleet-server-es=https://elasticsearch:9200 \ - --fleet-server-service-token=AAEBAWVsYXm0aWMvZmxlZXQtc2XydmVyL3Rva2VuLTE2MjM4OTAztDU1OTQ6dllfVW1mYnFTVjJwTC2ZQ0EtVnVZQQ \ - --fleet-server-policy=a35fd520-26f5-11ec-8bd9-3374690g57b6 \ - --certificate-authorities=/path/to/ca.crt \ - --fleet-server-es-ca=/path/to/elasticsearch-ca.crt \ - --fleet-server-cert=/path/to/fleet-server.crt \ - --fleet-server-cert-key=/path/to/fleet-server.key \ - --fleet-server-port=8220 ----- - -Then enroll another {agent} into the {fleet-server} started in the previous -example: - -[source,shell] ----- -elastic-agent enroll --url=https://fleet-server:8220 \ - --enrollment-token=NEFmVllaa0JLRXhKebVKVTR5TTI6N2JaVlJpSGpScmV0ZUVnZVlRUExFQQ== \ - --certificate-authorities=/path/to/ca.crt ----- - -++++ -
-++++ - -[discrete] -[[elastic-agent-help-command]] -== elastic-agent help - -Show help for a specific command. - -[discrete] -=== Synopsis - -[source,shell] ----- -elastic-agent help [--help] [global-flags] ----- - -[discrete] -=== Options - -`command`:: -The name of the command. - -`--help`:: -Show help for the `help` command. - -{global-flags-link} - -[discrete] -=== Example - -[source,shell] ----- -elastic-agent help enroll ----- - -++++ -
-++++ - -[discrete] -[[elastic-agent-inspect-command]] -== elastic-agent inspect - -Show the current {agent} configuration. - -If no parameters are specified, shows the full {agent} configuration. - -[discrete] -=== Synopsis - -[source,shell] ----- -elastic-agent inspect [--help] -elastic-agent inspect components [--show-config] - [--show-spec] - [--help] - [id] ----- - -[discrete] -=== Options - -`components`:: Display the current configuration for the component. This command -accepts additional flags: -+ --- -`--show-config`:: -Use to display the configuration in all units. - -`--show-spec`:: -Use to get input/output runtime spectification for a component. --- - -`--help`:: -Show help for the `inspect` command. - -{global-flags-link} - -[discrete] -=== Examples - -[source,shell] ----- -elastic-agent inspect -elastic-agent inspect components --show-config -elastic-agent inspect components log-default ----- - -++++ -
-++++ - -[discrete] -[[elastic-agent-privileged-command]] -== elastic-agent privileged - -Run {agent} with full superuser privileges. -This is the usual, default running mode for {agent}. -The `privileged` command allows you to switch back to running an agent with full administrative privileges when you have been running it in `unprivileged` mode. - -Refer to {fleet-guide}/elastic-agent-unprivileged.html[Run {agent} without administrative privileges] for more detail. - -[discrete] -=== Examples - -[source,shell] ----- -elastic-agent privileged ----- - -++++ -
-++++ - -[discrete] -[[elastic-agent-install-command]] -== elastic-agent install - -Install {agent} permanently on the system and manage it by using the system's -service manager. The agent will start automatically after installation is -complete. On Linux (tar package), this command requires a system and service -manager like systemd. - -IMPORTANT: If you installed {agent} from a DEB or RPM package, the `install` -command will skip the installation itself and function as an alias of the -<> instead. Note that after -an upgrade of the {agent} using DEB or RPM the {agent} service needs to be restarted. - -You must run this command as the root user (or Administrator on Windows) -to write files to the correct locations. This command overwrites the -`elastic-agent.yml` file in the agent directory. - -The syntax for running this command varies by platform. For platform-specific -examples, refer to <>. - -[discrete] -=== Synopsis - -To install the {agent} as a service, enroll it in {fleet}, and start the -`elastic-agent` service: - -[source,shell] ----- -elastic-agent install --url - --enrollment-token - [--base-path ] - [--ca-sha256 ] - [--certificate-authorities ] - [--daemon-timeout ] - [--delay-enroll] - [--elastic-agent-cert ] - [--elastic-agent-cert-key ] - [--elastic-agent-cert-key-passphrase ] - [--force] - [--header ] - [--help] - [--insecure ] - [--non-interactive] - [--privileged] - [--proxy-disabled] - [--proxy-header ] - [--proxy-url ] - [--staging ] - [--tag ] - [--unprivileged] - [global-flags] ----- - -To install the {agent} as a service, enroll it in {fleet}, and start -a `fleet-server` process alongside the `elastic-agent` service: - -[source,shell] ----- - -elastic-agent install --fleet-server-es - --fleet-server-service-token - [--fleet-server-service-token-path ] - [--base-path ] - [--ca-sha256 ] - [--certificate-authorities ] - [--daemon-timeout ] - [--delay-enroll] - [--elastic-agent-cert ] - [--elastic-agent-cert-key ] - [--elastic-agent-cert-key-passphrase ] - [--fleet-server-cert ] <1> - [--fleet-server-cert-key ] - [--fleet-server-cert-key-passphrase ] - [--fleet-server-client-auth ] - [--fleet-server-es-ca ] - [--fleet-server-es-ca-trusted-fingerprint ] <2> - [--fleet-server-es-cert ] - [--fleet-server-es-cert-key ] - [--fleet-server-es-insecure] - [--fleet-server-host ] - [--fleet-server-policy ] - [--fleet-server-port ] - [--fleet-server-timeout ] - [--force] - [--header ] - [--help] - [--non-interactive] - [--privileged] - [--proxy-disabled] - [--proxy-header ] - [--proxy-url ] - [--staging ] - [--tag ] - [--unprivileged] - [--url ] <3> - [global-flags] ----- -<1> If no `fleet-server-cert*` flags are specified, {agent} auto-generates a -self-signed certificate with the hostname of the machine. Remote {agent}s -enrolling into a {fleet-server} with self-signed certificates must specify -the `--insecure` flag. -<2> Required when using self-signed certificate on {es} side. -<3> Required when enrolling in a {fleet-server} with custom certificates. The -URL must match the DNS name used to generate the certificate specified by -`--fleet-server-cert`. - -For more information about custom certificates, refer to <>. - -[discrete] -=== Options - -`--base-path `:: -Install {agent} in a location other than the <>. -Specify the custom base path for the install. -+ -The `--base-path` option is not currently supported with {security-guide}/install-endpoint.html[{elastic-defend}]. - -`--ca-sha256 `:: -Comma-separated list of certificate authority hash pins used for certificate -verification. - -`--certificate-authorities `:: -Comma-separated list of root certificates used for server verification. - -`--daemon-timeout `:: -Timeout waiting for {agent} daemon. - -`--delay-enroll`:: -Delays enrollment to occur on first start of the {agent} service. This setting -is useful when you don't want the {agent} to enroll until the next reboot or manual start of the service, for -example, when you're preparing an image that includes {agent}. - -`--elastic-agent-cert`:: -Certificate to use as the client certificate for the {agent}'s connections to {fleet-server}. - -`--elastic-agent-cert-key`:: -Private key to use as for the {agent}'s connections to {fleet-server}. - -`--elastic-agent-cert-key-passphrase`:: -The path to the file that contains the passphrase for the mutual TLS private key that {agent} will use to connect to {fleet-server}. -The file must only contain the characters of the passphrase, no newline or extra non-printing characters. -+ -This option is only used if the `--elastic-agent-cert-key` is encrypted and requires a passphrase to use. - -`--enrollment-token `:: -Enrollment token to use to enroll {agent} into {fleet}. You can use -the same enrollment token for multiple agents. - -`--fleet-server-cert `:: -Certificate to use for exposed {fleet-server} HTTPS endpoint. - -`--fleet-server-cert-key `:: -Private key to use for exposed {fleet-server} HTTPS endpoint. - -`--fleet-server-cert-key-passphrase `:: -Path to passphrase file for decrypting {fleet-server}'s private key if an encrypted private key is used. - -`--fleet-server-client-auth `:: -One of `none`, `optional`, or `required`. Defaults to `none`. {fleet-server}'s `client_authentication` option -for client mTLS connections. If `optional`, or `required` is specified, client certificates are verified -using CAs specified in the `--certificate-authorities` flag. - -`--fleet-server-es `:: -Start a {fleet-server} process when {agent} is started, and connect to the -specified {es} URL. - -`--fleet-server-es-ca `:: -Path to certificate authority to use to communicate with {es}. - -`--fleet-server-es-ca-trusted-fingerprint `:: -The SHA-256 fingerprint (hash) of the certificate authority used to self-sign {es} certificates. -This fingerprint will be used to verify self-signed certificates presented by {fleet-server} and any inputs started by {agent} for communication. -This flag is required when using self-signed certificates with {es}. - -`--fleet-server-es-cert`:: -The path to the client certificate that {fleet-server} will use when connecting to {es}. - -`--fleet-server-es-cert-key`:: -The path to the private key that {fleet-server} will use when connecting to {es}. - -`--fleet-server-es-insecure`:: -Allows fleet server to connect to {es} in the following situations: -+ --- -* When connecting to an HTTP server. -* When connecting to an HTTPs server and the certificate chain cannot be -verified. The content is encrypted, but the certificate is not verified. --- -+ -When this flag is used the certificate verification is disabled. - -`--fleet-server-host `:: -{fleet-server} HTTP binding host (overrides the policy). - -`--fleet-server-policy `:: -Used when starting a self-managed {fleet-server} to allow a specific policy to be used. - -`--fleet-server-port `:: -{fleet-server} HTTP binding port (overrides the policy). - -`--fleet-server-service-token `:: -Service token to use for communication with {es}. -Mutually exclusive with `--fleet-server-service-token-path`. - -`--fleet-server-service-token-path `:: -Service token file to use for communication with {es}. -Mutually exclusive with `--fleet-server-service-token`. - -`--fleet-server-timeout `:: -Timeout waiting for {fleet-server} to be ready to start enrollment. - -`--force`:: -Force overwrite of current configuration without prompting for confirmation. -This flag is helpful when using automation software or scripted deployments. -+ -NOTE: If the {agent} is already installed on the host, using `--force` may -result in unpredictable behavior with duplicate {agent}s appearing in {fleet}. - -`--header `:: -Headers used in communication with elasticsearch. - -`--help`:: -Show help for the `enroll` command. - -`--insecure`:: -Allow the {agent} to connect to {fleet-server} over insecure connections. This -setting is required in the following situations: -+ --- -* When connecting to an HTTP server. The API keys are sent in clear text. -* When connecting to an HTTPs server and the certificate chain cannot be -verified. The content is encrypted, but the certificate is not verified. -* When using self-signed certificates generated by {agent}. --- -+ -We strongly recommend that you use a secure connection. - -`--non-interactive`:: -Install {agent} in a non-interactive mode. This flag is helpful when -using automation software or scripted deployments. If {agent} is -already installed on the host, the installation will terminate. - -`--privileged`:: -Run {agent} with full superuser privileges. -This is the usual, default running mode for {agent}. -The `--privileged` option allows you to switch back to running an agent with full administrative privileges when you have been running it in `unprivileged`. - -See the `--unprivileged` option and {fleet-guide}/elastic-agent-unprivileged.html[Run {agent} without administrative privileges] for more detail. - -`--proxy-disabled`:: -Disable proxy support including environment variables. - -`--proxy-header `:: -Proxy headers used with CONNECT request. - -`--proxy-url `:: -Configures the proxy URL. - -`--staging `:: -Configures agent to download artifacts from a staging build. - -`--tag `:: -A comma-separated list of tags to apply to {fleet}-managed {agent}s. You can -use these tags to filter the list of agents in {fleet}. -+ -NOTE: Currently, there is no way to remove or edit existing tags. To change the -tags, you must unenroll the {agent}, then re-enroll it using new tags. - -`--unprivileged`:: -Run {agent} without full superuser privileges. -This option is useful in organizations that limit `root` access on Linux or macOS systems, or `admin` access on Windows systems. -For details and limitations for running {agent} in this mode, refer to {fleet-guide}/elastic-agent-unprivileged.html[Run {agent} without administrative privileges]. -+ -Note that changing to `unprivileged` mode is prevented if the agent is currently enrolled in a policy that includes an integration that requires administrative access, such as the {elastic-defend} integration. -+ -preview:[] To run {agent} without superuser privileges as a pre-existing user or group, for instance under an Active Directory account, you can specify the user or group, and the password to use. -+ -For example: -+ -[source,shell] ----- -elastic-agent install --unprivileged --user="my.path\username" --password="mypassword" ----- -+ -[source,shell] ----- -elastic-agent install --unprivileged --group="my.path\groupname" --password="mypassword" ----- - -`--url `:: -{fleet-server} URL to use to enroll the {agent} into {fleet}. - -{global-flags-link} - -[discrete] -=== Examples - -Install the {agent} as a service, enroll it in {fleet}, and start the -`elastic-agent` service: - -[source,shell] ----- -elastic-agent install \ - --url=https://cedd4e0e21e240b4s2bbbebdf1d6d52f.fleet.eu-west-1.aws.cld.elstc.co:443 \ - --enrollment-token=NEFmVllaa0JLRXhKebVKVTR5TTI6N2JaVlJpSGpScmV0ZUVnZVlRUExFQQ== ----- - -Install the {agent} as a service, enroll it in {fleet}, and start -a `fleet-server` process alongside the `elastic-agent` service: - -[source,shell] ----- -elastic-agent install --fleet-server-es=http://elasticsearch:9200 \ - --fleet-server-service-token=AbEAAdesYXN1abMvZmxlZXQtc2VldmVyL3Rva2VuLTE2MTkxMzg3MzIzMTg7dzEta0JDTmZUcGlDTjlwRmNVTjNVQQ \ - --fleet-server-policy=a35fd620-26f6-11ec-8bd9-3374690f57b6 ----- - -Start {agent} with {fleet-server} (running on a custom CA). This example -assumes you've generated the certificates with the following names: - -* `ca.crt`: Root CA certificate -* `fleet-server.crt`: {fleet-server} certificate -* `fleet-server.key`: {fleet-server} private key -* `elasticsearch-ca.crt`: CA certificate to use to connect to {es} - -[source,shell] ----- -elastic-agent install \ - --url=https://fleet-server:8220 \ - --fleet-server-es=https://elasticsearch:9200 \ - --fleet-server-service-token=AAEBAWVsYXm0aWMvZmxlZXQtc2XydmVyL3Rva2VuLTE2MjM4OTAztDU1OTQ6dllfVW1mYnFTVjJwTC2ZQ0EtVnVZQQ \ - --fleet-server-policy=a35fd520-26f5-11ec-8bd9-3374690g57b6 \ - --certificate-authorities=/path/to/ca.crt \ - --fleet-server-es-ca=/path/to/elasticsearch-ca.crt \ - --fleet-server-cert=/path/to/fleet-server.crt \ - --fleet-server-cert-key=/path/to/fleet-server.key \ - --fleet-server-port=8220 ----- - -Then install another {agent} and enroll it into the {fleet-server} started in -the previous example: - -[source,shell] ----- -elastic-agent install --url=https://fleet-server:8220 \ - --enrollment-token=NEFmVllaa0JLRXhKebVKVTR5TTI6N2JaVlJpSGpScmV0ZUVnZVlRUExFQQ== \ - --certificate-authorities=/path/to/ca.crt ----- - -++++ -
-++++ - -[discrete] -[[elastic-agent-otel-command]] -== elastic-agent otel - -preview::[] - -Run {agent} as an <>. - -[discrete] -=== Synopsis - -[source,shell] ----- -elastic-agent otel [flags] -elastic-agent otel [command] ----- - -NOTE: You can also run the `./otelcol` command, which calls `./elastic-agent otel` and passes any arguments to it. - -[discrete] -=== Available commands - -`validate`:: -Validates the OpenTelemetry collector configuration without running the collector. - -[discrete] -=== Flags - -`--config=file:/path/to/first --config=file:path/to/second`:: -Locations to the config file(s). Note that only a single location can be set per flag entry, for example `--config=file:/path/to/first --config=file:path/to/second`. - -`--feature-gates flag`:: -Comma-delimited list of feature gate identifiers. Prefix with `-` to disable the feature. Prefixing with `+` or no prefix will enable the feature. - -`-h, --help`:: -Get help for the `otel` sub-command. Use `elastic-agent otel [command] --help` for more information about a command. - -`--set string`:: -Set an arbitrary component config property. The component has to be defined in the configuration file and the flag has a higher precedence. Array configuration properties are overridden and maps are joined. For example, `--set=processors::batch::timeout=2s`. - -[discrete] -=== Examples - -Run {agent} as on OTel Collector using the supplied `otel.yml` configuration file. -[source,shell] ----- -./elastic-agent otel --config otel.yml ----- - -Change the default verbosity setting in the {agent} OTel configuration from `detailed` to `normal`. - -[source,shell] ----- -./elastic-agent otel --config otel.yml --set "exporters::debug::verbosity=normal" ----- - -++++ -
-++++ - -[discrete] -[[elastic-agent-restart-command]] -== elastic-agent restart - -Restart the currently running {agent} daemon. - -[discrete] -=== Synopsis - -[source,shell] ----- -elastic-agent restart [--help] [global-flags] ----- - -[discrete] -=== Options - -`--help`:: -Show help for the `restart` command. - -{global-flags-link} - -[discrete] -=== Examples - -[source,shell] ----- -elastic-agent restart ----- - -++++ -
-++++ - -[discrete] -[[elastic-agent-run-command]] -== elastic-agent run - -Start the `elastic-agent` process. - -[discrete] -=== Synopsis - -[source,shell] ----- -elastic-agent run [global-flags] ----- - -[discrete] -[[elastic-agent-global-flags]] -=== Global flags - -These flags are valid whenever you run `elastic-agent` on the command line. - -`-c `:: -The configuration file to use. If not specified, {agent} uses -`{path.config}/elastic-agent.yml`. - -`--e`:: -Log to stderr and disable syslog/file output. - -`--environment `:: -The environment in which the agent will run. - -`--path.config `:: -The directory where {agent} looks for its configuration file. The default -varies by platform. - -`--path.home `:: -The root directory of {agent}. `path.home` determines the location of the -configuration files and data directory. -+ -If not specified, {agent} uses the current working directory. - -`--path.logs `:: -Path to the log output for {agent}. The default varies by platform. - -`--v`:: -Set log level to INFO. - -[discrete] -=== Example - -[source,shell] ----- -elastic-agent run -c myagentconfig.yml ----- - -++++ -
-++++ - -[discrete] -[[elastic-agent-status-command]] -== elastic-agent status - -Returns the current status of the running {agent} daemon and of each process -in the {agent}. The last known status of the {fleet} server is also returned. -The `output` option controls the level of detail and formatting of the information. - -[discrete] -=== Synopsis - -[source,shell] ----- -elastic-agent status [--output ] - [--help] - [global-flags] ----- - -[discrete] -=== Options - -`--output `:: -Output the status information in either `human` (the default), -`full`, `json`, or `yaml`. `human` returns limited information -when {agent} is in the `HEALTHY` state. If any components or units are -not in `HEALTHY` state, then full details are displayed for that -component or unit. `full`, `json` and `yaml` always return the -full status information. Components map to individual processes -running underneath {agent}, for example {filebeat} or {endpoint-sec}. -Units map to discrete configuration units within that process, for -example {filebeat} inputs or {metricbeat} modules. - -When the output is `json` or `yaml`, status codes are returned as -numerical values. The status codes can be mapped using the following -table: - -+ --- -|=== -|Code |Status - -|0 |`STARTING` -|1 |`CONFIGURING` -|2 |`HEALTHY` -|3 |`DEGRADED` -|4 |`FAILED` -|5 |`STOPPING` -|6 |`UPGRADING` -|7 |`ROLLBACK` -|=== --- - -`--help`:: -Show help for the `status` command. - -{global-flags-link} - -[discrete] -=== Examples - -[source,shell] ----- -elastic-agent status ----- - -++++ -
-++++ - -[discrete] -[[elastic-agent-uninstall-command]] -== elastic-agent uninstall - -Permanently uninstall {agent} from the system. - -You must run this command as the root user (or Administrator on Windows) -to remove files. - -[IMPORTANT] -==== -Be sure to run the `uninstall` command from a directory outside of where {agent} is installed. - -For example, on a Windows system the install location is `C:\Program Files\Elastic\Agent`. Run the uninstall command from `C:\Program Files\Elastic` or `\tmp`, or even your default home directory: - -[source,shell] ----- -C:\"Program Files"\Elastic\Agent\elastic-agent.exe uninstall ----- - -==== - -include::{ingest-docs-root}/docs/en/ingest-management/tab-widgets/uninstall-widget.asciidoc[] - -[discrete] -=== Synopsis - -[source,shell] ----- -elastic-agent uninstall [--force] [--help] [global-flags] ----- - -[discrete] -=== Options - -`--force`:: -Uninstall {agent} and do not prompt for confirmation. This flag is helpful -when using automation software or scripted deployments. - -`--skip-fleet-audit`:: -Skip auditing with the {fleet-server}. - -`--help`:: -Show help for the `uninstall` command. - -{global-flags-link} - -[discrete] -=== Examples - -[source,shell] ----- -elastic-agent uninstall ----- - -++++ -
-++++ - -[discrete] -[[elastic-agent-unprivileged-command]] -== elastic-agent unprivileged - -Run {agent} without full superuser privileges. -This is useful in organizations that limit `root` access on Linux or macOS systems, or `admin` access on Windows systems. -For details and limitations for running {agent} in this mode, refer to {fleet-guide}/elastic-agent-unprivileged.html[Run {agent} without administrative privileges]. - -Note that changing a running {agent} to `unprivileged` mode is prevented if the agent is currently enrolled with a policy that contains the {elastic-defend} integration. - -preview:[] To run {agent} without superuser privileges as a pre-existing user or group, for instance under an Active Directory account, add either a `--user` or `--group` parameter together with a `--password` parameter. - -[discrete] -=== Examples - -Run {agent} without administrative privileges: - -[source,shell] ----- -elastic-agent unprivileged ----- - -preview:[] Run {agent} without administrative privileges, as a pre-existing user: - -[source,shell] ----- -elastic-agent unprivileged --user="my.pathl\username" --password="mypassword" ----- - -preview:[] Run {agent} without administrative privileges, as a pre-existing group: - -[source,shell] ----- -elastic-agent unprivileged --group="my.pathl\groupname" --password="mypassword" ----- - -++++ -
-++++ - -[discrete] -[[elastic-agent-upgrade-command]] -== elastic-agent upgrade - -Upgrade the currently running {agent} to the specified version. This should only -be used with agents running in standalone mode. Agents enrolled in {fleet} -should be upgraded through {fleet}. - -[discrete] -=== Synopsis - -[source,shell] ----- -elastic-agent upgrade [--source-uri ] [--help] [flags] ----- - -[discrete] -=== Options - -`version`:: -The version of {agent} to upgrade to. - -`--source-uri `:: -The source URI to download the new version from. By default, {agent} uses the -Elastic Artifacts URL. - -`--skip-verify`:: -Skip the package verification process. This option is not recommended as it is insecure. - -`--pgp-path `:: -Use a locally stored copy of the PGP key to verify the upgrade package. - -`--pgp-uri `:: -Use the specified online PGP key to verify the upgrade package. - -`--help`:: -Show help for the `upgrade` command. - -For details about using the `--skip-verify`, `--pgp-path `, and `--pgp-uri ` -package verification options, refer to <>. - -{global-flags-link} - -[discrete] -=== Examples - -[source,shell] ----- -elastic-agent upgrade 7.10.1 ----- - -++++ -
-++++ - -[discrete] -[[elastic-agent-logs-command]] -== elastic-agent logs - -Show the logs of the running {agent}. - -[discrete] -=== Synopsis - -[source,shell] ----- -elastic-agent logs [--follow] [--number ] [--component ] [--no-color] [--help] [global-flags] ----- - -[discrete] -=== Options - -`--follow` or `-f`:: -Follow log updates until the command is interrupted (for example with `Ctrl-C`). - -`--number ` or `-n `:: -How many lines of logs to print. If logs following is enabled, affects the initial output. - -`--component ` or `-C `:: -Filter logs based on the component name. - -`--no-color`:: -Disable color based on log-level of each entry. - -`--help`:: -Show help for the `logs` command. - -{global-flags-link} - -[discrete] -=== Example - -[source,shell] ----- -elastic-agent logs -n 100 -f -C "system/metrics-default" ----- - -++++ -
-++++ - -[discrete] -[[elastic-agent-version-command]] -== elastic-agent version - -Show the version of {agent}. - -[discrete] -=== Synopsis - -[source,shell] ----- -elastic-agent version [--help] [global-flags] ----- - -[discrete] -=== Options - -`--help`:: -Show help for the `version` command. - -{global-flags-link} - -[discrete] -=== Example - -[source,shell] ----- -elastic-agent version ----- - -++++ -
-++++ - -//// -//commenting out until we decide whether we want to expose this in public docs -[discrete] -[[elastic-agent-watch-command]] -== elastic-agent watch - -Watch the {agent} for failures and initiate rollback. - -[discrete] -=== Synopsis - -[source,shell] ----- -elastic-agent watch [--help] [global-flags] ----- - -[discrete] -=== Options - -`--help`:: -Show help for the `watch` command. - -{global-flags-link} - -[discrete] -=== Example - -[source,shell] ----- -elastic-agent watch ----- - -++++ -
-++++ -//// diff --git a/docs/en/ingest-management/create-agent-policies-no-UI.asciidoc b/docs/en/ingest-management/create-agent-policies-no-UI.asciidoc deleted file mode 100644 index 33a267763..000000000 --- a/docs/en/ingest-management/create-agent-policies-no-UI.asciidoc +++ /dev/null @@ -1,88 +0,0 @@ -[[create-a-policy-no-ui]] -= Create an agent policy without using the UI - -For use cases where you want to provide a default agent policy or support -automation, you can set up an agent policy without using the {fleet} UI. To do -this, either use the {fleet} API or add a preconfigured policy to {kib}: - -[discrete] -[[use-api-to-create-policy]] -== Option 1. Create an agent policy with the API - -[source,sh] ----- -curl -u : --request POST \ - --url /api/fleet/agent_policies?sys_monitoring=true \ - --header 'content-type: application/json' \ - --header 'kbn-xsrf: true' \ - --data '{"name":"Agent policy 1","namespace":"default","monitoring_enabled":["logs","metrics"]}' ----- - -In this API call: - -* `sys_monitoring=true` adds the system integration to the agent policy -* `monitoring_enabled` turns on {agent} monitoring - -For more information, refer to <>. - -[discrete] -[[use-preconfiguration-to-create-policy]] -== Option 2. Create agent policies with preconfiguration - -Add preconfigured policies to `kibana.yml` config. - -For example, the following example adds a {fleet-server} policy for -self-managed setup: - -[source,yaml] ----- -xpack.fleet.packages: - - name: fleet_server - version: latest -xpack.fleet.agentPolicies: - - name: Fleet Server policy - id: fleet-server-policy - namespace: default - package_policies: - - name: fleet_server-1 - package: - name: fleet_server ----- - -The following example creates an agent policy for general use, and customizes the `period` setting for the `system.core` data stream. You can find all available inputs and variables in the **Integrations** app in {kib}. - -[source,yaml] ----- -xpack.fleet.packages: - - name: system - version: latest - - name: elastic_agent - version: latest -xpack.fleet.agentPolicies: - - name: Agent policy 1 - id: agent-policy-1 - namespace: default - monitoring_enabled: - - logs - - metrics - package_policies: - - package: - name: system - name: System Integration 1 - id: preconfigured-system-1 - inputs: - system-system/metrics: - enabled: true - vars: - '[system.hostfs]': home/test - streams: - '[system.core]': - enabled: true - vars: - period: 20s - system-winlog: - enabled: false ----- - -For more information about preconfiguration settings, refer to the -{kibana-ref}/fleet-settings-kb.html[{kib} documentation]. diff --git a/docs/en/ingest-management/data-streams.asciidoc b/docs/en/ingest-management/data-streams.asciidoc deleted file mode 100644 index a113548d1..000000000 --- a/docs/en/ingest-management/data-streams.asciidoc +++ /dev/null @@ -1,1132 +0,0 @@ -[[data-streams]] -= Data streams - -{agent} uses data streams to store time series data across multiple indices -while giving you a single named resource for requests. -Data streams are well-suited for logs, metrics, traces, and other continuously generated data. -They offer a host of benefits over other indexing strategies: - -* *Reduced number of fields per index*: Indices only need to store a specific subset of your -data–meaning no more indices with hundreds of thousands of fields. -This leads to better space efficiency and faster queries. -As an added bonus, only relevant fields are shown in Discover. - -* *More granular data control*: For example, file system, load, CPU, network, and process metrics are sent -to different indices–each potentially with its own rollover, retention, and security permissions. - -* *Flexible*: Use the custom namespace component to divide and organize data in a way that -makes sense to your use case or company. - -* *Fewer ingest permissions required*: Data ingestion only requires permissions to append data. - -[discrete] -[[data-streams-naming-scheme]] -= Data stream naming scheme - -{agent} uses the Elastic data stream naming scheme to name data streams. -The naming scheme splits data into different streams based on the following components: - -`type`:: -A generic `type` describing the data, such as `logs`, `metrics`, `traces`, or `synthetics`. -// Corresponds to the `data_stream.type` field. - -`dataset`:: -The `dataset` is defined by the integration and describes the ingested data and its structure for each index. -For example, you might have a dataset for process metrics with a field describing whether the process is running or not, -and another dataset for disk I/O metrics with a field describing the number of bytes read. - -`namespace`:: -A user-configurable arbitrary grouping, such as an environment (`dev`, `prod`, or `qa`), -a team, or a strategic business unit. -A `namespace` can be up to 100 bytes in length (multibyte characters will count toward this limit faster). -Using a namespace makes it easier to search data from a given source by using a matching pattern. -You can also use matching patterns to give users access to data when creating user roles. -// Corresponds to the `data_stream.dataset` field. -+ -By default the namespace defined for an {agent} policy is propagated to all integrations in that policy. if you'd like to define a more granular namespace for a policy: - -. In {kib}, go to **Integrations**. -. On the **Installed integrations** tab, select the integration that you'd like to update. -. Open the **Integration policies** tab. -. From the **Actions** menu next to the integration, select *Edit integration*. -. Open the advanced options and update the **Namespace** field. Data streams from the integration will now use the specified namespace rather than the default namespace inherited from the {agent} policy. - -The naming scheme separates each components with a `-` character: - -[source,text] --- --- --- - -For example, if you've set up the Nginx integration with a namespace of `prod`, -{agent} uses the `logs` type, `nginx.access` dataset, and `prod` namespace to store data in the following data stream: - -[source,text] --- -logs-nginx.access-prod --- - -Alternatively, if you use the APM integration with a namespace of `dev`, -{agent} stores data in the following data stream: - -[source,text] --- -traces-apm-dev --- - -All data streams, and the pre-built dashboards that they ship with, -are viewable on the {fleet} Data Streams page: - -[role="screenshot"] -image::images/kibana-fleet-datastreams.png[Data streams page] - -TIP: If you're familiar with the concept of indices, you can think of each data stream as a separate index in {es}. -Under the hood though, things are a bit more complex. -All of the juicy details are available in {ref}/data-streams.html[{es} Data streams]. - -[discrete] -[[data-streams-data-view]] -= {data-sources-cap} - -When searching your data in {kib}, you can use a {kibana-ref}/data-views.html[{data-source}] -to search across all or some of your data streams. - -[discrete] -[[data-streams-index-templates]] -= Index templates - -An index template is a way to tell {es} how to configure an index when it is created. -For data streams, the index template configures the stream's backing indices as they are created. - -{es} provides the following built-in, ECS based templates: `logs-*-*`, `metrics-*-*`, and `synthetics-*-*`. -{agent} integrations can also provide dataset-specific index templates, like `logs-nginx.access-*`. -These templates are loaded when the integration is installed, and are used to configure the integration's data streams. - -[discrete] -[[data-streams-index-templates-edit]] -== Edit the {es} index template - -WARNING: Custom index mappings may conflict with the mappings defined by the integration -and may break the integration in {kib}. Do not change or customize any default mappings. - -When you install an integration, {fleet} creates two default `@custom` component templates: - -* A `@custom` component template allowing customization across all documents of a given data stream type, named following the pattern: `@custom`. -* A `@custom` component template for each data stream, named following the pattern: `@custom`. - -The `@custom` component template specific to a datastream has higher precedence over the data stream type `@custom` component template. - -You can edit a `@custom` component template to customize your {es} indices: - -. Open {kib} and navigate to to **{stack-manage-app}** > **Index Management** > **Data Streams**. -. Find and click the name of the integration data stream, such as `logs-cisco_ise.log-default`. -. Click the index template link for the data stream to see the list of associated component templates. -. Navigate to **{stack-manage-app}** > **Index Management** > **Component Templates**. -. Search for the name of the data stream's custom component template and click the edit icon. -. Add any custom index settings, metadata, or mappings. -For example, you may want to: - -* Customize the index lifecycle policy applied to a data stream. -See {apm-guide-ref}/ilm-how-to.html#data-streams-custom-policy[Configure a custom index lifecycle policy] in the APM Guide for a walk-through. -+ -Specify lifecycle name in the **index settings**: -+ -[source,json] ----- -{ - "index": { - "lifecycle": { - "name": "my_policy" - } - } -} ----- - -* Change the number of {ref}/docs-replication.html[replicas] per index. -Specify the number of replica shards in the **index settings**: -+ -[source,json] ----- -{ - "index": { - "number_of_replicas": "2" - } -} ----- - -Changes to component templates are not applied retroactively to existing indices. -For changes to take effect, you must create a new write index for the data stream. -You can do this with the {es} {ref}/indices-rollover-index.html[Rollover API]. - -[discrete] -[[data-streams-ilm]] -= Index lifecycle management ({ilm-init}) - -Use the {ref}/index-lifecycle-management.html[index lifecycle -management] ({ilm-init}) feature in {es} to manage your {agent} data stream indices as they age. -For example, create a new index after a certain period of time, -or delete stale indices to enforce data retention standards. - -Installed integrations may have one or many associated data streams--each with an associated {ilm-init} policy. -By default, these data streams use an {ilm-init} policy that matches their data type. -For example, the data stream `metrics-system.logs-*`, -uses the metrics {ilm-init} policy as defined in the `metrics-system.logs` index template. - -Want to customize your index lifecycle management? See <>. - -[discrete] -[[data-streams-pipelines]] -= Ingest pipelines - -{agent} integration data streams ship with a default {ref}/ingest.html[ingest pipeline] -that preprocesses and enriches data before indexing. -The default pipeline should not be directly edited as changes can easily break the functionality of the integration. - -Starting in version 8.4, all default ingest pipelines call a non-existent and non-versioned "`@custom`" ingest pipeline. -If left uncreated, this pipeline has no effect on your data. However, if added to a data stream and customized, -this pipeline can be used for custom data processing, adding fields, sanitizing data, and more. - -Starting in version 8.12, ingest pipelines can be configured to process events at various levels of customization. - -NOTE: If you create a custom index pipeline, Elastic is not responsible for ensuring that it indexes and behaves as expected. Creating a custom pipeline involves custom processing of the incoming data, which should be done with caution and tested carefully. - -`global@custom`:: -Apply processing to all events -+ -For example, the following {ref}/put-pipeline-api.html[pipeline API] request adds a new field `my-global-field` for all events: -+ -[source,console] ----- -PUT _ingest/pipeline/global@custom -{ - "processors": [ - { - "set": { - "description": "Process all events", - "field": "my-global-field", - "value": "foo" - } - } - ] -} ----- - -`${type}`:: -Apply processing to all events of a given data type. -+ -For example, the following request adds a new field `my-logs-field` for all log events: -+ -[source,console] ----- -PUT _ingest/pipeline/logs@custom -{ - "processors": [ - { - "set": { - "description": "Process all log events", - "field": "my-logs-field", - "value": "foo" - } - } - ] -} ----- - -`${type}-${package}.integration`:: -Apply processing to all events of a given type in an integration -+ -For example, the following request creates a `logs-nginx.integration@custom` pipeline that adds a new field `my-nginx-field` for all log events in the Nginx integration: -+ -[source,console] ----- -PUT _ingest/pipeline/logs-nginx.integration@custom -{ - "processors": [ - { - "set": { - "description": "Process all nginx events", - "field": "my-nginx-field", - "value": "foo" - } - } - ] -} ----- -+ -Note that `.integration` is included in the pipeline pattern to avoid possible collision with existing dataset pipelines. - - -`${type}-${dataset}`:: -Apply processing to a specific dataset. -+ -For example, the following request creates a `metrics-system.cpu@custom` pipeline that adds a new field `my-system.cpu-field` for all CPU metrics events in the System integration: -+ -[source,console] ----- -PUT _ingest/pipeline/metrics-system.cpu@custom -{ - "processors": [ - { - "set": { - "description": "Process all events in the system.cpu dataset", - "field": "my-system.cpu-field", - "value": "foo" - } - } - ] -} ----- - -Custom pipelines can directly contain processors or you can use the pipeline processor to call other pipelines that can be shared across multiple data streams or integrations. -These pipelines will persist across all version upgrades. - -[[data-streams-pipelines-warning]] -[WARNING] -==== -If you have a custom pipeline defined that matches the naming scheme used for any {fleet} custom ingest pipelines, this can produce unintended results. For example, if you have a pipeline named like one of the following: - -* `global@custom` -* `traces@custom` -* `traces-apm@custom` - -The pipeline may be unexpectedly called for other data streams in other integrations. To avoid this problem, avoid the naming schemes defined above when naming your custom pipelines. - -Refer to the breaking change in the 8.12.0 Release Notes for more detail and workaround options. -==== - -See <> to get started. - -[[data-streams-ilm-tutorial]] -== Tutorials: Customize data retention policies - -These tutorials explain how to apply a custom {ilm-init} policy to an integration's data stream. - -[discrete] -[[data-streams-general-info]] -== Before you begin - -For certain features you'll need to use a slightly different procedure to manage the index lifecycle: - -* APM: For verions 8.15 and later, refer to {observability-guide}/apm-ilm-how-to.html[Index lifecycle management]. -* Synthetic monitoring: Refer to {observability-guide}/synthetics-manage-retention.html[Manage data retention]. -* Universal Profiling: Refer to {observability-guide}/profiling-index-lifecycle-management.html[Universal Profiling index life cycle management]. - -[discrete] -[[data-streams-scenarios]] -== Identify your scenario - -How you apply an ILM policy depends on your use case. Choose a scenario for the detailed steps. - -* **<>**: You want to apply an ILM policy to all logs or metrics data streams across all namespaces. - -* **<>**: You want to apply an ILM policy to selected data streams in an integration. - -* **<>**: You want apply an ILM policy for data streams in a selected namespace in an integration. - - -[[data-streams-scenario1]] -== Scenario 1: Apply an ILM policy to all data streams generated from Fleet integrations across all namespaces - -++++ -Scenario 1: All data streams in all namespaces -++++ - -NOTE: This tutorial uses a `logs@custom` and a `metrics@custom` component template which are available in versions 8.13 and later. -For versions later than 8.4 and earlier than 8.13, you instead need to use the `@custom component template` and add the ILM policy to that template. -This needs to be done for every newly added integration. - -Mappings and settings for data streams can be customized through the creation of `*@custom` component templates, which are referenced by the index templates created by each integration. -The easiest way to configure a custom index lifecycle policy per data stream is to edit this template. - -This tutorial explains how to apply a custom index lifecycle policy to all of the data streams associated with the `System` integration, as an example. -Similar steps can be used for any other integration. -Setting a custom index lifecycle policy must be done separately for all logs and for all metrics, as described in the following steps. - -[discrete] -[id="data-streams-scenario1-step1"] -== Step 1: Create an index lifecycle policy - -. To open **Lifecycle Policies**, find **Stack Management** in the main menu or use the {kibana-ref}/introduction.html#kibana-navigation-search[global search field]. -. Click **Create policy**. - -Name your new policy. -For this tutorial, you can use `my-ilm-policy`. -Customize the policy to your liking, and when you're done, click **Save policy**. - -[discrete] -[id="data-streams-scenario1-step2"] -== Step 2: Create a component template for the `logs` index templates - -The **Index Templates** view in {kib} shows you all of the index templates available to automatically apply settings, mappings, and aliases to indices: - -. To open **Index Management**, find **Stack Management** in the main menu or use the {kibana-ref}/introduction.html#kibana-navigation-search[global search field]. -. Select **Index Templates**. -. Search for `system` to see all index templates associated with the System integration. -. Select any `logs-*` index template to view the associated component templates. For example, you can select the `logs-system.application` index template. -+ -[role="screenshot"] -image::images/component-templates-list.png[List of component templates available for the index template] - -. Select `logs@custom` in the list to view the component template properties. -. For a newly added integration, the component template won't exist yet. -Select **Create component template** to create it. -If the component template already exists, click **Manage** to update it. -. On the **Logistics** page, keep all defaults and click **Next**. -. On the **Index settings** page, in the **Index settings** field, specify the ILM policy that you created. For example: -+ -[source,json] ----- -{ - "index": { - "lifecycle": { - "name": "my-ilm-policy" - } - } -} ----- - -. Click **Next**. -. For both the **Mappings** and **Aliases** pages, keep all defaults and click **Next**. -. Finally, on the **Review** page, review the summary and request. If everything looks good, select **Create component template**. -+ -[role="screenshot"] -image::images/review-component-template01.png[Review details for the new component template] - -[discrete] -[id="data-streams-scenario1-step3"] -== Step 3: Roll over the data streams (optional) - -To confirm that the index template is using the `logs@custom` component template with your custom ILM policy: - -. Reopen the **Index Management** page and open the **Component Templates** tab. -. Search for `logs@` and select the `logs@custom` component template. -. The **Summary** shows the list of all data streams that use the component template, and the **Settings** view shows your newly configured ILM policy. - -New ILM policies only take effect when new indices are created, -so you either must wait for a rollover to occur (usually after 30 days or when the index size reaches 50 GB), -or force a rollover of each data stream using the {ref}/indices-rollover-index.html[{es} rollover API. - -For example: - -[source,bash] ----- -POST /logs-system.auth/_rollover/ ----- - -[discrete] -[id="data-streams-scenario1-step4"] -== Step 4: Repeat these steps for the metrics data streams - -You've now applied a custom index lifecycle policy to all of the `logs-*` data streams in the `System` integration. -For the metrics data streams, you can repeat steps 2 and 3, using a `metrics-*` index template and the `metrics@custom` component template. - - - -[[data-streams-scenario2]] -== Scenario 2: Apply an ILM policy to specific data streams generated from Fleet integrations across all namespaces - -++++ -Scenario 2: Selected data streams in all namespaces -++++ - -Mappings and settings for data streams can be customized through the creation of `*@custom` component templates, -which are referenced by the index templates created by the {es} apm-data plugin. -The easiest way to configure a custom index lifecycle policy per data stream is to edit this template. - -This tutorial explains how to apply a custom index lifecycle policy to the `logs-system.auth` data stream. - -[discrete] -[id="data-streams-scenario2-step1"] -== Step 1: Create an index lifecycle policy - -. To open **Lifecycle Policies**, find **Stack Management** in the main menu or use the {kibana-ref}/introduction.html#kibana-navigation-search[global search field]. -. Click **Create policy**. - -Name your new policy. -For this tutorial, you can use `my-ilm-policy`. -Customize the policy to your liking, and when you're done, click **Save policy**. - -[discrete] -[id="data-streams-scenario2-step2"] -== Step 2: View index templates - -The **Index Templates** view in {kib} shows you all of the index templates available to automatically apply settings, mappings, and aliases to indices: - -. To open **Index Management**, find **Stack Management** in the main menu or use the {kibana-ref}/introduction.html#kibana-navigation-search[global search field]. -. Select **Index Templates**. -. Search for `system` to see all index templates associated with the System integration. -. Select the index template that matches the data stream for which you want to set up an ILM policy. For this example, you can select the `logs-system.auth` index template. -+ -[role="screenshot"] -image::images/index-template-system-auth.png[List of component templates available for the logs-system.auth index template] - -. In the **Summary**, select `logs-system.auth@custom` from the list to view the component template properties. -. For a newly added integration, the component template won't exist yet. -Select **Create component template** to create it. -If the component template already exists, click **Manage** to update it. -.. On the **Logistics** page, keep all defaults and click **Next**. -.. On the **Index settings** page, in the **Index settings** field, specify the ILM policy that you created. For example: -+ -[source,json] ----- -{ - "index": { - "lifecycle": { - "name": "my-ilm-policy" - } - } -} ----- - -.. Click **Next**. -.. For both the **Mappings** and **Aliases** pages, keep all defaults and click **Next**. -.. Finally, on the **Review** page, review the summary and request. If everything looks good, select **Create component template**. -+ -[role="screenshot"] -image::images/review-component-template02.png[Review details for the new component template] - -[discrete] -[id="data-streams-scenario2-step3"] -== Step 3: Roll over the data streams (optional) - -To confirm that the index template is using the `logs@custom` component template with your custom ILM policy: - -. Reopen the **Index Management** page and open the **Component Templates** tab. -. Search for `system` and select the `logs-system.auth@custom` component template. -. The **Summary** shows the list of all data streams that use the component template, and the **Settings** view shows your newly configured ILM policy. - -New ILM policies only take effect when new indices are created, -so you either must wait for a rollover to occur (usually after 30 days or when the index size reaches 50 GB), -or force a rollover of the data stream using the {ref}/indices-rollover-index.html[{es} rollover API: - -[source,bash] ----- -POST /logs-system.auth/_rollover/ ----- - -[discrete] -[id="data-streams-scenario2-step4"] -== Step 4: Repeat these steps for other data streams - -You've now applied a custom index lifecycle policy to the `logs-system.auth` data stream in the `System` integration. -Repeat these steps for any other data streams for which you'd like to configure a custom ILM policy. - - - -[[data-streams-scenario3]] -== Scenario 3: Apply an ILM policy with integrations using multiple namespaces - -++++ -Scenario 3: Selected integrations and namespaces -++++ - -In this scenario, you have {agent}s collecting system metrics with the System integration in two environments--one with the namespace `development`, and one with `production`. - -**Goal:** Customize the {ilm-init} policy for the `system.network` data stream in the `production` namespace. -Specifically, apply the built-in `90-days-default` {ilm-init} policy so that data is deleted after 90 days. - -[NOTE] -==== -* This scenario involves cloning an index template. We strongly recommend repeating this procedure on every minor {stack} upgrade in order to avoid missing any possible changes to the structure of the managed index template(s) that are shipped with integrations. - -* If you cloned an index template to customize the data retention policy on an {es} version prior to 8.13, you must update the index template in the clone to use the `ecs@mappings` component template on {es} version 8.13 or later. See <> for the step-by-step instructions. -==== - -[discrete] -[[data-streams-ilm-one]] -== Step 1: View data streams - -The **Data Streams** view in {kib} shows you the data streams, -index templates, and {ilm-init} policies associated with a given integration. - -. Navigate to **{stack-manage-app}** > **Index Management** > **Data Streams**. -. Search for `system` to see all data streams associated with the System integration. -. Select the `metrics-system.network-{namespace}` data stream to view its associated index template and {ilm-init} policy. -As you can see, the data stream follows the <> and starts with its type, `metrics-`. -+ -[role="screenshot"] -image::images/data-stream-info.png[Data streams info] - -[discrete] -[[data-streams-ilm-two]] -== Step 2: Create a component template - -For your changes to continue to be applied in future versions, -you must put all custom index settings into a component template. -The component template must follow the data stream naming scheme, -and end with `@custom`: - -[source,text] ----- ---@custom ----- - -For example, to create custom index settings for the `system.network` data stream with a namespace of `production`, -the component template name would be: - -[source,text] ----- -metrics-system.network-production@custom ----- - -. Navigate to **{stack-manage-app}** > **Index Management** > **Component Templates** -. Click **Create component template**. -. Use the template above to set the name--in this case, `metrics-system.network-production@custom`. Click **Next**. -. Under **Index settings**, set the {ilm-init} policy name under the `lifecycle.name` key: -+ -[source,json] ----- -{ - "lifecycle": { - "name": "90-days-default" - } -} ----- -. Continue to **Review** and ensure your request looks similar to the image below. -If it does, click **Create component template**. -+ -[role="screenshot"] -image::images/create-component-template.png[Create component template] - -[discrete] -[[data-streams-ilm-three]] -== Step 3: Clone and modify the existing index template - -Now that you've created a component template, -you need to create an index template to apply the changes to the correct data stream. -The easiest way to do this is to duplicate and modify the integration's existing index template. - -[WARNING] -==== -Please note the following: -* When duplicating the index template, do not change or remove any managed properties. This may result in problems when upgrading. Cloning the index template of an integration package involves some risk as any changes made to the original index template when it is upgraded will not be propagated to the cloned version. -* These steps assume that you want to have a namespace specific ILM policy, which requires index template cloning. Cloning the index template of an integration package involves some risk because any changes made to the original index template as part of package upgrades are not propagated to the cloned version. See <> for details. -+ -If you want to change the ILM Policy, the number of shards, or other settings for the datastreams of one or more integrations, but **the changes do not need to be specific to a given namespace**, it's strongly recommended to use a `@custom` component template, as described in <> and <>, so as to avoid the problems mentioned above. See the <> section for details. -==== - -. Navigate to **{stack-manage-app}** > **Index Management** > **Index Templates**. -. Find the index template you want to clone. The index template will have the `` and `` in its name, -but not the ``. In this case, it's `metrics-system.network`. -. Select **Actions** > **Clone**. -. Set the name of the new index template to `metrics-system.network-production`. -. Change the index pattern to include a namespace--in this case, `metrics-system.network-production*`. -This ensures the previously created component template is only applied to the `production` namespace. -. Set the priority to `250`. This ensures that the new index template takes precedence over other index templates that match the index pattern. -. Under **Component templates**, search for and add the component template created in the previous step. -To ensure your namespace-specific settings are applied over other custom settings, -the new template should be added below the existing `@custom` template. -. Create the index template. - -[role="screenshot"] -image::images/create-index-template.png[Create index template] - -[discrete] -[[data-streams-ilm-four]] -== Step 4: Roll over the data stream (optional) - -To confirm that the data stream is now using the new index template and {ilm-init} policy, -you can either repeat Step 1, or navigate to **{dev-tools-app}** and run the following: - -[source,bash] ----- -GET /_data_stream/metrics-system.network-production <1> ----- -<1> The name of the data stream we've been hacking on - -The result should include the following: - -[source,json] ----- -{ - "data_streams" : [ - { - ... - "template" : "metrics-system.network-production", <1> - "ilm_policy" : "90-days-default", <2> - ... - } - ] -} ----- -<1> The name of the custom index template created in step three -<2> The name of the {ilm-init} policy applied to the new component template in step two - -New {ilm-init} policies only take effect when new indices are created, -so you either must wait for a rollover to occur (usually after 30 days or when the index size reaches 50 GB), -or force a rollover using the {ref}/indices-rollover-index.html[{es} rollover API]: - -[source,bash] ----- -POST /metrics-system.network-production/_rollover/ ----- - -[discrete] -[[data-streams-pipeline-update-cloned-template-before-8.13]] -== Update index template cloned before {es} 8.13 - -If you cloned an index template to customize the data retention policy on an {es} version prior to 8.13, you must update the index cloned index template to add the `ecs@mappings` component template on {es} version 8.13 or later. - -To update the cloned index template: - -. Navigate to **{stack-manage-app}** > **Index Management** > **Index Templates**. -. Find the index template you cloned. The index template will have the `` and `` in its name. -. Select **Manage** > **Edit**. -. Select **(2) Component templates** -. In the **Search component templates** field, search for `ecs@mappings`. -. Click on the **+ (plus)** icon to add the `ecs@mappings` component template. -. Move the `ecs@mappings` component template right below the `@package` component template. -. Save the index template. - -Roll over the data stream to apply the changes. - -[[data-streams-pipeline-tutorial]] -== Tutorial: Transform data with custom ingest pipelines - -This tutorial explains how to add a custom ingest pipeline to an Elastic Integration. -Custom pipelines can be used to add custom data processing, -like adding fields, obfuscate sensitive information, and more. - -**Scenario:** You have {agent}s collecting system metrics with the System integration. - -**Goal:** Add a custom ingest pipeline that adds a new field to each {es} document before it is indexed. - -[discrete] -[[data-streams-pipeline-one]] -== Step 1: Create a custom ingest pipeline - -Create a custom ingest pipeline that will be called by the default integration pipeline. -In this tutorial, we'll create a pipeline that adds a new field to our documents. - -. In {kib}, navigate to **Stack Management** -> **Ingest Pipelines** -> **Create pipeline** -> **New pipeline**. - -. Name your pipeline. We'll call this one, `add_field`. - -. Select **Add a processor**. Fill out the following information: -+ -** Processor: "Set" -** Field: `test` -** Value: `true` -+ -The {ref}/set-processor.html[Set processor] sets a document field and associates it with the specified value. - -. Click **Add**. - -. Click **Create pipeline**. - -[discrete] -[[data-streams-pipeline-two]] -== Step 2: Apply your ingest pipeline - -Add a custom pipeline to an integration by calling it from the default ingest pipeline. -The custom pipeline will run after the default pipeline but before the final pipeline. - -[discrete] -=== Edit integration - -Add a custom pipeline to an integration from the **Edit integration** workflow. -The integration must already be configured and installed before a custom pipeline can be added. -To enter this workflow, do the following: - -. Navigate to **{fleet}** -. Select the relevant {agent} policy -. Search for the integration you want to edit -. Select **Actions** -> **Edit integration** - -[discrete] -=== Select a data stream - -Most integrations write to multiple data streams. -You'll need to add the custom pipeline to each data stream individually. - -. Find the first data stream you wish to edit and select **Change defaults**. -For this tutorial, find the data stream configuration titled, **Collect metrics from System instances**. - -. Scroll to **System CPU metrics** and under **Advanced options** select **Add custom pipeline**. -+ -This will take you to the **Create pipeline** workflow in **Stack management**. - -[discrete] -=== Add the pipeline - -Add the pipeline you created in step one. - -. Select **Add a processor**. Fill out the following information: -+ -** Processor: "Pipeline" -** Pipeline name: "add_field" -** Value: `true` - -. Click **Create pipeline** to return to the **Edit integration** page. - -[discrete] -=== Roll over the data stream (optional) - -For pipeline changes to take effect immediately, you must roll over the data stream. -If you do not, the changes will not take effect until the next scheduled roll over. -Select **Apply now and rollover**. - -After the data stream rolls over, note the name of the custom ingest pipeline. -In this tutorial, it's `metrics-system.cpu@custom`. -The name follows the pattern `-@custom`: - -* type: `metrics` -* dataset: `system.cpu` -* Custom ingest pipeline designation: `@custom` - -[discrete] -=== Repeat - -Add the custom ingest pipeline to any other data streams you wish to update. - -[discrete] -[[data-streams-pipeline-three]] -== Step 3: Test the ingest pipeline (optional) - -Allow time for new data to be ingested before testing your pipeline. -In a new window, open {kib} and navigate to **{kib} Dev tools**. - -Use an {ref}/query-dsl-exists-query.html[exists query] to ensure that the -new field, "test" is being applied to documents. - -[source,console] ----- -GET metrics-system.cpu-default/_search <1> -{ - "query": { - "exists": { - "field": "test" <2> - } - } -} ----- -<1> The data stream to search. In this tutorial, we've edited the `metrics-system.cpu` type and dataset. -`default` is the default namespace. -Combining all three of these gives us a data stream name of `metrics-system.cpu-default`. -<2> The name of the field set in step one. - -If your custom pipeline is working correctly, this query will return at least one document. - -[discrete] -[[data-streams-pipeline-four]] -== Step 4: Add custom mappings - -Now that a new field is being set in your {es} documents, you'll want to assign a new mapping for that field. -Use the `@custom` component template to apply custom mappings to an integration data stream. - -In the **Edit integration** workflow, do the following: - -. Under **Advanced options** select the pencil icon to edit the `@custom` component template. - -. Define the new field for your indexed documents. Select **Add field** and add the following information: -+ -* Field name: `test` -* Field type: `Boolean` - -. Click **Add field**. - -. Click **Review** to fast-forward to the review step and click **Save component template** to return to the **Edit integration** workflow. - -. For changes to take effect immediately, select **Apply now and rollover**. - -[discrete] -[[data-streams-pipeline-five]] -== Step 5: Test the custom mappings (optional) - -Allow time for new data to be ingested before testing your mappings. -In a new window, open {kib} and navigate to **{kib} Dev tools**. - -Use the {ref}/indices-get-field-mapping.html[Get field mapping API] to ensure that the -custom mapping has been applied. - -[source,console] ----- -GET metrics-system.cpu-default/_mapping/field/test <1> ----- -<1> The data stream to search. In this tutorial, we've edited the `metrics-system.cpu` type and dataset. -`default` is the default namespace. -Combining all three of these gives us a data stream name of `metrics-system.cpu-default`. - -The result should include `type: "boolean"` for the specified field. - -[source,json] ----- -".ds-metrics-system.cpu-default-2022.08.10-000002": { - "mappings": { - "test": { - "full_name": "test", - "mapping": { - "test": { - "type": "boolean" - } - } - } - } -} ----- - -[discrete] -[[data-streams-pipeline-six]] -== Step 6: Add an ingest pipeline for a data type - -The previous steps demonstrated how to create a custom ingest pipeline that adds a new field to each {es} document generated for the Systems integration CPU metrics (`system.cpu`) dataset. - -You can create an ingest pipeline to process data at various levels of customization. -An ingest pipeline processor can be applied: - -* Globally to all events -* To all events of a certain type (for example `logs` or `metrics`) -* To all events of a certain type in an integration -* To all events in a specific dataset - -Let's create a new custom ingest pipeline `logs@custom` that processes all log events. - -. Open {kib} and navigate to **{kib} Dev tools**. - -. Run a {ref}/put-pipeline-api.html[pipeline API] request to add a new field `my-logs-field`: -+ -[source,console] ----- -PUT _ingest/pipeline/logs@custom -{ - "processors": [ - { - "set": { - "description": "Custom field for all log events", - "field": "my-logs-field", - "value": "true" - } - } - ] -} ----- - -. Allow some time for new data to be ingested, and then use a new {ref}/query-dsl-exists-query.html[exists query] to confirm that the -new field "my-logs-field" is being applied to log event documents. -+ -For this example, we'll check the System integration `system.syslog` dataset: -+ -[source,console] ----- -GET /logs-system.syslog-default/_search?pretty -{ - "query": { - "exists": { - "field": "my-logs-field" - } - } -} ----- - -With the new pipeline applied, this query should return at least one document. - -You can modify your pipeline API request as needed to apply custom processing at various levels. -Refer to <> to learn more. - - -[[data-streams-advanced-features]] -== Enabling and disabling advanced indexing features for {fleet}-managed data streams - -++++ -Advanced data stream features -++++ - -{fleet} provides support for several advanced features around its data streams, including: - -* link:{ref}/tsds.html[Time series data streams (TSDS)] -* link:{ref}/mapping-source-field.html#synthetic-source[Synthetic `_source`] - -These features can be enabled and disabled for {fleet}-managed data streams by using the index template API and a few key settings. -Note that in versions 8.17.0 and later, Synthetic `_source` requires an Enterprise license. - -NOTE: If you are already making use of `@custom` component templates for ingest or retention customization (as shown for example in <>), exercise care to ensure you don't overwrite your customizations when making these requests. - -We recommended using link:{kibana-ref}/devtools-kibana.html[{kib} Dev Tools] to run the following requests. Replace `` with the name of a given integration data stream. For example specifying `metrics-nginx.stubstatus` results in making a PUT request to `_component_template/metrics-nginx.stubstatus@custom`. Use the index management interface to explore what integration data streams are available to you. - -Once you've executed a given request below, you also need to execute a data stream rollover to ensure any incoming data is ingested with your new settings immediately. For example: - -[source,sh] ----- -POST metrics-nginx.stubstatus-default/_rollover ----- - -Refer to the following steps to enable or disable advanced data stream features: - -* <> - -[discrete] -[[data-streams-advanced-tsds-enable]] -== Enable TSDS - -NOTE: TSDS uses synthetic `_source`, so if you want to trial both features you need to enable only TSDS. - -Due to restrictions in the {es} API, TSDS must be enabled at the *index template* level. So, you'll need to make some sequential requests to enable or disable TSDS. - -. Send a GET request to retrieve the index template: -+ -[source,json] ----- -GET _index_template/ ----- -+ -. Use the JSON payload returned from the GET request to populate a PUT request, for example: -+ -[source,json] ----- -PUT _index_template/ -{ - # You can copy & paste this directly from the GET request above - "index_patterns": [ - "" - ], - - # Make sure this is added - "template": { - "settings": { - "index": { - "mode": "time_series" - } - } - }, - - # You can copy & paste this directly from the GET request above - "composed_of": [ - "@package", - "@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - - # You can copy & paste this directly from the GET request above - "priority": 200, - - # Make sure this is added - "data_stream": { - "allow_custom_routing": false - } -} - ----- - -[discrete] -[[data-streams-advanced-tsds-disable]] -== Disable TSDS - -To disable TSDS, follow the same procedure as to <>, but specify `null` for `index.mode` instead of `time_series`. Follow the steps below or you can copy the <>. - -. Send a GET request to retrieve the index template: -+ -[source,json] ----- -GET _index_template/ ----- -+ -. Use the JSON payload returned from the GET request to populate a PUT request, for example: -+ -[source,json] ----- -PUT _index_template/ -{ - # You can copy/paste this directly from the GET request above - "index_patterns": [ - "" - ], - - # Make sure this is added - "template": { - "settings": { - "index": { - "mode": null - } - } - }, - - # You can copy/paste this directly from the GET request above - "composed_of": [ - "@package", - "@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - - # You can copy/paste this directly from the GET request above - "priority": 200, - - # Make sure this is added - "data_stream": { - "allow_custom_routing": false - } -} ----- -+ -For example, the following payload disables TSDS on `nginx.stubstatus`: -+ -[[data-streams-advanced-tsds-disable-nginx-example]] -[source,json] ----- -{ - "index_patterns": [ - "metrics-nginx.stubstatus-*" - ], - - "template": { - "settings": { - "index": { - "mode": null - } - } - }, - - "composed_of": [ - "metrics-nginx.stubstatus@package", - "metrics-nginx.stubstatus@custom", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - - "priority": 200, - - "data_stream": { - "allow_custom_routing": false - } -} ----- - -[discrete] -[[data-streams-advanced-synthetic-enable]] -== Enable synthetic `_source` - -[source,json] ----- -PUT _component_template/@custom -{ - "settings": { - "index": { - "mapping": { - "source": { - "mode": "synthetic" - } - } - } - } -} - ----- - -[discrete] -[[data-streams-advanced-synthetic-disable]] -== Disable synthetic `_source` - -[source,json] ----- -PUT _component_template/@custom -{ - "settings": { - "index": { - "mapping": { - "source": {"mode": "stored"} - } - } - } -} ----- diff --git a/docs/en/ingest-management/elastic-agent/advanced-kubernetes-managed-by-fleet.asciidoc b/docs/en/ingest-management/elastic-agent/advanced-kubernetes-managed-by-fleet.asciidoc deleted file mode 100644 index 7ba89744f..000000000 --- a/docs/en/ingest-management/elastic-agent/advanced-kubernetes-managed-by-fleet.asciidoc +++ /dev/null @@ -1,110 +0,0 @@ -[[advanced-kubernetes-managed-by-fleet]] -= Advanced {agent} configuration managed by {fleet} - -For basic {agent} managed by {fleet} scenarios follow the steps in <>. - -On managed {agent} installations it can be useful to provide the ability to configure more advanced options, such as the configuration of providers during the startup. Refer to <> for more details. - -Following steps demonstrate above scenario: - -[discrete] -== Step 1: Download the {agent} manifest - -It is advisable to follow the steps of <> with Kubernetes Integration installed in your policy and download the {agent} manifest from Kibana UI - -image::images/k8skibanaUI.png[{agent} with K8s Package manifest] - -Notes:: -Sample manifests can also be found https://github.com/elastic/elastic-agent/blob/main/deploy/kubernetes/elastic-agent-managed-kubernetes.yaml[here] - -[discrete] -== Step 2: Create a new configmap - -[source,yaml] -.Create a new configmap ------------------------------------------------- -apiVersion: v1 -kind: ConfigMap -metadata: - name: agent-node-datastreams - namespace: kube-system - labels: - k8s-app: elastic-agent -data: - agent.yml: |- - providers.kubernetes_leaderelection.enabled: false - fleet.enabled: true - fleet.access_token: "" ---- ------------------------------------------------- - -Notes:: -1. In the above example the disablement of `kubernetes_leaderelection` provider is demonstrated. Same procedure can be followed for alternative scenarios. -[source,yaml] -.Example of configmap to configure kubernetes metadata enrichment ------------------------------------------------- -apiVersion: v1 -kind: ConfigMap -metadata: - name: agent-node-datastreams - namespace: kube-system - labels: - k8s-app: elastic-agent -data: - agent.yml: |- - providers.kubernetes: - add_resource_metadata: - deployment: true - cronjob: true - fleet.enabled: true - fleet.access_token: "" ---- ------------------------------------------------- - -1. Find more information about https://www.elastic.co/guide/en/fleet/current/fleet-enrollment-tokens.html[Enrollment Tokens]. - -[discrete] -== Step 3: Configure Daemonset - -Inside the downloaded manifest, update the Daemonset resource: - -[source,yaml] -.Update entrypoint ------------------------------------------------- -containers: - - name: elastic-agent - image: docker.elastic.co/elastic-agent/elastic-agent: - args: ["-c", "/etc/elastic-agent/agent.yml", "-e"] ------------------------------------------------- - -Notes:: -The is just a placeholder for the elastic-agent image version that you will download in your manifest: eg. `image: docker.elastic.co/elastic-agent/elastic-agent: 8.11.0` -Important thing is to update your manifest with args details - -[source,yaml] -.Add extra Volume Mount ------------------------------------------------- -volumeMounts: - - name: datastreams - mountPath: /etc/elastic-agent/agent.yml - readOnly: true - subPath: agent.yml ------------------------------------------------- - -[source,yaml] -.Add new Volume ------------------------------------------------- -volumes: - - name: datastreams - configMap: - defaultMode: 0640 - name: agent-node-datastreams ------------------------------------------------- - -[discrete] -== Important Notes - -1. By default the manifests for {agent} managed by {fleet} have `hostNetwork:true`. In order to support multiple installations of {agent}s in the same node you should set `hostNetwork:false`. See this relevant https://github.com/elastic/elastic-agent/tree/main/docs/manifests/hostnetwork[example] as described in https://github.com/elastic/elastic-agent/blob/main/docs/elastic-agent-ksm-sharding.md[{agent} Manifests in order to support Kube-State-Metrics Sharding]. - -2. The volume `/usr/share/elastic-agent/state` must remain mounted in https://github.com/elastic/elastic-agent/blob/main/deploy/kubernetes/elastic-agent-managed-kubernetes.yaml[elastic-agent-managed-kubernetes.yaml], otherwise custom config map provided above will be overwritten. - diff --git a/docs/en/ingest-management/elastic-agent/configuration/authentication/kerberos-shared-settings.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/authentication/kerberos-shared-settings.asciidoc deleted file mode 100644 index 216e339b5..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/authentication/kerberos-shared-settings.asciidoc +++ /dev/null @@ -1,121 +0,0 @@ -// These settings are shared across some inputs and outputs. - -// You can include this whole block, or individual settings -// tag::kerberos-all-settings[] - - -[cols="2*SSL/TLS -++++ - -There are a number of SSL configuration settings available depending on whether -you are configuring a client, server, or both. See the following tables for -available settings: - -* <>. These settings are valid in both client and -server configurations. - -* <> - -* <> - -TIP: For more information about using certificates, refer to -<>. - -[[common-ssl-options]] -.Common configuration options -[cols="2*> to learn how to retrieve and configure it. - -There are two different ways to use autodiscover: - -* <> - -* <> - - -[discrete] -== How to configure autodiscover - -`Conditions Based Autodiscover` is more suitable for scenarios when users know the different group of containers they want to monitor in advance. It is advisable to choose conditions-based configuration when administrators can configure specific conditions that match their needs. Conditions are supported in both Managed and Standalone {agent}. - -`Hints Based Autodiscover` is suitable for more generic scenarios, especially when users don't know the exact configuration of the system to monitor and can not create in advance conditions. Additionally a big advantage of Hints Autodiscover is the ability to offer dynamic configuration of inputs based on annotations from Pods/Containers. If dynamic configuration is needed, then Hints should be enabled. Hints are supported only in Standalone {agent} mode. - -*Best Practises when you configure autodiscover:* - -- Always define alternatives and default values to your variables that are used in conditions or [hint templates](eg. See `auth.basic` set as `auth.basic.user: ${kubernetes.hints.nginx.access.username|kubernetes.hints.nginx.username|''}`` in [nginx.yml](https://github.com/elastic/elastic-agent/blob/main/deploy/kubernetes/elastic-agent-standalone/templates.d/nginx.yml#L8)) - -IMPORTANT: When an input uses a variable substitution that is not present in the current key/value mappings being evaluated, the input is removed in the result. (See more information in <>) - -- To debug configurations that include variable substitution and conditions, use the inspect command of {agent}. (See more information in <> in *Debugging* Section) - -- In Condition Based autodiscover is advisable to define a generic last condition that will act as your default condition and will be validated when all others fail or don't apply. If applicable, such conditions might help to identify processing and troubleshoot possible problems. diff --git a/docs/en/ingest-management/elastic-agent/configuration/autodiscovery/kubernetes-conditions-autodiscover.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/autodiscovery/kubernetes-conditions-autodiscover.asciidoc deleted file mode 100644 index c6c7bdad5..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/autodiscovery/kubernetes-conditions-autodiscover.asciidoc +++ /dev/null @@ -1,311 +0,0 @@ -[[conditions-based-autodiscover]] -= Conditions based autodiscover - -You can define autodiscover conditions in each input to allow {agent} to automatically identify Pods and start monitoring them using predefined integrations. Refer to <> to get an idea. - -IMPORTANT: Condition definition is supported both in *{agent} managed by {fleet}* and in *standalone* scenarios. - -For more information about variables and conditions in input configurations, refer to <>. -You can find available variables of autodiscovery in <>. - - -== Example: Target Pods by label - -To automatically identify a Redis Pod and monitor it with the Redis integration, uncomment the following input configuration inside the https://github.com/elastic/elastic-agent/blob/main/deploy/kubernetes/elastic-agent-standalone-kubernetes.yaml[{agent} Standalone manifest]: - - -[source,yaml] ------------------------------------------------- -- name: redis - type: redis/metrics - use_output: default - meta: - package: - name: redis - version: 0.3.6 - data_stream: - namespace: default - streams: - - data_stream: - dataset: redis.info - type: metrics - metricsets: - - info - hosts: - - '${kubernetes.pod.ip}:6379' - idle_timeout: 20s - maxconn: 10 - network: tcp - period: 10s - condition: ${kubernetes.labels.app} == 'redis' ------------------------------------------------- - -The condition `${kubernetes.labels.app} == 'redis'` will make the {agent} look for a Pod with the label `app:redis` within the scope defined in its manifest. - -For a list of provider fields that you can use in conditions, refer to <>. -Some examples of conditions usage are: - -1. For a pod with label `app.kubernetes.io/name=ingress-nginx` the condition should be `condition: ${kubernetes.labels.app.kubernetes.io/name} == "ingress-nginx"`. -2. For a pod with annotation `prometheus.io/scrape: "true"` the condition should be `${kubernetes.annotations.prometheus.io/scrape} == "true"`. -3. For a pod with name `kube-scheduler-kind-control-plane` the condition should be `${kubernetes.pod.name} == "kube-scheduler-kind-control-plane"`. - - -The `redis` input defined in the {agent} manifest only specifies the`info` metricset. To learn about other available metricsets and their configuration settings, refer to the {metricbeat-ref}/metricbeat-module-redis.html[Redis module page]. - -To deploy Redis, you can apply the following example manifest: - -[source,yaml] ------------------------------------------------- -apiVersion: v1 -kind: Pod -metadata: - name: redis - labels: - k8s-app: redis - app: redis -spec: - containers: - - image: redis - imagePullPolicy: IfNotPresent - name: redis - ports: - - name: redis - containerPort: 6379 - protocol: TCP ------------------------------------------------- - -You should now be able to see Redis data flowing in on index `metrics-redis.info-default`. Make sure the port in your Redis manifest file matches the port used in the Redis input. - -NOTE: All assets (dashboards, ingest pipelines, and so on) related to the Redis integration are not installed. You need to explicitly <>. - -Conditions can also be used in inputs configuration in order to set the target host dynamically for a targeted Pod based on its labels. -This is useful for datasets that target specific pods like `kube-scheduler` or `kube-controller-manager`. -The following configuration will enable `kubernetes.scheduler` dataset only for pods which have the label `component=kube-scheduler` defined. - -[source,yaml] ----- -- data_stream: - dataset: kubernetes.scheduler - type: metrics - metricsets: - - scheduler - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token - hosts: - - 'https://${kubernetes.pod.ip}:10259' - period: 10s - ssl.verification_mode: none - condition: ${kubernetes.labels.component} == 'kube-scheduler' ----- - -NOTE: Pods' labels and annotations can be used in autodiscover conditions. In the case of labels or annotations that include dots(`.`), they can be used in conditions exactly as -they are defined in the pods. For example `condition: ${kubernetes.labels.app.kubernetes.io/name} == 'ingress-nginx'`. This should not be confused with the dedoted (by default) labels and annotations -stored into Elasticsearch(<>). - -WARNING: Before the 8.6 release, labels used in autodiscover conditions were dedoted in case the `labels.dedot` parameter was set to `true` in Kubernetes Provider -configuration (by default `true`). The same did not apply for annotations. This was fixed in 8.6 release. Refer to the Release Notes section of the version 8.6.0 documentation. - -WARNING: In some "As a Service" Kubernetes implementations, like GKE, the control plane nodes or even the Pods running on them won't be visible. In these cases, it won't be possible to use scheduler metricsets, necessary for this example. Refer https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-module-kubernetes.html#_scheduler_and_controllermanager[scheduler and controller manager] to find more information. - -Following the Redis example, if you deploy another Redis Pod with a different port, it should be detected. To check this, go, for example, to the field `service.address` under `metrics-redis.info-default`. It should be displaying two different services. - -To obtain the policy generated by this configuration, connect to {agent} container: - -["source", "sh", subs="attributes"] ------------------------------------------------- -kubectl exec -n kube-system --stdin --tty elastic-agent-standalone-id -- /bin/bash ------------------------------------------------- - -Do not forget to change the `elastic-agent-standalone-id` to your {agent} Pod's name. Moreover, make sure that your Pod is inside `kube-system`. If not, change `-n kube-system` to the correct namespace. - -Inside the container <> of the configuration file you used for the {agent}: - -["source", "sh", subs="attributes"] ------------------------------------------------- -elastic-agent inspect --variables --variables-wait 1s -c /etc/elastic-agent/agent.yml ------------------------------------------------- - -[%collapsible] -.You should now be able to see the generated policy. If you look for the `scheduler`, it will look similar to this. -==== -[source,yaml] ----- -- bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token - hosts: - - https://172.19.0.2:10259 - index: metrics-kubernetes.scheduler-default - meta: - package: - name: kubernetes - version: 1.9.0 - metricsets: - - scheduler - module: kubernetes - name: kubernetes-node-metrics - period: 10s - processors: - - add_fields: - fields: - labels: - component: kube-scheduler - tier: control-plane - namespace: kube-system - namespace_labels: - kubernetes_io/metadata_name: kube-system - namespace_uid: 03d6fd2f-7279-4db4-9a98-51e50bbe5c62 - node: - hostname: kind-control-plane - labels: - beta_kubernetes_io/arch: amd64 - beta_kubernetes_io/os: linux - kubernetes_io/arch: amd64 - kubernetes_io/hostname: kind-control-plane - kubernetes_io/os: linux - node-role_kubernetes_io/control-plane: "" - node_kubernetes_io/exclude-from-external-load-balancers: "" - name: kind-control-plane - uid: b8d65d6b-61ed-49ef-9770-3b4f40a15a8a - pod: - ip: 172.19.0.2 - name: kube-scheduler-kind-control-plane - uid: f028ad77-c82a-4f29-ba7e-2504d9b0beef - target: kubernetes - - add_fields: - fields: - cluster: - name: kind - url: kind-control-plane:6443 - target: orchestrator - - add_fields: - fields: - dataset: kubernetes.scheduler - namespace: default - type: metrics - target: data_stream - - add_fields: - fields: - dataset: kubernetes.scheduler - target: event - - add_fields: - fields: - id: "" - snapshot: false - version: 8.3.0 - target: elastic_agent - - add_fields: - fields: - id: "" - target: agent - ssl.verification_mode: none ----- -==== - -== Example: Dynamic logs path - -To set the log path of Pods dynamically in the configuration, use a variable in the -{agent} policy to return path information from the provider: - -[source,yaml] ----- -- name: container-log - id: container-log-${kubernetes.pod.name}-${kubernetes.container.id} - type: filestream - use_output: default - meta: - package: - name: kubernetes - version: 1.9.0 - data_stream: - namespace: default - streams: - - data_stream: - dataset: kubernetes.container_logs - type: logs - prospector.scanner.symlinks: true - parsers: - - container: ~ - paths: - - /var/log/containers/*${kubernetes.container.id}.log ----- - -[%collapsible] -.The policy generated by this configuration will look similar to this for every Pod inside the scope defined in the manifest. -==== -[source,yaml] ----- -- id: container-log-etcd-kind-control-plane-af311067a62fa5e4d6e5cb4d31e64c1c35d82fe399eb9429cd948d5495496819 - index: logs-kubernetes.container_logs-default - meta: - package: - name: kubernetes - version: 1.9.0 - name: container-log - parsers: - - container: null - paths: - - /var/log/containers/*af311067a62fa5e4d6e5cb4d31e64c1c35d82fe399eb9429cd948d5495496819.log - processors: - - add_fields: - fields: - id: af311067a62fa5e4d6e5cb4d31e64c1c35d82fe399eb9429cd948d5495496819 - image: - name: registry.k8s.io/etcd:3.5.4-0 - runtime: containerd - target: container - - add_fields: - fields: - container: - name: etcd - labels: - component: etcd - tier: control-plane - namespace: kube-system - namespace_labels: - kubernetes_io/metadata_name: kube-system - namespace_uid: 03d6fd2f-7279-4db4-9a98-51e50bbe5c62 - node: - hostname: kind-control-plane - labels: - beta_kubernetes_io/arch: amd64 - beta_kubernetes_io/os: linux - kubernetes_io/arch: amd64 - kubernetes_io/hostname: kind-control-plane - kubernetes_io/os: linux - node-role_kubernetes_io/control-plane: "" - node_kubernetes_io/exclude-from-external-load-balancers: "" - name: kind-control-plane - uid: b8d65d6b-61ed-49ef-9770-3b4f40a15a8a - pod: - ip: 172.19.0.2 - name: etcd-kind-control-plane - uid: 08970fcf-bb93-487e-b856-02399d81fb29 - target: kubernetes - - add_fields: - fields: - cluster: - name: kind - url: kind-control-plane:6443 - target: orchestrator - - add_fields: - fields: - dataset: kubernetes.container_logs - namespace: default - type: logs - target: data_stream - - add_fields: - fields: - dataset: kubernetes.container_logs - target: event - - add_fields: - fields: - id: "" - snapshot: false - version: 8.3.0 - target: elastic_agent - - add_fields: - fields: - id: "" - target: agent - prospector.scanner.symlinks: true - type: filestream ----- -==== diff --git a/docs/en/ingest-management/elastic-agent/configuration/autodiscovery/kubernetes-hints-autodiscover.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/autodiscovery/kubernetes-hints-autodiscover.asciidoc deleted file mode 100644 index 1adc1ae89..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/autodiscovery/kubernetes-hints-autodiscover.asciidoc +++ /dev/null @@ -1,430 +0,0 @@ -[[hints-annotations-autodiscovery]] -= Hints annotations based autodiscover - -beta[] - -NOTE: Make sure you are using {agent} 8.5+. - -NOTE: Hints autodiscovery only works with {agent} Standalone. - -Standalone {agent} supports autodiscover based on hints from the <>. -The hints mechanism looks for hints in Kubernetes Pod annotations that have the prefix `co.elastic.hints`. -As soon as the container starts, {agent} checks it for hints and launches the proper configuration -for the container. Hints tell {agent} how to monitor the container by using the proper integration. -This is the full list of supported hints: - -[discrete] -== Required hints: - -[float] -=== `co.elastic.hints/package` - -The package to use for monitoring. - -[discrete] -== Optional hints available: - -[float] -=== `co.elastic.hints/host` - -The host to use for metrics retrieval. If not defined, the host will be set as the default one: `:`. - - - -[float] -=== `co.elastic.hints/data_stream` - -The list of data streams to enable. If not specified, the integration's default data streams are used. To find the defaults, refer to the {integrations-docs}[Elastic integrations documentation]. - -If data streams are specified, additional hints can be defined per data stream. For example, `co.elastic.hints/info.period: 5m` if the data stream specified is `info` for the {metricbeat-ref}/metricbeat-module-redis.html[Redis module]. - -[source,yaml] ----- -apiVersion: v1 -kind: Pod -metadata: - name: redis - annotations: - co.elastic.hints/package: redis - co.elastic.hints/data_streams: info - co.elastic.hints/info.period: 5m ----- - -If data stream hints are not specified, the top level hints will be used in its configuration. - -[float] -=== `co.elastic.hints/metrics_path` - -The path to retrieve the metrics from. - -[float] -=== `co.elastic.hints/period` - -The time interval for metrics retrieval, for example, 10s. - -[float] -=== `co.elastic.hints/timeout` - -Metrics retrieval timeout, for example, 3s. - -[float] -=== `co.elastic.hints/username` - -The username to use for authentication. - -[float] -=== `co.elastic.hints/password` - -The password to use for authentication. It is recommended to retrieve this sensitive information from an ENV variable -and avoid placing passwords in plain text. - -[float] -=== `co.elastic.hints/stream` - -The stream to use for logs collection, for example, stdout/stderr. - -If the specified package has no logs support, a generic container's logs input will be used as a fallback. See the `Hints autodiscovery for kubernetes log collection` example below. - -[float] -=== `co.elastic.hints/processors` - -Define a processor to be added to the input configuration. See <> for the list of supported processors. - -If the processors configuration uses list data structure, object fields must be enumerated. For example, hints for the rename processor configuration below - -[source,yaml] ----- -processors: - - rename: - fields: - - from: "a.g" - to: "e.d" - fail_on_error: true ----- - -will look like: - -[source,yaml] ----- -co.elastic.hints/processors.rename.fields.0.from: "a.g" -co.elastic.hints/processors.rename.fields.1.to: "e.d" -co.elastic.hints/processors.rename.fail_on_error: 'true' ----- - -If the processors configuration uses map data structure, enumeration is not needed. For example, the equivalent to the `add_fields` configuration below - -[source,yaml] ----- -processors: - - add_fields: - target: project - fields: - name: myproject ----- - -is - -[source,yaml] ----- -co.elastic.hints/processors.1.add_fields.target: "project" -co.elastic.hints/processors.1.add_fields.fields.name: "myproject" ----- - -In order to provide ordering of the processor definition, numbers can be provided. If not, the hints builder will do arbitrary ordering: - -[source,yaml] ----- -co.elastic.hints/processors.1.dissect.tokenizer: "%{key1} %{key2}" -co.elastic.hints/processors.dissect.tokenizer: "%{key2} %{key1}" ----- - -In the above sample the processor definition tagged with `1` would be executed first. - -IMPORTANT: Processor configuration is not supported on the datastream level, so annotations like `co.elastic.hints/.processors` are ignored. - -[discrete] -== Multiple containers - -When a pod has multiple containers, the settings are shared unless you put the container name in the hint. For example, these hints configure `processors.decode_json_fields` for all containers in the pod, but set a specific `stream` hint for the container called sidecar. - -[source,yaml] ----- -annotations: - co.elastic.hints/processors.decode_json_fields.fields: "message" - co.elastic.hints/processors.decode_json_fields.add_error_key: true - co.elastic.hints/processors.decode_json_fields.overwrite_keys: true - co.elastic.hints/processors.decode_json_fields.target: "team" - co.elastic.hints.sidecar/stream: "stderr" ----- - -[discrete] -== Available packages that support hints autodiscovery - -The available packages that are supported through hints can be found -https://github.com/elastic/elastic-agent/tree/main/deploy/kubernetes/elastic-agent-standalone/templates.d[here]. - -[discrete] -== Configure hints autodiscovery - -To enable hints autodiscovery, you must add `hints.enabled: true` to the provider's configuration: - -[source,yaml] ----- -providers: - kubernetes: - hints.enabled: true ----- - -Then ensure that an init container is specified by uncommenting the respective sections in the {agent} manifest. -An init container is required to download the hints templates. - -["source", "yaml", subs="attributes"] ----- -initContainers: -- name: k8s-templates-downloader - image: docker.elastic.co/elastic-agent/elastic-agent:{branch} - command: ['bash'] - args: - - -c - - >- - mkdir -p /usr/share/elastic-agent/state/inputs.d && - curl -sL https://github.com/elastic/elastic-agent/archive/{branch}.tar.gz | tar xz -C /usr/share/elastic-agent/state/inputs.d --strip=5 "elastic-agent-{branch}/deploy/kubernetes/elastic-agent-standalone/templates.d" - securityContext: - runAsUser: 0 - volumeMounts: - - name: elastic-agent-state - mountPath: /usr/share/elastic-agent/state ----- - - -NOTE: The {agent} can load multiple configuration files from `{path.config}/inputs.d` and finally produce a unified one (refer to <>). Users have the ability to manually mount their own templates under `/usr/share/elastic-agent/state/inputs.d` *if they want to skip enabling initContainers section*. - - -[discrete] -== Examples: - -[discrete] -=== Hints autodiscovery for redis - -Enabling hints allows users deploying Pods on the cluster to automatically turn on Elastic -monitoring at Pod deployment time. -For example, to deploy a Redis Pod on the cluster and automatically enable Elastic monitoring, add the proper hints as annotations on the Pod manifest file: - -[source,yaml] ----- -... -apiVersion: v1 -kind: Pod -metadata: - name: redis - annotations: - co.elastic.hints/package: redis - co.elastic.hints/data_streams: info - co.elastic.hints/host: '${kubernetes.pod.ip}:6379' - co.elastic.hints/info.period: 5s - labels: - k8s-app: redis - app: redis -... ----- - -After deploying this Pod, the data will start flowing in automatically. You can find it on the index `metrics-redis.info-default`. - -NOTE: All assets (dashboards, ingest pipelines, and so on) related to the Redis integration are not installed. You need to explicitly <>. - - -[discrete] -=== Hints autodiscovery for kubernetes log collection - -The log collection for Kubernetes autodiscovered pods can be supported by using https://github.com/elastic/elastic-agent/tree/main/deploy/kubernetes/elastic-agent-standalone/templates.d/container_logs.yml[container_logs.yml template]. Elastic Agent needs to emit a container_logs mapping so as to start collecting logs for all the discovered containers *even if no annotations are present in the containers*. - -1. Follow steps described above to enable Hints Autodiscover -2. Make sure that relevant `container_logs.yml` template will be mounted under /usr/share/elastic-agent/state/inputs.d/ folder of Elastic Agent -3. Deploy Elastic Agent Manifest -4. Elastic Agent should be able to discover all containers inside kuernetes cluster and to collect available logs. - -The previous default behaviour can be disabled with `hints.default_container_logs: false`. -So this will disable the automatic logs collection from all discovered pods. Users need specifically to annotate their pod with following annotations: - -[source,yaml] ----- -annotations: - co.elastic.hints/package: "container_logs" ----- - - -[source,yaml] ----- -providers.kubernetes: - node: ${NODE_NAME} - scope: node - hints: - enabled: true - default_container_logs: false -... ----- - -In the following sample nginx manifest, we will additionally provide specific stream annotation, in order to configure the filestream input to read only stderr stream: - -[source,yaml] ----- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: nginx - name: nginx - namespace: default -spec: - selector: - matchLabels: - app: nginx - template: - metadata: - labels: - app: nginx - annotations: - co.elastic.hints/package: "container_logs" - co.elastic.hints/stream: "stderr" - spec: - containers: - - image: nginx - name: nginx -... ----- - -Users can monitor the final rendered Elastic Agent configuration: - -[source,bash] ----- -kubectl exec -ti -n kube-system elastic-agent-7fkzm -- bash - - -/usr/share/elastic-agent# /elastic-agent inspect -v --variables --variables-wait 2s - -inputs: -- data_stream.namespace: default - id: hints-container-logs-3f69573a1af05c475857c1d0f98fc55aa01b5650f146d61e9653a966cd50bd9c-kubernetes-1780aca0-3741-4c8c-aced-b9776ba3fa81.nginx - name: filestream-generic - original_id: hints-container-logs-3f69573a1af05c475857c1d0f98fc55aa01b5650f146d61e9653a966cd50bd9c - [output truncated ....] - streams: - - data_stream: - dataset: kubernetes.container_logs - type: logs - exclude_files: [] - exclude_lines: [] - parsers: - - container: - format: auto - stream: stderr - paths: - - /var/log/containers/*3f69573a1af05c475857c1d0f98fc55aa01b5650f146d61e9653a966cd50bd9c.log - prospector: - scanner: - symlinks: true - tags: [] - type: filestream - use_output: default -outputs: - default: - hosts: - - https://elasticsearch:9200 - password: changeme - type: elasticsearch - username: elastic -providers: - kubernetes: - hints: - default_container_logs: false - enabled: true - node: control-plane - scope: node ----- - -[discrete] -=== Hints autodiscovery for kubernetes logs with JSON decoding - -Based on the previous example, users might want to perform extra processing on specific logs, for example to decode specific fields containing JSON strings. Use of <> is advisable as follows: - -You need to have enabled hints autodiscovery, as described in the previous `Hints autodiscovery for Kubernetes log collection` example. - -The pod that will produce JSON logs needs to be annotated with: - -[source,yaml] ----- - - annotations: - co.elastic.hints/package: "container_logs" - co.elastic.hints/processors.decode_json_fields.fields: "message" - co.elastic.hints/processors.decode_json_fields.add_error_key: 'true' - co.elastic.hints/processors.decode_json_fields.overwrite_keys: 'true' - co.elastic.hints/processors.decode_json_fields.target: "team" ----- - -> NOTE: These parameters for the `decode_json_fields` processor are just an example. - -The following log entry: - -[source,json] ----- -{"myteam": "ole"} ----- - -Will produce both fields: the original `message` field and also the target field `team`. - -[source,json] ----- - -"team": { - "myteam": "ole" - }, - -"message": "{\"myteam\": \"ole\"}", ----- - -[discrete] -== Troubleshooting - -When things do not work as expected, you may need to troubleshoot your setup. Here we provide some directions to speed up your investigation: - -. Exec inside an Agent's Pod and run the `inspect` command to verify how inputs are constructed dynamically: -+ -["source", "sh", subs="attributes"] ------------------------------------------------- -./elastic-agent inspect --variables --variables-wait 1s -c /etc/elastic-agent/agent.yml ------------------------------------------------- -+ -Specifically, examine how the inputs are being populated. - -. View the {agent} logs: -+ -["source", "sh", subs="attributes"] ------------------------------------------------- -tail -f /etc/elastic-agent/data/logs/elastic-agent-*.ndjson ------------------------------------------------- -+ -Verify that the hints feature is enabled in the config and look for hints-related logs like: -"Generated hints mappings are ..." -In these logs, you can find the mappings that are extracted out of the annotations and determine if the values can populate a specific input. - -. View the {metricbeat} logs: -+ -["source", "sh", subs="attributes"] ------------------------------------------------- -tail -f /etc/elastic-agent/data/logs/default/metricbeat-*.ndjson ------------------------------------------------- - -. View the {filebeat} logs: -+ -["source", "sh", subs="attributes"] ------------------------------------------------- -tail -f /etc/elastic-agent/data/logs/default/filebeat-*.ndjson ------------------------------------------------- - -. View the target input template. For the Redis example: -+ -["source", "sh", subs="attributes"] ------------------------------------------------- -cat f /usr/share/elastic-agent/state/inputs.d/redis.yml ------------------------------------------------- diff --git a/docs/en/ingest-management/elastic-agent/configuration/create-standalone-agent-policy.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/create-standalone-agent-policy.asciidoc deleted file mode 100644 index 8480c9a3e..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/create-standalone-agent-policy.asciidoc +++ /dev/null @@ -1,102 +0,0 @@ -[[create-standalone-agent-policy]] -= Create a standalone {agent} policy - -To get started quickly, use {kib} to add integrations to an agent policy, then -download the policy to use as a starting point for your standalone {agent} -policy. This approach saves time, is less error prone, and populates the -policy with a lot of details that are tedious to add manually. Also, -adding integrations in {kib} loads required assets, such as index templates, -and ingest pipelines, before you start your {agent}s. - -TIP: If you're a {fleet} user and already have an agent policy you want to -use in standalone mode, go to *{fleet} > Agents* and click *Add agent*. Follow -the steps under *Run standalone* to download the policy file. - -You don't need {fleet} to perform the following steps, but on self-managed -clusters, API keys must be enabled in the {es} configuration (set -`xpack.security.authc.api_key.enabled: true`). - -. From the main menu in {kib}, click *Add integrations*, and search for the -{agent} integration you want to use. Read the description to make sure the -integration works with {agent}. - -. Click the integration to see more details about it, then click -*Add *. -+ -[role="screenshot"] -image::images/add-integration-standalone.png[Add Nginx integration screen with agent policy selected] -+ -NOTE: If you're adding your first integration and no {agent}s are installed, -{kib} may display a page that walks you through configuring the integration and -installing {agent}. If you see this page, click **Install {agent}**, then click the -**standalone mode** link. Follow the in-product instructions instead of the -steps described here. - -. Under *Configure integration*, enter a name and description for the integration. - -. Click the down arrow next to enabled streams and make sure the settings are -correct for your host. - -. Under *Apply to agent policy*, select an existing policy, or click -*Create agent policy* and create a new one. - -. When you’re done, save and continue. -+ -A popup window gives you the option to add {agent} to your hosts. -+ -[role="screenshot"] -image::images/add-agent-to-hosts.png[Popup window showing the option to add {agent} to your hosts] - -. (Optional) To add more integrations to the agent policy, click *Add {agent} -later* and go back to the *Integrations* page. Repeat the previous steps for each -integration. - -. When you're done adding integrations, in the popup window, click -*Add {agent} to your hosts* to open the *Add agent* flyout. - -. Click *Run standalone* and follow the in-product instructions to download -{agent} (if you haven't already). - -. Click *Download Policy* to download the policy file. -+ -[role="screenshot"] -image::images/download-agent-policy.png[Add data screen with option to download the default agent policy] - -The downloaded policy already contains a default {es} address and port for your -setup. You may need to change them if you use a proxy or load balancer. Modify -the policy, as required, making sure that you provide credentials for connecting -to {es} - -If you need to add integrations to the policy _after_ deploying -it, you'll need to run through these steps again and re-deploy the -updated policy to the host where {agent} is running. - -For detailed information about starting the agent, including the permissions -needed for the {es} user, refer to <>. - -[discrete] -[[update-standalone-policies]] -== Upgrade standalone agent policies after upgrading an integration - -Because standalone agents are not managed by {fleet}, they are unable to upgrade -to new integration package versions automatically. When you upgrade an -integration in {kib} (or it gets upgraded automatically), you'll need to update -the standalone policy to use new features and capabilities. - -You'll also need to update the standalone policy if you want to add new -integrations. - -To update your standalone policy, use the same steps you used to create and -download the original policy file: - -. Follow the steps under <> to create and -download a new policy, then compare the new policy file to the old one. - -. Either use the new policy and apply your customizations to it, or -update your old policy to include changes, such as field changes, added -by the upgrade. - -IMPORTANT: Make sure you update the standalone agent policy in the directory -where {agent} is running, not the directory where you downloaded the -installation package. Refer to <> for the location of -installed {agent} files. diff --git a/docs/en/ingest-management/elastic-agent/configuration/elastic-agent-configuration.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/elastic-agent-configuration.asciidoc deleted file mode 100644 index 8cbb1f9cb..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/elastic-agent-configuration.asciidoc +++ /dev/null @@ -1,59 +0,0 @@ -[[elastic-agent-configuration]] -= Configure standalone {agent}s - -TIP: To get started quickly, use {kib} to create and download a standalone -policy file. You'll still need to deploy and manage the file, though. For more -information, refer to <> or try out our example: -<>. - -Standalone {agent}s are manually configured and managed locally on the systems -where they are installed. They are useful when you are not interested in -centrally managing agents in {fleet}, either due to your company's security -requirements, or because you prefer to use another configuration management -system. - -To configure standalone {agent}s, specify settings in the `elastic-agent.yml` -policy file deployed with the agent. Prior to installation, -the file is located in the extracted {agent} package. After installation, the -file is copied to the directory described in <>. To apply -changes after installation, you must modify the installed file. - -For installation details, refer to <>. - -Alternatively, you can put input configurations in YAML files into the -folder `{path.config}/inputs.d` to separate your configuration into -multiple smaller files. -The YAML files in the `inputs.d` folder should contain input configurations only. -Any other configurations are ignored. -The files are reloaded at the same time as the standalone configuration. - -TIP: The first line of the configuration must be `inputs`. Then you can list the -inputs you would like to run. Each input in the policy must have a unique value -for the `id` key. If the `id` key is missing its value defaults to the empty -string `""`. - -[source,yaml] ----- -inputs: - - id: unique-logfile-id - type: logfile - data_stream.namespace: default - paths: [/path/to/file] - use_output: default - - - id: unique-system-metrics-id - type: system/metrics - data_stream.namespace: default - use_output: default - streams: - - metricset: cpu - data_stream.dataset: system.cpu ----- - -The following sections describe some settings you might need to configure to -run an {agent} standalone. For a full reference example, refer to the -<> file. - -The settings described here are available for standalone {agent}s. Settings for -{fleet}-managed agents are specified through the UI. You do not set them -explicitly in a policy file. diff --git a/docs/en/ingest-management/elastic-agent/configuration/elastic-agent-monitoring.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/elastic-agent-monitoring.asciidoc deleted file mode 100644 index 568776f89..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/elastic-agent-monitoring.asciidoc +++ /dev/null @@ -1,55 +0,0 @@ -[[elastic-agent-monitoring-configuration]] -= Configure monitoring for standalone {agent}s - -++++ -Monitoring -++++ - -{agent} monitors {beats} by default. To turn off or change monitoring -settings, set options under `agent.monitoring` in the `elastic-agent.yml` file. - -This example configures {agent} monitoring: - -[source,yaml] ----- -agent.monitoring: - # enabled turns on monitoring of running processes - enabled: true - # enables log monitoring - logs: true - # enables metrics monitoring - metrics: true - # exposes /debug/pprof/ endpoints for Elastic Agent and Beats - # enable these endpoints if the monitoring endpoint is set to localhost - pprof.enabled: false - # specifies output to be used - use_output: monitoring - http: - # exposes a /buffer endpoint that holds a history of recent metrics - buffer.enabled: false ----- - -To turn off monitoring, set `agent.monitoring.enabled` to `false`. When set to -`false`, {beats} monitoring is turned off, and all other options in this section -are ignored. - -To enable monitoring, set `agent.monitoring.enabled` to `true`. Also set the -`logs` and `metrics` settings to control whether logs, metrics, or both are -collected. If neither setting is specified, monitoring is turned off. Set -`use_output` to specify the output to which monitoring events are sent. - -You can also add the setting `agent.monitoring.http.enabled: true` to expose a `/liveness` endpoint. -By default, the endpoint returns a `200` OK status as long as {agent}'s internal main loop is responsive and can process configuration changes. -It can be configured to also monitor the component states and return an error if anything is degraded or has failed. - -The `agent.monitoring.pprof.enabled` option controls whether the {agent} and {beats} expose the -`/debug/pprof/` endpoints with the monitoring endpoints. It is set to `false` -by default. Data produced by these endpoints can be useful for debugging but present a -security risk. It is recommended that this option remains `false` if the monitoring endpoint -is accessible over a network. - -The `agent.monitoring.http.buffer.enabled` option controls whether the {agent} and {beats} -collect metrics into an in-memory buffer and expose these through a `/buffer` endpoint. -It is set to `false` by default. This data can be useful for debugging or if the {agent} -has issues communicating with {es}. Enabling this option may slightly increase process -memory usage. diff --git a/docs/en/ingest-management/elastic-agent/configuration/elastic-agent-standalone-download.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/elastic-agent-standalone-download.asciidoc deleted file mode 100644 index f28dd182d..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/elastic-agent-standalone-download.asciidoc +++ /dev/null @@ -1,56 +0,0 @@ -[[elastic-agent-standalone-download]] -= Configure download settings for standalone {agent} upgrades - -++++ -Agent download -++++ - -The `agent.download` section of the elastic-agent.yml config file contains settings for where to download and store artifacts used for {agent} upgrades. - -[[elastic-agent-standalone-download-settings]] -.{agent} download settings -[cols="2*Feature flags -++++ - -The Feature Flags section of the elastic-agent.yml config file contains settings in {agent} that are disabled by default. These may include experimental features, changes to behaviors within {agent} or its components, or settings that could cause a breaking change. For example a setting that changes information included in events might be inconsistent with the naming pattern expected in your configured {agent} output. - -To enable any of the settings listed on this page, change the associated `enabled` flag from `false` to `true`. - -[source,yaml] ----- -agent.features: - mysetting: - enabled: true ----- - -[discrete] -[[elastic-agent-standalone-feature-flag-settings]] -== Feature flag configuration settings - -You can specify the following settings in the Feature Flag section of the -`elastic-agent.yml` config file. - -Fully qualified domain name (FQDN):: -When enabled, information provided about the current host through the <> key, in events produced by {agent}, is in FQDN format (`somehost.example.com` rather than `somehost`). This helps you to distinguish between hosts on different domains that have similar names. With `fqdn` enabled, the fully qualified hostname allows each host to be more easily identified when viewed in {kib}. -+ -NOTE: FQDN reporting is not currently supported in APM. -+ -For FQDN reporting to work as expected, the hostname of the current host must either: -+ --- -* Have a CNAME entry defined in DNS. -* Have one of its corresponding IP addresses respond successfully to a reverse DNS lookup. --- -+ -If neither pre-requisite is satisfied, `host.name` continues to report the hostname of the current host as if the FQDN feature flag were not enabled. -+ -To enable fully qualified domain names set `enabled: true` for the `fqdn` setting: -+ -["source","yaml",subs="attributes"] ----- -agent.features: - fqdn: - enabled: true ----- diff --git a/docs/en/ingest-management/elastic-agent/configuration/elastic-agent-standalone-logging.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/elastic-agent-standalone-logging.asciidoc deleted file mode 100644 index fbf5debd3..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/elastic-agent-standalone-logging.asciidoc +++ /dev/null @@ -1,176 +0,0 @@ -[[elastic-agent-standalone-logging-config]] -= Configure logging for standalone {agent}s - -++++ -Logging -++++ - -The Logging section of the `elastic-agent.yml` config file contains settings for configuring the logging output. -The logging system can write logs to the `syslog`, `file`, `stderr`, `eventlog`, or rotate log files. -If you do not explicitly configure logging, the `stderr` output is used. - -This example configures {agent} logging: - -["source","yaml",subs="attributes"] ----- -agent.logging.level: info -agent.logging.to_files: true -agent.logging.files: - path: /var/log/elastic-agent - name: elastic-agent - keepfiles: 7 - permissions: 0600 ----- - -[discrete] -[[elastic-agent-standalone-logging-settings]] -== Logging configuration settings - -You can specify the following settings in the Logging section of the -`elastic-agent.yml` config file. - -Some outputs will log raw events on errors like indexing errors in the -Elasticsearch output, to prevent logging raw events (that may contain -sensitive information) together with other log messages, a different -log file, only for log entries containing raw events, is used. It will -use the same level, selectors and all other configurations from the -default logger, but it will have it's own file configuration. - -Having a different log file for raw events also prevents event data -from drowning out the regular log files. Use -`agent.logging.event_data` to configure the events logger. - -The events log file is not collected by the {agent} monitoring. -If the events log files are needed, they can be collected with -the diagnostics or directly copied from the host running {agent}. - -[cols="2*Environment variables -++++ - -Use environment variables to configure {agent} when running in a containerized environment. -Variables on this page are grouped by action type: - -* <> -* <> prepare the {fleet} plugin in {kib} -* <> bootstrap {fleet-server} on an {agent} -* <> enroll an {agent} - -[discrete] -[[env-common-vars]] -= Common variables - -// forces a unique ID so that settings can be included multiple times on the same page -:type: common - -To limit the number of environment variables that need to be set, -the following common variables are available. -These variables can be used across all {agent} actions, -but have a lower precedence than action-specific environment variables. - -These common variables are useful, for example, when using the same {es} and {kib} credentials -to prepare the {fleet} plugin in {kib}, configure {fleet-server}, and enroll an {agent}. - -[cols="2*> is enabled. -If the service token value and service token path are specified the value may be used for setup and the path is passed to the agent in the container. - -*Default:* none - -// end::fleet-server-service-token[] - -// ============================================================================= - -// tag::fleet-server-service-token-path[] -| -[id="env-{type}-fleet-server-service-token-path"] -`FLEET_SERVER_SERVICE_TOKEN_PATH` - -| (string) The path to the service token file to use for communication with {es} and {kib} if <> is enabled. -If the service token value and service token path are specified the value may be used for setup and the path is passed to the agent in the container. - -*Default:* none - -// end::fleet-server-service-token-path[] - -// ============================================================================= - -// tag::fleet-server-policy-id[] -| -[id="env-{type}-fleet-server-policy-id"] -`FLEET_SERVER_POLICY_ID` - -| (string) The policy ID for {fleet-server} to use on itself. - -// end::fleet-server-policy-id[] - -// ============================================================================= - -// tag::fleet-server-host[] -| -[id="env-{type}-fleet-server-host"] -`FLEET_SERVER_HOST` - -| (string) The binding host for {fleet-server} HTTP. -Overrides the host defined in the policy. - -*Default:* none - -// end::fleet-server-host[] - -// ============================================================================= - -// tag::fleet-server-port[] -| -[id="env-{type}-fleet-server-port"] -`FLEET_SERVER_PORT` - -| (string) The binding port for {fleet-server} HTTP. -Overrides the port defined in the policy. - -*Default:* none - -// end::fleet-server-port[] - -// ============================================================================= - -// tag::fleet-server-cert[] -| -[id="env-{type}-fleet-server-cert"] -`FLEET_SERVER_CERT` - -| (string) The path to the certificate to use for HTTPS. - -*Default:* none - -// end::fleet-server-cert[] - -// ============================================================================= - -// tag::fleet-server-cert-key[] -| -[id="env-{type}-fleet-server-cert-key"] -`FLEET_SERVER_CERT_KEY` - -| (string) The path to the private key for the certificate used for HTTPS. - -*Default:* none - -// end::fleet-server-cert-key[] - -// ============================================================================= - -// tag::fleet-server-cert-key-passphrase[] -| -[id="env-{type}-fleet-server-cert-key-passphrase"] -`FLEET_SERVER_CERT_KEY_PASSPHRASE` - -| (string) The path to the private key passphrase for an encrypted private key file. - -*Default:* none - -// end::fleet-server-cert-key-passphrase[] - -// ============================================================================= - -// tag::fleet-server-client-auth[] -| -[id="env-{type}-fleet-server-client-auth"] -`FLEET_SERVER_CLIENT_AUTH` - -| (string) One of `none`, `optional`, or `required`. -{fleet-server}'s client authentication option for client mTLS connections. -If `optional` or `required` is specified, client certificates are verified using CAs. - -*Default:* `none` - -// end::fleet-server-client-auth[] - -// ============================================================================= - -// tag::fleet-server-es-ca-trusted-fingerprint[] -| -[id="env-{type}-fleet-server-es-ca-trusted-fingerprint"] -`FLEET_SERVER_ELASTICSEARCH_CA_TRUSTED_FINGERPRINT` - -| (string) The SHA-256 fingerprint (hash) of the certificate authority used to self-sign {es} certificates. -This fingerprint is used to verify self-signed certificates presented by {fleet-server} and any inputs started -by {agent} for communication. This flag is required when using self-signed certificates with {es}. - -*Default:* `""` - -// end::fleet-server-es-ca-trusted-fingerprint[] - -// ============================================================================= - -// tag::fleet-server-es-cert[] -| -[id="env-{type}-fleet-server-es-cert"] -`FLEET_SERVER_ES_CERT` - -| (string) The path to the mutual TLS client certificate that {fleet-server} will use to connect to {es}. - -*Default:* `""` - -// end::fleet-server-es-cert[] - -// ============================================================================= - -// tag::fleet-server-es-cert-key[] -| -[id="env-{type}-fleet-server-es-cert-key"] -`FLEET_SERVER_ES_CERT_KEY` - -| (string) The path to the mutual TLS private key that {fleet-server} will use to connect to {es}. - -*Default:* `""` - -// end::fleet-server-es-cert-key[] - -// ============================================================================= - -// tag::fleet-server-insecure-http[] -| -[id="env-{type}-fleet-server-insecure-http"] -`FLEET_SERVER_INSECURE_HTTP` - -| (bool) When `true`, {fleet-server} is exposed over insecure or unverified HTTP. -Setting this to `true` is not recommended. - -*Default:* `false` - -// end::fleet-server-insecure-http[] - -// ============================================================================= - -// tag::fleet-daemon-timeout[] -| -[id="env-{type}-fleet-daemon-timeout"] -`FLEET_DAEMON_TIMEOUT` - -| (duration) Set to indicate how long {fleet-server} will wait during the bootstrap process for {elastic-agent}. - -// end::fleet-daemon-timeout[] - -// ============================================================================= - -// tag::fleet-server-timeout[] -| -[id="env-{type}-fleet-server-timeout"] -`FLEET_SERVER_TIMEOUT` - -| (duration) Set to indicate how long {agent} will wait for {fleet-server} to check in as healthy. - -// end::fleet-server-timeout[] - -// ============================================================================= - -// tag::fleet-enroll[] -| -[id="env-{type}-fleet-enroll"] -`FLEET_ENROLL` - -| (bool) Set to `1` to enroll the {agent} into {fleet-server}. - -*Default:* `false` - -// end::fleet-enroll[] - -// ============================================================================= - -// tag::fleet-url[] -| -[id="env-{type}-fleet-url"] -`FLEET_URL` - -| (string) URL to enroll the {fleet-server} into. - -*Default:* `""` - -// end::fleet-url[] - -// ============================================================================= - -// tag::fleet-enrollment-token[] -| -[id="env-{type}-fleet-enrollment-token"] -`FLEET_ENROLLMENT_TOKEN` - -| (string) The token to use for enrollment. - -*Default:* `""` - -// end::fleet-enrollment-token[] - -// ============================================================================= - -// tag::fleet-token-name[] -| -[id="env-{type}-fleet-token-name"] -`FLEET_TOKEN_NAME` - -| (string) The token name to use to fetch the token from {kib}. - -*Default:* `""` - -// end::fleet-token-name[] - -// ============================================================================= - -// tag::fleet-token-policy-name[] -| -[id="env-{type}-fleet-token-policy-name"] -`FLEET_TOKEN_POLICY_NAME` - -| (string) The token policy name to use to fetch the token from {kib}. - -*Default:* `false` - -// end::fleet-token-policy-name[] - -// ============================================================================= - -// tag::fleet-ca[] -| -[id="env-{type}-fleet-ca"] -`FLEET_CA` - -| (string) The path to a certificate authority. Overrides `ELASTICSEARCH_CA` when set. - -By default, {agent} uses the list of trusted certificate authorities (CA) from the operating -system where it is running. -If the certificate authority that signed your node certificates is not in the host system's -trusted certificate authorities list, use this config to add the path to the `.pem` file that -contains your CA's certificate. - -*Default:* `false` - -// end::fleet-ca[] - -// ============================================================================= - -// tag::fleet-insecure[] -| -[id="env-{type}-fleet-insecure"] -`FLEET_INSECURE` - -| (bool) When `true`, {agent} communicates with {fleet-server} over insecure or unverified HTTP. -Setting this to `true` is not recommended. - -*Default:* `false` - -// end::fleet-insecure[] - -// ============================================================================= - -// tag::elasticsearch-host[] -| -[id="env-{type}-elasticsearch-host"] -`ELASTICSEARCH_HOST` - -| (string) The {es} host to communicate with. - -*Default:* `http://elasticsearch:9200` - -// end::elasticsearch-host[] - -// ============================================================================= - -// tag::es-host[] -| -[id="env-{type}-es-host"] -`ES_HOST` - -| (string) The {es} host to communicate with. - -*Default:* `http://elasticsearch:9200` - -// end::es-host[] - -// ============================================================================= - -// tag::elasticsearch-username[] -| -[id="env-{type}-elasticsearch-username"] -`ELASTICSEARCH_USERNAME` - -| (string) The basic authentication username used to connect to {kib} and retrieve a `service_token` for {fleet}. - -// To do: link to required privileges - -*Default:* none - -// end::elasticsearch-username[] - -// ============================================================================= - -// tag::es-username[] -| -[id="env-{type}-es-username"] -`ES_USERNAME` - -| (string) The basic authentication username used to connect to {es}. -This user needs the privileges required to publish events to {es}. - -// To do: link to required privileges - -*Default:* `elastic` - -// end::es-username[] - -// ============================================================================= - -// tag::elasticsearch-password[] -| -[id="env-{type}-elasticsearch-password"] -`ELASTICSEARCH_PASSWORD` - -| (string) The basic authentication password used to connect to {kib} and retrieve a `service_token` for {fleet}. - -*Default:* none - -// end::elasticsearch-password[] - -// ============================================================================= - -// tag::elasticsearch-api-key[] -| -[id="env-{type}-elasticsearch-api-key"] -`ELASTICSEARCH_API_KEY` - -| (string) API key used for authenticating to Elasticsearch. - -*Default:* none - -// end::elasticsearch-api-key[] - -// ============================================================================= - -// tag::es-password[] -| -[id="env-{type}-es-password"] -`ES_PASSWORD` - -| (string) The basic authentication password used to connect to {es}. - -*Default:* `changeme` - -// end::es-password[] - -// ============================================================================= - -// tag::elasticsearch-ca[] -| -[id="env-{type}-elasticsearch-ca"] -`ELASTICSEARCH_CA` - -| (string) The path to a certificate authority. - -By default, {agent} uses the list of trusted certificate authorities (CA) from the operating -system where it is running. -If the certificate authority that signed your node certificates is not in the host system's -trusted certificate authorities list, use this config to add the path to the `.pem` file that -contains your CA's certificate. - -*Default:* `""` - -// end::elasticsearch-ca[] - -// ============================================================================= - -// tag::kibana-host[] -| -[id="env-{type}-kibana-host"] -`KIBANA_HOST` - -| (string) The {kib} host. - -*Default:* `http://kibana:5601` - -// end::kibana-host[] - -// ============================================================================= - -// tag::kibana-username[] -| -[id="env={type}-kibana-username"] -`KIBANA_USERNAME` - -| (string) The basic authentication username used to connect to {kib} to retrieve a -`service_token`. - -*Default:* `elastic` - -// end::kibana-username[] - -// ============================================================================= - -// tag::kibana-password[] -| -[id="env={type}-kibana-password"] -`KIBANA_PASSWORD` - -| (string) The basic authentication password used to connect to {kib} to retrieve a -`service_token`. - -*Default:* `changeme` - -// end::kibana-password[] - -// ============================================================================= - -// tag::kibana-ca[] -| -[id="env-{type}-kibana-ca"] -`KIBANA_CA` - -| (string) The path to a certificate authority. - -By default, {agent} uses the list of trusted certificate authorities (CA) from the operating -system where it is running. -If the certificate authority that signed your node certificates is not in the host system's -trusted certificate authorities list, use this config to add the path to the `.pem` file that -contains your CA's certificate. - -*Default:* `""` - -// end::kibana-ca[] - -// tag::elastic-netinfo[] -| -[id="env-{type}-elastic-netinfo"] -`ELASTIC_NETINFO` - -| (bool) When `false`, disables `netinfo.enabled` parameter of `add_host_metadata` processor. -Setting this to `false` is recommended for large scale setups where the host.ip and host.mac fields index size increases. - -By default, {agent} initializes the `add_host_metadata` processor. The `netinfo.enabled` parameter defines ingestion of IP addresses and MAC addresses as fields `host.ip` and `host.mac`. -For more information see <> - - -*Default:* `"false"` - -// end::elastic-netinfo[] - -// ============================================================================= diff --git a/docs/en/ingest-management/elastic-agent/configuration/examples/config-file-example-apache.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/examples/config-file-example-apache.asciidoc deleted file mode 100644 index efa2f82f7..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/examples/config-file-example-apache.asciidoc +++ /dev/null @@ -1,131 +0,0 @@ -[[config-file-example-apache]] -= Config file example: Apache HTTP Server - -++++ -Apache HTTP Server -++++ - -Include these sample settings in your standalone {agent} `elastic-agent.yml` configuration file to ingest data from Apache HTTP server. - -* <> -* <> - -[[config-file-example-apache-logs]] -== Apache HTTP Server logs - -["source","yaml"] ----- -outputs: <1> - default: - type: elasticsearch <2> - hosts: - - '{elasticsearch-host-url}' <3> - api_key: "my_api_key" <4> -agent: - download: <5> - sourceURI: 'https://artifacts.elastic.co/downloads/' - monitoring: <6> - enabled: true - use_output: default - namespace: default - logs: true - metrics: true -inputs: <7> - - id: "insert a unique identifier here" <8> - name: apache-1 - type: logfile <9> - use_output: default - data_stream: <10> - namespace: default - streams: - - id: "insert a unique identifier here" <11> - data_stream: - dataset: apache.access <12> - type: logs - paths: <13> - - /var/log/apache2/access.log* - - /var/log/apache2/other_vhosts_access.log* - - /var/log/httpd/access_log* - tags: - - apache-access - exclude_files: - - .gz$ - - id: "insert a unique identifier here" <11> - data_stream: - dataset: apache.error <12> - type: logs - paths: <13> - - /var/log/apache2/error.log* - - /var/log/httpd/error_log* - exclude_files: - - .gz$ - tags: - - apache-error - processors: - - add_locale: null ----- - -<1> For available output settings, refer to <>. -<2> For settings specific to the {es} output, refer to <>. -<3> The URL of the Elasticsearch cluster where output should be sent, including the port number. For example `https://12345ab6789cd12345ab6789cd.us-central1.gcp.cloud.es.io:443`. -<4> An <> used to authenticate with the {es} cluster. -<5> For available download settings, refer to <>. -<6> For available monitoring settings, refer to <>. -<7> For available input settings, refer to <>. -<8> Specify a unique ID for the input. -<9> For available input types, refer to <>. -<10> Learn about <> for time series data. -<11> Specify a unique ID for each individual input stream. Naming the ID by appending the associated `data_stream` dataset (for example `{user-defined-unique-id}-apache.access` or `{user-defined-unique-id}-apache.error`) is a recommended practice, but any unique ID will work. -<12> Refer to {integrations-docs}/apache#logs[Logs] in the Apache HTTP Server integration documentation for the logs available to ingest and exported fields. -<13> Path to the log files to be monitored. - -[[config-file-example-apache-metrics]] -== Apache HTTP Server metrics - -["source","yaml"] ----- -outputs: <1> - default: - type: elasticsearch <2> - hosts: - - '{elasticsearch-host-url}' <3> - api_key: "my_api_key" <4> -agent: - download: <5> - sourceURI: 'https://artifacts.elastic.co/downloads/' - monitoring: <6> - enabled: true - use_output: default - namespace: default - logs: true - metrics: true -inputs: <7> - type: apache/metrics <8> - use_output: default - data_stream: <9> - namespace: default - streams: - - id: "insert a unique identifier here" <10> - data_stream: <8> - dataset: apache.status <11> - type: metrics - metricsets: <12> - - status - hosts: - - 'http://127.0.0.1' - period: 30s - server_status_path: /server-status ----- - -<1> For available output settings, refer to <>. -<2> For settings specific to the {es} output, refer to <>. -<3> The URL of the Elasticsearch cluster where output should be sent, including the port number. For example `https://12345ab6789cd12345ab6789cd.us-central1.gcp.cloud.es.io:443`. -<4> An <> used to authenticate with the {es} cluster. -<5> For available download settings, refer to <>. -<6> For available monitoring settings, refer to <>. -<7> For available input settings, refer to <>. -<8> For available input types, refer to <>. -<9> Learn about <> for time series data. -<10> Specify a unique ID for each individual input stream. Naming the ID by appending the associated `data_stream` dataset (for example `{user-defined-unique-id}-apache.status`) is a recommended practice, but any unique ID will work. -<11> A user-defined dataset. You can specify anything that makes sense to signify the source of the data. -<12> Refer to {integrations-docs}/apache#metrics[Metrics] in the Apache HTTP Server integration documentation for the type of metrics collected and exported fields. diff --git a/docs/en/ingest-management/elastic-agent/configuration/examples/config-file-example-nginx.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/examples/config-file-example-nginx.asciidoc deleted file mode 100644 index 4258ffa15..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/examples/config-file-example-nginx.asciidoc +++ /dev/null @@ -1,139 +0,0 @@ -[[config-file-example-nginx]] -= Config file example: Nginx HTTP Server - -++++ -Nginx HTTP Server -++++ - -Include these sample settings in your standalone {agent} `elastic-agent.yml` configuration file to ingest data from Nginx HTTP Server. - -* <> -* <> - -[[config-file-example-nginx-logs]] -== Nginx HTTP Server logs - -["source","yaml"] ----- -outputs: <1> - default: - type: elasticsearch <2> - hosts: - - '{elasticsearch-host-url}' <3> - api_key: "my_api_key" <4> -agent: - download: <5> - sourceURI: 'https://artifacts.elastic.co/downloads/' - monitoring: <6> - enabled: true - use_output: default - namespace: default - logs: true - metrics: true -inputs: <7> - - id: "insert a unique identifier here" <8> - name: nginx-1 - type: logfile <9> - use_output: default - data_stream: <10> - namespace: default - streams: - - id: "insert a unique identifier here" <11> - data_stream: - dataset: nginx.access <12> - type: logs - ignore_older: 72h - paths: <13> - - /var/log/nginx/access.log* - tags: - - nginx-access - exclude_files: - - .gz$ - processors: - - add_locale: null - - id: "insert a unique identifier here" <11> - data_stream: - dataset: nginx.error <12> - type: logs - ignore_older: 72h - paths: <13> - - /var/log/nginx/error.log* - tags: - - nginx-error - exclude_files: - - .gz$ - multiline: - pattern: '^\d{4}\/\d{2}\/\d{2} ' - negate: true - match: after - processors: - - add_locale: null ----- - -<1> For available output settings, refer to <>. -<2> For settings specific to the {es} output, refer to <>. -<3> The URL of the {es} cluster where output should be sent, including the port number. For example `https://12345ab6789cd12345ab6789cd.us-central1.gcp.cloud.es.io:443`. -<4> An <> used to authenticate with the {es} cluster. -<5> For available download settings, refer to <>. -<6> For available monitoring settings, refer to <>. -<7> For available input settings, refer to <>. -<8> A user-defined ID to uniquely identify the input stream. -<9> For available input types, refer to <>. -<10> Learn about <> for time series data. -<11> Specify a unique ID for each individual input stream. Naming the ID by appending the associated `data_stream` dataset (for example `{user-defined-unique-id}-nginx.access` or `{user-defined-unique-id}-nginx.error`) is a recommended practice, but any unique ID will work. -<12> Refer to {integrations-docs}/nginx#logs-reference[Logs reference] in the Nginx HTTP integration documentation for the logs available to ingest and exported fields. -<13> Path to the log files to be monitored. - -[discrete] -[[config-file-example-nginx-metrics]] -== Nginx HTTP Server metrics - -["source","yaml"] ----- -outputs: <1> - default: - type: elasticsearch <2> - hosts: - - '{elasticsearch-host-url}' <3> - api_key: "my_api_key" <4> -agent: - download: <5> - sourceURI: 'https://artifacts.elastic.co/downloads/' - monitoring: <6> - enabled: true - use_output: default - namespace: default - logs: true - metrics: true -inputs: <7> - - id: "insert a unique identifier here" <8> - type: nginx/metrics <9> - use_output: default - data_stream: <10> - namespace: default - streams: - - id: "insert a unique identifier here" <11> - data_stream: <10> - dataset: nginx.stubstatus <12> - type: metrics - metricsets: <13> - - stubstatus - hosts: - - 'http://127.0.0.1:80' - period: 10s - server_status_path: /nginx_status ----- - -<1> For available output settings, refer to <>. -<2> For settings specific to the {es} output, refer to <>. -<3> The URL of the Elasticsearch cluster where output should be sent, including the port number. For example `https://12345ab6789cd12345ab6789cd.us-central1.gcp.cloud.es.io:443`. -<4> An <> used to authenticate with the {es} cluster. -<5> For available download settings, refer to <>. -<6> For available monitoring settings, refer to <>. -<7> For available input settings, refer to <>. -<8> A user-defined ID to uniquely identify the input stream. -<9> For available input types, refer to <>. -<10> Learn about <> for time series data. -<11> Specify a unique ID for each individual input stream. Naming the ID by appending the associated `data_stream` dataset (for example `{user-defined-unique-id}-nginx.stubstatus`) is a recommended practice, but any unique ID will work. -<12> A user-defined dataset. You can specify anything that makes sense to signify the source of the data. -<13> Refer to {integrations-docs}/nginx#metrics-reference[Metrics reference] in the Nginx integration documentation for the type of metrics collected and exported fields. diff --git a/docs/en/ingest-management/elastic-agent/configuration/examples/config-file-examples.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/examples/config-file-examples.asciidoc deleted file mode 100644 index d3b5f3a79..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/examples/config-file-examples.asciidoc +++ /dev/null @@ -1,10 +0,0 @@ -[[config-file-examples]] -= Config file examples - -These examples show a basic, sample configuration to include in a standalone {agent} `elastic-agent.yml` <> to gather data from various source types. - -* <> -* <> - -include::config-file-example-apache.asciidoc[leveloffset=+1] -include::config-file-example-nginx.asciidoc[leveloffset=+1] diff --git a/docs/en/ingest-management/elastic-agent/configuration/inputs/input-configuration.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/inputs/input-configuration.asciidoc deleted file mode 100644 index 6fd6e5733..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/inputs/input-configuration.asciidoc +++ /dev/null @@ -1,76 +0,0 @@ -[[elastic-agent-input-configuration]] -= Configure inputs for standalone {agent}s - -++++ -Inputs -++++ - -The `inputs` section of the `elastic-agent.yml` file specifies how {agent} locates and processes input data. - -* <> -* <> - -[discrete] -[[elastic-agent-input-configuration-sample-metrics]] -== Sample metrics input configuration - -By default {agent} collects system metrics, such as CPU, memory, network, and file system metrics, and sends them to the default output. For example, to define datastreams for `cpu`, `memory`, `network` and `filesystem` metrics, this is the configuration: - -["source","yaml"] ------------------------------------------------------------------------ -- type: system/metrics <1> - id: unique-system-metrics-id <2> - data_stream.namespace: default <3> - use_output: default <4> - streams: - - metricsets: <5> - - cpu - data_stream.dataset: system.cpu <6> - - metricsets: - - memory - data_stream.dataset: system.memory - - metricsets: - - network - data_stream.dataset: system.network - - metricsets: - - filesystem - data_stream.dataset: system.filesystem ------------------------------------------------------------------------ - -<1> The name of the input. Refer to <> for the list of what's available. -<2> A unique ID for the input. -<3> A user-defined namespace. -<4> The name of the `output` to use. If not specified, `default` will be used. -<5> The set of enabled module metricsets. -+ -Refer to the {metricbeat} {metricbeat-ref}/metricbeat-module-system.html[System module] for a list of available options. The metricset fields can be configured. -<6> A user-defined dataset. It can contain anything that makes sense to signify the source of the data. - -[discrete] -[[elastic-agent-input-configuration-sample-logs]] -== Sample log files input configuration - -To enable {agent} to collect log files, you can use a configuration like the following. - -["source","yaml"] ------------------------------------------------------------------------ -- type: filestream <1> - id: your-input-id <2> - streams: - - id: your-filestream-stream-id <3> - data_stream: <4> - dataset: generic - paths: - - /var/log/*.log ------------------------------------------------------------------------ - -<1> The name of the input. Refer to <> for the list of what's available. -<2> A unique ID for the input. -<3> A unique ID for the data stream to track the state of the ingested files. -<4> The streams block is required only if multiple streams are used on the same input. Refer to the {filebeat} {filebeat-ref}/filebeat-input-filestream.html[filestream] documentation for a list of available options. Also, specifically for the `filestream` input type, refer to the <> for an example of ingesting a set of logs specified as an array. - -The input in this example harvests all files in the path `/var/log/*.log`, that is, all logs in the directory `/var/log/` that end with `.log`. All patterns supported by https://golang.org/pkg/path/filepath/#Glob[Go Glob] are also supported here. - -To fetch all files from a predefined level of subdirectories, use this pattern: -`/var/log/*/*.log`. This fetches all `.log` files from the subfolders of `/var/log`. It does not fetch log files from the `/var/log` folder itself. -Currently it is not possible to recursively fetch all files in all subdirectories of a directory. diff --git a/docs/en/ingest-management/elastic-agent/configuration/inputs/inputs-list.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/inputs/inputs-list.asciidoc deleted file mode 100644 index b7657e197..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/inputs/inputs-list.asciidoc +++ /dev/null @@ -1,408 +0,0 @@ -[[elastic-agent-inputs-list]] -= {agent} inputs - -When you <> for standalone {agents}, the following values are supported for the input `type` parameter. - -*Expand any section to view the available inputs:* - -// Auditbeat -[[elastic-agent-inputs-list-auditbeat]] -[%collapsible] -.Audit the activities of users and processes on your systems -==== - -|=== -|Input |Description |Learn more - -|`audit/auditd` -|Receives audit events from the Linux Audit Framework that is a part of the Linux kernel. -|{auditbeat-ref}/auditbeat-module-auditd.html[Auditd Module] ({auditbeat} docs) - -|`audit/file_integrity` -|Sends events when a file is changed (created, updated, or deleted) on disk. The events contain file metadata and hashes. -|{auditbeat-ref}/auditbeat-module-file_integrity.html[File Integrity Module] ({auditbeat} docs) - -|`audit/system` -|beta[] Collects various security related information about a system. All datasets send both periodic state information (e.g. all currently running processes) and real-time changes (e.g. when a new process starts or stops). -|{auditbeat-ref}/auditbeat-module-system.html[System Module] ({auditbeat} docs) - -|=== - -==== - -// Metricbeat -[[elastic-agent-inputs-list-metricbeat]] -[%collapsible] -.Collect metrics from operating systems and services running on your servers -==== - -|=== -|Input |Description |Learn more - -|`activemq/metrics` -|Periodically fetches JMX metrics from Apache ActiveMQ. -|{metricbeat-ref}/metricbeat-module-activemq.html[ActiveMQ module] ({metricbeat} docs) - -|`apache/metrics` -|Periodically fetches metrics from https://httpd.apache.org/[Apache HTTPD] servers. -|{metricbeat-ref}/metricbeat-module-apache.html[Apache module] ({metricbeat} docs) - -|`aws/metrics` -|Periodically fetches monitoring metrics from AWS CloudWatch using https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html[GetMetricData API] for AWS services. -|{metricbeat-ref}/metricbeat-module-aws.html[AWS module] ({metricbeat} docs) - -|`awsfargate/metrics` -|beta[] Retrieves various metadata, network metrics, and Docker stats about tasks and containers. -|{metricbeat-ref}/metricbeat-module-awsfargate.html[AWS Fargate module] ({metricbeat} docs) - -|`azure/metrics` -|Collects and aggregates Azure logs and metrics from a variety of sources into a common data platform where it can be used for analysis, visualization, and alerting. -|{metricbeat-ref}/metricbeat-module-azure.html[Azure module] ({metricbeat} docs) - -|`beat/metrics` -|Collects metrics about any Beat or other software based on libbeat. -|{metricbeat-ref}/metricbeat-module-beat.html[Beat module] ({metricbeat} docs) - -|`cloudfoundry/metrics` -|Connects to Cloud Foundry loggregator to gather container, counter, and value metrics into a common data platform where it can be used for analysis, visualization, and alerting. -|{metricbeat-ref}/metricbeat-module-cloudfoundry.html[Cloudfoundry module] ({metricbeat} docs) - -|`containerd/metrics` -|beta[] Collects cpu, memory and blkio statistics about running containers controlled by containerd runtime. -|{metricbeat-ref}/metricbeat-module-containerd.html[Containerd module] ({metricbeat} docs) - -|`docker/metrics` -|Fetches metrics from https://www.docker.com/[Docker] containers. -|{metricbeat-ref}/metricbeat-module-docker.html[Docker module] ({metricbeat} docs) - -|`elasticsearch/metrics` -|Collects metrics about {es}. -|{metricbeat-ref}/metricbeat-module-elasticsearch.html[Elasticsearch module] ({metricbeat} docs) - -|`enterprisesearch/metrics` -|Periodically fetches metrics and health information from Elastic {ents} instances using HTTP APIs. -|{metricbeat-ref}/metricbeat-module-enterprisesearch.html[{ents} module] ({metricbeat} docs) - -|`etcd/metrics` -|This module targets Etcd V2 and V3. When using V2, metrics are collected using https://coreos.com/etcd/docs/latest/v2/api.html[Etcd v2 API]. When using V3, metrics are retrieved from the `/metrics`` endpoint as intended for https://coreos.com/etcd/docs/latest/metrics.html[Etcd v3]. -|{metricbeat-ref}/metricbeat-module-etcd.html[Etcd module] ({metricbeat} docs) - -|`gcp/metrics` -|Periodically fetches monitoring metrics from Google Cloud Platform using https://cloud.google.com/monitoring/api/metrics_gcp[Stackdriver Monitoring API] for Google Cloud Platform services. -|{metricbeat-ref}/metricbeat-module-gcp.html[Google Cloud Platform module] ({metricbeat} docs) - -|`haproxy/metrics` -|Collects stats from http://www.haproxy.org/[HAProxy]. It supports collection from TCP sockets, UNIX sockets, or HTTP with or without basic authentication. -|{metricbeat-ref}/[HAProxy module] ({metricbeat} docs) - -|`http/metrics` -|Used to call arbitrary HTTP endpoints for which a dedicated Metricbeat module is not available. -|{metricbeat-ref}/metricbeat-module-http.html[HTTP module] ({metricbeat} docs) - -|`iis/metrics` -|Periodically retrieve IIS web server related metrics. -|{metricbeat-ref}/metricbeat-module-iis.html[IIS module] ({metricbeat} docs) - -|`jolokia/metrics` -|Collects metrics from https://jolokia.org/reference/html/agents.html[Jolokia agents] running on a target JMX server or dedicated proxy server. -|{metricbeat-ref}/metricbeat-module-jolokia.html[Jolokia module] ({metricbeat} docs) - -|`kafka/metrics` -|Collects metrics from the https://kafka.apache.org/intro[Apache Kafka] event streaming platform. -|{metricbeat-ref}/metricbeat-module-kafka.html[Kafka module] ({metricbeat} docs) - -|`kibana/metrics` -|Collects metrics about {Kibana}. -|{metricbeat-ref}/metricbeat-module-kibana.html[{kib} module] ({metricbeat} docs) - -|`kubernetes/metrics` -|As one of the main pieces provided for Kubernetes monitoring, this module is capable of fetching metrics from several components. -|{metricbeat-ref}/metricbeat-module-kubernetes.html[Kubernetes module] ({metricbeat} docs) - -|`linux/metrics` -|beta[] Reports on metrics exclusive to the Linux kernel and GNU/Linux OS. -|{metricbeat-ref}/metricbeat-module-linux.html[Linux module] ({metricbeat} docs) - -|`logstash/metrics` -|collects metrics about {ls}. -|{metricbeat-ref}/metricbeat-module-logstash.html[{ls} module] ({metricbeat} docs) - -|`memcached/metrics` -|Collects metrics about the https://memcached.org/[memcached] memory object caching system. -|{metricbeat-ref}/metricbeat-module-memcached.html[Memcached module] ({metricbeat} docs) - -|`mongodb/metrics` -|Periodically fetches metrics from https://www.mongodb.com/[MongoDB] servers. -|{metricbeat-ref}/metricbeat-module-mongodb.html[MongoDB module] ({metricbeat} docs) - -|`mssql/metrics` -|The https://www.microsoft.com/en-us/sql-server/sql-server-2017[Microsoft SQL 2017] Metricbeat module. It is still under active development to add new Metricsets and introduce enhancements. -|{metricbeat-ref}/metricbeat-module-mssql.html[MSSQL module] ({metricbeat} docs) - -|`mysql/metrics` -|Periodically fetches metrics from https://www.mysql.com/[MySQL] servers. -|{metricbeat-ref}/metricbeat-module-mysql.html[MySQL module] ({metricbeat} docs) - -|`nats/metrics` -|Uses the https://nats.io/documentation/managing_the_server/monitoring/[Nats monitoring server APIs] to collect metrics. -|{metricbeat-ref}/metricbeat-module-nats.html[NATS module] ({metricbeat} docs) - -|`nginx/metrics` -|Periodically fetches metrics from https://nginx.org/[Nginx] servers. -|{metricbeat-ref}/metricbeat-module-nginx.html[Nginx module] ({metricbeat} docs) - -|`oracle/metrics` -|The https://www.oracle.com/[Oracle] module for Metricbeat. It is under active development with feedback from the community. A single Metricset for Tablespace monitoring is added so the community can start gathering metrics from their nodes and contributing to the module. -|{metricbeat-ref}/metricbeat-module-oracle.html[Oracle module] ({metricbeat} docs) - -|`postgresql/metrics` -|Periodically fetches metrics from https://www.postgresql.org/[PostgreSQL] servers. -|{metricbeat-ref}/metricbeat-module-postgresql.html[PostgresSQL module] ({metricbeat} docs) - -|`prometheus/metrics` -|Periodically scrapes metrics from https://prometheus.io/docs/instrumenting/exporters/[Prometheus exporters]. -|{metricbeat-ref}/metricbeat-module-prometheus.html[Prometheus module] ({metricbeat} docs) - -|`rabbitmq/metrics` -|Uses the http://www.rabbitmq.com/management.html[HTTP API] created by the management plugin to collect RabbitMQ metrics. -|{metricbeat-ref}/metricbeat-module-rabbitmq.html[RabbitMQ module] ({metricbeat} docs) - -|`redis/metrics` -|Periodically fetches metrics from http://redis.io/[Redis] servers. -|{metricbeat-ref}/metricbeat-module-redis.html[Redis module] ({metricbeat} docs) - -|`sql/metrics` -|Allows you to execute custom queries against an SQL database and store the results in {es}. -|{metricbeat-ref}/metricbeat-module-sql.html[SQL module] ({metricbeat} docs) - -|`stan/metrics` -|Uses https://github.com/nats-io/nats-streaming-server/blob/master/server/monitor.go[STAN monitoring server APIs] to collect metrics. -|{metricbeat-ref}/metricbeat-module-stan.html[Stan module] ({metricbeat} docs) - -|`statsd/metrics` -|Spawns a UDP server and listens for metrics in StatsD compatible format. -|{metricbeat-ref}/metricbeat-module-statsd.html[Statsd module] ({metricbeat} docs) - -|`syncgateway/metrics` -|beta[] Monitor a Sync Gateway instance by using its REST API. -|{metricbeat-ref}/metricbeat-module-syncgateway.html[SyncGateway module] ({metricbeat} docs) - -|`system/metrics` -|Allows you to monitor your server metrics, including CPU, load, memory, network, processes, sockets, filesystem, fsstat, uptime, and more. -|{metricbeat-ref}/metricbeat-module-system.html[System module] ({metricbeat} docs) - -|`traefik/metrics` -|Periodically fetches metrics from a https://traefik.io/[Traefik] instance. -|{metricbeat-ref}/metricbeat-module-traefik.html[Traefik module] ({metricbeat} docs) - -|`uwsgi/metrics` -|By default, collects the uWSGI stats metricset, using https://uwsgi-docs.readthedocs.io/en/latest/StatsServer.html[StatsServer]. -|{metricbeat-ref}/metricbeat-module-uwsgi.html[uWSGI module] ({metricbeat} docs) - -|`vsphere/metrics` -|Uses the https://github.com/vmware/govmomi[Govmomi] library to collect metrics from any Vmware SDK URL (ESXi/VCenter). -|{metricbeat-ref}/metricbeat-module-vsphere.html[vSphere module] ({metricbeat} docs) - -|`windows/metrics` -|Collects metrics from Windows systems. -|{metricbeat-ref}/metricbeat-module-windows.html[Windows module] ({metricbeat} docs) - -|`zookeeper/metrics` -|Fetches statistics from the ZooKeeper service. -|{metricbeat-ref}/metricbeat-module-zookeeper.html[ZooKeeper module] ({metricbeat} docs) - -|=== - -==== - -// Filebeat -[[elastic-agent-inputs-list-filebeat]] -[%collapsible] -.Forward and centralize log data -==== - -|=== -|Input |Description |Learn more - -|`aws-cloudwatch` -|Stores log files -from Amazon Elastic Compute Cloud(EC2), AWS CloudTrail, Route53, and other sources. -|{filebeat-ref}/filebeat-input-aws-cloudwatch.html[AWS CloudWatch input] ({filebeat} docs) - -|`aws-s3` -|Retrieves logs from S3 objects that are pointed to by S3 notification events read from an SQS queue or directly polling list of S3 objects in an S3 bucket. -|{filebeat-ref}/filebeat-input-aws-s3.html[AWS S3 input] ({filebeat} docs) - -|`azure-blob-storage` -|Reads content from files stored in containers which reside on your Azure Cloud. -|{filebeat-ref}/filebeat-input-azure-blob-storage.html[Azure Blob Storage] ({filebeat} docs) - -|`azure-eventhub` -|Reads messages from an azure eventhub. -|{filebeat-ref}/filebeat-input-azure-eventhub.html[Azure eventhub input] ({filebeat} docs) - -|`cel` -|Reads messages from a file path or HTTP API with a variety of payloads using the https://opensource.google.com/projects/cel[Common Expression Language (CEL)] and the https://pkg.go.dev/github.com/elastic/mito/lib[mito] CEL extension libraries. -|{filebeat-ref}/filebeat-input-cel.html[Common Expression Language input] ({filebeat} docs) - -|`cloudfoundry` -|Gets HTTP access logs, container logs and error logs from Cloud Foundry. -|{filebeat-ref}/filebeat-input-cloudfoundry.html[Cloud Foundry input] ({filebeat} docs) - -|`cometd` -|Streams the real-time events from a Salesforce generic subscription Push Topic. -|{filebeat-ref}/filebeat-input-cometd.html[CometD input] ({filebeat} docs) - -|`container` -|Reads containers log files. -|{filebeat-ref}/filebeat-input-container.html[Container input] ({filebeat} docs) - -|`docker` -|Alias for `container`. -|- - -|`log/docker` -|Alias for `container`. -|n/a - -|`entity-analytics` -|Collects identity assets, such as users, from external identity providers. -|{filebeat-ref}/filebeat-input-entity-analytics.html[Entity Analytics input] ({filebeat} docs) - -|`event/file` -|Alias for `log`. -|n/a - -|`event/tcp` -|Alias for `tcp`. -|n/a - -|`filestream` -|Reads lines from active log files. Replaces and imporoves on the `log` input. -|{filebeat-ref}/filebeat-input-filestream.html[filestream input] ({filebeat} docs) - -|`gcp-pubsub` -|Reads messages from a Google Cloud Pub/Sub topic subscription. -|{filebeat-ref}/filebeat-input-gcp-pubsub.html[GCP Pub/Sub input] ({filebeat} docs) - -|`gcs` -|beta[] Reads content from files stored in buckets which reside on your Google Cloud. -|{filebeat-ref}/filebeat-input-gcs.html[Google Cloud Storage input] ({filebeat} docs) - -|`http_endpoint` -|beta[] Initializes a listening HTTP server that collects incoming HTTP POST requests containing a JSON body. -|{filebeat-ref}/filebeat-input-http_endpoint.html[HTTP Endpoint input] ({filebeat} docs) - -|`httpjson` -|Read messages from an HTTP API with JSON payloads. -|{filebeat-ref}/filebeat-input-httpjson.html[HTTP JSON input] ({filebeat} docs) - -|`journald` -|beta[] A system service that collects and stores logging data. -|{filebeat-ref}/filebeat-input-journald.html[Journald input] ({filebeat} docs) - -|`kafka` -|Reads from topics in a Kafka cluster. -|{filebeat-ref}/filebeat-input-kafka.html[Kafka input] ({filebeat} docs) - -|`log` -|DEPRECATED: Please use the `filestream` input instead. -|n/a - -|`logfile` -|Alias for `log`. -|n/a - -|`log/redis_slowlog` -|Alias for `redis`. -|n/a - -|`log/syslog` -|Alias for `syslog`. -|n/a - -|`mqtt` -|Reads data transmitted using lightweight messaging protocol for small and mobile devices, optimized for high-latency or unreliable networks. -|{filebeat-ref}/filebeat-input-mqtt.html[MQTT input] ({filebeat} docs) - -|`netflow` -|Reads NetFlow and IPFIX exported flows and options records over UDP. -|{filebeat-ref}/filebeat-input-netflow.html[NetFlow input] ({filebeat} docs) - -|`o365audit` -|beta[] Retrieves audit messages from Office 365 and Azure AD activity logs. -|{filebeat-ref}/filebeat-input-o365audit.html[Office 365 Management Activity API input] ({filebeat} docs) - -|`osquery` -|Collects and decodes the result logs written by https://osquery.readthedocs.io/en/latest/introduction/using-osqueryd/[osqueryd] in the JSON format. -| - - -|`redis` -|beta[] Reads entries from Redis slowlogs. -|{filebeat-ref}/[Redis input] ({filebeat} docs) - -|`syslog` -|Reads Syslog events as specified by RFC 3164 and RFC 5424, over TCP, UDP, or a Unix stream socket. -|{filebeat-ref}/filebeat-input-syslog.html[Syslog input] ({filebeat} docs) - -|`tcp` -|Reads events over TCP. -|{filebeat-ref}/filebeat-input-tcp.html[TCP input] ({filebeat} docs) - -|`udp` -|Reads events over UDP. -|{filebeat-ref}/filebeat-input-udp.html[UDP input] ({filebeat} docs) - -|`unix` -|beta[] Reads events over a stream-oriented Unix domain socket. -|{filebeat-ref}/[Unix input] ({filebeat} docs) - -|`winlog` -|Reads from one or more event logs using Windows APIs, filters the events based on user-configured criteria, then sends the event data to the configured outputs ({es} or {ls}). -|{winlogbeat-ref}[Winlogbeat Overview] ({winlogbeat} docs) - -|=== - -==== - -// Heartbeat -[[elastic-agent-inputs-list-heartbeat]] -[%collapsible] -.Monitor the status of your services -==== - -|=== -|Input |Description |Learn more - -|`synthetics/http` -|Connect via HTTP and optionally verify that the host returns the expected response. -|{heartbeat-ref}/monitor-http-options.html[HTTP options] ({heartbeat} docs) - -|`synthetics/icmp` -|Use ICMP (v4 and v6) Echo Requests to check the configured hosts. -|{heartbeat-ref}/monitor-icmp-options.html[ICMP options] ({heartbeat} docs) - -|`synthetics/tcp` -|Connect via TCP and optionally verify the endpoint by sending and/or receiving a custom payload. -|{heartbeat-ref}/monitor-tcp-options.html[TCP options] ({heartbeat} docs) - -|=== - -==== - -// Packetbeat -[[elastic-agent-inputs-list-packetbeat]] -[%collapsible] -.View network traffic between the servers of your network -==== - -|=== -|Input |Description |Learn more - -|`packet` -|Sniffs the traffic between your servers, parses the application-level protocols on the fly, and correlates the messages into transactions. -|{packetbeat-ref}/packetbeat-overview.html[Packetbeat overview] ({packetbeat} docs) - -|=== - -==== \ No newline at end of file diff --git a/docs/en/ingest-management/elastic-agent/configuration/inputs/simplified-input-configuration.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/inputs/simplified-input-configuration.asciidoc deleted file mode 100644 index 77bc31e99..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/inputs/simplified-input-configuration.asciidoc +++ /dev/null @@ -1,22 +0,0 @@ -[[elastic-agent-simplified-input-configuration]] -= Simplified log ingestion - -There is a simplified option for ingesting log files with {agent}. -The simplest input configuration to ingest the file -`/var/log/my-application/log-file.log` is: - -["source","yaml"] ------------------------------------------------------------------------ -inputs: - - type: filestream <1> - id: unique-id-per-input <2> - paths: <3> - - /var/log/my-application/log-file.log ------------------------------------------------------------------------ - -<1> The input type must be `filestream`. -<2> A unique ID for the input. -<3> An array containing all log file paths. - -For other custom options to configure the input, refer to the -{filebeat-ref}/filebeat-input-filestream.html[filestream input] in the {filebeat} documentation. \ No newline at end of file diff --git a/docs/en/ingest-management/elastic-agent/configuration/outputs/output-configuration.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/outputs/output-configuration.asciidoc deleted file mode 100644 index e41a4e621..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/outputs/output-configuration.asciidoc +++ /dev/null @@ -1,44 +0,0 @@ -[[elastic-agent-output-configuration]] -= Configure outputs for standalone {agent}s - -++++ -Outputs -++++ - -The `outputs` section of the `elastic-agent.yml` file specifies where to -send data. You can specify multiple outputs to pair specific inputs with -specific outputs. - -This example configures two outputs: `default` and `monitoring`: - -[source,yaml] -------------------------------------------------------------------------------------- -outputs: - default: - type: elasticsearch - hosts: [127.0.0.1:9200] - api_key: "my_api_key" - - monitoring: - type: elasticsearch - api_key: VuaCfGcBCdbkQm-e5aOx:ui2lp2axTNmsyakw9tvNnw - hosts: ["localhost:9200"] - ca_sha256: "7lHLiyp4J8m9kw38SJ7SURJP4bXRZv/BNxyyXkCcE/M=" -------------------------------------------------------------------------------------- - -[NOTE] -============== -A default output configuration is required. -============== - -{agent} currently supports these outputs: - -* <> -* <> -* <> - -include::output-elasticsearch.asciidoc[leveloffset=+1] - -include::output-kafka.asciidoc[leveloffset=+1] - -include::output-logstash.asciidoc[leveloffset=+1] diff --git a/docs/en/ingest-management/elastic-agent/configuration/outputs/output-elasticsearch.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/outputs/output-elasticsearch.asciidoc deleted file mode 100644 index b1967e13d..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/outputs/output-elasticsearch.asciidoc +++ /dev/null @@ -1,711 +0,0 @@ -:type: output-elasticsearch - -[[elasticsearch-output]] -= Configure the {es} output - -++++ -{es} -++++ - -The {es} output sends events directly to {es} by using the {es} HTTP API. - -*Compatibility:* This output works with all compatible versions of {es}. See the -https://www.elastic.co/support/matrix#matrix_compatibility[Elastic Support -Matrix]. - -This example configures an {es} output called `default` in the -`elastic-agent.yml` file: - -[source,yaml] ----- -outputs: - default: - type: elasticsearch - hosts: [127.0.0.1:9200] - username: elastic - password: changeme ----- - -This example is similar to the previous one, except that it uses the recommended -<>: - -[source,yaml] ----- -outputs: - default: - type: elasticsearch - hosts: [127.0.0.1:9200] - api_key: "my_api_key" ----- - -NOTE: Token-based authentication is required in an -link:{serverless-docs}[{serverless-full}] environment. - -== {es} output configuration settings - -The `elasticsearch` output type supports the following settings, grouped by -category. Many of these settings have sensible defaults that allow you to run -{agent} with minimal configuration. - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -[[output-elasticsearch-commonly-used-settings]] -== Commonly used settings - -[cols="2* - protocol: https - path: /elasticsearch ------------------------------------------------------------------------------- -<1> In this example, the {es} nodes are available at -`https://10.45.3.2:9220/elasticsearch` and -`https://10.45.3.1:9230/elasticsearch`. - -Note that Elasticsearch Nodes in the link:{serverless-docs}[{serverless-full}] environment are exposed on port 443. -// end::hosts-setting[] - -// ============================================================================= - -// tag::protocol-setting[] -| -[id="{type}-protocol-setting"] -`protocol` - -| (string) The name of the protocol {es} is reachable on. The options are: -`http` or `https`. The default is `http`. However, if you specify a URL for -`hosts`, the value of `protocol` is overridden by whatever scheme you specify in -the URL. -// end::protocol-setting[] - -// ============================================================================= - -// tag::proxy_disable-setting[] -| -[id="{type}-proxy_disable-setting"] -`proxy_disable` - -| (boolean) If set to `true`, all proxy settings, including `HTTP_PROXY` and -`HTTPS_PROXY` variables, are ignored. - -*Default:* `false` - -// end::proxy_disable-setting[] - -// ============================================================================= - -// tag::proxy_headers-setting[] -| -[id="{type}-proxy_headers-setting"] -`proxy_headers` - -| (string) Additional headers to send to proxies during CONNECT requests. - -// end::proxy_headers-setting[] - -// ============================================================================= -// tag::proxy_url-setting[] -| -[id="{type}-proxy_url-setting"] -`proxy_url` - -| (string) The URL of the proxy to use when connecting to the {es} servers. The -value may be either a complete URL or a `host[:port]`, in which case the `http` -scheme is assumed. If a value is not specified through the configuration file -then proxy environment variables are used. See the -https://golang.org/pkg/net/http/#ProxyFromEnvironment[Go documentation] -for more information about the environment variables. -// end::proxy_url-setting[] - -// ============================================================================= - -|=== - -[[output-elasticsearch-authentication-settings]] -== Authentication settings - -When sending data to a secured cluster through the `elasticsearch` -output, {agent} can use any of the following authentication methods: - -* <> -* <> -* <> -* <> - -[[output-elasticsearch-basic-authentication-settings]] -=== Basic authentication credentials - -[source,yaml] ----- -outputs: - default: - type: elasticsearch - hosts: ["https://myEShost:9200"] - username: "your-username" - password: "your-password" ----- - -[cols="2*>. -// end::username-setting[] - -Note that in an link:{serverless-docs}[{serverless-full}] environment you need to use <>. - -// ============================================================================= - -|=== - -[[output-elasticsearch-apikey-authentication-settings]] -=== Token-based (API key) authentication - -[source,yaml] ----- -outputs: - default: - type: elasticsearch - hosts: ["https://myEShost:9200"] - api_key: "KnR6yE41RrSowb0kQ0HWoA" ----- - -[cols="2*>, -specifically the settings under <> and -<>. - -[[output-elasticsearch-kerberos-authentication-settings]] -=== Kerberos - -The following encryption types are supported: - -// lint ignore -* aes128-cts-hmac-sha1-96 -* aes128-cts-hmac-sha256-128 -* aes256-cts-hmac-sha1-96 -* aes256-cts-hmac-sha384-192 -* des3-cbc-sha1-kd -* rc4-hmac - -Example output config with Kerberos password-based authentication: - -[source,yaml] ----- -outputs: - default: - type: elasticsearch - hosts: ["http://my-elasticsearch.elastic.co:9200"] - kerberos.auth_type: password - kerberos.username: "elastic" - kerberos.password: "changeme" - kerberos.config_path: "/etc/krb5.conf" - kerberos.realm: "ELASTIC.CO" ----- - -The service principal name for the {es} instance is constructed from these -options. Based on this configuration, the name would be: - -`HTTP/my-elasticsearch.elastic.co@ELASTIC.CO` - -include::../authentication/kerberos-shared-settings.asciidoc[tag=kerberos-all-settings] - -[[output-elasticsearch-compatibility-setting]] -=== Compatibility setting - -[cols="2*> to optimize your {agent} performance when sending data to an {es} output. - -Refer to <> for a table showing the group of values associated with any preset, and another table showing EPS (events per second) results from testing the different preset options. - -Performance tuning preset settings: - -*`balanced`*:: -Configure the default tuning setting values for "out-of-the-box" performance. - -*`throughput`*:: -Optimize the {es} output for throughput. - -*`scale`*:: -Optimize the {es} output for scale. - -*`latency`*:: -Optimize the {es} output to reduce latence. - -*`custom`*:: -Use the `custom` option to fine-tune the performance tuning settings individually. - -*Default:* `balanced` -// end::preset-setting[] - -// ============================================================================= - -// tag::timeout-setting[] -| -[id="{type}-timeout-setting"] -`timeout` - -| (string) The HTTP request timeout in seconds for the {es} request. - -*Default:* `90s` - -// end::timeout-setting[] - -// ============================================================================= - -include::output-shared-settings.asciidoc[tag=worker-setting] - -// ============================================================================= - -|=== - -:type!: diff --git a/docs/en/ingest-management/elastic-agent/configuration/outputs/output-kafka.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/outputs/output-kafka.asciidoc deleted file mode 100644 index c8c7c605d..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/outputs/output-kafka.asciidoc +++ /dev/null @@ -1,530 +0,0 @@ -:type: output-kafka - -[[kafka-output]] -= Kafka output - -++++ -Kafka -++++ - -The Kafka output sends events to Apache Kafka. - -*Compatibility:* This output can connect to Kafka version 0.8.2.0 and later. -Older versions might work as well, but are not supported. - -This example configures a Kafka output called `kafka-output` in the {agent} -`elastic-agent.yml` file, with settings as described further in: - -[source,yaml] ----- -outputs: - kafka-output: - type: kafka - hosts: - - 'kafka1:9092' - - 'kafka2:9092' - - 'kafka3:9092' - client_id: Elastic - version: 1.0.0 - compression: gzip - compression_level: 4 - username: - password: - sasl: - mechanism: SCRAM-SHA-256 - partition: - round_robin: - group_events: 1 - topic: 'elastic-agent' - headers: [] - timeout: 30 - broker_timeout: 30 - required_acks: 1 - ssl: - verification_mode: full ----- - -== Kafka output and using {ls} to index data to {es} - -If you are considering using {ls} to ship the data from `kafka` to {es}, please be aware the -structure of the documents sent from {agent} to `kafka` must not be modified by {ls}. -We suggest disabling `ecs_compatibility` on both the `kafka` input and the `json` codec in order -to make sure the input doesn't edit the fields and their contents. - -The data streams set up by the integrations expect to receive events having the same structure and -field names as they were sent directly from an {agent}. - -Refer to <> documentation for more details. - -[source,yaml] ----- -inputs { - kafka { - ... - ecs_compatibility => "disabled" - codec => json { ecs_compatibility => "disabled" } - ... - } -} -... ----- - -== Kafka output configuration settings - -The `kafka` output supports the following settings, grouped by category. -Many of these settings have sensible defaults that allow you to run {agent} with -minimal configuration. - -* <> -* <> -* <> -* <> -* <> -* <> -* <> -[[output-kafka-commonly-used-settings]] -== Commonly used settings - -[cols="2*>, specifically the settings under -<> and <>. - -|=== - -[[output-kafka-memory-queue-settings]] -== Memory queue settings - -The memory queue keeps all events in memory. - -The memory queue waits for the output to acknowledge or drop events. If the queue is full, no new -events can be inserted into the memory queue. Only after the signal from the output will the queue -free up space for more events to be accepted. - -The memory queue is controlled by the parameters `flush.min_events` and `flush.timeout`. -`flush.min_events` gives a limit on the number of events that can be included in a single batch, and -`flush.timeout` specifies how long the queue should wait to completely fill an event request. If the -output supports a `bulk_max_size` parameter, the maximum batch size will be the smaller of -`bulk_max_size` and `flush.min_events`. - -`flush.min_events` is a legacy parameter, and new configurations should prefer to control batch size -with `bulk_max_size`. As of 8.13, there is never a performance advantage to limiting batch size with -`flush.min_events` instead of `bulk_max_size`. - -In synchronous mode, an event request is always filled as soon as events are available, even if -there are not enough events to fill the requested batch. This is useful when latency must be -minimized. To use synchronous mode, set `flush.timeout` to 0. - -For backwards compatibility, synchronous mode can also be activated by setting `flush.min_events` to 0 -or 1. In this case, batch size will be capped at 1/2 the queue capacity. - -In asynchronous mode, an event request will wait up to the specified timeout to try and fill the -requested batch completely. If the timeout expires, the queue returns a partial batch with all -available events. To use asynchronous mode, set `flush.timeout` to a positive duration, for example 5s. - -This sample configuration forwards events to the output when there are enough events to fill the -output's request (usually controlled by `bulk_max_size`, and limited to at most 512 events by -`flush.min_events`), or when events have been waiting for - -[source,yaml] ------------------------------------------------------------------------------- - queue.mem.events: 4096 - queue.mem.flush.min_events: 512 - queue.mem.flush.timeout: 5s ------------------------------------------------------------------------------- - -[cols="2*{ls} -++++ - -The {ls} output uses an internal protocol to send events directly to {ls} over -TCP. {ls} provides additional parsing, transformation, and routing of data -collected by {agent}. - -*Compatibility:* This output works with all compatible versions of {ls}. Refer -to the https://www.elastic.co/support/matrix#matrix_compatibility[Elastic -Support Matrix]. - -This example configures a {ls} output called `default` in the -`elastic-agent.yml` file: - -[source,yaml] ----- -outputs: - default: - type: logstash - hosts: ["127.0.0.1:5044"] <1> ----- -<1> The {ls} server and the port (`5044`) where {ls} is configured to listen for -incoming {agent} connections. - -To receive the events in {ls}, you also need to create a {ls} configuration pipeline. -The {ls} configuration pipeline listens for incoming {agent} connections, -processes received events, and then sends the events to {es}. - -Please be aware that the structure of the documents sent from {agent} to {ls} must not be modified by the pipeline. -We recommend that the pipeline doesn’t edit or remove the fields and their contents. -Editing the structure of the documents coming from {agent} can prevent the {es} ingest pipelines associated to the integrations in use to work correctly. -We cannot guarantee that the {es} ingest pipelines associated to the integrations using {agent} can work with missing or modified fields. - -The following {ls} pipeline definition example configures a pipeline that listens on port `5044` for -incoming {agent} connections and routes received events to {es}. - - -[source,yaml] ----- -input { - elastic_agent { - port => 5044 - enrich => none # don't modify the events' schema at all - ssl => true - ssl_certificate_authorities => [""] - ssl_certificate => "" - ssl_key => "" - ssl_verify_mode => "force_peer" - } -} - -output { - elasticsearch { - hosts => ["http://localhost:9200"] <1> - # cloud_id => "..." - data_stream => "true" - api_key => "" <2> - data_stream => true - ssl => true - # cacert => "" - } -} ----- -<1> The {es} server and the port (`9200`) where {es} is running. -<2> The API Key used by {ls} to ship data to the destination data streams. - -For more information about configuring {ls}, refer to -{logstash-ref}/configuration.html[Configuring {ls}] and -{logstash-ref}/plugins-inputs-elastic_agent.html[{agent} input plugin]. - -== {ls} output configuration settings - -The `logstash` output supports the following settings, grouped by category. -Many of these settings have sensible defaults that allow you to run {agent} with -minimal configuration. - -* <> - -* <> - -* <> - -* <> - -[[output-logstash-commonly-used-settings]] -== Commonly used settings - -[cols="2*>, specifically the settings under -<> and <>. - -NOTE: To use SSL/TLS, you must also configure the -{logstash-ref}/plugins-inputs-beats.html[{agent} input plugin for {ls}] to -use SSL/TLS. - -For more information, refer to <>. - -[[output-logstash-memory-queue-settings]] -== Memory queue settings - -The memory queue keeps all events in memory. - -The memory queue waits for the output to acknowledge or drop events. If the queue is full, no new -events can be inserted into the memory queue. Only after the signal from the output will the queue -free up space for more events to be accepted. - -The memory queue is controlled by the parameters `flush.min_events` and `flush.timeout`. -`flush.min_events` gives a limit on the number of events that can be included in a single batch, and -`flush.timeout` specifies how long the queue should wait to completely fill an event request. If the -output supports a `bulk_max_size` parameter, the maximum batch size will be the smaller of -`bulk_max_size` and `flush.min_events`. - -`flush.min_events` is a legacy parameter, and new configurations should prefer to control batch size -with `bulk_max_size`. As of 8.13, there is never a performance advantage to limiting batch size with -`flush.min_events` instead of `bulk_max_size`. - -In synchronous mode, an event request is always filled as soon as events are available, even if -there are not enough events to fill the requested batch. This is useful when latency must be -minimized. To use synchronous mode, set `flush.timeout` to 0. - -For backwards compatibility, synchronous mode can also be activated by setting `flush.min_events` to 0 -or 1. In this case, batch size will be capped at 1/2 the queue capacity. - -In asynchronous mode, an event request will wait up to the specified timeout to try and fill the -requested batch completely. If the timeout expires, the queue returns a partial batch with all -available events. To use asynchronous mode, set `flush.timeout` to a positive duration, for example 5s. - -This sample configuration forwards events to the output when there are enough events to fill the -output's request (usually controlled by `bulk_max_size`, and limited to at most 512 events by -`flush.min_events`), or when events have been waiting for 5s without filling the requested size:f 512 events are available or the oldest -available event has been waiting for 5s in the queue: - -[source,yaml] ------------------------------------------------------------------------------- - queue.mem.events: 4096 - queue.mem.flush.min_events: 512 - queue.mem.flush.timeout: 5s ------------------------------------------------------------------------------- - -[cols="2* NOTE: Docker provider ensures that each docker container event is enriched with -the container's metadata, and hence the inputs will be populated with the `add_fields` processor which will be responsible for adding the proper container's metadata. diff --git a/docs/en/ingest-management/elastic-agent/configuration/providers/elastic-agent-providers.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/providers/elastic-agent-providers.asciidoc deleted file mode 100644 index 396682c44..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/providers/elastic-agent-providers.asciidoc +++ /dev/null @@ -1,126 +0,0 @@ -[[providers]] -= Configure providers for standalone {agent}s - -++++ -Providers -++++ - -Providers supply the key-value pairs that are used for variable substitution -and conditionals. Each provider's keys are automatically prefixed with the name -of the provider in the context of the {agent}. - -For example, a provider named `foo` provides -`{"key1": "value1", "key2": "value2"}`, the key-value pairs are placed in -`{"foo" : {"key1": "value1", "key2": "value2"}}`. To reference the keys, use `{{foo.key1}}` and `{{foo.key2}}`. - -[discrete] -== Provider configuration - -The provider configuration is specified under the top-level `providers` -key in the `elastic-agent.yml` configuration. All registered -providers are enabled by default. If a provider cannot connect, no mappings are produced. - -The following example shows two providers (`local` and `local_dynamic`) that -supply custom keys: - -[source,yaml] ----- -providers: - local: - vars: - foo: bar - local_dynamic: - vars: - - item: key1 - - item: key2 ----- - -Providers are enabled automatically if a provider is referenced in an {agent} policy. -All providers are prefixed without name collisions. -The name of the provider is in the key in the configuration. - -[source,yaml] ----- -providers: - docker: - enabled: false ----- - -{agent} supports two broad types of providers: <> and -<>. - -[discrete] -[[context-providers]] -=== Context providers - -Context providers give the current context of the running {agent}, for -example, agent information (ID, version), host information (hostname, IP -addresses), and environment information (environment variables). - -They can only provide a single key-value mapping. Think of them as singletons; -an update of a key-value mapping results in a re-evaluation of the entire -configuration. These providers are normally very static, but not -required. A value can change which results in re-evaluation. - -Context providers use the Elastic Common Schema (ECS) naming to ensure consistency and understanding throughout documentation and projects. - -{agent} supports the following context providers: - -// lint ignore env -* <> -* <> -* <> -* <> -* <> -* <> - -[discrete] -[[dynamic-providers]] -=== Dynamic Providers - -Dynamic providers give an array of multiple key-value mappings. Each -key-value mapping is combined with the previous context provider's key and value -mapping which provides a new unique mapping that is used to generate a -configuration. - -{agent} supports the following context providers: - -* <> -* <> -* <> - -[discrete] -[[disable-providers-by-default]] -=== Disabling Providers By Default - -All registered providers are disabled by default until they are referenced in a policy. - -You can disable all providers even if they are referenced in a policy by setting `agent.providers.initial_default: false`. - -The following configuration disables all providers from running except for the docker provider, if it becomes referenced in the policy: - -[source,yaml] ----- -agent.providers.initial_default: false -providers: - docker: - enabled: true ----- - -include::local-provider.asciidoc[leveloffset=+1] - -include::agent-provider.asciidoc[leveloffset=+1] - -include::host-provider.asciidoc[leveloffset=+1] - -include::env-provider.asciidoc[leveloffset=+1] - -include::kubernetes_secrets-provider.asciidoc[leveloffset=+1] - -include::kubernetes_leaderelection-provider.asciidoc[leveloffset=+1] - -include::local-dynamic-provider.asciidoc[leveloffset=+1] - -include::docker-provider.asciidoc[leveloffset=+1] - -include::kubernetes-provider.asciidoc[leveloffset=+1] diff --git a/docs/en/ingest-management/elastic-agent/configuration/providers/env-provider.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/providers/env-provider.asciidoc deleted file mode 100644 index 60fa52089..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/providers/env-provider.asciidoc +++ /dev/null @@ -1,14 +0,0 @@ -[[env-provider]] -// lint ignore env -= Env Provider - -Provides access to the environment variables as key-value pairs. - -For example, set the variable `foo`: - -[source,shell] ----- -foo=bar elastic-agent run ----- - -The environment variable can be referenced as `${env.foo}`. \ No newline at end of file diff --git a/docs/en/ingest-management/elastic-agent/configuration/providers/host-provider.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/providers/host-provider.asciidoc deleted file mode 100644 index fff8c2cca..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/providers/host-provider.asciidoc +++ /dev/null @@ -1,28 +0,0 @@ -[[host-provider]] -= Host provider - -Provides information about the current host. The available keys are: - -|=== -|Key |Type |Description - -|`host.name` -|`string` -|Host name - -|`host.platform` -|`string` -|Host platform - -|`host.architecture` -|`string` -|Host architecture - -|`host.ip[]` -|`[]string` -|Host IP addresses - -|`host.mac[]` -|`[]string` -|Host MAC addresses -|=== \ No newline at end of file diff --git a/docs/en/ingest-management/elastic-agent/configuration/providers/kubernetes-provider.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/providers/kubernetes-provider.asciidoc deleted file mode 100644 index f406f1361..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/providers/kubernetes-provider.asciidoc +++ /dev/null @@ -1,349 +0,0 @@ -[[kubernetes-provider]] -= Kubernetes Provider - -Provides inventory information from Kubernetes. - - -[discrete] -= Provider configuration - -[source,yaml] ----- -providers.kubernetes: - node: ${NODE_NAME} - scope: node - #kube_config: /Users/elastic-agent/.kube/config - #sync_period: 600s - #cleanup_timeout: 60s - resources: - pod: - enabled: true ----- - -`node`:: (Optional) Specify the node to scope {agent} to in case it -cannot be accurately detected by the default discovery approach: -1. If {agent} is deployed in Kubernetes cluster as Pod, use hostname of pod as the pod name to query pod metadata for node name. -2. If step 1 fails or {agent} is deployed outside of the Kubernetes cluster, use machine-id to match against Kubernetes nodes for node name. -3. If node cannot be discovered with step 1 or 2 fall back to `NODE_NAME` environment variable as default value. In case it is not set return error. -`cleanup_timeout`:: (Optional) Specify the time of inactivity before stopping the -running configuration for a container. This is `60s` by default. -`sync_period`:: (Optional) Specify the timeout for listing historical resources. -`kube_config`:: (Optional) Use the given config file as configuration for Kubernetes -client. If `kube_config` is not set, the `KUBECONFIG` environment variable will be -checked and will fall back to InCluster if not present. InCluster mode means that if -{agent} runs as a Pod it will try to initialize the client using the token and certificate -that are mounted in the Pod by default: - * `/var/run/secrets/kubernetes.io/serviceaccount/token` - * `/var/run/secrets/kubernetes.io/serviceaccount/ca.crt` - -as well as using the environment variables `KUBERNETES_SERVICE_HOST` and `KUBERNETES_SERVICE_PORT` -to reach the API Server. -`kube_client_options`:: (Optional) Additional options can be configured for Kubernetes -client. Currently client QPS and burst are supported, if not set Kubernetes client's - https://pkg.go.dev/k8s.io/client-go/rest#pkg-constants[default QPS and burst] will be used. -Example: -["source","yaml",subs="attributes"] -------------------------------------------------------------------------------------- - kube_client_options: - qps: 5 - burst: 10 -------------------------------------------------------------------------------------- -`scope`:: (Optional) Specify the level for autodiscover. `scope` can -either take `node` or `cluster` as values. `node` scope allows discovery of resources in -the specified node. `cluster` scope allows cluster wide discovery. Only `pod` and `node` resources -can be discovered at node scope. -`resources`:: (Optional) Specify the resources that want to start the autodiscovery for. One -of `pod`, `node`, `service`. By default `node` and `pod` are being enabled. `service` resource -requires the `scope` to be set at `cluster`. -`namespace`:: (Optional) Select the namespace from which to collect the -metadata. If it is not set, the processor collects metadata from all namespaces. -It is unset by default. -`include_annotations`:: (Optional) If added to the provider config, then the list of annotations present in the config -are added to the event. -`include_labels`:: (Optional) If added to the provider config, then the list of labels present in the config -will be added to the event. -`exclude_labels`:: (Optional) If added to the provider config, then the list of labels present in the config -will be excluded from the event. -`labels.dedot`:: (Optional) If set to be `true` in the provider config, then `.` in labels will be replaced with `_`. -By default it is `true`. -`annotations.dedot`:: (Optional) If set to be `true` in the provider config, then `.` in annotations will be replaced -with `_`. By default it is `true`. - -`add_resource_metadata`:: (Optional) Specify filters and configration for the extra metadata, that will be added to the event. -Configuration parameters: - * `node` or `namespace`: Specify labels and annotations filters for the extra metadata coming from node and namespace. By default - all labels are included while annotations are not. To change the default behaviour `include_labels`, `exclude_labels` and `include_annotations` - can be defined. These settings are useful when storing labels and annotations that require special handling to avoid overloading the storage output. - The enrichment of `node` or `namespace` metadata can be individually disabled by setting `enabled: false`. - Wildcards are supported in these settings by using `use_regex_include: true` in combination with `include_labels`, and respectively by setting `use_regex_exclude: true` in combination with `exclude_labels`. - * `deployment`: If resource is `pod` and it is created from a `deployment`, by default the deployment name isn't added, this can be enabled by setting `deployment: true`. - * `cronjob`: If resource is `pod` and it is created from a `cronjob`, by default the cronjob name isn't added, this can be enabled by setting `cronjob: true`. - Example: - -["source","yaml",subs="attributes"] -------------------------------------------------------------------------------------- - add_resource_metadata: - namespace: - #use_regex_include: false - include_labels: ["namespacelabel1"] - #use_regex_exclude: false - #exclude_labels: ["namespacelabel2"] - node: - #use_regex_include: false - include_labels: ["nodelabel2"] - include_annotations: ["nodeannotation1"] - #use_regex_exclude: false - #exclude_labels: ["nodelabel3"] - #deployment: false - #cronjob: false -------------------------------------------------------------------------------------- - - -[discrete] -= Provider for Pod resources - -The available keys are: - -|=== -|Key |Type |Description - -|`kubernetes.namespace` -|`string` -|Namespace of the Pod - -|`kubernetes.namespace_uid` -|`string` -|UID of the Namespace of the Pod - -|`kubernetes.namespace_labels.*` -|`object` -|Labels of the Namespace of the Pod - -|`kubernetes.namespace_annotations.*` -|`object` -|Annotations of the Namespace of the Pod - -|`kubernetes.pod.name` -|`string` -|Name of the Pod - -|`kubernetes.pod.uid` -|`string` -|UID of the Pod - -|`kubernetes.pod.ip` -|`string` -|IP of the Pod - -|`kubernetes.labels.*` -|`object` -|Object of labels of the Pod - -|`kubernetes.annotations.*` -|`object` -|Object of annotations of the Pod - -|`kubernetes.container.name` -|`string` -|Name of the container - -|`kubernetes.container.runtime` -|`string` -|Runtime of the container - -|`kubernetes.container.id` -|`string` -|ID of the container - -|`kubernetes.container.image` -|`string` -|Image of the container - -|`kubernetes.container.port` -|`string` -|Port of the container (if defined) - -|`kubernetes.container.port_name` -|`string` -|Port's name for the container (if defined) - -|`kubernetes.node.name` -|`string` -|Name of the Node - -|`kubernetes.node.uid` -|`string` -|UID of the Node - -|`kubernetes.node.hostname` -|`string` -|Hostname of the Node - -|`kubernetes.node.labels.*` -|`string` -|Labels of the Node - -|`kubernetes.node.annotations.*` -|`string` -|Annotations of the Node - -|`kubernetes.deployment.name.*` -|`string` -|Deployment name of the Pod (if exists) - -|`kubernetes.statefulset.name.*` -|`string` -|StatefulSet name of the Pod (if exists) - -|`kubernetes.replicaset.name.*` -|`string` -|ReplicaSet name of the Pod (if exists) -|=== - - -These are the fields available within config templating. The `kubernetes.*` fields will be available on each emitted event. - -NOTE: `kubernetes.labels.*` and `kubernetes.annotations.*` used in config templating are not dedoted and should not be confused with -labels and annotations added in the final Elasticsearch document and which are dedoted by default. For examples refer to <>. - -Note that not all of these fields are available by default and special configuration options -are needed in order to include them. - -For example, if the Kubernetes provider provides the following inventory: - -[source,json] ----- -[ - { - "id": "1", - "mapping:": {"namespace": "kube-system", "pod": {"name": "kube-controllermanger"}}, - "processors": {"add_fields": {"kuberentes.namespace": "kube-system", "kubernetes.pod": {"name": "kube-controllermanger"}} - { - "id": "2", - "mapping:": {"namespace": "kube-system", "pod": {"name": "kube-scheduler"}}, - "processors": {"add_fields": {"kubernetes.namespace": "kube-system", "kubernetes.pod": {"name": "kube-scheduler"}} - } -] ----- - -{agent} automatically prefixes the result with `kubernetes`: - - -[source,json] ----- -[ - {"kubernetes": {"id": "1", "namespace": {"name": "kube-system"}, "pod": {"name": "kube-controllermanger"}}, - {"kubernetes": {"id": "2", "namespace": {"name": "kube-system"}, "pod": {"name": "kube-scheduler"}}, -] ----- - -In addition, the Kubernetes metadata are being added to each event by default. - -[discrete] -= Provider for Node resources - -[source,yaml] ----- -providers.kubernetes: - node: ${NODE_NAME} - scope: node - #kube_config: /Users/elastic-agent/.kube/config - #sync_period: 600s - #cleanup_timeout: 60s - resources: - node: - enabled: true ----- - -This resource is enabled by default but in this example we define it explicitly -for clarity. - -The available keys are: - -|=== -|Key |Type |Description - -|`kubernetes.labels.*` -|`object` -|Object of labels of the Node - -|`kubernetes.annotations.*` -|`object` -|Object of labels of the Node - -|`kubernetes.node.name` -|`string` -|Name of the Node - -|`kubernetes.node.uid` -|`string` -|UID of the Node - -|`kubernetes.node.hostname` -|`string` -|Hostname of the Node -|=== - -[discrete] -= Provider for Service resources - -[source,yaml] ----- -providers.kubernetes: - node: ${NODE_NAME} - scope: cluster - #kube_config: /Users/elastic-agent/.kube/config - #sync_period: 600s - #cleanup_timeout: 60s - resources: - service: - enabled: true ----- - -Note that this resource is only available with `scope: cluster` setting and `node` -cannot be used as scope. - -The available keys are: - -|=== -|Key |Type |Description - -|`kubernetes.namespace` -|`string` -|Namespace of the Service - -|`kubernetes.namespace_uid` -|`string` -|UID of the Namespace of the Service - -|`kubernetes.namespace_labels.*` -|`object` -|Labels of the Namespace of the Service - -|`kubernetes.namespace_annotations.*` -|`object` -|Annotations of the Namespace of the Service - -|`kubernetes.labels.*` -|`object` -|Object of labels of the Service - -|`kubernetes.annotations.*` -|`object` -|Object of labels of the Service - -|`kubernetes.service.name` -|`string` -|Name of the Service - -|`kubernetes.service.uid` -|`string` -|UID of the Service - -|`kubernetes.selectors.*` -|`string` -|Kubernetes selectors -|=== - -Refer to <> -for more information about shaping dynamic inputs for autodiscovery. diff --git a/docs/en/ingest-management/elastic-agent/configuration/providers/kubernetes_leaderelection-provider.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/providers/kubernetes_leaderelection-provider.asciidoc deleted file mode 100644 index ec89d4ef9..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/providers/kubernetes_leaderelection-provider.asciidoc +++ /dev/null @@ -1,90 +0,0 @@ -[[kubernetes_leaderelection-provider]] -= Kubernetes LeaderElection Provider - -Provides the option to enable leaderelection between a set of {agent}s -running on Kubernetes. Only one {agent} at a time will be the holder of the leader -lock and based on this, configurations can be enabled with the condition -that the {agent} holds the leadership. This is useful in cases where the {agent} between a set of {agent}s collects cluster wide metrics for the Kubernetes cluster, such as the `kube-state-metrics` endpoint. - -Provider needs a `kubeconfig` file to establish a connection to Kubernetes API. -It can automatically reach the API if it's running in an InCluster environment ({agent} runs as Pod). - -[source,yaml] ----- -providers.kubernetes_leaderelection: - #enabled: true - #kube_config: /Users/elastic-agent/.kube/config - #kube_client_options: - # qps: 5 - # burst: 10 - #leader_lease: agent-k8s-leader-lock - #leader_retryperiod: 2 - #leader_leaseduration: 15 - #leader_renewdeadline: 10 ----- - -`enabled`:: (Optional) Defaults to true. To explicitly disable the LeaderElection provider, -set `enabled: false`. -`kube_config`:: (Optional) Use the given config file as configuration for the Kubernetes -client. If `kube_config` is not set, `KUBECONFIG` environment variable will be -checked and will fall back to InCluster if it's not present. -`kube_client_options`:: (Optional) Configure additional options for the Kubernetes client. -Supported options are `qps` and `burst`. If not set, the Kubernetes client's -default QPS and burst settings are used. -`leader_lease`:: (Optional) Specify the name of the leader lease. -This is set to `elastic-agent-cluster-leader` by default. -`leader_retryperiod`:: (Optional) Default value 2 (in sec). How long before {agent}s try to get the `leader` role. -`leader_leaseduration`:: (Optional) Default value 15 (in sec). How long the leader {agent} holds the `leader` state. -`leader_renewdeadline`:: (Optional) Default value 10 (in sec). How long leaders retry getting the `leader` role. - -The available key is: - -|=== -|Key |Type |Description - -|`kubernetes_leaderelection.leader` -|`bool` -|The value of the leadership flag. This is set to `true` when the {agent} is the current leader, and is set to `false` otherwise. - -|=== - - -[discrete] -= Understanding leader timings - -As described above, the LeaderElection configuration offers the following parameters: Lease duration (`leader_leaseduration`), Renew deadline (`leader_renewdeadline`), and -Retry period (`leader_retryperiod`). Based on the config provided, each agent will trigger {k8s} API requests and will try to check the status of the lease. - -NOTE: The number of leader calls to the K8s Control API is proportional to the number of {agent}s installed. This means that requests will come from all {agent}s per `leader_retryperiod`. Setting `leader_retryperiod` to a greater value than the default (2sec), means that fewer requests will be made towards the {k8s} Control API, but will also increase the period where collection of metrics from the leader {agent} might be lost. - -The library applies https://github.com/kubernetes/client-go/blob/master/tools/leaderelection/leaderelection.go#L76[specific checks] for the timing parameters and if those are not verified {agent} will exit with a `panic` error. - -In general: -- Leaseduration must be greater than renewdeadline -- Renewdeadline must be greater than retryperiod*JitterFactor. - -NOTE: Constant JitterFactor=1.2 is defined in https://pkg.go.dev/gopkg.in/kubernetes/client-go.v11/tools/leaderelection[leaderelection lib]. - - -[discrete] -= Enabling configurations only when on leadership - -Use conditions based on the `kubernetes_leaderelection.leader` key to leverage the leaderelection provider and enable specific inputs only when the {agent} holds the leadership lock. -The below example enables the `state_container` -metricset only when the leadership lock is acquired: - -[source,yaml] ----- -- data_stream: - dataset: kubernetes.state_container - type: metrics - metricsets: - - state_container - add_metadata: true - hosts: - - 'kube-state-metrics:8080' - period: 10s - condition: ${kubernetes_leaderelection.leader} == true ----- - - diff --git a/docs/en/ingest-management/elastic-agent/configuration/providers/kubernetes_secrets-provider.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/providers/kubernetes_secrets-provider.asciidoc deleted file mode 100644 index c5180a727..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/providers/kubernetes_secrets-provider.asciidoc +++ /dev/null @@ -1,45 +0,0 @@ -[[kubernetes_secrets-provider]] -= Kubernetes Secrets Provider - -Provides access to the Kubernetes Secrets API. - -Use the format `${kubernetes_secrets...}` to reference a Kubernetes Secrets variable, where `default` is the namespace of the Secret, `somesecret` is the name of the Secret and `value` is the field of the Secret to access. - -To obtain the values for the secrets, a request to the API Server is made. To avoid multiple requests for the same secret and to not overwhelm the API Server, a cache to store the values is used by default. This configuration can be set by using the variables `cache_*` (see below). - -The provider needs a `kubeconfig` file to establish connection to the Kubernetes API. It can automatically reach the API if it's run in an InCluster environment ({agent} runs as pod). - -[source,yaml] ----- -providers.kubernetes_secrets: - #kube_config: /Users/elastic-agent/.kube/config - #kube_client_options: - # qps: 5 - # burst: 10 - #cache_disable: false - #cache_refresh_interval: 60s - #cache_ttl: 1h - #cache_request_timeout: 5s ----- - - -`kube_config`:: (Optional) Use the given config file as configuration for the Kubernetes client. If `kube_config` is not set, `KUBECONFIG` environment variable will be checked and will fall back to InCluster if it's not present. -`kube_client_options`:: (Optional) Configure additional options for the Kubernetes client. Supported options are `qps` and `burst`. If not set, the Kubernetes client's default QPS and burst settings are used. -`cache_disable`:: (Optional) Disables the cache for the secrets. When disabled, thus is set to `true`, code makes a request to the API Server to obtain the value. To continue using the cache, set the variable to `false`. Default is `false`. -`cache_refresh_interval`:: (Optional) Defines the period to update all secret values kept in the cache. Defaults to `60s`. -`cache_ttl`:: (Optional) Defines for how long a secret should be kept in the cache if not being requested. The default is `1h`. -`cache_request_timeout`:: (Optional) Defines how long the API Server can take to provide the value for a given secret. Defaults to `5s`. - - - -If you run agent on Kubernetes, the proper rule in the `ClusterRole` is required to provide access to the {agent} pod in the Secrets API: - -[source,yaml] ----- -- apiGroups: [""] - resources: - - secrets - verbs: ["get"] ----- - -CAUTION: The above rule will give permission to {agent} pod to access Kubernetes Secrets API. Anyone who has access to the {agent} pod (`kubectl exec` for example) will also have access to the Kubernetes Secrets API. This allows access to a specific secret, regardless of the namespace that it belongs to. This option should be carefully considered. \ No newline at end of file diff --git a/docs/en/ingest-management/elastic-agent/configuration/providers/local-dynamic-provider.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/providers/local-dynamic-provider.asciidoc deleted file mode 100644 index 574bfd6b5..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/providers/local-dynamic-provider.asciidoc +++ /dev/null @@ -1,45 +0,0 @@ -[[local-dynamic-provider]] -= Local dynamic provider - -Define multiple key-value pairs to generate multiple configurations. - -For example, the following {agent} policy defines a local dynamic provider that -defines three values for `item`: - -[source,yaml] ----- -inputs: - - id: logfile-${local_dynamic.my_var} - type: logfile - streams: - - paths: "/var/${local_dynamic.my_var}/app.log" - -providers: - local_dynamic: - items: - - vars: - my_var: key1 - - vars: - my_var: key2 - - vars: - my_var: key3 ----- - -The configuration generated by this policy looks like: - -[source,yaml] ----- -inputs: - - id: logfile-key1 - type: logfile - streams: - - paths: "/var/key1/app.log" - - id: logfile-key2 - type: logfile - streams: - - paths: "/var/key2/app.log" - - id: logfile-key3 - type: logfile - streams: - - paths: "/var/key3/app.log" ----- \ No newline at end of file diff --git a/docs/en/ingest-management/elastic-agent/configuration/providers/local-provider.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/providers/local-provider.asciidoc deleted file mode 100644 index 9430c950b..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/providers/local-provider.asciidoc +++ /dev/null @@ -1,12 +0,0 @@ -[[local-provider]] -= Local - -Provides custom keys to use as variables. For example: - -[source,yaml] ----- -providers: - local: - vars: - foo: bar ----- \ No newline at end of file diff --git a/docs/en/ingest-management/elastic-agent/configuration/structure-config-file.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/structure-config-file.asciidoc deleted file mode 100644 index 3d5bc8107..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/structure-config-file.asciidoc +++ /dev/null @@ -1,38 +0,0 @@ -[[structure-config-file]] -= Structure of a config file - -The `elastic-agent.yml` policy file contains all of the settings that determine how {agent} runs. The most important and commonly used settings are described here, including input and output options, providers used for variables and conditional output, security settings, logging options, enabling of special features, and specifications for {agent} upgrades. - -An `elastic-agent.yml` file is modular: You can combine input, output, and all other settings to enable the {integrations-docs}[{integrations}] to use with {agent}. Refer to <> for the steps to download the settings to use as a starting point, and then refer to the following examples to learn about the available settings: - -* <> -* <>. - -[discrete] -[[structure-config-file-components]] -== Config file components - -The following categories include the most common settings used to configure standalone {agent}. Follow each link for more detail and examples. - -<>:: -Specify how {agent} locates and processes input data. - -<>:: -Specify the key-value pairs used for variable substitution and conditionals in {agent} output. - -<>:: -Specify where {agent} sends data. - -<>:: -Configure SSL including SSL protocols and settings for certificates and keys. - -<>:: -Configure the {agent} logging output. - -<>:: -Configure any experiemental features in {agent}. These are disabled by default. - -<>:: -Specify the location of required artifacts and other settings used for {agent} upgrades. - - diff --git a/docs/en/ingest-management/elastic-agent/configuration/yaml/elastic-agent-reference-yaml.asciidoc b/docs/en/ingest-management/elastic-agent/configuration/yaml/elastic-agent-reference-yaml.asciidoc deleted file mode 100644 index 0b08d36dd..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/yaml/elastic-agent-reference-yaml.asciidoc +++ /dev/null @@ -1,15 +0,0 @@ -[[elastic-agent-reference-yaml]] -= Reference YAML - -The {agent} installation includes an `elastic-agent.reference.yml` file that -describes all the settings available in a standalone configuration. - -To ensure that you're accessing the latest version, refer to the original link:https://github.com/elastic/elastic-agent/blob/main/elastic-agent.reference.yml[`elastic-agent.reference.yml` file] in the `elastic/elastic-agent` repository. -A copy is included here for your convenience. - -Each section of the file and available settings are also described in <>. - -[source,yaml] ----- -include::elastic-agent-reference-yaml.yml[] ----- \ No newline at end of file diff --git a/docs/en/ingest-management/elastic-agent/configuration/yaml/elastic-agent-reference-yaml.yml b/docs/en/ingest-management/elastic-agent/configuration/yaml/elastic-agent-reference-yaml.yml deleted file mode 100644 index d0a500627..000000000 --- a/docs/en/ingest-management/elastic-agent/configuration/yaml/elastic-agent-reference-yaml.yml +++ /dev/null @@ -1,377 +0,0 @@ -###################### Agent Configuration Example ######################### - -# This file is an example configuration file highlighting only the most common -# options. The elastic-agent.reference.yml file from the same directory contains all the -# supported options with more comments. You can use it as a reference. - -###################################### -# Fleet configuration -###################################### -outputs: - default: - type: elasticsearch - hosts: [127.0.0.1:9200] - api_key: "example-key" - # username: "elastic" - # password: "changeme" - - # Performance preset for elasticsearch outputs. One of "balanced", "throughput", - # "scale", "latency" and "custom". - # The default if unspecified is "custom". - preset: balanced - -inputs: - - type: system/metrics - # Each input must have a unique ID. - id: unique-system-metrics-input - # Namespace name must conform to the naming conventions for Elasticsearch indices, cannot contain dashes (-), and cannot exceed 100 bytes - # For index naming restrictions, see https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html#indices-create-api-path-params - data_stream.namespace: default - use_output: default - streams: - - metricsets: - - cpu - # Dataset name must conform to the naming conventions for Elasticsearch indices, cannot contain dashes (-), and cannot exceed 100 bytes - data_stream.dataset: system.cpu - - metricsets: - - memory - data_stream.dataset: system.memory - - metricsets: - - network - data_stream.dataset: system.network - - metricsets: - - filesystem - data_stream.dataset: system.filesystem - -# # Collecting log files -# - type: filestream -# # Input ID allowing Elastic Agent to track the state of this input. Must be unique. -# id: your-input-id -# streams: -# # Stream ID for this data stream allowing Filebeat to track the state of the ingested files. Must be unique. -# # Each filestream data stream creates a separate instance of the Filebeat filestream input. -# - id: your-filestream-stream-id -# data_stream: -# dataset: generic -# paths: -# - /var/log/*.log - -# management: -# # Mode of management, the Elastic Agent support two modes of operation: -# # -# # local: The Elastic Agent will expect to find the inputs configuration in the local file. -# # -# # Default is local. -# mode: "local" - -# fleet: -# access_api_key: "" -# kibana: -# # kibana minimal configuration -# hosts: ["localhost:5601"] -# ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] - -# # optional values -# #protocol: "https" -# #service_token: "example-token" -# #path: "" -# #ssl.verification_mode: full -# #ssl.supported_protocols: [TLSv1.2, TLSv1.3] -# #ssl.cipher_suites: [] -# #ssl.curve_types: [] -# reporting: -# # Reporting threshold indicates how many events should be kept in-memory before reporting them to fleet. -# #reporting_threshold: 10000 -# # Frequency used to check the queue of events to be sent out to fleet. -# #reporting_check_frequency_sec: 30 - -# agent.download: -# # source of the artifacts, requires elastic like structure and naming of the binaries -# # e.g /windows-x86.zip -# sourceURI: "https://artifacts.elastic.co/downloads/beats/" -# # path to the directory containing downloaded packages -# target_directory: "${path.data}/downloads" -# # timeout for downloading package -# timeout: 120s -# # install_path describes the location of installed packages/programs. It is also used -# # for reading program specifications. -# install_path: "${path.data}/install" -# # retry_sleep_init_duration is the duration to sleep for before the first retry attempt. This -# # duration will increase for subsequent retry attempts in a randomized exponential backoff manner. -# retry_sleep_init_duration: 30s - -# agent.process: -# # timeout for creating new processes. when process is not successfully created by this timeout -# # start operation is considered a failure -# spawn_timeout: 30s -# # timeout for stopping processes. when process is not stopped by this timeout then the process. -# # is force killed -# stop_timeout: 30s - -# agent.grpc: -# # listen address for the GRPC server that spawned processes connect back to. -# address: localhost -# # port for the GRPC server that spawned processes connect back to. -# port: 6789 -# # max_message_size limits the message size in agent internal communication -# # default is 100MB -# max_message_size: 104857600 - -# agent.retry: -# # Enabled determines whether retry is possible. Default is false. -# enabled: true -# # RetriesCount specifies number of retries. Default is 3. -# # Retry count of 1 means it will be retried one time after one failure. -# retriesCount: 3 -# # Delay specifies delay in ms between retries. Default is 30s -# delay: 30s -# # MaxDelay specifies maximum delay in ms between retries. Default is 300s -# maxDelay: 5m -# # Exponential determines whether delay is treated as exponential. -# # With 30s delay and 3 retries: 30, 60, 120s -# # Default is false -# exponential: false - -# agent.limits: -# # limits the number of operating system threads that can execute user-level Go code simultaneously. -# # Translates into the GOMAXPROCS runtime parameter for each Go process started by the agent and the agent itself. -# # By default is set to `0` which means using all available CPUs. -# go_max_procs: 0 - -# agent.monitoring: -# # enabled turns on monitoring of running processes -# enabled: false -# # enables log monitoring -# logs: false -# # enables metrics monitoring -# metrics: false -# # metrics_period defines how frequent we should sample monitoring metrics. Default is 60 seconds. -# metrics_period: 60s -# # exposes /debug/pprof/ endpoints -# # recommended that these endpoints are only enabled if the monitoring endpoint is set to localhost -# pprof.enabled: false -# # The name of the output to use for monitoring data. -# use_output: monitoring -# # Exposes agent metrics using http, by default sockets and named pipes are used. -# # -# # `http` Also exposes a /liveness endpoint that will return an HTTP code depending on agent status: -# # 200: Agent is healthy -# # 500: A component or unit is in a failed state -# # 503: The agent coordinator is unresponsive -# # -# # You can pass a `failon` parameter to the /liveness endpoint to determine what component state will result in a 500. -# # For example: `curl 'localhost:6792/liveness?failon=degraded'` will return 500 if a component is in a degraded state. -# # The possible values for `failon` are: -# # `degraded`: return an error if a component is in a degraded state or failed state, or if the agent coordinator is unresponsive. -# # `failed`: return an error if a unit is in a failed state, or if the agent coordinator is unresponsive. -# # `heartbeat`: return an error only if the agent coordinator is unresponsive. -# # If no `failon` parameter is provided, the default behavior is `failon=heartbeat` -# http: -# # enables http endpoint -# enabled: false -# # The HTTP endpoint will bind to this hostname, IP address, unix socket or named pipe. -# # When using IP addresses, it is recommended to only use localhost. -# host: localhost -# # Port on which the HTTP endpoint will bind. Default is 0 meaning feature is disabled. -# port: 6791 -# # Metrics buffer endpoint -# buffer.enabled: false -# # Configuration for the diagnostics action handler -# diagnostics: -# # Rate limit for the action handler. Does not affect diagnostics collected through the CLI. -# limit: -# # Rate limit interval. -# interval: 1m -# # Rate limit burst. -# burst: 1 -# # Configuration for the file-upload client. Client may retry failed requests with an exponential backoff. -# uploader: -# # Max retries allowed when uploading a chunk. -# max_retries: 10 -# # Initial duration of the backoff. -# init_dur: 1s -# # Max duration of the backoff. -# max_dur: 1m - -# # Allow fleet to reload its configuration locally on disk. -# # Notes: Only specific process configuration and external input configurations will be reloaded. -# agent.reload: -# # enabled configure the Elastic Agent to reload or not the local configuration. -# # -# # Default is true -# enabled: true - -# # period define how frequent we should look for changes in the configuration. -# period: 10s - -# Feature Flags - -# This section enables or disables feature flags supported by Agent and its components. -#agent.features: -# fqdn: -# enabled: false - -# Logging - -# There are four options for the log output: file, stderr, syslog, eventlog -# The file output is the default. - -# Sets log level. The default log level is info. -# Available log levels are: error, warning, info, debug -#agent.logging.level: info - -# Enable debug output for selected components. To enable all selectors use ["*"] -# Other available selectors are "beat", "publish", "service" -# Multiple selectors can be chained. -#agent.logging.selectors: [ ] - -# Send all logging output to stderr. The default is false. -agent.logging.to_stderr: true - -# Send all logging output to syslog. The default is false. -#agent.logging.to_syslog: false - -# Send all logging output to Windows Event Logs. The default is false. -#agent.logging.to_eventlog: false - -# If enabled, Elastic-Agent periodically logs its internal metrics that have changed -# in the last period. For each metric that changed, the delta from the value at -# the beginning of the period is logged. Also, the total values for -# all non-zero internal metrics are logged on shutdown. This setting is also passed -# to beats running under the agent. The default is true. -#agent.logging.metrics.enabled: true - -# The period after which to log the internal metrics. The default is 30s. -#agent.logging.metrics.period: 30s - -# Logging to rotating files. Set logging.to_files to false to disable logging to -# files. -#agent.logging.to_files: true -#agent.logging.files: - # Configure the path where the logs are written. The default is the logs directory - # under the home path (the binary location). - #path: /var/log/elastic-agent - - # The name of the files where the logs are written to. - #name: elastic-agent - - # Configure log file size limit. If limit is reached, log file will be - # automatically rotated - #rotateeverybytes: 20971520 # = 20MB - - # Number of rotated log files to keep. Oldest files will be deleted first. - #keepfiles: 7 - - # The permissions mask to apply when rotating log files. The default value is 0600. - # Must be a valid Unix-style file permissions mask expressed in octal notation. - #permissions: 0600 - - # Enable log file rotation on time intervals in addition to size-based rotation. - # Intervals must be at least 1s. Values of 1m, 1h, 24h, 7*24h, 30*24h, and 365*24h - # are boundary-aligned with minutes, hours, days, weeks, months, and years as - # reported by the local system clock. All other intervals are calculated from the - # Unix epoch. Defaults to disabled. - #interval: 0 - - # Rotate existing logs on startup rather than appending to the existing - # file. Defaults to true. - # rotateonstartup: true - -# Set to true to log messages in JSON format. -#agent.logging.json: false - -#=============================== Events Logging =============================== -# Some outputs will log raw events on errors like indexing errors in the -# Elasticsearch output, to prevent logging raw events (that may contain -# sensitive information) together with other log messages, a different -# log file, only for log entries containing raw events, is used. It will -# use the same level, selectors and all other configurations from the -# default logger, but it will have it's own file configuration. -# -# Having a different log file for raw events also prevents event data -# from drowning out the regular log files. -# -# IMPORTANT: No matter the default logger output configuration, raw events -# will **always** be logged to a file configured by `agent.logging.event_data.files`. - -# agent.logging.event_data: -# Logging to rotating files. Set agent.logging.to_files to false to disable logging to -# files. -#agent.logging.event_data.to_files: true -#agent.logging.event_data: - # Configure the path where the logs are written. The default is the logs directory - # under the home path (the binary location). - #path: /var/log/filebeat - - # The name of the files where the logs are written to. - #name: filebeat-event-data - - # Configure log file size limit. If the limit is reached, log file will be - # automatically rotated. - #rotateeverybytes: 5242880 # = 5MB - - # Number of rotated log files to keep. The oldest files will be deleted first. - #keepfiles: 2 - - # The permissions mask to apply when rotating log files. The default value is 0600. - # Must be a valid Unix-style file permissions mask expressed in octal notation. - #permissions: 0600 - - # Enable log file rotation on time intervals in addition to the size-based rotation. - # Intervals must be at least 1s. Values of 1m, 1h, 24h, 7*24h, 30*24h, and 365*24h - # are boundary-aligned with minutes, hours, days, weeks, months, and years as - # reported by the local system clock. All other intervals are calculated from the - # Unix epoch. Defaults to disabled. - #interval: 0 - - # Rotate existing logs on startup rather than appending them to the existing - # file. Defaults to false. - # rotateonstartup: false - -# Providers - -# Providers supply the key/values pairs that are used for variable substitution -# and conditionals. Each provider's keys are automatically prefixed with the name -# of the provider. - -# All registered providers are enabled by default. - -# Disable all providers by default and only enable explicitly configured providers. -# agent.providers.initial_default: false - -#providers: - -# Agent provides information about the running agent. -# agent: -# enabled: true - -# Docker provides inventory information from Docker. -# docker: -# enabled: true -# host: "unix:///var/run/docker.sock" -# cleanup_timeout: 60 - -# Env providers information about the running environment. -# env: -# enabled: true - -# Host provides information about the current host. -# host: -# enabled: true - -# Local provides custom keys to use as variable. -# local: -# enabled: true -# vars: -# foo: bar - -# Local dynamic allows you to define multiple key/values to generate multiple configurations. -# local_dynamic: -# enabled: true -# items: -# - vars: -# my_var: key1 -# - vars: -# my_var: key2 -# - vars: -# my_var: key3 diff --git a/docs/en/ingest-management/elastic-agent/configuring-kubernetes-metadata.asciidoc b/docs/en/ingest-management/elastic-agent/configuring-kubernetes-metadata.asciidoc deleted file mode 100644 index 8aeccdf85..000000000 --- a/docs/en/ingest-management/elastic-agent/configuring-kubernetes-metadata.asciidoc +++ /dev/null @@ -1,119 +0,0 @@ -[[configuring-kubernetes-metadata]] -= Configuring Kubernetes metadata enrichment on {agent} - -Kubernetes https://www.elastic.co/guide/en/observability/current/monitor-kubernetes.html#beats-metadata[metadata] refer to contextual information extracted from Kubernetes resources. Metadata information enrich metrics and logs -collected from a Kubernetes cluster, enabling deeper insights into Kubernetes environments. - -When the {agent}'s policy includes the https://docs.elastic.co/en/integrations/kubernetes[{k8s} Integration] which configures the collection of Kubernetes related metrics and container logs, the mechanisms used for the metadata enrichment are: - -* <> for log collection -* Kubernetes metadata enrichers for metrics - -In case the {agent}'s policy does not include the Kubernetes integration, but {agent} runs inside a Kubernetes -environment, the Kubernetes metadata are collected by the <>. The processor is configurable when {agent} is managed by {fleet}. - - -[discrete] -== Kubernetes Logs - -When it comes to container logs collection, the <> is used. It monitors for pod resources -in the cluster and associates each container log file with a corresponding pod's container object. -That way, when a log file is parsed and an event is ready to be published to {es}, the internal mechanism knows to which actual -container this log file belongs. The linkage is established by the container's ID, which forms an integral part of the filename for the log. -The Kubernetes autodiscover provider has already collected all the metadata for that container, leveraging pod, namespace and node watchers. Thus, the events are enriched with the relevant metadata. - -In order to configure the metadata collection, the Kubernetes provider needs to be configured. -All the available configuration options of the **Kubernetes provider** can be found in the https://www.elastic.co/guide/en/fleet/current/kubernetes-provider.html[Kubernetes Provider] documentation. - -* For **Standalone {agent} configuration:** - -Follow information of `add_resource_metadata` parameter of <> - -[source,yaml] -.Example of how to configure kubernetes metadata enrichment ------------------------------------------------- -apiVersion: v1 -kind: ConfigMap -metadata: - name: agent-node-datastreams - namespace: kube-system - labels: - k8s-app: elastic-agent -data: - agent.yml: |- - kubernetes.provider - add_resource_metadata: - namespace: - #use_regex_include: false - include_labels: ["namespacelabel1"] - #use_regex_exclude: false - #exclude_labels: ["namespacelabel2"] - node: - #use_regex_include: false - include_labels: ["nodelabel2"] - include_annotations: ["nodeannotation1"] - #use_regex_exclude: false - #exclude_labels: ["nodelabel3"] - #deployment: false - #cronjob: false ------------------------------------------------- - -* **Managed {agent} configuration**: - -The Kubernetes provider can be configured following the steps in <>. - -[discrete] -== Kubernetes metrics - -The {agent} metrics collection implements metadata enrichment based on watchers, a mechanism used to continuously monitor Kubernetes resources for changes and updates. -Specifically, the different datasets share a set of resource watchers. Those watchers (pod, node, namespace, deployment, daemonset etc.) are responsible for watching for all different resource events (creation, update and deletion) by subscribing to the Kubernetes watch API. This enables real-time synchronization of application state with the state of the Kubernetes cluster. -So, they keep an up-to-date shared cache store of all the resources' information and metadata. Whenever metrics are collected by the different sources (kubelet, kube-state-metrics), before they get published to {es} as events, they are enriched with needed metadata. - -The metadata enrichment can be configured by editing the Kubernetes integration. -**Only in metrics collection**, metadata enrichment can be disabled by switching off the `Add Metadata` toggle in every dataset. Extra resource metadata such as -node, namespace labels and annotations, as well as deployment and cronjob information can be configured per dataset. - -- **Managed {agent} configuration**: - -image::images/kubernetes_metadata.png[metadata configuration] - -NOTE: add_resource_metadata block needs to be configured to all datasets that are enabled - - -- For **Standalone {agent} configuration**: - -[source,yaml] -.Elastic Agent Standalone manifest sample ------------------------------------------------- -[output trunctated ...] -- data_stream: - dataset: kubernetes.state_pod - type: metrics - metricsets: - - state_pod - add_metadata: true - hosts: - - 'kube-state-metrics:8080' - period: 10s - add_resource_metadata: - namespace: - enabled: true - #use_regex_include: false - include_labels: ["namespacelabel1"] - #use_regex_exclude: false - #exclude_labels: ["namespacelabel2"] - node: - enabled: true - #use_regex_include: false - include_labels: ["nodelabel2"] - include_annotations: ["nodeannotation1"] - #use_regex_exclude: false - #exclude_labels: ["nodelabel3"] - #deployment: false - #cronjob: false ------------------------------------------------- -The `add_resource_metadata` block configures the watcher's enrichment functionality. See <> for full description of add_resource_metadata. Same configuration parameters apply. - -[discrete] -== Note -Although the `add_kubernetes_metadata` processor is by default enabled when using elastic-agent, it is skipped whenever Kubernetes integration is detected. \ No newline at end of file diff --git a/docs/en/ingest-management/elastic-agent/debug-standalone-elastic-agent.asciidoc b/docs/en/ingest-management/elastic-agent/debug-standalone-elastic-agent.asciidoc deleted file mode 100644 index 4882ddbe1..000000000 --- a/docs/en/ingest-management/elastic-agent/debug-standalone-elastic-agent.asciidoc +++ /dev/null @@ -1,220 +0,0 @@ -[[debug-standalone-agents]] -= Debug standalone {agent}s - -When you run standalone {agent}s, you are responsible for monitoring the status -of your deployed {agent}s. You cannot view the status or logs in {fleet}. - -Use the following tips to help identify potential issues. - -Also refer to <> for guidance on specific problems. - -NOTE: You might need to log in as a root user (or Administrator on Windows) to -run these commands. - -[discrete] -== Check the status of the running {agent} - -To check the status of the running {agent} daemon and other processes managed by -{agent}, run the `status` command. For example: - -[source,shell] ----- -elastic-agent status ----- - -Returns something like: - -[source,yaml] ----- -State: HEALTHY -Message: Running -Fleet State: STOPPED -Fleet Message: (no message) -Components: - * log (HEALTHY) - Healthy: communicating with pid '25423' - * filestream (HEALTHY) - Healthy: communicating with pid '25424' ----- - -By default, this command returns the status in human-readable format. Use the -`--output` flag to change it to `json` or `yaml`. - -For more information about this command, refer to -<>. - -[discrete] -[[inspect-standalone-agent-logs]] -== Inspect {agent} and related logs - -If the {agent} status is unhealthy, or behaving unexpectedly, inspect the logs -of the running {agent}. - -The log location varies by platform. {agent} logs are in the folders described -in <>. {beats} and {fleet-server} logs are in folders named -for the output (for example, `default`). - -Start by investigating any errors you see in the {agent} and related logs. Also -look for repeated lines that might indicate problems like connection issues. If -the {agent} and related logs look clean, check the host operating system logs -for out of memory (OOM) errors related to the {agent} or any of its processes. - -[discrete] -[[increase-log-level]] -== Increase the log level of the running {agent} - -The log level of the running agent is set to `info` by default. At this level, -{agent} will log informational messages, including the number of events that are -published. It also logs any warnings, errors, or critical errors. - -To increase the log level, set it to `debug` in the `elastic-agent.yml` file. - -The `debug` setting configures {agent} to log debug messages, including a -detailed printout of all flushed events, plus all the information collected at -other log levels. - -Set other options if you want write logs to a file. For example: - -[source,yaml] ----- -agent.logging.level: debug -agent.logging.to_files: true -agent.logging.files: - path: /var/log/elastic-agent - name: elastic-agent - keepfiles: 7 - permissions: 0600 ----- - -For other log settings, refer to <>. - -[discrete] -[[expose-debug-endpoint]] -// lint ignore pprof -== Expose /debug/pprof/ endpoints with the monitoring endpoint - -Profiling data produced by the `/debug/pprof/` endpoints can be useful for -debugging, but presents a security risk. Do not expose these endpoints if the -monitoring endpoint is accessible over a network. (By default, the monitoring -endpoint is bound to a local Unix socket or Windows npipe and not accessible -over a network.) - -To expose the `/debug/pprof/` endpoints, set `agent.monitoring.pprof: true` in -the `elastic-agent.yml` file. For more information about monitoring settings, -refer to <>. - -After exposing the endpoints, you can access the HTTP handler bound to a socket -for {beats} or the {agent}. For example: - -[source,shell] ----- -sudo curl --unix-socket /Library/Elastic/Agent/data/tmp/default/filebeat/filebeat.sock http://socket/ | json_pp ----- - -Returns something like: - -[source,json] ----- -{ - "beat" : "filebeat", - "binary_arch" : "amd64", - "build_commit" : "93708bd74e909e57ed5d9bea3cf2065f4cc43af3", - "build_time" : "2022-01-28T09:53:29.000Z", - "elastic_licensed" : true, - "ephemeral_id" : "421e2525-9360-41db-9395-b9e627fbbe6e", - "gid" : "0", - "hostname" : "My-MacBook-Pro.local", - "name" : "My-MacBook-Pro.local", - "uid" : "0", - "username" : "root", - "uuid" : "fc0cc98b-b6d8-4eef-abf5-2d5f26adc7e8", - "version" : "7.17.0" -} ----- - -Likewise, the following request: - -[source,shell] ----- -sudo curl --unix-socket /Library/Elastic/Agent/data/tmp/elastic-agent.sock http://socket/stats | json_pp ----- - -Returns something like: - -[source,shell] ----- -{ - "beat" : { - "cpu" : { - "system" : { - "ticks" : 16272, - "time" : { - "ms" : 16273 - } - }, - "total" : { - "ticks" : 42981, - "time" : { - "ms" : 42982 - }, - "value" : 42981 - }, - "user" : { - "ticks" : 26709, - "time" : { - "ms" : 26709 - } - } - }, - "info" : { - "ephemeral_id" : "ea8fec0d-f7dd-4577-85d7-a2c38583c9c6", - "uptime" : { - "ms" : 5885653 - }, - "version" : "7.17.0" - }, - "memstats" : { - "gc_next" : 13027776, - "memory_alloc" : 7771632, - "memory_sys" : 39666696, - "memory_total" : 757970208, - "rss" : 58990592 - }, - "runtime" : { - "goroutines" : 101 - } - }, - "system" : { - "cpu" : { - "cores" : 12 - }, - "load" : { - "1" : 4.8892, - "15" : 2.6748, - "5" : 3.0537, - "norm" : { - "1" : 0.4074, - "15" : 0.2229, - "5" : 0.2545 - } - } - } -} ----- - -[discrete] -[[inspect-configuration]] -== Inspect the {agent} configuration - -To inspect the running {agent} configuration use the <> command. - -To analyze the current state of the agent, inspect log files, and see the configuration -of {agent} and the sub-processes it starts, run the `diagnostics` command. For example: - -[source,shell] ----- -elastic-agent diagnostics ----- - -For more information about this command, refer to -<>. diff --git a/docs/en/ingest-management/elastic-agent/elastic-agent-capabilities.asciidoc b/docs/en/ingest-management/elastic-agent/elastic-agent-capabilities.asciidoc deleted file mode 100644 index 206a78965..000000000 --- a/docs/en/ingest-management/elastic-agent/elastic-agent-capabilities.asciidoc +++ /dev/null @@ -1,170 +0,0 @@ -[discrete] -[[capabilities]] -== Capabilities - -Capabilities are a set of rules that can define the behavior of {agent} on specific machines. -When capabilities are specified, the input configuration is overridden, and any details that are not used are subject to the capabilities' definition. -When {agent} starts, it locates the `capabilities.yml` file next to its configuration file. Please note, {agent} will not reload the definition after it starts. - -This example definition configuration enables the system/metrics input and denies every other input. Rules are applied in the order they are defined, with the first matching rule being applied. The * wildcard is also supported. - -[source,yaml] ----- -version: 0.0.1 -capabilities: -- rule: allow - input: system/metrics -- rule: deny - input: "*" ----- - - -Let's use the following configuration and the capabilities defined above. - -[source,yaml] ----- -inputs: - - id: unique-logfile-id - type: logfile - streams: - - paths: []{a.error,b.access} - - id: unique-system-logs-id - type: system/logs - streams: - - paths: []{a,b} - - id: unique-system-metrics-id - type: system/metrics - streams: - - metricset: cpu - - metricset: memory ----- - -The resulting configuration is this. - -[source,yaml] ----- -inputs: - - id: unique-system-metrics-id - type: system/metrics - streams: - - metricset: cpu - - metricset: memory ----- - - - -In this example, the stream is applied if the host platform is not Windows: - -[source,yaml] ----- -inputs: - - id: unique-system-metrics-id - type: system/metrics - streams: - - metricset: load - data_stream.dataset: system.cpu - condition: ${host.platform} != 'windows' ----- - -In this example, the processor is applied if the host platform is not Windows: - -[source,yaml] ----- -inputs: - - id: unique-system-metrics-id - type: system/metrics - streams: - - metricset: load - data_stream.dataset: system.cpu - processors: - - add_fields: - fields: - platform: ${host.platform} - to: host - condition: ${host.platform} != 'windows' ----- - -[discrete] -[[supported-capabilities]] -=== Supported capabilities - -You can use capabilities to modify the congestion of outputs, inputs or upgrade the capability of {agent}. - -[discrete] -[[capabilities-inputs]] -==== Inputs - -For inputs, you can the `input` key containing an expression. - -[source,yaml] ----- -version: 0.0.1 -capabilities: -- rule: allow - input: system/* ----- - -[discrete] -[[capabilities-outputs]] -==== Outputs - -For outputs, you can use the `output` key containing an expression. - -[source,yaml] ----- -version: 0.0.1 -capabilities: -- rule: deny - output: kafka ----- - -[discrete] -[[capabilities-upgrade]] -==== Upgrade - -For an upgrade, you can use the `output` key containing an expression that allows a specific upgrade to version `8.0.0`. `${version}` is the target version. - -[source,yaml] ----- -version: 0.0.1 -capabilities: -- rule: allow - upgrade: "${version} == '8.0.0'" ----- - -With a versioned EQL, conditions can be used, as well as a * wildcard. This allows upgrades just for bug fixes. - -[source,yaml] ----- -version: 0.0.1 -capabilities: -- rule: allow - upgrade: "${version} == '8.0.*'" ----- - -**Upgrade capability definition** - -This upgrade definition allows upgrades just for minor version changes. - -[source,yaml] ----- -version: 0.0.1 -capabilities: -- rule: allow - upgrade: "${version} == '8.*.*'" ----- - -Part of the upgrade action is also a `source_uri` address that specifies the repository from where artifacts should be -downloaded. - -To restrict to HTTPS, you can use the following. - -[source,yaml] ----- -version: 0.0.1 -capabilities: -- rule: allow - upgrade: "startsWith(${source_uri}, 'https')" ----- - -Upgrade capability is blocking. This means that if an action does not meet the first upgrade definition, we’re not proceeding with the evaluation. diff --git a/docs/en/ingest-management/elastic-agent/elastic-agent-conditions.asciidoc b/docs/en/ingest-management/elastic-agent/elastic-agent-conditions.asciidoc deleted file mode 100644 index cf6dbc832..000000000 --- a/docs/en/ingest-management/elastic-agent/elastic-agent-conditions.asciidoc +++ /dev/null @@ -1,108 +0,0 @@ -[discrete] -[[conditions]] -= Conditions - -A condition is a boolean expression that you can specify in your agent policy -to control whether a configuration is applied to the running {agent}. You can -set a condition on inputs, streams, or even processors. - -In this example, the input is applied if the host platform is Linux: - -[source,yaml] ----- -inputs: - - id: unique-logfile-id - type: logfile - streams: - - paths: - - /var/log/syslog - condition: ${host.platform} == 'linux' ----- - -In this example, the stream is applied if the host platform is not Windows: - -[source,yaml] ----- -inputs: - - id: unique-system-metrics-id - type: system/metrics - streams: - - metricset: load - data_stream.dataset: system.cpu - condition: ${host.platform} != 'windows' ----- - -In this example, the processor is applied if the host platform is not Windows: - -[source,yaml] ----- -inputs: - - id: unique-system-metrics-id - type: system/metrics - streams: - - metricset: load - data_stream.dataset: system.cpu - processors: - - add_fields: - fields: - platform: ${host.platform} - to: host - condition: ${host.platform} != 'windows' ----- - -[discrete] -[[condition-syntax]] -== Condition syntax - -The conditions supported by {agent} are based on {ref}/eql-syntax.html[EQL]'s -boolean syntax, but add support for variables from providers and functions to -manipulate the values. - -**Supported operators:** - -* Full PEMDAS math support for `+ - * / %`. -* Relational operators `< <= >= > == !=` -* Logical operators `and` and `or` - - -**Functions:** - -// lint ignore startswith-function indexof-function endswith-function concat-function -* Array functions <> -* Dict functions <> (not in EQL) -* Length functions <> -* Math functions <>, <>, -<>, <>, <> -* String functions <>, <>, -<>, <>, <>, -<>, <>, -<> - -**Types:** - -* Booleans `true` and `false` - -[discrete] -[[condition-examples]] -== Condition examples - -Run only when a specific label is included. - -[source,eql] ----- -arrayContains(${docker.labels}, 'monitor') ----- - -Skip on Linux platform or macOS. - -[source,eql] ----- -${host.platform} != "linux" and ${host.platform} != "darwin" ----- - -Run only for specific labels. - -[source,eql] ----- -arrayContains(${docker.labels}, 'monitor') or arrayContains(${docker.label}, 'production') ----- diff --git a/docs/en/ingest-management/elastic-agent/elastic-agent-container.asciidoc b/docs/en/ingest-management/elastic-agent/elastic-agent-container.asciidoc deleted file mode 100644 index 8d7a45b66..000000000 --- a/docs/en/ingest-management/elastic-agent/elastic-agent-container.asciidoc +++ /dev/null @@ -1,425 +0,0 @@ -[[elastic-agent-container]] -= Run {agent} in a container - -You can run {agent} inside a container -- either with {fleet-server} or standalone. Docker images for all versions of {agent} are available from the https://www.docker.elastic.co/r/elastic-agent/elastic-agent[Elastic Docker registry]. If you are running in Kubernetes, refer to {eck-ref}/k8s-elastic-agent.html[run {agent} on ECK]. - -Note that running {elastic-agent} in a container is supported only in Linux environments. For this reason we don't currently provide {agent} container images for Windows. - -Considerations: - -* When {agent} runs inside a container, it cannot be upgraded through {fleet} as it expects that the container itself is upgraded. -* Enrolling and running an {agent} is usually a two-step process. -However, this doesn't work in a container, so a special subcommand, `container`, is called. -This command allows environment variables to configure all properties, and runs the `enroll` and `run` commands as a single command. - -[discrete] -== What you need - -- https://docs.docker.com/get-docker/[Docker installed]. - -- {es} for storing and searching your data, and {kib} for visualizing and managing it. -+ --- -include::{observability-docs-root}/docs/en/shared/spin-up-the-stack/widget.asciidoc[] - --- - -[discrete] -== Step 1: Pull the image - -There are two images for {agent}, *elastic-agent* and *elastic-agent-complete*. The *elastic-agent* image contains all the binaries for running {beats}, while the *elastic-agent-complete* image contains these binaries plus additional dependencies to run browser monitors through Elastic Synthetics. Refer to {observability-guide}/uptime-set-up.html[Synthetic monitoring via {agent} and {fleet}] for more information. - -Run the `docker pull` command against the Elastic Docker registry: - -[source,terminal,subs="attributes"] ----- -docker pull docker.elastic.co/elastic-agent/elastic-agent:{version} ----- - -Alternately, you can use the hardened link:https://wolfi.dev/[Wolfi] image. -Using Wolfi images requires Docker version 20.10.10 or later. -For details about why the Wolfi images have been introduced, refer to our article -link:https://www.elastic.co/blog/reducing-cves-in-elastic-container-images[Reducing CVEs in Elastic container images]. - - -[source,terminal,subs="attributes"] ----- -docker pull docker.elastic.co/elastic-agent/elastic-agent-wolfi:{version} ----- - -If you want to run Synthetics tests, run the `docker pull` command to fetch the *elastic-agent-complete* image: - -[source,terminal,subs="attributes"] ----- -docker pull docker.elastic.co/elastic-agent/elastic-agent-complete:{version} ----- - -To run Synthetics tests using the hardened link:https://wolfi.dev/[Wolfi] image, run: - -[source,terminal,subs="attributes"] ----- -docker pull docker.elastic.co/elastic-agent/elastic-agent-complete-wolfi:{version} ----- - -[discrete] -== Step 2: Optional: Verify the image - -Although it's optional, we highly recommend verifying the signatures included with your downloaded Docker images to ensure that the images are valid. - -Elastic images are signed with https://docs.sigstore.dev/cosign/overview/[Cosign] which is part of the https://www.sigstore.dev/[Sigstore] project. Cosign supports container signing, verification, and storage in an OCI registry. Install the appropriate https://docs.sigstore.dev/cosign/installation/[Cosign application] -for your operating system. - -Run the following commands to verify the *elastic-agent* container image signature for {agent} v{version}: - -["source","sh",subs="attributes"] --------------------------------------------- -wget https://artifacts.elastic.co/cosign.pub <1> -cosign verify --key cosign.pub docker.elastic.co/elastic-agent/elastic-agent:{version} <2> --------------------------------------------- -<1> Download the Elastic public key to verify container signature -<2> Verify the container against the Elastic public key - -If you're using the *elastic-agent-complete* image, run the commands as follows: - -["source","sh",subs="attributes"] --------------------------------------------- -wget https://artifacts.elastic.co/cosign.pub <1> -cosign verify --key cosign.pub docker.elastic.co/elastic-agent/elastic-agent-complete:{version} <2> --------------------------------------------- - -The command prints the check results and the signature payload in JSON format, for example: - -["source","sh",subs="attributes"] --------------------------------------------- -Verification for docker.elastic.co/elastic-agent/elastic-agent-complete:{version} -- -The following checks were performed on each of these signatures: - - The cosign claims were validated - - Existence of the claims in the transparency log was verified offline - - The signatures were verified against the specified public key --------------------------------------------- - -[discrete] -== Step 3: Get aware of the {agent} container command - - -The {agent} container command offers a wide variety of options. -To see the full list, run: - -[source,terminal,subs="attributes"] ----- -docker run --rm docker.elastic.co/elastic-agent/elastic-agent:{version} elastic-agent container -h ----- - -[discrete] -== Step 4: Run the {agent} image - -include::{ingest-docs-root}/docs/en/ingest-management/tab-widgets/run-agent-image/widget.asciidoc[] - -If you need to run {fleet-server} as well, adjust the `docker run` command above by adding these environment variables: - -[source,yaml] ----- - --env FLEET_SERVER_ENABLE=true \ <1> - --env FLEET_SERVER_ELASTICSEARCH_HOST= \ <2> - --env FLEET_SERVER_SERVICE_TOKEN= <3> ----- -<1> Set to `true` to bootstrap {fleet-server} on this {agent}. This automatically forces {fleet} enrollment as well. -<2> The Elasticsearch host for Fleet Server to communicate with, for example `http://elasticsearch:9200`. -<3> Service token to use for communication with {es} and {kib}. - -[TIP] -.Running {agent} on a read-only file system -==== -If you'd like to run {agent} in a Docker container on a read-only file -system, you can do so by specifying the `--read-only` option. -{agent} requires a stateful directory to store application data, so -with the `--read-only` option you also need to use the `--mount` option to -specify a path to where that data can be stored. - -For example: - -[source,terminal,subs="attributes"] ----- -docker run --rm --mount source=$(pwd)/state,destination=/state -e {STATE_PATH}=/state --read-only docker.elastic.co/elastic-agent/elastic-agent:{version} <1> ----- - -Where {STATE_PATH} is the path to a stateful directory to mount where {agent} application data can be stored. - -You can also add `type=tmpfs` to the mount parameter (`--mount type=tmpfs,destination=/state...`) to specify a temporary file storage location. This should be done with caution as it can cause data duplication, particularly for logs, when the container is restarted, as no state data is persisted. -==== - -[discrete] -== Step 5: View your data in {kib} - - -include::run-container-common/kibana-fleet-data.asciidoc[] - -[discrete] -== Docker compose - -You can run {agent} in docker-compose. -The example below shows how to enroll an {agent}: - -["source","yaml",subs="attributes"] ----- -version: "3" -services: - elastic-agent: - image: docker.elastic.co/elastic-agent/elastic-agent:{version} <1> - container_name: elastic-agent - restart: always - user: root # note, synthetic browser monitors require this set to `elastic-agent` - environment: - - FLEET_ENROLLMENT_TOKEN= - - FLEET_ENROLL=1 - - FLEET_URL= ----- -//NOTCONSOLE -<1> Switch `elastic-agent` to `elastic-agent-complete` if you intend to use the complete version. Use the `elastic-agent` user instead of root to run Synthetics Browser tests. Synthetic tests cannot run under the root user. Refer to {observability-guide}/uptime-set-up.html[Synthetics {fleet} Quickstart] for more information. - -If you need to run {fleet-server} as well, adjust the docker-compose file above by adding these environment variables: - -[source,yaml] ----- - - FLEET_SERVER_ENABLE=true - - FLEET_SERVER_ELASTICSEARCH_HOST= - - FLEET_SERVER_SERVICE_TOKEN= ----- - -Refer to <> for all available options. - -[discrete] -== Logs - - -Since a container supports only a single version of {agent}, -logs and state are stored a bit differently than when running an {agent} outside of a container. The logs can be found under: `/usr/share/elastic-agent/state/data/logs/*`. - -It's important to note that only the logs from the {agent} process itself are logged to `stdout`. Subprocess logs are not. Each subprocess writes its own logs to the `default` directory inside the logs directory: - -[source,terminal] ----- -/usr/share/elastic-agent/state/data/logs/default/* ----- - -TIP: Running into errors with {fleet-server}? -Check the fleet-server subprocess logs for more information. - -[discrete] -== Debugging - - -A monitoring endpoint can be enabled to expose resource usage and event processing data. The endpoint is compatible with {agent}s running in both {fleet} mode and Standalone mode. - -Enable the monitoring endpoint in `elastic-agent.yml` on the host where the {agent} is installed. -A sample configuration looks like this: - -[source,yaml] ----- -agent.monitoring: - enabled: true <1> - logs: true <2> - metrics: true <3> - http: - enabled: true <4> - host: localhost <5> - port: 6791 <6> ----- -<1> Enable monitoring of running processes. -<2> Enable log monitoring. -<3> Enable metrics monitoring. -<4> Expose {agent} metrics over HTTP. By default, sockets and named pipes are used. -<5> The hostname, IP address, Unix socket, or named pipe that the HTTP endpoint will bind to. When using IP addresses, we recommend only using `localhost`. -<6> The port that the HTTP endpoint will bind to. - -The above configuration exposes a monitoring endpoint at `http://localhost:6791/processes`. - -// Begin collapsed section -[%collapsible] -.`http://localhost:6791/processes` output -==== - -[source,json] ----- -{ - "processes":[ - { - "id":"metricbeat-default", - "pid":"36923", - "binary":"metricbeat", - "source":{ - "kind":"configured", - "outputs":[ - "default" - ] - } - }, - { - "id":"filebeat-default-monitoring", - "pid":"36924", - "binary":"filebeat", - "source":{ - "kind":"internal", - "outputs":[ - "default" - ] - } - }, - { - "id":"metricbeat-default-monitoring", - "pid":"36925", - "binary":"metricbeat", - "source":{ - "kind":"internal", - "outputs":[ - "default" - ] - } - } - ] -} ----- - -==== - -Each process ID in the `/processes` output can be accessed for more details. - -// Begin collapsed section -[%collapsible] -.`http://localhost:6791/processes/{process-name}` output -==== - -[source,json] ----- -{ - "beat":{ - "cpu":{ - "system":{ - "ticks":537, - "time":{ - "ms":537 - } - }, - "total":{ - "ticks":795, - "time":{ - "ms":796 - }, - "value":795 - }, - "user":{ - "ticks":258, - "time":{ - "ms":259 - } - } - }, - "info":{ - "ephemeral_id":"eb7e8025-7496-403f-9f9a-42b20439c737", - "uptime":{ - "ms":75332 - }, - "version":"7.14.0" - }, - "memstats":{ - "gc_next":23920624, - "memory_alloc":20046048, - "memory_sys":76104712, - "memory_total":60823368, - "rss":83165184 - }, - "runtime":{ - "goroutines":58 - } - }, - "libbeat":{ - "config":{ - "module":{ - "running":4, - "starts":4, - "stops":0 - }, - "reloads":1, - "scans":1 - }, - "output":{ - "events":{ - "acked":0, - "active":0, - "batches":0, - "dropped":0, - "duplicates":0, - "failed":0, - "toomany":0, - "total":0 - }, - "read":{ - "bytes":0, - "errors":0 - }, - "type":"elasticsearch", - "write":{ - "bytes":0, - "errors":0 - } - }, - "pipeline":{ - "clients":4, - "events":{ - "active":231, - "dropped":0, - "failed":0, - "filtered":0, - "published":231, - "retry":112, - "total":231 - }, - "queue":{ - "acked":0, - "max_events":4096 - } - } - }, - "metricbeat":{ - "system":{ - "cpu":{ - "events":8, - "failures":0, - "success":8 - }, - "filesystem":{ - "events":80, - "failures":0, - "success":80 - }, - "memory":{ - "events":8, - "failures":0, - "success":8 - }, - "network":{ - "events":135, - "failures":0, - "success":135 - } - } - }, - "system":{ - "cpu":{ - "cores":8 - }, - "load":{ - "1":2.5957, - "15":5.415, - "5":3.5815, - "norm":{ - "1":0.3245, - "15":0.6769, - "5":0.4477 - } - } - } -} ----- - -==== \ No newline at end of file diff --git a/docs/en/ingest-management/elastic-agent/elastic-agent-debug-input-configs.asciidoc b/docs/en/ingest-management/elastic-agent/elastic-agent-debug-input-configs.asciidoc deleted file mode 100644 index f9211d506..000000000 --- a/docs/en/ingest-management/elastic-agent/elastic-agent-debug-input-configs.asciidoc +++ /dev/null @@ -1,130 +0,0 @@ -[discrete] -[[debug-configs]] -== Debugging - -To debug configurations that include variable substitution and conditions, use -the `inspect` command. This command shows the configuration that's generated -after variables are replaced and conditions are applied. - -First run the {agent}. For this example, we'll use the following agent policy: - - -[source,yaml] ----- -outputs: - default: - type: elasticsearch - hosts: [127.0.0.1:9200] - apikey: - -providers: - local_dynamic: - items: - - vars: - key: value1 - processors: - - add_fields: - fields: - custom: match1 - target: dynamic - - vars: - key: value2 - processors: - - add_fields: - fields: - custom: match2 - target: dynamic - - vars: - key: value3 - processors: - - add_fields: - fields: - custom: match3 - target: dynamic - -inputs: - - id: unique-logfile-id - type: logfile - enabled: true - streams: - - paths: - - /var/log/${local_dynamic.key} ----- - -Then run `elastic-agent inspect --variables` to see the generated configuration. For -example: - -// lint disable elasticsearch changeme -[source,shell] ----- -$ ./elastic-agent inspect --variables -inputs: -- enabled: true - id: unique-logfile-id-local_dynamic-0 - original_id: unique-logfile-id - processors: - - add_fields: - fields: - custom: match1 - target: dynamic - streams: - - paths: - - /var/log/value1 - type: logfile -- enabled: true - id: unique-logfile-id-local_dynamic-1 - original_id: unique-logfile-id - processors: - - add_fields: - fields: - custom: match2 - target: dynamic - streams: - - paths: - - /var/log/value2 - type: logfile -- enabled: true - id: unique-logfile-id-local_dynamic-2 - original_id: unique-logfile-id - processors: - - add_fields: - fields: - custom: match3 - target: dynamic - streams: - - paths: - - /var/log/value3 - type: logfile -outputs: - default: - apikey: - hosts: - - 127.0.0.1:9200 - type: elasticsearch -providers: - local_dynamic: - items: - - processors: - - add_fields: - fields: - custom: match1 - target: dynamic - vars: - key: value1 - - processors: - - add_fields: - fields: - custom: match2 - target: dynamic - vars: - key: value2 - - processors: - - add_fields: - fields: - custom: match3 - target: dynamic - vars: - key: value3 - ---- ----- diff --git a/docs/en/ingest-management/elastic-agent/elastic-agent-dynamic-inputs.asciidoc b/docs/en/ingest-management/elastic-agent/elastic-agent-dynamic-inputs.asciidoc deleted file mode 100644 index adcac2bb1..000000000 --- a/docs/en/ingest-management/elastic-agent/elastic-agent-dynamic-inputs.asciidoc +++ /dev/null @@ -1,62 +0,0 @@ -[[dynamic-input-configuration]] -= Variables and conditions in input configurations - -When running {agent} in some environments, you might not know all the input -configuration details up front. To solve this problem, the input configuration -accepts variables and conditions that get evaluated at runtime using -information from the running environment. Similar to autodiscovery, these -capabilities allow you to apply configurations dynamically. - -Let's consider a unique agent policy that is deployed on two machines: a Linux -machine named "linux-app" and a Windows machine named "winapp". Notice that -the configuration has some variable references: `${host.name}` and -`${host.platform}`: - -[source,yaml] ----- -inputs: - - id: unique-logfile-id - type: logfile - streams: - - paths: /var/log/${host.name}/another.log - condition: ${host.platform} == "linux" - - path: c:/service/app.log - condition: ${host.platform} == "windows" ----- - -At runtime, {agent} resolves variables and evaluates the conditions based -on values provided by the environment, generating two possible input -configurations. - -On the Windows machine: - -[source,yaml] ----- -inputs: - - id: unique-logfile-id - type: logfile - streams: - - path: c:/service/app.log ----- - -On the Linux machine: - -[source,yaml] ----- -inputs: - - id: unique-logfile-id - type: logfile - streams: - - paths: /var/log/linux-app/another.log ----- - -Using variable substitution along with conditions allows you to create concise, -but flexible input configurations that adapt to their deployed environment. - -include::elastic-agent-variable-substitution.asciidoc[] - -include::elastic-agent-conditions.asciidoc[] - -include::elastic-agent-functions.asciidoc[] - -include::elastic-agent-debug-input-configs.asciidoc[] diff --git a/docs/en/ingest-management/elastic-agent/elastic-agent-encryption.asciidoc b/docs/en/ingest-management/elastic-agent/elastic-agent-encryption.asciidoc deleted file mode 100644 index 71de18f99..000000000 --- a/docs/en/ingest-management/elastic-agent/elastic-agent-encryption.asciidoc +++ /dev/null @@ -1,29 +0,0 @@ -[elastic-agent-encryption] -= {agent} configuration encryption - -It is important for you to understand the {agent} security model and how it handles sensitive values in integration configurations. -At a high level, {agent} receives configuration data from {fleet-server} over an encrypted connection and persists the encrypted configuration on disk. -This persistence allows agents to continue to operate even if they are unable to connect to the {fleet-server}. - -The entire Fleet Agent Policy is encrypted at rest, but is recoverable if you have access to both the encrypted configuration data and the associated key. -The key material is stored in an OS-dependent manner as described in the following sections. - -[discrete] -== Darwin (macOS) - -Key material is stored in the system keychain. The value is stored as is without any additional transformations. - -[discrete] -== Windows - -Configuration data is encrypted with https://learn.microsoft.com/en-us/dotnet/standard/security/how-to-use-data-protection[DPAPI] `CryptProtectData` with `CRYPTPROTECT_LOCAL_MACHINE``. -Additional entropy is derived from crypto/rand bytes stored in the `.seed` file. -Configuration data is stored as separate files, where the name of the file is a SHA256 hash of the key, and the content of the file is encrypted with DPAPI data. -The security of key data relies on file system permissions. Only the Administrator should be able to access the file. - -[discrete] -== Linux - -The encryption key is derived from crypto/rand bytes stored in the `.seed` file after PBKDF2 transformation. -Configuration data is stored as separate files, where the name of the file is a SHA256 hash of the key, and the content of the file is AES256-GSM encrypted. -The security of the key material largely relies on file system permissions. \ No newline at end of file diff --git a/docs/en/ingest-management/elastic-agent/elastic-agent-functions.asciidoc b/docs/en/ingest-management/elastic-agent/elastic-agent-functions.asciidoc deleted file mode 100644 index c8ba65c90..000000000 --- a/docs/en/ingest-management/elastic-agent/elastic-agent-functions.asciidoc +++ /dev/null @@ -1,237 +0,0 @@ -[discrete] -[[condition-function-reference]] -== Function reference - - -The condition syntax supports the following functions. - -[discrete] -[[add-function]] -=== `add` -`add(Number, Number) Number` - -Usage: - -[source,eql] ----- -add(1, 2) == 3 -add(5, ${foo}) >= 5 ----- - -[discrete] -[[arrayContains-function]] -=== `arrayContains` - -`arrayContains(Array, String) Boolean` - -Usage: - -[source,eql] ----- -arrayContains(${docker.labels}, 'monitor') ----- - -[discrete] -[[concat-function]] -=== `concat` - -`concat(String, String) String` - -NOTE: Parameters are coerced into strings before the concatenation. - -Usage: - -[source,eql] ----- -concat("foo", "bar") == "foobar" -concat(${var1}, ${var2}) != "foobar" ----- - -[discrete] -[[divide-function]] -=== `divide` - -`divide(Number, Number) Number` - -Usage: - -[source,eql] ----- -divide(25, 5) > 0 -divide(${var1}, ${var2}) > 7 ----- - -[discrete] -[[endsWith-function]] -=== `endsWith` - -`endsWith(String, String) Boolean` - - -Usage: - -[source,eql] ----- -endsWith("hello world", "hello") == true -endsWith(${var1}, "hello") != true ----- - -[discrete] -[[hasKey-function]] -=== `hasKey` - -`hasKey(Dictionary, String) Boolean` - -Usage: - -[source,eql] ----- -hasKey(${host}, "platform") ----- - -[discrete] -[[indexOf-function]] -=== `indexOf` - -`indexOf(String, String, Number?) Number` - -NOTE: Returns -1 if the string is not found. - -Usage: - -[source,eql] ----- -indexOf("hello", "llo") == 2 -indexOf(${var1}, "hello") >= 0 ----- - -[discrete] -[[length-function]] -=== `length` - -`length(Array|Dictionary|string)` - -Usage: - -[source,eql] ----- -length("foobar") > 2 -length(${docker.labels}) > 0 -length(${host}) > 2 ----- - -[discrete] -[[match-function]] -=== `match` - -`match(String, Regexp) boolean` - -NOTE: `Regexp` supports Go's regular expression syntax. Conditions that use -regular expressions are more expensive to run. If speed is critical, consider -using `endWiths` or `startsWith`. - -Usage: - -[source,eql] ----- -match("hello world", "^hello") == true -match(${var1}, "world$") == true ----- - -[discrete] -[[modulo-function]] -=== `modulo` - -`modulo(number, number) Number` - -Usage: - -[source,eql] ----- -modulo(25, 5) > 0 -modulo(${var1}, ${var2}) == 0 ----- - -[discrete] -[[multiply-function]] -=== `multiply` - -`multiply(Number, Number) Number` - -Usage: - -[source,eql] ----- -multiply(5, 5) == 25 -multiple(${var1}, ${var2}) > x ----- - -[discrete] -[[number-function]] -=== `number` - -`number(String) Integer` - -Usage: - -[source,eql] ----- -number("42") == 42 -number(${var1}) == 42 ----- - -[discrete] -[[startsWith-function]] -=== `startsWith` - -`startsWith(String, String) Boolean` - -Usage: - -[source,eql] ----- -startsWith("hello world", "hello") == true -startsWith(${var1}, "hello") != true ----- - -[discrete] -[[string-function]] -=== `string` - -`string(Number) String` - -Usage: - -[source,eql] ----- -string(42) == "42" -string(${var1}) == "42" ----- - -[discrete] -[[stringContains-function]] -=== `stringContains` - -`stringContains(String, String) Boolean` - -Usage: - -[source,eql] ----- -stringContains("hello world", "hello") == true -stringContains(${var1}, "hello") != true ----- - -[discrete] -[[subtract-function]] -=== `subtract` - -`subtract(Number, Number) Number` - -Usage: - -[source,eql] ----- -subtract(5, 1) == 4 -subtract(${foo}, 2) != 2 ----- diff --git a/docs/en/ingest-management/elastic-agent/elastic-agent-unprivileged-mode.asciidoc b/docs/en/ingest-management/elastic-agent/elastic-agent-unprivileged-mode.asciidoc deleted file mode 100644 index f4ebb351b..000000000 --- a/docs/en/ingest-management/elastic-agent/elastic-agent-unprivileged-mode.asciidoc +++ /dev/null @@ -1,268 +0,0 @@ -[[elastic-agent-unprivileged]] -= Run {agent} without administrative privileges - -Beginning with {stack} version 8.15, {agent} is no longer required to be run by a user with superuser privileges. You can now run agents in an `unprivileged` mode that does not require `root` access on Linux or macOS, or `admin` access on Windows. Being able to run agents without full administrative privileges is often a requirement in organizations where this kind of access is often very limited. - -In general, agents running without full administrative privileges will perform and behave exactly as those run by a superuser. There are certain integrations and datastreams that are not available, however. If an integration requires root access, this is <>. - -// Add mention of the System integration data streams. - -You can also <> of an {agent} after it has been installed. - -Refer to <> and <> for the requirements and steps associated with running an agent without full `root` or `admin` superuser privileges. - -* <> -* <> -* <> -* <> -* <> -* <> - -[discrete] -[[unprivileged-running]] -== Run {agent} in `unprivileged` mode - -To run {agent} without administrative privileges you use exactly the same commands that you use for {agent} otherwise, with one exception. When you run the <> command, add the `--unprivileged` flag. For example: - -[source,shell] ----- -elastic-agent install \ - --url=https://cedd4e0e21e240b4s2bbbebdf1d6d52f.fleet.eu-west-1.aws.cld.elstc.co:443 \ - --enrollment-token=NEFmVllaa0JLRXhKebVKVTR5TTI6N2JaVlJpSGpScmV0ZUVnZVlRUExFQQ== \ - --unprivileged ----- - -[IMPORTANT] -==== -Note the following current restrictions for running {agent} in `unprivileged` mode: - -* On Linux systems, after {agent} has been installed with the `--unprivileged` flag, all {agent} commands can be run without being the root user. -** The `sudo` option is still required for the `elastic-agent install` command. -Only `root` can install new services. -The installed service will not run as the root user. -* Using `sudo` without specifying an alternate non-root user with `sudo -u` in a command may result in <> due to the agent not having the required privileges. -* Using `sudo -u elastic-agent-user` will run commands as the user running the {agent} service and will always work. -* For files that allow users in the `elastic-agent` group access, using an alternate user that has been added to that group will also work. -There are still some commands that are only accessible to the `elastic-agent-user` that runs the service. -** For example, `elastic-agent inspect` requires you to prefix the command with `sudo -u elastic-agent-user`. -+ -[source,shell] ----- -sudo -u elastic-agent-user elastic-agent inspect ----- -==== - -[discrete] -[[unprivileged-command-behaviors]] -== Agent and dashboard behaviors in unprivileged mode - -In addition to the <> when {agent} is run in unpriviledged mode, certain data streams are also not available. The following tables show, for different operating systems, the impact when the agent does not have full administrative privileges. In most cases the limitations can be mediated by granting permissions for a user or group to the files indicated. - -.macOS -[options,header] -|=== -|Action |Behavior in unprivileged mode |Resolution - -|Run {agent} with the System integration -|Log file error: `Unexpected file opening error: Failed opening /var/log/system.log: open /var/log/system.log: permission denied`. -|Give read permission to the `elastic-agent` group for the `/var/log/system.log` file to fix this error. - -|Run {agent} with the System integration -|On the `[Logs System] Syslog` dashboard, the `Syslog events by hostname`, `Syslog hostnames and processes` and `Syslog logs` visualizations are are missing data. -|Give read permission to the `elastic-agent` group for the `/var/log/system.log` file to fix the missing visualizations. - -|Run {agent} with the System integration -|On the `[Metrics System] Host overview` dashboard, only the processes run by the `elastic-agent-user` user are shown in the CPU and memory usage lists. -|To fix the missing processes in the visualization lists you can add add the `elastic-agent-user` user to the system `admin` group. Note that while this mitigates the issue, it also grants `elastic-agent user` with more permissions than may be desired. - -|Run {agent} and access the {agent} dashboards -|On the `[Elastic Agent] Agents info` dashboard, visualizations including `Most Active Agents` and `Integrations per Agent` are missing data. -|To fix the missing data in the visualizations you can add add the `elastic-agent-user` user to the system `admin` group. Note that while this mitigates the issue it also grants `elastic-agent user` with more permissions than may be desired. - -|Run {agent} and access the {agent} dashboards -|On the `[Elastic Agent] Integrations` dashboard, visualizations including `Integration Errors Table`, `Events per integration` and `Integration Errors` are missing data. -|To fix the missing data in the visualizations you can add add the `elastic-agent-user` user to the system `admin` group. Note that while this mitigates the issue it also grants `elastic-agent user` with more permissions than may be desired. - -|=== - -.Linux -[options,header] -|=== -|Action |Behavior in unprivileged mode |Resolution - -|Run {agent} with the System integration -|Log file error: `[elastic_agent.filebeat][error] Harvester could not be started on new file: /var/log/auth.log.1, Err: error setting up harvester: Harvester setup failed. Unexpected file opening error: Failed opening /var/log/auth.log.1: open /var/log/auth.log.1: permission denied` -|To avoid the error you can add add the `elastic-agent-user` user to the `adm` group. Note that while this mitigates the issue it also grants `elastic-agent user` with more permissions than may be desired. - -|Run {agent} with the System integration -|Log file error: `[elastic_agent.metricbeat][error] error getting filesystem usage for /run/user/1000/gvfs: error in Statfs syscall: permission denied` -|To avoid the error you can add add the `elastic-agent-user` user to the `adm` group. Note that while this mitigates the issue it also grants `elastic-agent user` with more permissions than may be desired. - -|Run {agent} with the System integration -|On the `[Logs System] Syslog` dashboard, the `Syslog events by hostname`, `Syslog hostnames and processes` and `Syslog logs` visualizations are are missing data. -|To fix the missing data in the visualizations you can add add the `elastic-agent-user` user to the `adm` group. Note that while this mitigates the issue it also grants `elastic-agent user` with more permissions than may be desired. - -|Run {agent} and access the {agent} dashboards -|On the `[Elastic Agent] Agents info` dashboard, visualizations including `Most Active Agents` and `Integrations per Agent` are missing data. -|Giving read permission to the `elastic-agent` group for the `/var/log/system.log` file will partially fix the visualizations, but errors may still occur because the `elastic-agent-user` does not have read access to files in the `/run/user/1000/` directory. -// It'd be nice if we can expand on this, even if just to say why that read access can't be given. - -|Run {agent} and access the {agent} dashboards -|On the `[Elastic Agent] Integrations` dashboard, visualizations including `Integration Errors Table`, `Events per integration` and `Integration Errors` are missing data. -|Give read permission to the `elastic-agent` group for the `/var/log/system.log` file to fix the missing visualizations. - -|=== - -.Windows -[options,header] -|=== -|Action |Behavior in unprivileged mode |Resolution - -|Run {agent} with the System integration -|Log file error: `failed to open Windows Event Log channel "Security": Access is denied` -|Add the `elastic-agent-user` user to the `Event Log Users` group to fix this error. - -|Run {agent} with the System integration -|Log file error: `cannot open new key in the registry in order to enable the performance counters: Access is denied` -|Update the permissions for the `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PartMgr` registry to fix this error. - -|Run {agent} with the System integration -|Most of the System and {agent} dashboard visualizations are missing all data. -|Add the `elastic-agent-user` user to the `Event Log Users` group and update the permissions for the `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PartMgr` registry to fix the missing visualizations. - -Note that the `elastic-agent-user` user may still not have access to all processes, so the lists in the `Top processes by CPU usage` and `Top processes by memory usage` visualizations may be incomplete. - -|Run {agent} with the System integration -|On the `[Metrics System] Host overview` dashboard, the `Disk usage` visualizations are missing data. -|This occurs because direct access to the disk or a volume is restricted and not available to users without administrative privileges. Refer to link:https://learn.microsoft.com/en-us/windows/win32/secbp/running-with-special-privileges[Running with Special Privileges] in the Microsoft documentation for details. - -|=== - -[discrete] -[[unprivileged-integrations]] -== Using Elastic integrations - -// Add mention of the System integration data streams. - -Most Elastic integrations support running {agent} in unprivileged mode. For the exceptions, any integration that requires {agent} to have root privileges has the requirement indicated at the top of the integration page in {kib}: - -[role="screenshot"] -image::images/integration-root-requirement.png[Elastic Defend integration page showing root requirement] - -As well, a warning is displayed in {kib} if you try to add an integration that requires root privileges to an {agent} policy that has agents enrolled in unprivileged mode. - -[role="screenshot"] -image::images/unprivileged-agent-warning.png[Warning indicating that root privileged agent is required for an integration] - -Examples of integrations that require {agent} to have administrative privileges are: - -* link:https://docs.elastic.co/en/integrations/endpoint[{elastic-defend}] -* link:https://docs.elastic.co/integrations/auditd_manager[Auditd Manager] -* link:https://docs.elastic.co/integrations/fim[File Integrity Monitoring] -* link:https://docs.elastic.co/integrations/network_traffic[Network Packet Capture] -* link:https://docs.elastic.co/integrations/system_audit[System Audit] -* link:https://docs.elastic.co/integrations/profiler_agent[Universal Profiling Agent] - -[discrete] -[[unprivileged-view-mode]] -== Viewing an {agent} privilege mode - -The **Agent details** page shows you the privilege mode for any running {agent}. - -To view the status of an {agent}: - -. In {fleet}, open the **Agents** tab. -. Select an agent and click **View agent** in the actions menu. -. The **Agent details** tab shows whether the agent is running in `privileged` or `unprivileged` mode. -+ -[role="screenshot"] -image::images/agent-privilege-mode.png[Agent details tab showing the agent is running as non-root] - -As well, for any {agent} policy you can view the number of agents that are currently running in privileged or unprivileged mode: - -. In {fleet}, open the **Agent policies** tab. - -. Click the agent policy to view the policy details. - -The number of agents enrolled with the policy is shown. Hover over the link to view the number of privileged and unpriviled agents. - -[role="screenshot"] -image::images/privileged-and-unprivileged-agents.png[Agent policy tab showing 1 unprivileged agent and 0 privileged enrolled agents] - -In the event that the {agent} policy has integrations installed that require root privileges, but there are agents running without root privileges, this is shown in the tooltip. - -[role="screenshot"] -image::images/root-integration-and-unprivileged-agents.png[Agent policy tab showing 1 unprivileged agent and 0 privileged enrolled agents] - -[discrete] -[[unprivileged-change-mode]] -== Changing an {agent}'s privilege mode - -For any installed {agent} you can change the mode that it's running in by running the `privileged` or `unprivileged` subcommand. - -Change mode from privileged to unprivileged: - -[source,shell] ----- -sudo elastic-agent unprivileged ----- - -Note that changing to `unprivileged` mode is prevented if the agent is currently enrolled in a policy that includes an integration that requires administrative access, such as the {elastic-defend} integration. - -Change mode from unprivileged to privileged: - -[source,shell] ----- -sudo elastic-agent privileged ----- - -When an agent is running in `unprivileged` mode, if it doesn't have the right level of privilege to read a data source, you can also adjust the agent's privileges by adding `elastic-agent-user` to the user group that has privileges to read the data source. - -As background, when you run {agent} in `unprivileged` mode, one user and one group are created on the host. The same names are used for all operating systems: - -* `elastic-agent-user`: The user that is created and that the {agent} service runs as. -* `elastic-agent`: The group that is created. Any user in this group has access to control and communicate over the control protocol to the {agent} daemon. - -For example: - -. When you install {agent} with the `--unprivileged` setting, the `elastic-agent-user` user and the `elastic-agent` group are created automatically. -. If you then want your user `myuser` to be able to run an {agent} command such as `elastic-agent status`, add the `myuser` user to the `elastic-agent` group. -. Then, once added to the group, the `elastic-agent status` command will work. Prior to that, the user `myuser` running the command will result in a permission error that indicates a problem communicating with the control socket. - -[discrete] -[[unprivileged-preexisting-user]] -== Using `unprivileged` mode with a pre-existing user and group - -preview::[] - -In certain cases you may want to install {agent} in `unprivileged` mode, with the agent running as a pre-existing user or as part of a pre-existing group. -For example, on a Windows system you may have a service account in Active Directory and you'd like {agent} to run under that account. - -To install {agent} in `unprivileged` mode as a specific user, add the `--user` and `--password` parameters to the install command: - -[source,shell] ----- -elastic-agent install --unprivileged --user="my.path\username" --password="mypassword" ----- - -To install {agent} in `unprivileged` mode as part of a specific group, add the `--group` and `--password` parameters to the install command: - -[source,shell] ----- -elastic-agent install --unprivileged --group="my.path\groupname" --password="mypassword" ----- - -Alternatively, if you have {agent} already installed with administrative privileges, you can change the agent to use `unprivileged` mode and to run as a specific user or in a specific group. -For example: - -[source,shell] ----- -elastic-agent unprivileged --user="my.path\username" --password="mypassword" ----- - -[source,shell] ----- -elastic-agent unprivileged --group="my.path\groupname" --password="mypassword" ----- - - diff --git a/docs/en/ingest-management/elastic-agent/elastic-agent-variable-substitution.asciidoc b/docs/en/ingest-management/elastic-agent/elastic-agent-variable-substitution.asciidoc deleted file mode 100644 index 0f0b6ee27..000000000 --- a/docs/en/ingest-management/elastic-agent/elastic-agent-variable-substitution.asciidoc +++ /dev/null @@ -1,139 +0,0 @@ -[discrete] -[[variable-substitution]] -= Variable substitution - -The syntax for variable substitution is `${var}`, where `var` is the name of a -variable defined by a provider. A _provider_ defines key/value pairs that are -used for variable substitution and conditions. - -{agent} supports a variety of providers, such as `host` and `local`, that -supply variables to {agent}. For example, earlier you saw `${host.name}` used to -resolve the path to the host's log file based on the `{host.platform}` value. Both of these values -were provided by the `host` provider. - -All providers are enabled by default when {agent} starts. If a provider cannot -be configured, its variables are ignored. - -Refer to <> for more detail. - -The following agent policy uses a custom key named `foo` to resolve a value -defined by a local provider: - -[source,yaml] ----- -inputs: - - id: unique-logfile-id - type: logfile - streams: - - paths: /var/log/${foo}/another.log - -providers: - local: - vars: - foo: bar - ----- - -The policy generated by this configuration looks like this: - -[source,yaml] ----- -inputs: - - id: unique-logfile-id - type: logfile - streams: - - paths: /var/log/bar/another.log ----- - -When an input uses a variable substitution that is not present in the current -key/value mappings being evaluated, the input is removed in the result. - -For example, this agent policy uses an unknown key: - -[source,yaml] ----- -inputs: - - id: logfile-foo - type: logfile - path: "/var/log/foo" - - id: logfile-unknown - type: logfile - path: "${ unknown.key }" ----- - - -The policy generated by this configuration looks like this: - -[source,yaml] ----- -inputs: - - id: logfile-foo - type: logfile - path: "/var/log/foo" ----- - -[discrete] -= Alternative variables and constants - -Variable substitution can also define alternative variables or a constant. - -To define a constant, use either `'` or `"`. When a constant is reached during -variable evaluation, any remaining variables are ignored, so a constant should -be the last entry in the substitution. - -To define alternatives, use `|` followed by the next variable or constant. -The power comes from allowing the input to define the preference order of the -substitution by chaining multiple variables together. - -For example, the following agent policy chains together multiple variables to -set the log path based on information provided by the running container -environment. The constant `/var/log/other` is used to end of the path, which is -common to both providers: - -[source,yaml] ----- -inputs: - - id: logfile-foo - type: logfile - path: "/var/log/foo" - - id: logfile-container - type: logfile - path: "${docker.paths.log|kubernetes.container.paths.log|'/var/log/other'}" ----- - -[discrete] -= Escaping variables - -In some cases the `${var}` syntax causes an issue with using a value where the actually -wanted variable is `${var}`. In this case double `$$` can be provided for the variable. - -The double `$$` causes the variable to be ignored and the extra `$` is removed from the beginning. - -For example, the following agent policy uses the escaped variable so the actual value is used instead. - -[source,yaml] ----- -inputs: - - id: logfile-foo - type: logfile - path: "/var/log/foo" - processors: - - add_tags: - tags: [$${development}] - target: "environment" ----- - - -The policy generated by this configuration looks like this: - -[source,yaml] ----- -inputs: - - id: logfile-foo - type: logfile - path: "/var/log/foo" - processors: - - add_tags: - tags: [${development}] - target: "environment" ----- diff --git a/docs/en/ingest-management/elastic-agent/example-kubernetes-fleet-managed-agent-helm.asciidoc b/docs/en/ingest-management/elastic-agent/example-kubernetes-fleet-managed-agent-helm.asciidoc deleted file mode 100644 index f7f78b9b3..000000000 --- a/docs/en/ingest-management/elastic-agent/example-kubernetes-fleet-managed-agent-helm.asciidoc +++ /dev/null @@ -1,152 +0,0 @@ -[[example-kubernetes-fleet-managed-agent-helm]] -= Example: Install {fleet}-managed {agent} on {k8s} using Helm - -preview::[] - -This example demonstrates how to install {fleet}-managed {agent} on a {k8s} system using a Helm chart, gather {k8s} metrics and send them to an {es} cluster in {ecloud}, and then view visualizations of those metrics in {kib}. - -For an overview of the {agent} Helm chart and its benefits, refer to <>. - -This guide takes you through these steps: - -* <> -* <> -* <> - - -[discrete] -[[agent-fleet-managed-helm-example-prereqs]] -=== Prerequisites - -To get started, you need: - -* A local install of the link:https://helm.sh/[Helm] {k8s} package manager. -* An link:{ess-trial}[{ecloud}] hosted {es} cluster on version 8.16 or higher. -* An active {k8s} cluster. -* A local clone of the link:https://github.com/elastic/elastic-agent/tree/8.16[elastic/elastic-agent] GitHub repository. Make sure to use the `8.16` branch to ensure that {agent} has full compatibility with the Helm chart. - -[discrete] -[[agent-fleet-managed-helm-example-install-agent]] -=== Install {agent} - -. Open your {ecloud} deployment, and from the navigation menu select **Fleet**. -. From the **Agents** tab, select **Add agent**. -. In the **Add agent** UI, specify a policy name and select **Create policy**. Leave the **Collect system logs and metrics** option selected. -. Scroll down in the **Add agent** flyout to the **Install Elastic Agent on your host** section. -. Select the **Linux TAR** tab and copy the values for `url` and `enrollment-token`. You'll use these when you run the `helm install` command. -. Open a terminal shell and change into a directory in your local clone of the `elastic-agent` repo. -. Copy this command. -+ -[source,sh] ----- -helm install demo ./deploy/helm/elastic-agent \ ---set agent.fleet.enabled=true \ ---set agent.fleet.url= \ ---set agent.fleet.token= \ ---set agent.fleet.preset=perNode ----- -+ -Note that the command has these properties: - -* `helm install` runs the Helm CLI install tool. -* `demo` gives a name to the installed chart. You can choose any name. -* `./deploy/helm/elastic-agent` is a local path to the Helm chart to install (in time it's planned to have a public URL for the chart). -* `--set agent.fleet.enabled=true` enables {fleet}-managed {agent}. The CLI parameter overrides the default `false` value for `agent.fleet.enabled` in the {agent} link:https://github.com/elastic/elastic-agent/blob/main/deploy/helm/elastic-agent/values.yaml[values.yaml] file. -* `--set agent.fleet.url=` sets the address where {agent} will connect to {fleet} in your {ecloud} deployment, over port 443 (again, overriding the value set by default in the {agent} link:https://github.com/elastic/elastic-agent/blob/main/deploy/helm/elastic-agent/values.yaml[values.yaml] file). -* `--set agent.fleet.token=` sets the enrollment token that {agent} uses to authenticate with {fleet}. -* `--set agent.fleet.preset=perNode` enables {k8s} metrics on `per node` basis. You can alternatively set cluster wide metrics (`clusterWide`) or kube-state-metrics (`ksmSharded`). -+ --- -TIP: For a full list of all available YAML settings and descriptions, refer to the link:https://github.com/elastic/elastic-agent/tree/main/deploy/helm/elastic-agent[{agent} Helm Chart Readme]. --- -. Update the command to replace: -.. `` with the URL that you copied earlier. -.. `` with the enrollment token that you copied earlier. -+ -After your updates, the command should look something like this: -+ -[source,sh] ----- -helm install demo ./deploy/helm/elastic-agent \ ---set agent.fleet.enabled=true \ ---set agent.fleet.url=https://256575858845283fxxxxxxxd5265d2b4.fleet.us-central1.gcp.foundit.no:443 \ ---set agent.fleet.token=eSVvFDUvSUNPFldFdhhZNFwvS5xxxxxxxxxxxxFEWB1eFF1YedUQ1NWFXwr== \ ---set agent.fleet.preset=perNode ----- - -. Run the command. -+ -The command output should confirm that {agent} has been installed: -+ -[source,sh] ----- -... -Installed agent: - - perNode [daemonset - managed mode] -... ----- - -. Run the `kubectl get pods -n default` command to confirm that the {agent} pod is running: -+ -[source,sh] ----- -NAME READY STATUS RESTARTS AGE -agent-pernode-demo-86mst 1/1 Running 0 12s ----- - -. In the **Add agent** flyout, wait a minute or so for confirmation that {agent} has successfully enrolled with {fleet} and that data is flowing: -+ -[role="screenshot"] -image::images/helm-example-nodes-enrollment-confirmation.png[Screen capture of Add Agent UI showing that the agent has enrolled in Fleet] - -. In {fleet}, open the **Agents** tab and see that an **Agent-pernode-demo-#####** agent is running. - -. Select the agent to view its details. - -. On the **Agent details** tab, on the **Integrations** pane, expand `system-1` to confirm that logs and metrics are incoming. You can click either the `Logs` or `Metrics` link to view details. -+ -[role="screenshot"] -image::images/helm-example-nodes-logs-and-metrics.png[Screen capture of the Logs and Metrics view on the Integrations pane] - - -[discrete] -[[agent-fleet-managed-helm-example-install-integration]] -=== Install the Kubernetes integration - -Now that you've {agent} and data is flowing, you can set up the {k8s} integration. - -. In your {ecloud} deployment, from the {kib} menu open the **Integrations** page. -. Run a search for `Kubernetes` and then select the {k8s} integration card. -. On the {k8s} integration page, click **Add Kubernetes** to add the integration to your {agent} policy. -. Scroll to the bottom of **Add Kubernetes integration** page. Under **Where to add this integration?** select the **Existing hosts** tab. On the **Agent policies** menu, select the agent policy that you created previously in the <> steps. -+ -You can leave all of the other integration settings at their default values. -. Click **Save and continue**. When prompted, select to **Add Elastic Agent later** since you've already added it using Helm. -. On the {k8s} integration page, open the **Assets** tab and select the **[Metrics Kubernetes] Pods** dashboard. -+ -On the dashboard, you can view the status of your {k8s} pods, including metrics on memory usage, CPU usage, and network throughput. -+ -[role="screenshot"] -image::images/helm-example-fleet-metrics-dashboard.png[Screen capture of the Metrics Kubernetes pods dashboard] - -You've successfully installed {agent} using Helm, and your {k8s} metrics data is available for viewing in {kib}. - -[discrete] -[[agent-fleet-managed-helm-example-tidy-up]] -=== Tidy up - -After you've run through this example, run the `helm uninstall` command to uninstall {agent}. - -[source,sh] ----- -helm uninstall demo ----- - -The uninstall should be confirmed as shown: - -[source,sh] ----- -release "demo" uninstalled ----- - -As a reminder, for full details about using the {agent} Helm chart refer to the link:https://github.com/elastic/elastic-agent/tree/main/deploy/helm/elastic-agent[{agent} Helm Chart Readme]. diff --git a/docs/en/ingest-management/elastic-agent/example-kubernetes-standalone-agent-helm.asciidoc b/docs/en/ingest-management/elastic-agent/example-kubernetes-standalone-agent-helm.asciidoc deleted file mode 100644 index 3dba3f63a..000000000 --- a/docs/en/ingest-management/elastic-agent/example-kubernetes-standalone-agent-helm.asciidoc +++ /dev/null @@ -1,290 +0,0 @@ -[[example-kubernetes-standalone-agent-helm]] -= Example: Install standalone {agent} on Kubernetes using Helm - -preview::[] - -This example demonstrates how to install standalone {agent} on a Kubernetes system using a Helm chart, gather Kubernetes metrics and send them to an {es} cluster in {ecloud}, and then view visualizations of those metrics in {kib}. - -For an overview of the {agent} Helm chart and its benefits, refer to <>. - -This guide takes you through these steps: - -* <> -* <> -* <> -* <> - -[discrete] -[[agent-standalone-helm-example-prereqs]] -=== Prerequisites - -To get started, you need: - -* A local install of the link:https://helm.sh/[Helm] {k8s} package manager. -* An link:{ess-trial}[{ecloud}] hosted {es} cluster on version 8.16 or higher. -* An <>. -* An active {k8s} cluster. -* A local clone of the link:https://github.com/elastic/elastic-agent/tree/8.16[elastic/elastic-agent] GitHub repository. Make sure to use the `8.16` branch to ensure that {agent} has full compatibility with the Helm chart. - -[discrete] -[[agent-standalone-helm-example-install]] -=== Install {agent} - -. Open your {ecloud} deployment, and from the navigation menu select **Manage this deployment**. -. In the **Applications** section, copy the {es} endpoint and make a note of the endpoint value. -. Open a terminal shell and change into a directory in your local clone of the `elastic-agent` repo. -. Copy this command. -+ -[source,sh] ----- -helm install demo ./deploy/helm/elastic-agent \ ---set kubernetes.enabled=true \ ---set outputs.default.type=ESPlainAuthAPI \ ---set outputs.default.url=:443 \ ---set outputs.default.api_key="API_KEY" ----- -+ -Note that the command has these properties: - -* `helm install` runs the Helm CLI install tool. -* `demo` gives a name to the installed chart. You can choose any name. -* `./deploy/helm/elastic-agent` is a local path to the Helm chart to install (in time it's planned to have a public URL for the chart). -* `--set kubernetes.enabled=true` enables the {k8s} integration. The CLI parameter overrides the default `false` value for `kubernetes.enabled` in the {agent} link:https://github.com/elastic/elastic-agent/blob/main/deploy/helm/elastic-agent/values.yaml[values.yaml] file. -* `--set outputs.default.type=ESPlainAuthAPI` sets the authentication method for the {es} output to require an API key (again, overriding the value set by default in the {agent} link:https://github.com/elastic/elastic-agent/blob/main/deploy/helm/elastic-agent/values.yaml[values.yaml] file). -* `--set outputs.default.url=:443` sets the address of your {ecloud} deployment, where {agent} will send its output over port 443. -* `--set outputs.default.api_key="API_KEY"` sets the API key that {agent} will use to authenticate with your {es} cluster. -+ --- -TIP: For a full list of all available YAML settings and descriptions, refer to the link:https://github.com/elastic/elastic-agent/tree/main/deploy/helm/elastic-agent[{agent} Helm Chart Readme]. --- -. Update the command to replace: -.. `` with the {es} endpoint value that you copied earlier. -.. `` with your API key name. -+ -After your updates, the command should look something like this: -+ -[source,sh] ----- -helm install demo ./deploy/helm/elastic-agent \ ---set kubernetes.enabled=true \ ---set outputs.default.type=ESPlainAuthAPI \ ---set outputs.default.url=https://demo.es.us-central1.gcp.foundit.no:443 \ ---set outputs.default.api_key="A6ecaHNTJUFFcJI6esf4:5HJPxxxxxxxPS4KwSBeVEs" ----- - -. Run the command. -+ -The command output should confirm that three {agents} have been installed as well as the {k8s} integration: -+ -[source,sh] ----- -... -Installed agents: - - clusterWide [deployment - standalone mode] - - ksmSharded [statefulset - standalone mode] - - perNode [daemonset - standalone mode] - -Installed integrations: - - kubernetes [built-in chart integration] -... ----- - -. Run the `kubectl get pods -n default` command to confirm that the {agent} pods are running: -+ -[source,sh] ----- -NAME READY STATUS RESTARTS AGE -agent-clusterwide-demo-77c65f6c7b-trdms 1/1 Running 0 5m18s -agent-ksmsharded-demo-0 2/2 Running 0 5m18s -agent-pernode-demo-c7d75 1/1 Running 0 5m18s ----- - -. In your {ecloud} deployment, from the {kib} menu open the **Integrations** page. -. Run a search for `Kubernetes` and then select the {k8s} integration card. -. On the {k8s} integration page, select **Install Kubernetes assets**. This installs the dashboards, {es} indexes, and other assets used to monitor your {k8s} cluster. -. On the {k8s} integration page, open the **Assets** tab and select the **[Metrics Kubernetes] Nodes** dashboard. -+ -On the dashboard, you can view the status of your {k8s} nodes, including metrics on memory, CPU, and filesystem usage, network throughput, and more. -+ -[role="screenshot"] -image::images/helm-example-nodes-metrics-dashboard.png[Screen capture of the Metrics Kubernetes nodes dashboard] - -. On the {k8s} integration page, open the **Assets** tab and select the **[Metrics Kubernetes] Pods** dashboard. As with the nodes dashboard, on this dashboard you can view the status of your {k8s} pods, including various metrics on memory, CPU, and network throughput. -+ -[role="screenshot"] -image::images/helm-example-pods-metrics-dashboard.png[Screen capture of the Metrics Kubernetes pods dashboard] - -[discrete] -[[agent-standalone-helm-example-upgrade]] -=== Upgrade your {agent} configuration - -Now that you have {agent} installed, collecting, and sending data successfully, let's try changing the agent configuration settings. - -In the previous install example, three {agent} nodes were installed. One of these nodes, `agent-ksmsharded-demo-0`, is installed to enable the link:https://github.com/kubernetes/kube-state-metrics[kube-state-metrics] service. Let's suppose that you don't need those metrics and would like to upgrade your configuration accordingly. - -. Copy the command that you used earlier to install {agent}: -+ -[source,sh] ----- -helm install demo ./deploy/helm/elastic-agent \ ---set kubernetes.enabled=true \ ---set outputs.default.type=ESPlainAuthAPI \ ---set outputs.default.url=:443 \ ---set outputs.default.api_key="API_KEY" ----- - -. Update the command as follows: -.. Change `install` to upgrade. -.. Add a parameter `--set kubernetes.state.enabled=false`. This will override the default `true` value for the setting `kubernetes.state` in the {agent} link:https://github.com/elastic/elastic-agent/blob/main/deploy/helm/elastic-agent/values.yaml[values.yaml] file. -+ -[source,sh] ----- -helm upgrade demo ./deploy/helm/elastic-agent \ ---set kubernetes.enabled=true \ ---set kubernetes.state.enabled=false \ ---set outputs.default.type=ESPlainAuthAPI \ ---set outputs.default.url=:443 \ ---set outputs.default.api_key="API_KEY" ----- - -. Run the command. -+ -The command output should confirm that now only two {agents} are installed together with the {k8s} integration: -+ -[source,sh] ----- -... -Installed agents: - - clusterWide [deployment - standalone mode] - - perNode [daemonset - standalone mode] - -Installed integrations: - - kubernetes [built-in chart integration] -... ----- - -You've upgraded your configuration to run only two {agents}, without the kube-state-metrics service. You can similarly upgrade your agent to change other settings defined in the in the {agent} link:https://github.com/elastic/elastic-agent/blob/main/deploy/helm/elastic-agent/values.yaml[values.yaml] file. - -[discrete] -[[agent-standalone-helm-example-change-mode]] -=== Change {agent}'s running mode - -By default {agent} runs under the `elastic` user account. For some use cases you may want to temporarily change an agent to run with higher privileges. - -. Run the `kubectl get pods -n default` command to view the running {agent} pods: -+ -[source,sh] ----- -NAME READY STATUS RESTARTS AGE -agent-clusterwide-demo-77c65f6c7b-trdms 1/1 Running 0 5m18s -agent-pernode-demo-c7d75 1/1 Running 0 5m18s ----- - -. Now, run the `kubectl exec` command to enter one of the running {agents}, substituting the correct pod name returned from the previous command. For example: -+ -[source,sh] ----- -kubectl exec -it pods/agent-pernode-demo-c7d75 -- bash ----- - -. From inside the pod, run the Linux `ps aux` command to view the running processes. -+ -[source,sh] ----- -ps aux ----- -+ -The results should be similar to the following: -+ -[source,sh] ----- -USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND -elastic+ 1 0.0 0.0 1936 416 ? Ss 21:04 0:00 /usr/bin/tini -- /usr/local/bin/docker-entrypoint -c /etc/elastic-agent/agent.yml -e -elastic+ 10 0.2 1.3 2555252 132804 ? Sl 21:04 0:13 elastic-agent container -c /etc/elastic-agent/agent.yml -e -elastic+ 37 0.6 2.0 2330112 208468 ? Sl 21:04 0:37 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat metricbeat -E -elastic+ 38 0.2 1.7 2190072 177780 ? Sl 21:04 0:13 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat filebeat -E se -elastic+ 56 0.1 1.7 2190136 175896 ? Sl 21:04 0:11 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat metricbeat -E -elastic+ 68 0.1 1.8 2190392 184140 ? Sl 21:04 0:12 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat metricbeat -E -elastic+ 78 0.7 2.0 2330496 204964 ? Sl 21:04 0:48 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat filebeat -E se -elastic+ 535 0.0 0.0 3884 3012 pts/0 Ss 22:47 0:00 bash -elastic+ 543 0.0 0.0 5480 2360 pts/0 R+ 22:47 0:00 ps aux ----- - -. In the command output, note that {agent} is currently running as the `elastic` user: -+ -[source,sh] ----- -elastic+ 10 0.2 1.3 2555252 132804 ? Sl 21:04 0:13 elastic-agent container -c /etc/elastic-agent/agent.yml -e ----- - -. Run `exit` to leave the {agent} pod. - -. Run the `helm upgrade` command again, this time adding the parameter `--set agent.unprivileged=false` to override the default `true` value for that setting. -+ -[source,sh] ----- -helm upgrade demo ./deploy/helm/elastic-agent \ ---set kubernetes.enabled=true \ ---set kubernetes.state.enabled=false \ ---set outputs.default.type=ESPlainAuthAPI \ ---set outputs.default.url=:443 \ ---set outputs.default.api_key="API_KEY" \ ---set agent.unprivileged=false ----- - -. Run the `kubectl get pods -n default` command to view the running {agent} pods: -+ -[source,sh] ----- -NAME READY STATUS RESTARTS AGE -agent-clusterwide-demo-77c65f6c7b-trdms 1/1 Running 0 5m18s -agent-pernode-demo-s6s7z 1/1 Running 0 5m18s ----- - -. Re-run the `kubectl exec` command to enter one of the running {agents}, substituting the correct pod name. For example: -+ -[source,sh] ----- -kubectl exec -it pods/agent-pernode-demo-s6s7z -- bash ----- - -. From inside the pod, run the Linux `ps aux` command to view the running processes. -+ -[source,sh] ----- -USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND -root 1 0.0 0.0 1936 452 ? Ss 23:10 0:00 /usr/bin/tini -- /usr/local/bin/docker-entrypoint -c /etc/elastic-agent/agent.yml -e -root 9 0.9 1.3 2488368 135920 ? Sl 23:10 0:01 elastic-agent container -c /etc/elastic-agent/agent.yml -e -root 27 0.9 1.9 2255804 203128 ? Sl 23:10 0:01 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat metricbeat -E -root 44 0.3 1.8 2116148 187432 ? Sl 23:10 0:00 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat metricbeat -E -root 64 0.3 1.8 2263868 188892 ? Sl 23:10 0:00 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat metricbeat -E -root 76 0.4 1.8 2190136 190972 ? Sl 23:10 0:00 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat filebeat -E se -root 100 1.2 2.0 2256316 207692 ? Sl 23:10 0:01 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat filebeat -E se -root 142 0.0 0.0 3752 3068 pts/0 Ss 23:12 0:00 bash -root 149 0.0 0.0 5480 2376 pts/0 R+ 23:13 0:00 ps aux ----- - -. Run `exit` to leave the {agent} pod. - -You've upgraded the {agent} privileges to run as `root`. To change the settings back, you can re-run the `helm upgrade` command with `--set agent.unprivileged=true` to return to the default `unprivileged` mode. - - -[discrete] -[[agent-standalone-helm-example-tidy-up]] -=== Tidy up - -After you've run through this example, run the `helm uninstall` command to uninstall {agent}. - -[source,sh] ----- -helm uninstall demo ----- - -The uninstall should be confirmed as shown: - -[source,sh] ----- -release "demo" uninstalled ----- - -As a reminder, for full details about using the {agent} Helm chart refer to the link:https://github.com/elastic/elastic-agent/tree/main/deploy/helm/elastic-agent[{agent} Helm Chart Readme]. diff --git a/docs/en/ingest-management/elastic-agent/example-standalone-monitor-nginx-ess.asciidoc b/docs/en/ingest-management/elastic-agent/example-standalone-monitor-nginx-ess.asciidoc deleted file mode 100644 index 0176598d2..000000000 --- a/docs/en/ingest-management/elastic-agent/example-standalone-monitor-nginx-ess.asciidoc +++ /dev/null @@ -1,280 +0,0 @@ -[[example-standalone-monitor-nginx]] -= Example: Use standalone {agent} with {ess} to monitor nginx - -This guide walks you through a simple monitoring scenario so you can learn the basics of setting up standalone {agent}, using it to work with {ess} and an Elastic integration. - -Following these steps, you'll deploy the {stack}, install a standalone {agent} on a host to monitor an nginx web server instance, and access visualizations based on the collected logs. - -. <>. -. <>. -. <> -. <>. -. <>. -. <>. -. <>. -. <>. -. <>. - -[discrete] -[[nginx-guide-prereqs-ess]] -=== Prerequisites - -To get started, you need: - -. An internet connection and an email address for your {ecloud} trial. -. A Linux host machine on which you'll install an nginx web server. The commands in this guide use an Ubuntu image but any Linux distribution should be fine. - -[discrete] -[[nginx-guide-install-nginx-ess]] -=== Step 1: Install nginx - -To start, we'll set up a basic link:https://docs.nginx.com/nginx/admin-guide/web-server/[nginx web server]. - -. Run the following command on an Ubuntu Linux host, or refer to the link:https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/[nginx install documentation] for the command appropriate to your operating system. -+ -[source,sh] ----- -sudo apt install nginx ----- -+ -. Open a web browser and visit your host machine's external URL, for example `http://192.168.64.17/`. You should see the nginx welcome message. -+ -[role="screenshot"] -image::images/guide-nginx-welcome.png["Browser window showing Welcome to nginx!"] - -[discrete] -[[nginx-guide-sign-up-ess]] -=== Step 2: Create an {ecloud} deployment - -NOTE: If you've already signed up for a trial deployment you can skip this step. - -Now that your web server is running, let's get set up to monitor it in {ecloud}. An {ecloud} {ess} deployment offers you all of the features of the {stack} as a hosted service. To test drive your first deployment, sign up for a free {ecloud} trial: - -. Go to our link:https://cloud.elastic.co/registration?elektra=guide-welcome-cta[{ecloud} Trial] page. - -. Enter your email address and a password. -+ -[role="screenshot"] -image::images/guide-sign-up-trial.png["Start your free Elastic Cloud trial",width="50%"] - -. After you've link:https://cloud.elastic.co/login[logged in], select *Create deployment* and give your deployment a name. You can leave the default options or select a different cloud provider, region, hardware profile, or version. - -. Select *Create deployment*. - -. While the deployment sets up, make a note of your `elastic` superuser password and keep it in a safe place. - -. Once the deployment is ready, select *Continue*. At this point, you access {kib} and a selection of setup guides. - -[discrete] -[[nginx-guide-create-api-key-ess]] -=== Step 3: Create an {es} API key - -. From the {kib} menu and go to *Stack Management* -> *API keys*. - -. Select *Create API key*. - -. Give the key a name, for example `nginx example API key`. - -. Leave the other default options and select *Create API key*. - -. In the *Create API key* confirmation dialog, change the dropdown menu setting from `Encoded` to `Beats`. This sets the API key format for communication between {agent} (which is based on {beats}) and {es}. - -. Copy the generated API key and store it in a safe place. You'll use it in a later step. - -[discrete] -[[nginx-guide-create-policy-ess]] -=== Step 4: Create an {agent} policy - -{agent} is a single, unified way to add monitoring for logs, metrics, and other types of data to a host. It can also protect hosts from security threats, query data from operating systems, and more. A single agent makes it easy and fast to deploy monitoring across your infrastructure. Each agent has a single policy (a collection of input settings) that you can update to add integrations for new data sources, security protections, and more. - -. When your {ecloud} deployment is ready, open the {kib} menu and go to **{fleet} -> Agent policies**. -+ -image::images/guide-agent-policies.png["Agent policies tab in Fleet"] -. Click *Create agent policy*. -. Give your policy a name. For this example we'll call it `nginx-policy`. -. Leave *Collect system logs and metrics* selected. -. Click *Create agent policy*. -+ -image::images/guide-create-agent-policy.png["Create agent policy UI"] - -[discrete] -[[nginx-guide-add-integration-ess]] -=== Step 5: Add the Nginx Integration - -Elastic integrations are a streamlined way to connect your data from popular services and platforms to the {stack}, including nginx. - -. From the **{fleet} -> Agent policies** tab, click the link for your new `nginx-policy`. -+ -image::images/guide-nginx-policy.png["The nginx-policy UI with integrations tab selected"] -. Note that the System integration (`system-1`) is included because you opted earlier to collect system logs and metrics. -. Click **Add integration**. -. On the Integrations page search for "nginx". -+ -image::images/guide-integrations-page.png["Integrations page with nginx in the search bar"] -. Select the **Nginx** card. -. Click **Add Nginx**. -. Click the link to **Add integration only (skip agent installation)**. You'll install standalone {agent} in a later step. -. Here, you can select options such as the paths to where your nginx logs are stored, whether or not to collect metrics data, and various other settings. -+ -For now, leave all of the default settings and click **Save and continue** to add the Nginx integration to your `nginx-policy` policy. -+ -image::images/guide-add-nginx-integration.png["Add Nginx Integration UI"] -. In the confirmation dialog, select to **Add {agent} later**. -+ -image::images/guide-nginx-integration-added.png["Nginx Integration added confirmation UI with Add {agent} later selected."] - -[discrete] -[[nginx-guide-configure-standalone-agent-ess]] -=== Step 6: Configure standalone {agent} - -Rather than opt for {fleet} to centrally manage {agent}, you'll configure an agent to run in standalone mode, so it will be managed by hand. - -. In {fleet}, open the **Agents** tab and click **Add agent**. -. For the **What type of host are you adding?** step, select `nginx-policy` from the drop-down menu if it's not already selected. -. For the **Enroll in {fleet}?** step, select **Run standalone**. -+ -image::images/guide-add-agent-standalone01.png["Add agent UI with nginx-policy and Run-standalone selected."] -. For the **Configure the agent** step, choose **Download Policy**. Save the `elastic-agent.yml` file to a directory on the host where you'll install nginx for monitoring. -+ -Have a look inside the policy file and notice that it contains all of the input, output, and other settings for the Nginx and System integrations. If you already have a standalone agent installed on a host with an existing {agent} policy, you can use the method described here to add a new integration. Just add the settings from the **Configure the agent** step to your existing `elastic-agent.yml` file. -. For the **Install {agent} on your host** step, select the tab for your host operating system and run the commands on your host. -+ -image::images/guide-install-agent-on-host.png["Install {agent} on your host step, showing tabs with the commands for different operating systems."] -+ -[NOTE] -==== -{agent} commands should be run as `root`. You can prefix each agent command with `sudo` or you can start a new shell as `root` by running `sudo su`. If you need to run {agent} commands without `root` access, refer to <>. -==== -+ -If you're prompted with `Elastic Agent will be installed at {installation location} and will run as a service. Do you want to continue?` answer `Yes`. -+ -If you're prompted with `Do you want to enroll this Agent into Fleet?` answer `no`. -+ -. You can run the `status` command to confirm that {agent} is running. -+ -[source,cmd] ----- -elastic-agent status - -┌─ fleet -│ └─ status: (STOPPED) Not enrolled into Fleet -└─ elastic-agent - └─ status: (HEALTHY) Running ----- -+ -Since you're running the agent in standalone mode the `Not enrolled into Fleet` message is expected. -. Open the `elastic-agent.yml` policy file that you saved. -. Near the top of the file, replace: -+ -[source,yaml] ----- - username: '${ES_USERNAME}' - password: '${ES_PASSWORD}' ----- -+ -with: -+ -[source,yaml] ----- - api_key: '' ----- -+ -where `your-api-key` is the API key that you generated in <>. - -. Find the location of the default `elastic-agent.yml` policy file that is included in your {agent} install. Install directories for each platform are described in <>. In our example Ubuntu image the default policy file can be found in `/etc/elastic-agent/elastic-agent.yml`. -. Replace the default policy file with the version that you downloaded and updated. For example: -+ -[source,sh] ----- -cp /home/ubuntu/homedir/downloads/elastic-agent.yml /etc/elastic-agent/elastic-agent.yml ----- -+ -NOTE: You may need to prefix the `cp` command with `sudo` for the permission required to replace the default file. -+ -By default, {agent} monitors the configuration file and reloads the configuration automatically when `elastic-agent.yml` is updated. - -. Run the `status` command again, this time with the `--output yaml` option which provides structured and much more detailed output. See the <> command documentation for more details. -+ -[source,shell] ----- -elastic-agent status --output yaml ----- -+ -The results show you the agent status together with details about the running components, which correspond to the inputs and outputs defined for the integrations that have been added to the {agent} policy, in this case the System and Nginx Integrations. -. At the top of the command output, the `info` section contains details about the agent instance. Make a note of the agent ID. In this example the ID is `4779b439-1130-4841-a878-e3d7d1a457d0`. You'll use that ID in the next section. -+ -[source,yaml] ----- -elastic-agent status --output yaml - -info: - id: 4779b439-1130-4841-a878-e3d7d1a457d0 - version: 8.9.1 - commit: 5640f50143410fe33b292c9f8b584117c7c8f188 - build_time: 2023-08-10 17:04:04 +0000 UTC - snapshot: false -state: 2 -message: Running ----- - -[discrete] -[[nginx-guide-confirm-agent-data-ess]] -=== Step 7: Confirm that your {agent} data is flowing - -Now that {agent} is running, it's time to confirm that the agent data is flowing into {es}. - -. Check that {agent} logs are flowing. -.. Open the {kib} menu and go to **Analytics -> Discover**. -.. In the KQL query bar, enter the query `agent.id : "{agent-id}"` where `{agent-id}` is the ID you retrieved from the `elastic-agent status --output yaml` command. For example: `agent.id : "4779b439-1130-4841-a878-e3d7d1a457d0"`. -+ -If {agent} has connected successfully with your {ecloud} deployment, the agent logs should be flowing into {es} and visible in {kib} Discover. -+ -image::images/guide-agent-logs-flowing.png["Kibana Discover shows agent logs are flowing into Elasticsearch."] -. Check that {agent} metrics are flowing. -.. Open the {kib} menu and go to **Analytics -> Dashboard**. -.. In the search field, search for `Elastic Agent` and select `[Elastic Agent] Agent metrics` in the results. -+ -like the agent logs, the agent metrics should be flowing into {es} and visible in {kib} Dashboard. You can view metrics on CPU usage, memory usage, open handles, events rate, and more. -+ -image::images/guide-agent-metrics-flowing.png["Kibana Dashboard shows agent metrics are flowing into Elasticsearch."] - -[discrete] -[[nginx-guide-view-system-data-ess]] -=== Step 8: View your system data - -In the step to <> you chose to collect system logs and metrics, so you can access those now. - -. View your system logs. -.. Open the {kib} menu and go to **Management -> Integrations -> Installed integrations**. -.. Select the **System** card and open the **Assets** tab. This is a quick way to access all of the dashboards, saved searches, and visualizations that come with each integration. -.. Select `[Logs System] Syslog dashboard`. -.. Select the calandar icon and change the time setting to `Today`. The {kib} Dashboard shows visualizations of Syslog events, hostnames and processes, and more. -. View your system metrics. - -.. Return to **Management -> Integrations -> Installed integrations**. -.. Select the **System** card and open the **Assets** tab. -.. This time, select `[Metrics System] Host overview`. -.. Select the calandar icon and change the time setting to `Today`. The {kib} Dashboard shows visualizations of host metrics including CPU usage, memory usage, running processes, and others. -+ -image::images/guide-system-metrics-dashboard.png["The System metrics host overview showing CPU usage, memory usage, and other visualizations"] - -[discrete] -[[nginx-guide-view-nginx-data-ess]] -=== Step 9: View your nginx logging data - -Now let's view your nginx logging data. - -. Open the {kib} menu and go to **Management -> Integrations -> Installed integrations**. -. Select the **Nginx** card and open the **Assets** tab. -. Select `[Logs Nginx] Overview`. The {kib} Dashboard opens with geographical log details, response codes and errors over time, top pages, and more. -. Refresh your nginx web page several times to update the logging data. You can also try accessing the nginx page from different web browsers. After a minute or so, the `Browsers breakdown` visualization shows the respective volume of requests from the different browser types. -+ -image::images/guide-nginx-browser-breakdown.png["Kibana Dashboard shows agent metrics are flowing into Elasticsearch."] - -Congratulations! You have successfully set up monitoring for nginx using standalone {agent} and an {ecloud} deployment. - -[discrete] -=== What's next? - -* Learn more about <>. -* Learn more about {integrations-docs}[{integrations}]. \ No newline at end of file diff --git a/docs/en/ingest-management/elastic-agent/example-standalone-monitor-nginx-serverless.asciidoc b/docs/en/ingest-management/elastic-agent/example-standalone-monitor-nginx-serverless.asciidoc deleted file mode 100644 index de11186ea..000000000 --- a/docs/en/ingest-management/elastic-agent/example-standalone-monitor-nginx-serverless.asciidoc +++ /dev/null @@ -1,285 +0,0 @@ -[[example-standalone-monitor-nginx-serverless]] -= Example: Use standalone {agent} with {serverless-full} to monitor nginx - -This guide walks you through a simple monitoring scenario so you can learn the basics of setting up standalone {agent}, using it to work with {serverless-full} and an Elastic integration. - -Following these steps, you'll deploy the {stack}, install a standalone {agent} on a host to monitor an nginx web server instance, and access visualizations based on the collected logs. - -. <>. -. <>. -. <>. -. <>. -. <>. -. <>. -. <>. -. <>. -. <>. - -[discrete] -[[nginx-guide-prereqs-serverless]] -=== Prerequisites - -To get started, you need: - -. An internet connection and an email address for your {ecloud} trial. -. A Linux host machine on which you'll install an nginx web server. The commands in this guide use an Ubuntu image but any Linux distribution should be fine. - -[discrete] -[[nginx-guide-install-nginx-serverless]] -=== Step 1: Install nginx - -To start, we'll set up a basic link:https://docs.nginx.com/nginx/admin-guide/web-server/[nginx web server]. - -. Run the following command on an Ubuntu Linux host, or refer to the link:https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/[nginx install documentation] for the command appropriate to your operating system. -+ -[source,sh] ----- -sudo apt install nginx ----- -+ -. Open a web browser and visit your host machine's external URL, for example `http://192.168.64.17/`. You should see the nginx welcome message. -+ -[role="screenshot"] -image::images/guide-nginx-welcome.png["Browser window showing Welcome to nginx!"] - -[discrete] -[[nginx-guide-sign-up-serverless]] -=== Step 2: Create an {serverless-full} project - -NOTE: If you've already signed up for a trial deployment you can skip this step. - -Now that your web server is running, let's get set up to monitor it in {ecloud}. An {ecloud} {serverless-short} project offers you all of the features of the {stack} as a hosted service. To test drive your first deployment, sign up for a free {ecloud} trial: - -. Go to our link:https://cloud.elastic.co/registration?elektra=guide-welcome-cta[{ecloud} Trial] page. - -. Enter your email address and a password. -+ -[role="screenshot"] -image::images/guide-sign-up-trial.png["Start your free Elastic Cloud trial",width="50%"] - -. After you've link:https://cloud.elastic.co/login[logged in], select *Create project*. - -. On the *Observability* tab, select *Next*. The *Observability* and *Security* projects both include {fleet}, which you can use to create a policy for the {agent} that will monitor your nginx installation. - -. Give your project a name. You can leave the default options or select a different cloud provider and region. - -. Select *Create project*, and then wait a few minutes for the new project to set up. - -. Once the project is ready, select *Continue*. At this point, you access {kib} and a selection of setup guides. - - - -[discrete] -[[nginx-guide-create-api-key-serverless]] -=== Step 3: Create an {es} API key - -. When your {serverless-short} project is ready, open the {kib} menu and go to **Project settings** -> **Management -> API keys**. - -. Select *Create API key*. - -. Give the key a name, for example `nginx example API key`. - -. Leave the other default options and select *Create API key*. - -. In the *Create API key* confirmation dialog, change the dropdown menu setting from `Encoded` to `Beats`. This sets the API key to the format used for communication between {agent} and {es}. - -. Copy the generated API key and store it in a safe place. You'll use it in a later step. - -[discrete] -[[nginx-guide-create-policy-serverless]] -=== Step 4: Create an {agent} policy - -{agent} is a single, unified way to add monitoring for logs, metrics, and other types of data to a host. It can also protect hosts from security threats, query data from operating systems, and more. A single agent makes it easy and fast to deploy monitoring across your infrastructure. Each agent has a single policy (a collection of input settings) that you can update to add integrations for new data sources, security protections, and more. - -. Open the {kib} menu and go to **Project settings** -> **{fleet} -> Agent policies**. -+ -image::images/guide-agent-policies.png["Agent policies tab in Fleet"] -. Click *Create agent policy*. -. Give your policy a name. For this example we'll call it `nginx-policy`. -. Leave *Collect system logs and metrics* selected. -. Click *Create agent policy*. -+ -image::images/guide-create-agent-policy.png["Create agent policy UI"] - -[discrete] -[[nginx-guide-add-integration-serverless]] -=== Step 5: Add the Nginx Integration - -Elastic integrations are a streamlined way to connect your data from popular services and platforms to the {stack}, including nginx. - -. From the **{fleet} -> Agent policies** tab, click the link for your new `nginx-policy`. -+ -image::images/guide-nginx-policy.png["The nginx-policy UI with integrations tab selected"] -. Note that the System integration (`system-1`) is included because you opted earlier to collect system logs and metrics. -. Click **Add integration**. -. On the Integrations page search for "nginx". -+ -image::images/guide-integrations-page.png["Integrations page with nginx in the search bar"] -. Select the **Nginx** card. -. Click **Add Nginx**. -. Click the link to **Add integration only (skip agent installation)**. You'll install standalone {agent} in a later step. -. Here, you can select options such as the paths to where your nginx logs are stored, whether or not to collect metrics data, and various other settings. -+ -For now, leave all of the default settings and click **Save and continue** to add the Nginx integration to your `nginx-policy` policy. -+ -image::images/guide-add-nginx-integration.png["Add Nginx Integration UI"] -. In the confirmation dialog, select to **Add {agent} later**. -+ -image::images/guide-nginx-integration-added.png["Nginx Integration added confirmation UI with Add {agent} later selected."] - -[discrete] -[[nginx-guide-configure-standalone-agent-serverless]] -=== Step 6: Configure standalone {agent} - -Rather than opt for {fleet} to centrally manage {agent}, you'll configure an agent to run in standalone mode, so it will be managed by hand. - -. Open the {kib} menu and go to **{fleet} -> Agents** and click **Add agent**. -. For the **What type of host are you adding?** step, select `nginx-policy` from the drop-down menu if it's not already selected. -. For the **Enroll in {fleet}?** step, select **Run standalone**. -+ -image::images/guide-add-agent-standalone01.png["Add agent UI with nginx-policy and Run-standalone selected."] -. For the **Configure the agent** step, choose **Download Policy**. Save the `elastic-agent.yml` file to a directory on the host where you'll install nginx for monitoring. -+ -Have a look inside the policy file and notice that it contains all of the input, output, and other settings for the Nginx and System integrations. If you already have a standalone agent installed on a host with an existing {agent} policy, you can use the method described here to add a new integration. Just add the settings from the **Configure the agent** step to your existing `elastic-agent.yml` file. -. For the **Install {agent} on your host** step, select the tab for your host operating system and run the commands on your host. -+ -image::images/guide-install-agent-on-host.png["Install {agent} on your host step, showing tabs with the commands for different operating systems."] -+ -[NOTE] -==== -{agent} commands should be run as `root`. You can prefix each agent command with `sudo` or you can start a new shell as `root` by running `sudo su`. If you need to run {agent} commands without `root` access, refer to <>. -==== -+ -If you're prompted with `Elastic Agent will be installed at {installation location} and will run as a service. Do you want to continue?` answer `Yes`. -+ -If you're prompted with `Do you want to enroll this Agent into Fleet?` answer `no`. -+ -. You can run the `status` command to confirm that {agent} is running. -+ -[source,cmd] ----- -elastic-agent status - -┌─ fleet -│ └─ status: (STOPPED) Not enrolled into Fleet -└─ elastic-agent - └─ status: (HEALTHY) Running ----- -+ -Since you're running the agent in standalone mode the `Not enrolled into Fleet` message is expected. -. Open the `elastic-agent.yml` policy file that you saved. - -. Near the top of the file, replace: -+ -[source,yaml] ----- - username: '${ES_USERNAME}' - password: '${ES_PASSWORD}' ----- -+ -with: -+ -[source,yaml] ----- - api_key: '' ----- -+ -where `your-api-key` is the API key that you generated in <>. - -. Find the location of the default `elastic-agent.yml` policy file that is included in your {agent} install. Install directories for each platform are described in <>. In our example Ubuntu image the default policy file can be found in `/etc/elastic-agent/elastic-agent.yml`. -. Replace the default policy file with the version that you downloaded and updated. For example: -+ -[source,sh] ----- -cp /home/ubuntu/homedir/downloads/elastic-agent.yml /etc/elastic-agent/elastic-agent.yml ----- -+ -NOTE: You may need to prefix the `cp` command with `sudo` for the permission required to replace the default file. -+ -By default, {agent} monitors the configuration file and reloads the configuration automatically when `elastic-agent.yml` is updated. - -. Run the `status` command again, this time with the `--output yaml` option which provides structured and much more detailed output. See the <> command documentation for more details. -+ -[source,shell] ----- -elastic-agent status --output yaml ----- -+ -The results show you the agent status together with details about the running components, which correspond to the inputs and outputs defined for the integrations that have been added to the {agent} policy, in this case the System and Nginx Integrations. -. At the top of the command output, the `info` section contains details about the agent instance. Make a note of the agent ID. In this example the ID is `4779b439-1130-4841-a878-e3d7d1a457d0`. You'll use that ID in the next section. -+ -[source,yaml] ----- -elastic-agent status --output yaml - -info: - id: 4779b439-1130-4841-a878-e3d7d1a457d0 - version: 8.9.1 - commit: 5640f50143410fe33b292c9f8b584117c7c8f188 - build_time: 2023-08-10 17:04:04 +0000 UTC - snapshot: false -state: 2 -message: Running ----- - -[discrete] -[[nginx-guide-confirm-agent-data-serverless]] -=== Step 7: Confirm that your {agent} data is flowing - -Now that {agent} is running, it's time to confirm that the agent data is flowing into {es}. - -. Check that {agent} logs are flowing. -.. Open the {kib} menu and go to **Observability -> Discover**. -.. In the KQL query bar, enter the query `agent.id : "{agent-id}"` where `{agent-id}` is the ID you retrieved from the `elastic-agent status --output yaml` command. For example: `agent.id : "4779b439-1130-4841-a878-e3d7d1a457d0"`. -+ -If {agent} has connected successfully with your {ecloud} deployment, the agent logs should be flowing into {es} and visible in {kib} Discover. -+ -image::images/guide-agent-logs-flowing.png["Kibana Discover shows agent logs are flowing into Elasticsearch."] -. Check that {agent} metrics are flowing. -.. Open the {kib} menu and go to **Observability -> Dashboards**. -.. In the search field, search for `Elastic Agent` and select `[Elastic Agent] Agent metrics` in the results. -+ -like the agent logs, the agent metrics should be flowing into {es} and visible in {kib} Dashboard. You can view metrics on CPU usage, memory usage, open handles, events rate, and more. -+ -image::images/guide-agent-metrics-flowing.png["Kibana Dashboard shows agent metrics are flowing into Elasticsearch."] - -[discrete] -[[nginx-guide-view-system-data-serverless]] -=== Step 8: View your system data - -In the step to <> you chose to collect system logs and metrics, so you can access those now. - -. View your system logs. -.. Open the {kib} menu and go to **Project settings -> Integrations -> Installed integrations**. -.. Select the **System** card and open the **Assets** tab. This is a quick way to access all of the dashboards, saved searches, and visualizations that come with each integration. -.. Select `[Logs System] Syslog dashboard`. -.. Select the calandar icon and change the time setting to `Today`. The {kib} Dashboard shows visualizations of Syslog events, hostnames and processes, and more. -. View your system metrics. - -.. Return to **Project settings -> Integrations -> Installed integrations**. -.. Select the **System** card and open the **Assets** tab. -.. This time, select `[Metrics System] Host overview`. -.. Select the calandar icon and change the time setting to `Today`. The {kib} Dashboard shows visualizations of host metrics including CPU usage, memory usage, running processes, and others. -+ -image::images/guide-system-metrics-dashboard.png["The System metrics host overview showing CPU usage, memory usage, and other visualizations"] - -[discrete] -[[nginx-guide-view-nginx-data-serverless]] -=== Step 9: View your nginx logging data - -Now let's view your nginx logging data. - -. Open the {kib} menu and go to **Project settings -> Integrations -> Installed integrations**. -. Select the **Nginx** card and open the **Assets** tab. -. Select `[Logs Nginx] Overview`. The {kib} Dashboard opens with geographical log details, response codes and errors over time, top pages, and more. -. Refresh your nginx web page several times to update the logging data. You can also try accessing the nginx page from different web browsers. After a minute or so, the `Browsers breakdown` visualization shows the respective volume of requests from the different browser types. -+ -image::images/guide-nginx-browser-breakdown.png["Kibana Dashboard shows agent metrics are flowing into Elasticsearch."] - -Congratulations! You have successfully set up monitoring for nginx using standalone {agent} and an {serverless-full} project. - -[discrete] -=== What's next? - -* Learn more about <>. -* Learn more about {integrations-docs}[{integrations}]. \ No newline at end of file diff --git a/docs/en/ingest-management/elastic-agent/grant-access-to-elasticsearch.asciidoc b/docs/en/ingest-management/elastic-agent/grant-access-to-elasticsearch.asciidoc deleted file mode 100644 index ac8d259f6..000000000 --- a/docs/en/ingest-management/elastic-agent/grant-access-to-elasticsearch.asciidoc +++ /dev/null @@ -1,158 +0,0 @@ -[[grant-access-to-elasticsearch]] -= Grant standalone {agent}s access to {es} - -You can use either API keys or user credentials to grant standalone {agent}s -access to {es} resources. The following minimal permissions are required to send -logs, metrics, traces, and synthetics to {es}: - -* `monitor` cluster privilege -* `auto_configure` and `create_doc` index privileges on `logs-*-*`, `metrics-*-*`, -`traces-*-*`, and `synthetics-*-*`. - -It's recommended that you use API keys to avoid exposing usernames and passwords -in configuration files. - -If you're using {fleet}, refer to -{fleet-guide}/fleet-enrollment-tokens.html[{fleet} enrollment tokens]. - -[discrete] -[[create-api-key-standalone-agent]] -== Create API keys for standalone agents - -NOTE: API keys are sent as plain-text, so they only provide security when used -in combination with Transport Layer Security (TLS). Our -{ess-product}[hosted {ess}] on {ecloud} provides secure, encrypted connections -out of the box! For self-managed {es} clusters, refer to -<>. - -You can set API keys to expire at a certain time, and you can explicitly -invalidate them. Any user with the `manage_api_key` or `manage_own_api_key` -cluster privilege can create API keys. - -For security reasons, we recommend using a unique API key per {agent}. You -can create as many API keys per user as necessary. - -If you are using link:{serverless-docs}[{serverless-full}], API key authentication is required. - -To create an API key for {agent}: - -. In an {ecloud} or on premises environment, in {kib} navigate to *{stack-manage-app} > API keys* and click *Create API key*. -+ -In a {serverless-short} environment, in {kib} navigate to *Project settings* > *Management* > *API keys* and click *Create API key*. - -. Enter a name for your API key and select *Control security privileges*. - -. In the role descriptors box, copy and paste the following JSON. This example creates an API key with privileges for ingesting logs, metrics, traces, and synthetics: -+ -[source,json] ----- -{ - "standalone_agent": { - "cluster": [ - "monitor" - ], - "indices": [ - { - "names": [ - "logs-*-*", "metrics-*-*", "traces-*-*", "synthetics-*-*" <1> - ], - "privileges": [ - "auto_configure", "create_doc" - ] - } - ] - } -} ----- -<1> Adjust this list to match the data you want to collect. For example, if -you aren't using APM or synthetics, remove `"traces-*-*"` and `"synthetics-*-*"` -from this list. - -. To set an expiration date for the API key, select *Expire after time* and input -the lifetime of the API key in days. - -. Click *Create API key*. -+ -You'll see a message indicating that the key was created, along with the -encoded key. By default, the API key is Base64 encoded, but that won't work for -{agent}. - -// lint ignore beats -. Click the down arrow next to Base64 and select *Beats*. -+ -[role="screenshot"] -image::images/copy-api-key.png[Message with field for copying API key] - -. Copy the API key. You will need this for the next step, and you will not be -able to view it again. - -. To use the API key, specify the `api_key` setting in the `elastic-agent.yml` -file. For example: -+ -[source,yaml] ----- -[...] -outputs: - default: - type: elasticsearch - hosts: - - 'https://da4e3a6298c14a6683e6064ebfve9ace.us-central1.gcp.cloud.es.io:443' - api_key: _Nj4oH0aWZVGqM7MGop8:349p_U1ERHyIc4Nm8_AYkw <1> -[...] ----- -<1> The format of this key is `:`. Base64 encoded API keys are not -currently supported in this configuration. - -For more information about creating API keys in {kib}, see -{kibana-ref}/api-keys.html[API Keys]. - -[discrete] -[[create-role-standalone-agent]] -== Create a standalone agent role - -Although it's recommended that you use an API key instead of a username and -password to access {es} (and an API key is required in a {serverless-short} environment), you can create a role with the required privileges, -assign it to a user, and specify the user's credentials in the -`elastic-agent.yml` file. - -. In {kib}, go to *{stack-manage-app} > Roles*. - -. Click *Create role* and enter a name for the role. - -. In *Cluster privileges*, enter `monitor`. - -. In *Index privileges*, enter: - -.. `logs-*-*`, `metrics-*-*`, `traces-*-*` and `synthetics-*-*` in the *Indices* -field. -+ -NOTE: Adjust this list to match the data you want to collect. For example, if -you aren't using APM or synthetics, remove `traces-*-*` and `synthetics-*-*` -from this list. - -.. `auto_configure` and `create_doc` in the *Privileges* field. -+ -[role="screenshot"] -image::create-standalone-agent-role.png[Create role settings for a standalone agent role] - -. Create the role and assign it to a user. For more information about creating -roles, refer to -{kibana-ref}/kibana-role-management.html[{kib} role management]. - -. To use these credentials, set the username and password in the -`elastic-agent.yml` file: -+ -[source,yaml] ----- -[...] -outputs: - default: - type: elasticsearch - hosts: - - 'https://da4e3a6298c14a6683e6064ebfve9ace.us-central1.gcp.cloud.es.io:443' - username: ES_USERNAME <1> - password: ES_PASSWORD -[...] ----- -<1> For security reasons, specify a user with the minimal privileges described -here. It's recommended that you do not use the `elastic` superuser. diff --git a/docs/en/ingest-management/elastic-agent/images/helm-example-fleet-metrics-dashboard.png b/docs/en/ingest-management/elastic-agent/images/helm-example-fleet-metrics-dashboard.png deleted file mode 100644 index f0f3ae7fa0a06c130cd2b7cc01ab0c9c5864f7a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319521 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 diff --git a/docs/en/ingest-management/elastic-agent/images/helm-example-nodes-enrollment-confirmation.png b/docs/en/ingest-management/elastic-agent/images/helm-example-nodes-enrollment-confirmation.png deleted file mode 100644 index c55a50bd628b072c8922ab29f4eecfe210139d42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38122 zcmeEtWmuG5_b(ubf{02fLkR-XNOy>Wbk~s5FqCwsf^>H(-96-hfQWQ6ba&?fGr*jA z-q+`O^qlkMd_33n=elNQvuoXZt+n@F>$lb&qNE^&heL{khK7bG{qBtl8rmHo8X9`? zy}PIy9rCz)XlOWPmJ$+5(h?F>N)C2rme!_dXzxN2lCYIjw+X&oK+d8cQGJoQ54k^j zpNjSj4P#VX?e!C?_(yldyUNKjm$V-}Zg==vK#h}$6 z(CnLr9Q3MbtG8>Lzgh4StiksiT#?P2F2oUwd|^OLwAQEaPR=L}?uY4-eb+3zhh$B< zF(&4{Ur+LFb4xSc&&t;KoMgKOi%3mnqR9VrQmqu#B?@b$|(+_M6-H3{I zBNNlDue2U=T90s;v@0k7*m-?mvL3{!6-!F->W9(tXXHKepMl2RTG5+HTt8m7`W715 zxwuU|EeN^e9?EyslKhHz9qUb06*I3)43qpuH@R`EwNQl+lg9g@N5_Q6xSU2S-3?-7 zBqBfDwMV|Jium9(%TeSN8oaoFLOuj2*DQS3w{&%>ZACh%ICym zuO4CP-ovE$C?VErF?d9d)uy|xo5CkdlQq!QB=>zo8WT(~{m|v10$QiApa<>3n}{>& zuOGbT62s0PZIVyYgSu^s*3sm8a3&o_@oy8OAoQ zL<88PksP5>-t&9(`P+{C$7fW24}PLQ>kqoB#0>pHIQh+^FrciG+@({54^7^lP@$c_ z0Ta4JJQvKm^=XqG?a=U^_@gJUrIJ7M82KerPkz4BA>I;=_ToXv>nAaUFUVu4985&2 zA27V_jb=0fsDxdIlZh)lCy9Qz#yT2tMpF@^`0`=i7iKklZVCD?Wbt7^UteuGagk?y zBL4bzi?Q}enfS%mh%JV*Cmy)_ud{Lj`MxnMbJ+*+0m!g7gTubjE|1!C%)QpVUyh*} zSkhg$G-Jm-Wfuvq4Bj$Kem&m7yiOrRL*1mlc=- z;z@?`_Vh>h?tgUZuzvmOOF(6ueX@O`eb}(9o79UZ+@CkzXd1Dyq@+U9eMqlQ7sl2kJv1HrE+!iQGI`c1m!$Tz)eWyp-=)&-}6K4~?a7d=2 z!P|B42uo~aZiB@js``OUz_T{zmE7fDw z?O}{>IjOpM?6^C|SsduT%q+e5NQ=CUSob24{+;~Tiln;*+FH;iy!z$tqX+5`y z<&LET_uEt^u3hd5P%AVwdp(DClySsrxGC>kI<1U6J0lOG(JYPl@=(89#=LmYI)g>P z+*x1FQ2r>HDp`qR`P)a&ro!?B+xP>a`TeFOXYBK{^MJEl55T#?E@T)wd@(XK&IT1N zU$pzib;R)q5D!Racl)7X?l?WYCj)y1^ZQc%zVgeQecJox<>;73<m2BcNYQrG9$QqJqmozCMoAeY~-#;jL$=h#(WnT)KF$9W1x2wi2)3N^P(=`-ky zdN{iSJWe5?7D~iZ#652pxX?P#fwR%Gk?GZQgb92Fr#QEesgcZjX1VDI`;+21Bn+89!L9jqemGe%;I2kg9vjnPV<_ z7~(^+3aAm-@F{&;Dg@?^e4Iq43Ahkh5N%~{WqPmD5%5tqL?C44`^F0u72VOn+;&U! zu}Q^Uc^3s%g;wEtFL?SkiP={F&&&_jbjEbP8|{RzWxRSbru93wQN>{%ycQ|+4TyuF>me(~}u6Z$gWy_2@> zbELw8-jceK-qCxPxxGL~was@Mx|twu*RHvOPyU}o2Rerc`av0Xe7-%`2Uv4hv&7W6 zsw7}m4t=%SLe~$&EAz62vek*Y+E(?o*4wkD$9=%ivruA^b1#xJJ-sT2s?r9>#_p4{ z#nmw71$C-uALy@gHc`#STL z(yn8n@`t>*yatOaHF-WI3zMT|Sw4hFH*=j~@DI|O)X@F!`&hGCd!J`VU<8{5GZ_Mc zvaUYUw9^xHf>swPK^TkPYFX_-1=GZ$_ zkN=UvLii`YmhaEA;r!12PTGift8+j6^TYGYH@IeZJB8?Dzcn$0WWxLlRSD}!Ktfpn()j9cv0onQv zJLkDbh<5>JW6f^lk;3BqUUS6((Hx+u?Gk-iyhkD-m?+ALa^l+R3M7#v3$3z69`r@! zP%a)mJ`+N+9M%s(-YRY>GG>wrmF+uj3C>VX`R-5GnnQ;2hJy78k>zkieiAVo{>}1f z_qzW_{{_uz%|-nRubdk*s7^tBSzt_H)WUiTz{B7~9MO3Yl^$i2wIV7^o_dpV)_4-O zo|IVe#emYQ?+Pa0n{+HCiB1L{uI2KBHluBYp!I{$#w~L=&p%V;Akk?sks(r>2ai9X zPc7Vk#EDO}hx6?RqjhfA3TG@j^|R#pJ4#YgU8HHgQfBAxN4jr`@-r|($ILHzIRv_q zc?Z5$Pa}6Qk>kD?w*%N=MsGjIqwH4=Q!QyTd3iKORQVnndaxxLCaQ#v`jDbNC{s5! z2n`$c`vmoQla29r>m6YBoxjWI$$xbeSCx>KM*XT9JD8f{yWLv^Sm*2Gx9Zel1>}*gZokaeX%rCOPH~tzZ z#P-+9f8)e|+5Dec6rV+KgxLO(nFtP~_i+yzni!h&8*w!^^u2kk7D9Do_c3K`EOqwB zk57o7P-jzzQX9UfCJvn^pPE13GTvN#^Y)PrCDEe?Z^RiMzY!D96IXfj`gYUPFmW2v zd~xt;-Zbfk%pfU4$ZZPMs<*>iKQSiFa>DgD|IUi$pZ=I? zxHm=it@z_ViT%&C|HE69s{IcW{-2qUjoQgPrthU#^sJ2&S*sa**=n94nd?85Xw39F zzh%_>`q4(cxORe7XOPrZdm&Y`)QE*iVS9~#ErUt%#BX)lIT+Z^&BqP~fE zK=vWxGN8K2^G<*ogLx=%#y#IE$EmW^wBUeS@Fq? zF*@_L@bZeq&xTAiqhy%B&x%9vZujWGinTDcRF0Nhw)@5N-`V)>uvkS|vk2P zOn=9^&HJJ%jIC+7jLl&0dK&!~bskE8m2Cl{2-f5sf3{eLlE@-sb0e;fDAB8N+vff9 zLZbv%d`(K{N=vyL2E$7^;}WtUlWM zlw(+?LF8lZ9P#DFqVIlnUqv-9qD^n(-GE^Uu!f7t4chPnW zBz~UEzD%#v`RTvPRE=SIzxIq{MLt6d^-*A;ng)RXue5Zf86YoaPlu5^AGro;9Ztv&7*hE z^uKcCat_N7nrw3+T1JKrT2?hscb#s~P-^FMKQRGJI{8Qn{_~Uqiuw%K1qO$g6V{L! z#9N(KFaAZuXB>k6Zi}^gvEDmn%CaQ0)E6LEVC;!}^6<%VRZe zu~?8halm3-0fB{E7i_#|gUrqTh(a<{%MmO_k(myOT(lUt^!CtePgk4fOm?R!6ExYi zlG`r&iuRiIC%>PyZI0L*UkK5&=8_tnplimIy!dRX^1jAV9D zaNh*mMd(|x`m8{82A$D`aJeV19hcz}mHBNTx!V$YD-ZRQ^d|pSO*?E%k-!F)-l#D> zp)y|5oZ-APK9b-#YgiKjzjhzZEo^1Z5Tvwlwt^mC`1Lk>oVT?St3fN{cW3iz4cjpQ zumO93h}TE;a@`(-#T&uBq)Ia6^=T9y*=36S^_6+rYO2%zR%-2jtEcSj#5rXc)cnZV zRgu~GB1omqYGQ9IC$f@OHnCyV+uZ85m=ee3L;H7eZ0E=sWLf=Uo#^c)O)*(hQh?`c z@5CKw1xcOANPj#-+vV;#;?Q@B^kUIgJ`FgQ-wf;|clpfseO8kv>)}%q)dGb&EL;-p zh@FWt%->aN;E5AS6jdyMfs=rJEJ||X|uG#>L7DE#Z05XU@zOTdDlv(qS47>b=leZdB;!t zIX9dA86X4Sn+Q8du5;#s>64vc zn|e(Z{vzh>d$ni7U+7*hJN3!)PO;R_Ki19_V^+@2^U({Y{185n#w%J4q1%C$nAgvH z#LYYG!o39c>h1i+cGoraxt(7}CB;iE^6J;^gG&gsg+Y_0g+fCjyALS8fA3o@q`|L8 z3fWiSXA(DU#4J~1KHGWzO3TL$DnWzq(+;0f%-B4p&)lQLF@{>+?&xbaD9^Bd22NBM z_A!aWJ3L=pA`>NEdt;#^0aatkb-f@Q98Qv1>es{e%@~SdJHdA@};ZyexlRi*ah6 z<=(MlTc44o$?to$4#k+ox_HCF`{<3bf1-~?Lou{&vVJiQ>tqCj{B)fpD-3{kc5sur zJ@Z|*iE@nq5N*5F*b0LKc)npdRc$XID2~F$KWg}U?wvz6c1o!IH7=(nN;FS%9%uTt z)5b7QY%2R}xC!b-0lDkzZ08ljtx4q0eAcnXM7p!wLh&3$<3EmNxX!CCA+pa;TC1Vl z`G=A%xs*hiF1E)$T#blK#N6jlMWQMBMZ71!EQc4w@2)&+^RF}DgTpx0l8a8w0|1c@ z;wI7v6IFrUug1P7#|6r7w{`*|Xd?GW>-Od^7NUf{2Wc|vHVk{Ddjb8aWM^NZ?YhsT zEDzwyUHI;1d=%G+4wh_1tVV5P!SIM5JUe;YAw)PQgqXu^&j;KTk;YOKq$jff97R8X z9E!pggDF|gv^MqZKcJ=(d?_Yy(_bU+z40WEsk}wtfDtP^B%ss~JL1K~8RrmI4Fh7l zbC;x?hm&X9|0XESwyI``U(_Wb3%S^xHN^xmhyWI(Hgp6q+mxQF4ZQn$hB$1S?Ku$W zk|lksDE_`U){56TG9-YRT&i1Wt&&EbTYothA*vjmx9=pnh2Zx3?z%kxHJ{VHTp8Pi z6F%| zWv(CaPlN`=1(Swf^%J`E4QW@Q?`xha-z|9gf`{US1lJUwPg85eV-Q~@9tyn!4 z8qK9lbE@xNyixA-6opR_s~K%_F8S$_ z%D1z1P_DgPTWH!Y_hC?d(Iz8lkS$$7w5-5@!n5LIy);+ZD$_Qi{LsK!)u0Tw_o;P` zsraZfPQbX^MbsodLDhI^+`Z?BqJb73c25ohSkY-Ua)z!#5Qh9$7xu;$PY)5wGwO_{a-U znAsw9uUeK3b_l`|J=+%dxjZ_@*I72U0wTi6Z!#h-T?&PdFFUJBY<~2o+%8u`)strL zce_Rb7kkeUBMvv}#aged^xPzKh#ry)Fjv1r_ltBtm50vyQnoDK^@T~BWYFn*6uFLj zxk=)?dC(`olqt%LDN5;^o^RpGMv0t6%ct@UwqAQh7o`*gOj1=2``}bB_|~_%y6=r3 z;bOGuS#a7s0dEmEKi|!n`p&P1_sKW?ZUm>cVmfcG7F_Mlnr8@|iW6UN11>P;kK9og zmo)U^9I6lYJZv1ZBe_1+=#Ro|cknKbTEaJOz33+6xEwoT6cx4{H9@*hrWDMsC+U&Z z>E|3`U3_H5mGy?7g#mAlB=DzH6@{$uh265+C_9-JkxLR|f~E0BhsZd+Zx<`4L-70z zE8AxPEgv4Y&x>peqCJ_QdRr;PY3P1uu9(JVNep&a+L^H1>iGiCi6C^-@)C-bdKdfZ zoNpTw;q#pxa66#+LF(1s?54UeQttLjYH^QmN-;~Es$yH~@QcAiuoQ*Qux-OFsW0Sw z9!KTT8pvm@P`TX*S(I(Rd>+_4rwedHN2*cnf+~9!w6T z`j#fl)O6}QJ}5mHPC+o=?^q!`3(q$cPth#XB|7&jOlmD=lWuX+y)dR>dp)s4(oIQ1 ze$9ZU5P!A{x$AKcKbC#;d;q7Qvzfwdr)r;4LWID}U{a9upqea4s;IjJi9Zg=_@t;lP zj%wri%c<>!L|w@vRIJOcLq)K?~N-bEYv`rS`F4f*8~ zgRo@sNWa#4+AGq1V_3I(ovP~=83Eb11$ZLnC-;7U%6{nEczsZLY{Ed3Ks&(zp3e4x zXi}z7Z9|vs+4BsUES}_HFWIZqWR-zu7+Zb{3+?Yq!NY)CW{J$&M&fa8hVx(aawy9K z*4xeZ-dVPvfNg+M99e8pLCSsh<2DOcfP;LsAVI3zxG-qM{>#agKp zjV8ULTlutn3c)zV0~0bzo5Y&M%KC&Qi)iplf&iKPWWk(-7ibdAC1cLV@aSQ| z(Gu_Sdes8l_gw*Na1bv8yKr~J$3iZT{^UYu_?H*yR!!oHgh!u1Lmj(+--U}=ehX*FX-Ud$7DD13m(dce6&tAO#RN`4oEEQhH^_jPuKQYGZ>hpnmYrJn{zh7_gv z_;)J&**l8z0qV>=6NOc`B&$bF)4LQt9etsxlbx0=gmxxXEZ}$EO28>Uvg6)7(-62< zJgXj^RT7KL3*TLhVl4(Mg8{ir4q7Yiy}IE}q>HV|H~ZA})YoP@p~6vLd+Vq0!m?g= zJw&fS6PmD`EVbwiO?bj9j7KR5yVYFMF4t{5qQim%cA6U;Ot16%Q~02T9iPm&zI*1Y zy!Uth%E5dCvZ1V=I<&K{EV$X7C`)?@Nc;tby=+xe#Y1L?> zG%2h;0GGuhIk@6YZ0W7ur#v;to#IMkLa+k2%kuM?i2`G&o-2bj2~wouHSfC-83?vT z^zJofF6EENFsmPbAr8$3XE`7P7Z(Y8^S_pDp6SyelcaE6$EqiAMfrO4L-{h0be)pz z(Xi)YVwvX@l&2}m_|O+idFRg4*6!}`8}T%$*n>8C@79#z4A*evO&4b{+N>ZZp| zepUqlJvS9a8atTMkV(G}IXK}LN1wat#Po`}YDEw=v5!<&ESY&;hh5Ej?bu2GD# z%nVGWO?NKLka)cco$V#7KEw3%Ki|~xqI}RQVVKtJnzXmyN`zYBK2dm)q9l96$5gE1 zE7gX@7`T2o;zNt?a`|2Qd+=GzZrO>=P@-edeWO#mk+1IK)CuZrHFyPCb5z8AdcF|G z1g5lJ-PY^GG6)tBM2#Jl!pC zm09misFO)xn%1xs2!6vYRi#jce@i;>p{=d#M=MH=@)q!9qjVe89EjMX>&4SrRSNK6th~A9^2CnoV-@ zbDTISfMDuw-_rWnZ74SCEF*P&*fQg34qXM|*%}HOy z@>?FW@q1~v2sW(Sv+7ZM9Jq5))l$c6rGa9W=B<@JoN$Y$3mWa>(S*6% zpE^D4RaEf$yOMO5gX=U@fADx75Y$&_R{DMr>5C7s1s50|K@AFkUquYX7vx>_kh}GX z!k5FH`RHr`x&F@tDBPmScNUUrhgz|3ri9j!&HOGs@5$_hR@XMv=SqOAC zC;j^7=kuM?-ka60>Z~7oQ)o6Np<&CnavA5|rC zf)nhPZ{#6l&6TaXO-aCdTO#$lkQPk@i&o_~{I?Vjt7~l@ee61Lh0b5R4YJqt{YIbZ zCBSHKj_ke2HS1VLZoYg8g_QegNFQ`N2`)4>krcX4wbksmcI(GbxkB~6g0hGR+b&0$ zeEcYHkVm0R6+N!{gOvaAmHl7;bv#W}8=01@V1&Lc*OvaEil=EDSDedH$Xp~t>2=vw zSgO{n27%8Q_~d9bqy#?PF}axY^fjsSafcSVq0kPP1S6$)|A!c74>8EziGIvg2OZbk zDZm@?Hubb+8fhb{oV0UK5oWXgF%Bg%KqWClVjOY5D{a1 zeTk>uw*I?oKZDXGrA_@dePIM>8h*ipg-CbVVeonJ-B2VW%gUi(=8>?_U1_$ah$N?s zA;F7Mw-TPKYGFN5DLnOZYzx|XY?}+K!^Jjkh`CH}sUL$2)kgwFU|M}p zQWW__oBiwHS{O&L#u>#gV*nAf*tO$NOd&0(<(6_YUHjV65@@ zU3V_W2*g7dQ6F#laXj9I6@y3m(-YL#iRe6?zaiq&pv(=8c2tb{tTeWN_UU&rPl-n(T&OhLes1(9kn&yZm~3 z6Q`32hq3$&bT_TJ-_b$)EBk;u*hZSI9SQ6ixn%<+&>)jl~w+B-VaedqY6(xUjY zbNkX=0)>Uvz}-w`#m~ zpZA#^$S0Zl@$d_o=Of{xHUuo~mRzE0m#ZR)82|c=#-Q)9o%dJMsvLL%W22AX!~LA3 zp5iQR>r??};NDk^Q;(|M4A(hQUab*{Q$5!OGq%otfn7RTorD)2UNn!|L}TK$rG zqF3njY}KXxYV(J8@_2Lkf_q68QoZdcoyW(fC>fpEXsDu6oSX~3fQ!5+&2WUJd>G1c z-qnDO;tpMr>=75_E{g+e4fd!2IJI0Fcd!oq00~%z;#j!P?}JYlx+y&6;)?>N@fUr&cP8f*(qewa zNU0*l?rZAQ&<&nM=%3A`Z%>-T!XpOFB{=weW@lVhc$|4mpyB&D@4@P;+1TCoJ2yMK zF6Z1(DdHmc*)c^C;uL(vLW9JhzR5mmCe0%2I?#j+;w6aG(mH6DuWcqGvGDmwVA4)d zUxEd&erB%GQJ$?#ee_lwnf3-@V%0b(o47-t>o_VHV07oRT!N`_Btd$xK5aHyX<{?I z8fVO4u84M1xojdcHzYH=AuwnwZvp;1=OaKte?Scvml37U2;U#!Ddo?0I9&UCHTv{w zrfxqj@2BW9EkWiXt-W~O6}##Xk8^5+%u?Zr&BKdDWTjR429uk#VE(@@ij9BbL-(t- zW1g$Stqs|bu-H`Y2ym$(K2PYu_l(qZUJ(*3((a7m&L0i$I|I%1>|mb4Dq-BN3qpd+ z-&McDb@W`eyYkh2aU-^I|A_vOJ<7 zGSAq|v8iK1p=d~sugKWLIy%n`wDV2B!gl^BU+%x=)qjIQVh``-)@>Ww-~JtZvfRyw9y2a)2%R1|I%QV=}_8;KG_#@R8WpYpuv%CeDA@lBQ2( z?5|;8TtpVZP9jP2U@-0PgYQ4#^PiOd;n={h8HYhcKEAiifLg;$7KctN5_)x1%&zT` z_F+%)hW@0?>p!Ao)$)dMn85cR{|Y=L=Y{Exb(r$3X03zmCwku*u%1I^dLf@{T&5k$ zEe+j4`cS>vJ-fK9KQ$e{Jn@!i2+ciA@@JzFoViB7?qU$@jLP83Jgr(mB%{2-LE^~ zKdg9{hUTv^W6|^U7f}75je4Sv%0V!w5Ze4BVrfZ0H7o;QdG-gTR-8u`>$?e?Eq@5l z21Uv;ht~LaNZ>rT`{6oTA`VF`o~gh??1B0i%1Or zgOUN(z1oxWUdM$$mdb-7RXY;<>UTbnmDeqZYU_e}Lyx$;=);y+AbN+dCN z1i$@FW&D{53f1#=$Z~b{+$~fe=%O!_F>Q;(x5_B;%lZj z{*jRqjuO0Sd|Ke|abPi#dnj$_RNo-`Lq<6$ZFsi6VfcrL@c+_A`viWeKXjxJ^;G}! zsQ-7ax@4WtV3j|CK@$ZuxKn=-si@RVI~|Dgk}GEa;Y;swj?Mg0=oGz&^*^HB2~ znTrbCa(&X{vWeC!ffC2QbJ)%W4G&|R_4L(Y0+Y?bXdZYi%Quu+C8>bobW`L#tdzQ5 z{^G9uLDNK%>Bh?2Z4ov7HRSg9`wOSFP*17B`c;CcOVd@e!OzUIQz70I?!%k>K9l_s z1EDv+WKI=@I(&G>!ftl2uUz_Zhi2+1TLAnLSo&!a9>(Jrlh?P+dk6kmgzf^!QlR=8 zk9Bk!M*Ge6VX7|;eI=Wn%9ejKZ#^#d7PKiQA8rWQ z*C=su5Ue8lU8!^5WUI+IJddlzxi&wdYBoYfb_qzXJFM@Gfk>N$Q3dOX8SqPGYL%d_zNA^EMQ>1+!gbHBR>Ls1Q_@~@ zTL$#dxkL$Edd|Oo_7i-Hg!jRt$ZaI(kk-YPAe}aU@+uw9**4|4pFBek09J=l0FWky zeYQN}R1vY%{ej2yR%q6{xoNVG1*B^XXxndOMLur3*(g{fW zg&TpDt=ppc9o=Vi(*dS^)`$D9l_i2M)i#V8p)=Q=$E$la(xS7_wp%0G`l*hj^J^Cb zuybdEX12_sj&8_Tus>_)JHMlKRMUB>M9vSFk4#cm9H!K>w5eJs_yP8lL}IVcAYZEv zhp6;4QgFJ*vzA-0#y*wL91P(-zy@5ND&`v(_ZRGq&>20pE^)r;4hOUOq?jzqWmpZM zqQ>j|(>4Iznu>y3BUk*(?+<6(N!nU3Txs^27kz8?>&wkH!5}+qp6ORVS(nW@)*G{t z09abHPn5IZAg}t(oIA44=o8zJI)c(d9XvO>Nf}=-7AdHc!KgDG))_qgz0q-RbJrHO z>pZjt_qpmbN#n4~6upQn4-ejJ0d<_v0%O9XVCtf!tvOPSo*n_s-TB&m`{0`0hkLOv zb$+2eD0Ac!>U<*Vt=ZOO{0Se576(INv$G3$F7KMeygf7D=b@}x4^NxR&FZ#Nge=m$ ztpQD{$m3J!t-mUMhA%VF0_wE4msFt(nHfAlqfSCQkDKSO+wk|zFTRoI;&-!E4;9E&+p$4< zixb)GP7`m};btrsB}q*pz%gRx%JmYByJ_^-Y6QLZl|>GbnYY2-4hNq!da=}GZssIl zw00M#V*(fMzAWd&hseu7yv8M!61}`o1J_JkU7~1)eWkJ{OUP|JQZJa|Ac+Jvv|X;K zyz~Ne#kl3Mo|_p1q6;h^5;hg+rYg!xNtJJPginKI2Y~HH&C59#`=(G5Md{Y8Ypw;P zrDuXvdm@JM)u1DKe=XK-nr?AhazN&7L58U(_moJi`QDrA^{WpXa=tent#F5N=W+L2 zE>G~e;Q0fl$BaYaU12QXp;Y)n*8*on)b-$*tMO*wz7WY%VtU%uoNEe~_KJXGDm;5p z>IZ3X5PRQ0mZuW4f1P4-*UYB~PTEJ9+IE>PW>o>q2^9_Ei7@x~m%JjCd`?OEJR=j# z;rq@R!qfY1WhdNx?LR?7-lui=)n`h`Hb>UV?fN-O16`+-GJA9_>!#bz3oo=$(*nJ{ z0+3zx2S|C;n)|WNjh8*if)xIlV#7={1Ml1pMeopA388h%CdM;bZOpm{1>otiq~otJ z^6RFKTV=m5*YOo6nkrNr*Y!m{K<=0LO@10h6}WeQ=sK72S}2wKUbmgyE!9|OWNk=MqOv#=?7GfbIz7c@JGVWF%L&kEWGuS7@iEEZsC%MO zp?TW{;5!iE@*Z(>T^*LL6TR@1dlXyyyu{YVz`)^?ywi`v^bcT5{q`iQ&JJnx1uVp# z`D%IVLQn(8)^)tT6I4W*QNcYxh>#iL4Av^eZwVv9=u>D?DJZO}6Z1T3( zcUC-D+Yu@!&rKLn47JDaFS~&+QDT`<%3qEQiFm2;E^?L26{)mN8xE`4goEHD3J4x+ z6RCsAIWV){%uHjxLwDWWd_^XF^ZLlFD^n!T8IYBAqJAshR=21ZksO=3gx-3F4;pcmBY}JCW#U~z?Qpd$R2s0 zddj&8JBkJchxUAoM_8md<%C>z>#1|w@Ru)D{ho$5Tu$eP_$(qGijI;tnECbA$V2W< zj$wU~Sw!A8BOf3g-GlE~@178qhJYfcYtCo(>4wq(3oopi_}1^c2u)EH%nDaZE=1dC;Ve8 z;)3NW`hg69x^d*LKN^+JAWoFn`g-$`hYdvtQ4@K%YA>j z6^PX&>URQTxycZDi}7?#jZR(>|sOJDl~oZ^Re zO=*XMc|iIJle)z(Uy6{!?d3?N;RmmNaxR!#6AaJm8BpbYbKVPo=A$ovBOnAb5GB7R zh?jy&$=?Kcdq6HC6P(4ZqXWd43#)JwnGBUHpXHj>K_A9f_fJ&Q%5*U(Mt3i;YT?BO zsGj$Yc@ue(UpV!3uHQd+hGi(;)30+x~r4M@zbLn@5mmqdzh1pttX7R3%!wQBU?%8y3L`p zU(TJ0x5uG?)iJvahZwf1OmCr68Qn?PBI|4n{AB_olD?LF*- zhe6-wkDyOBFa}+Ncck)jZ$U(TrDdPSTfm?#c+|wSl}#H5i>k`L(g)S*_4}KEUGnn# z59~-hhcNw3_PoD%2l!cUho0X|cDQ#b^l@lsE$K%>cmSiAykN5aUrw2r59->p`MO(< z#>6u<6EB|llmhNm32i9qd+xH4>4}(mhUfJdU{PcyPIKzLe7DG=u{7FtF&f`P6X#&05IRG+SbF_*}bidySe`z?fa;3$YbDUS4H}LG%)(Hr;N{ zHz2pIRpK)R(UaH}cI>~sYNZGME65hT@c!vqd;e@6S#)Ur!|HJ^*2{BW11KSDVa)K+ zN|iLa|0vR%lljE3Sp1+dy}|oOc5G4CwyQQmWbR>0@;72`l+%nv++Y_G3%GnOPZ{Vml&x6ymyM0C5MT;`Yp0)BZ@mh*Q41uT<8%$ue<$p^ ztCke(lox^p}FPxF?y>9N0Pg^Lj- z_&DG3+(T?hOx9|!P+Bl%tIDS?nCGdrL&A1n@ly4Cx?Zdv| zLPQ4Z=Rc-Z>3e&gL54(DnxYb5YG_*pi2wkPzd<`q`c`3rw;Ld#u z3tKF78F5j-gqpDHoV3g4bG@=S&*^e2DlU_Tg*!xPE)MeT`mStj8fafhIUyf4xY=;R zGo9VP!$LylMHj9IXD82SCM+{jJ@8!EUbEWb!0%#h=8{GPNA7LZC|BmC;z8bB1Sw!& znTjvwJCxtuEjplYxYe<}=fx|K4X-PDz%l&jVuwjx&ExixA|KdDWk32Z4B~kf9^PMY z6JwHaBK4+bQN(nDFfEf#qE#1Bv5MsY; zI2Hky0}BD1qn!nrD*w96RM1NUC?Qa}&MPJ~JS&|zevN98rq-x(&x$m%2`&xs#K?jq zf#A4}x`KtBJ^V)vnErt&7NxO6|{Q=c)s9s5y7J(lKRv=MqPU(I96&*5y1 z^&0n9-|QS*oLcES{2J;jiQnR}^dOevv!W-Y-ZwZdNG3|&N}%xh%5DP*@~*$a9#2<_ z!G5aXpaCpNeZKnoE`*nPp(?&Wf3S3UDDe5gs!f5ZmF-n9Af*zF`z8>b<%tczt}zv( z7+*!Xd*pmrHYE^P>gH~l(%L&l!r~xL$&}YmvrrYwqS)dc)-0DpXq6qiWIEC{FWTZ= zEz<4{EOA)>7#NH>VEBxghPj{Xzs~41i&BZ)8I|=mD~rFzla4E53!=B9c4se}*Y`natMR-sS_OKIsh^*vT`-|wQ-?IMwnTdZojfqQ=_phY+ zfBol%&XZ-<|Tcd=#c*tIsR*2bieMi~=aSNP_== znO2E0tPiYBvY+LPtTQdqoDJm$S=S+Go=2Bq(8|VFavW56^~7qp;QFNXOzysE{5#&! z{1+C|ey-JGmB8XGPJG{A_t7vuy6^7L4WH5omQI4~aa)9LgKhlZC>&22ny8}rR2CIe z=Mouf9tPZB?1KGY<;b>20h=A(Doq*#SVcWD3=AnY80hnzO-a8+142-U=#$x8uL!tF z%%dqX%!VZ1;F6#Gf1@b^sOHfk04l$smFjsV|2=y)yN8-Fj=x?j^LIiCHcyq8&Q6jf z9Q{3yIaWiGBWzUJ{_k@y8YRr2Z2kv-NH_{rd8-Q={NqJ7ju$8iKeu=o_^+m+VO-Im zDn+5GoPXey4^Rk?>Alp>KVGc4{R>MRs@stJ151?n3rh^xVE;q!ME}AP9n1Jt|G*Oe z`>4EU?8d%nW?7NsHk>4^pVPV&Ir9r~M>E7}W{q2n zXy2i4%F3o@xjsbM9MZebhCI~udGXuSu_(-4M#GB0ra)|`Nu*+WSE4OcCqQt)W30m9 zR+8WdV;>!U%9TN|AT%<(_-XR=aLc9_VJg_#9 zPdCiTzqRt*8)mOw&;DS1bN1M?w(1G3%;moZZg0iuHb%=JD`rLaVBC(o?p z{?}^!G_H|b;B6FngAS)^&6^bGSx2@KJ!epxjk2ki`FDGS&4TXkcKJYoarYFa>)gI> z_Posyr0gV7rwMdj58+$m9OE8aq(LHvQ?Ed+B}2%*EIK}@!A;X7%J&i`V1s#ZPvS}N!HK&F@(TV?z3B>ok zj)A}@NMc^Y$YFK(a|gmz!3ivSGlZo@cF-7Bt+AE>^z|=JYP(>KE-YOfx7xjU7~<{8 zeZ@le40sR&-~G|kgZIevJA$*?*koHIs0*FK*e8v+ZobdpLDi65>j1W1JCB5Jc8=le z?fyFgO=8(z{?|ymBPzj3te2XUKJkm?g}$*2IRX7+nI8R~m{$e>BF@5VAXvA*yt4r5tCtr z$>85vz^J?Dwf|blohN4Pp-#B92AYEBBU>@8#BaLCmhj=A11l!*Y!h&f`hg4nI!?8~ z{^VS1%lbor*I1d0Q8P@$LRIxmUS#vZhN$o54KI@4tM>)6$hXxMh2h||#>1?tbCBUT zn<0v#u=cU_V3#_(!-npK<{eUl)w8p2iZ)+CGfx#x6PaNH0PK1DF!E6&8=H~g5Q5IM zWVpJp`;Td!Jy>&@e~G%s+A6;HtuSmF+S+uk0C2k*n4FwQWKdGV)8}AF;b45EJp7Do zvj$*SS4_l6n0gbcUa~h}*LGZIKzY_QC;~a4Yc4|^`()uumgBkQH)bn~Yq)C?KsQ(V z_HkWVSVguTQJQ?>RLl==hv_srcsmW8!zPI!UIQssESt>0H4JcZ>jQyFp7MN^b^f+f z@j<6N{AxnO?aM4(&m6sp^LttIQRP7~f2Tp9(&K=ri)Gv+pSGT*FaB75Z=8_%p2yt? zL_6iK611OH87ClL6*fO~3pa1HW1Om+pzt{zQ7wQEQMuuqsE<`omh-2Kes&gzYTBm6 z1~j>CpWYWurC3t00WVeLwQ3tBnXz2wSD}!KjfR|(x61O{qOE&C)bmlqlR#WSDXLCx+)`}q&!gcZ%8SWPVz zf_^Cl;rWH8YsM1g#_9pBN~+PM18Ae;bvf!B>GWk>l;j2h-Cczhr|Sa`bw~yUQ#kI< zX0;6Yw1yZ#tS0u4gn@`IM&GY5`m(_`pK-q>HKej}lk9shqh1ozzj@PKMfOi@%xn|CU_;~318E=Wp%S-w=Oe8c~tywx}^11L3>Y#jVq<&vEDNxAqH zJB7{etztvTl750B=J(3XT@p}wmUIl|ahz@mdBmp*od(ZllNQC}@)0KAJT+X#<8YOD zA+Id7Dnj=KV)0yB9_?(~|DMbA?k==s?flAsH{WJegWcc(;?bNwXu3#f+o5h5apk50 z5%GzM$4_3dy5nm9H)#W~G2gK&?R5)Oo<->d-{v{>w|a_IE21VhDB zLOl*<&Slu}qY^gO(Bais3zHGQI*jEA>sjN}sLRgq6AG3UrwWL1>>aTll#r)rwVY@P zSe(WfhqpB-X`g zw-8E0uhL-%#lPI%wjy(-gq&|OQWNK;Oof3AkVrA3o2V~T;g|o8dU}(jZW?~m1&vET z2BWBaDypF<6g zY8>fImzsvPTi+7k&AofxZmGv*I_B0clShwdHGcHO9RD-d!K6W<+#!iu{{yMB8@gu! z*w2|2u53d7ZI(r7ek3n!_e509;T`t3TOwKnI zMS*mH@3^c}a0A~>sd+C{a6S>@$I-#)%f}0ckd@4Jgazpk)5nd&V~xfyoEy&Ss%G8M z`?n|g-}a+Ek^ zyay@24`aFFKfJ&Mb_*;h$#G2r1!7NUGGjl>$9{^|?yKi`MZ;;kp|3FKhIfe?lg7lH zi+>OkV&_XY60P49kQeMo;+^9Xj$>-P~69d;V690HxtB@focFq{NXju z8coCs0ORy{YI!@2Bk*)a6jPJ@mvZZ9pbD@B^gQskLL0t39pl2U|0Sk1c?lSnhqoMH zt}vOa(^?TE5U1_et{C!k6&`_XXrm(jUJ}4Iz^K%6i2-47owoH>SY{}+4bDuA=PRn* zC(EJ<1PBP(G^FKZzh*+BO*BK_stTt2$V=jD=!dc`+tr$!&8v^_lBz!Y{w;&_AkSB8 zDBDuvo3bj|am>&4Ihm|0Q{2c%8LQyjH4kX5kK_J{GR?_gUd;C$y=FXM9ozC%l&2!rI&OIqlLsnN#OSMtkKu~`2MVxUt{@)IYlCGb& zY0pFV*sz)8EPsmjSV2MSp^y*hSXt+HSz@4E<63W4vl|U45`tNb?`UvqYN~X9=+vNQ z#sBnxGuL3^Il=61VAf=pZ(iJJ$tnmN1>@3vM?dJb2IphCT==d`oU$o;c(y5DAy zBCwvG+VBSgzZIh7N0?F{JhpfC|CwXPDs6@3xf>+xolG^} z1pu^EuV14r@1vezjy+Z0eLAXi46TVTh%drogB9m>-7T}Zg;B^>M?;ML*V%;o@H$#B z+Wd+WoArTo(#QCxd@yhpN=`3%<+tNK38VY?XmFrRh2`I-==J~8umav-*+H2S)9<&t zOaWs+x6w12^55qla0ZmU1DHCjoOl7h)1v%z0eiM*HD7A_4=?S1ulBBfL!{jYdqRu^ z{~O4IHHU`+*nd4*IvemJU%DC}a7d&+q-(J$!gb(W--=0x{pIRKFavM(R;F$_np2C* zUusziCqwb0mjDR7@;7%VArPnmtJrv&9b6K8TZfEzU1{_FkZ^%l+;2Uh`7t}Qjn7g` zrAC$cQ(;9{q$R^`ARnEI;XeaN%+W-ovM6Gym5;49j>D$YFr!|eWt=}teaFw{;ZPIl zR#fKNr!f;#xLTU--!FH~cuLp^-tdbFoRI%KX!KimNSEJ`#~!`=_T&$r)%V(Gb?+DW zgChle)K5L$ubb-kjz3TYIv!mlVE%VI|5cAA(DAa|&!+!iV_jWSCFXh8|Kv#Z1CO%A zV(|K7j75Royr^6IkC%8o3p2EUNA)+E{7obI*OSf|0iWG>GLicaHWm*a5GWw~x&2#1 z#c0siF{s^m=Rb*OX27F(Zbb?Iy(F)nw32ciGthG$_=9*havc>iGc1$(Ph9JU-vz)s z>w#Dg{7F2E2Qr2P(EU$P!0NUoS#Os4BY0qTJ7>5jlw0bz0ND*cAwr;{^pO7CzgFD8 zPCzj;;GMaa`;`B)%>nD;n!|Fi@!mP_k1@Lz?CE>qO#DYj(g8PxYNrxees7)$;J>qS z4?M>FV<4r0o8cUM*}?xldx5TqyO#F(@2mc|SO0%8S7i$vEme|tb23A0`$i=BR(Jm< z(aP%76iEY=<&r|#81Rf~uU0F2ug+nxT7hYMPeNJs<3CuN_nF>ZlW`9xy7WxK0D;*=&fltSuu26f%fc6Q2+l6E2OgCdn^q2Gq(?*=PNiX~7&q#pt33{;Wodry<|SQy6Yd;dZeq;Rq&{>{_@=;668F)HbJS)L0aCOvt^ zTT{7IVSDAx65C%W?1G4Y=~Sg}AM|nr^>G`WOf4%;_ZHW0F~12Xvu4);mt@Ji_shhm zFv^#yC0yTY`Fc+tJ_wwH@# zt6Wb8l{JAApr82Xy?d#=H@N&P&y7di9y;+O>C&+{Rw=AX33@mjl?#0OPkIIs7Ir2XV}w;S{3=r1@mmmE7zer{|g8;tHs zSDZT990lpqgQr^T>aVo(m41249?a=-#R+-H!f52yC#{e_zHBPTc`0rM0~MbX2=@nVfZ?0jXxXaA0}oA`-oV-$+xrCIawwR_~5{Z)>L5$xBlk(Zc=}=R{`PSGCKdw=mnjdYuXodA}P(ciQ z=UTp`(xsGLyOKqCJ=c5IUyVz~R7p!)y&$n~jiR!D-N4&Y6fMLYDK)6#sd)!!S3I2F zIin#FIFr^MVr!0+yYQnV0J0%`WzsUT!~nUWp)7?Ys}K@)H^|(sMP1E;>3WiT8G99s zYuFA9w3y;(+7Pvw9mMA~pqsCo8#(@$kPYDALorb8th+4h$Ng2Uh+fV>ZQDr#Gsrze zq0Dl}chIT; z4}aNmog&;C=xZ(kp)vy!4a@al9#k$$=IFg`{?IdXKt5>a)EE)M2`Ot2iPbDOtJCWI zhSIr%oQH$vzS`(zD^LoqEO1;WnGvpPO^GbJ&V%?z-h@%vj+*!Fg_veRey}I#bVt(D zB>=(zeI1HF4Iu&XDORg;oJcS^Zyu`A#tSjc2WY!o>oDEI@-c$|Oe07Upw9zlkSEu2 zcAo>h-Ow4nxVX2o26@957l)j5l3TDdF?Z34%Ag%VE*n6H$h3!ZqGa(Ncu>SkXZcOo z6KEI(G94earbDqmi~MdHKXhQ8;x*S3&1`&bmwQK#+FcYgSHGclBGZ{sl){UEYO*2W z@_3SK{YBS&9X8d6kJL(ZZi1@`!MkEg44{D&bT&$apu}=C>x`?yVy+LV12YOlT%xI4 zpkK0M*>%<+AqJr1%3Qu;k8(3G`U(}mZ$$o=<>MqqQ^=|Gwr=i(nXfsERKmN z%rOPwpiKY;&+5w{a>`7e3;|+5kcP_vukT#UsV{RobCoZdE8Y>v4~il~D??PSG+;D@ zle+H4Ps8^q3?f3*LBs@ZIhl<5<#LfcY;8c zE`Jm4Uh7YQ_|!rBIBNHVG^`zBX36G zqzdLKW#WbD*L_<%=wQr$Z(Kv~K{w~z=aYuLwBEG%n_sG|p;?u}2Ydd&6n4E>x)v}? z_Fc@}WAHf##CHx-JckId0Wt5(f?1!=Sxhhi3CwvCF_GRG6d+Q94c+37LdIg{;202K zuDQ=ULmJRmfs0ShHg)W3n+IOPT|^7Tu6{r#3_1;sF*jw;sk(sdX)WcmUHHyC%}{Uy zb^?#34P){ccUKSE@Yi=d<0`pvcbXRwSOGPB%}6bz4Imv92BT;eIe+}jFe1tG{Cron zL_svZVlG|nKSa%yk77Mg*xNHNtsX@k@rjKDyDE=Xsi{{Qa?v)jQd*G$Cmy7_x-?xQ zKDb{LL=SBYR2~duqjh$l-YxrdSzAjZ0r?g<`uUD1J@7Yz_-QVuoY7|eAqUI-CJU4l zwbzJU-DMF5AY&7Y;YaQBh_sIZP_2oNQWRj{IqBJrx3>GLUFER&3hsDd>DZg|F?-$8 z{Ecl&U#L|G;cD(;TXFT)*5_#^8nq$P9qWg6`&B#oh^b8)74~jZc5(Ufk;v1e9rvw~~bqHjEMBqFI3< zhQ_lE)SO)-Z*ZHaJdXBr5OIGQYku1#(jKY2KpqgY@G?!8_5w!1o9rYTL45~>k+bYt zwr;8yI3g|byPrT0ZH`@e4aMK7m=xDb%Sd8&wc)&(kO-sno5M79YX!E#=k9 zW3C;+Kl6^ZE+bXI{UPG8OD7vWHYO*7>dc~%&R5Gf^EjY5E%;*dRwwB26{87|(c|xG@jU^AI=mLHye@9gEk0aa zi(Fh?+_b5N9Ql8Yv{7Y!m_X&VBm>Fu2r-*`RT;nN(sV_6ae(iU)Y2CR$6iyGHdWbRL6fV?nCKE*sNXQdc@Ct*FJGMwRl6Z{xV*iSpwsLR!bFXr=iz<53;&OQK+&malzy>BhJe% zjwTTv!fXznV3zho&t83R)ZMz39{-u9;rOJ^4MYgC_~3G3J@UF>h~93z2SfXw|kQ zdoB%2r{unLwUV0K&*&4Od^UuXg2Oh&M(1M<@WWUDIYiK>4BGv1A-k&--x=M>`67wH z%f!nwpGpk5S*g4S$|J3{=fZ$sTPMBjw1aQ14JYK(*RAO$<%JkC5{CK+WCO0sZuw`9 zWgSyp*_XmcA6;nvS|!JkK=yvglA`wLI_}*vS?!Hg{3)5&c&k)YNa$i7{TjoBcd-G; zXMfTkdJLl4u@ZUs_3{L|tBef5&D(Vz(yh++I&-huVPs$vW&O*qra@in_Y}GiEO%$9 z0qGUj$}Fopeq}DJJ?h5Ae9CpUKwe>AB)i<0pUN|5KqCbdky*fV+P>fE8jf3$rD!1N z@M*&Lu-^gnI`UJzAu%t$F{qcFe~QAso=mG4>CXI>eDmBaV02NBAOui}@>zKhD21sl z0lAvNmZgW$P?m0H5QQVffBc|!+7oY_puK?Ce1fFD#eLS|H}Rf7wf)OeVIkJ8cOxHh z$nS|H+A9(LYNC6rWaWkVSbW5gI*`h#gj)59ruta+K}f&K`lF|-%z+E5z0C&;+#4#y zeb!?54d!w;hw_V$?~tGrj~Q7MBHMxdUXsdQLUWE*+{)lOS9lNPA(eq=AHa2|~}u}WsDg0RO1*%HZXcDDfWnI|Ff zbvK{4Tnb24n?>PPFkDoCCpf2+{0#1!SjK^s=ZmJ`)HZ{Eo9ZSh*D8r4JK`d7H?mdR zgC|y6oNcyk-Jw&^U9cIyKE)j{Ag2+$Uad_H zq_$cayH!S%IOmShi=P^{mMhn^?4+K=Hjba4A2;d9 zy7o6X>rb7w->>}@wW5*31WUWtfLYXDZn9Z#Pj|%6x)jdqH&5tl)J5gd$i zns%>^rHcFKEcO2sNEbU4X}I8jY-7`KJfU9eVrdNphxy(o;5s$helcIc^mFnS%0h#J zP(iQ`>9ndnQz{dc^CaIsK7K1#%M=hr>BQ_M0_6#4ya4{R8Lixv`gYfzkQX$6N$_U8 z!y@7qucAuf*Z5$o&t3TPTdkQlSQB|3eZoR382|zT9{u=PWsS_1AL^zocZxN?9}RSR z!W)%*TUy>J=@huH1w_3m6uPWPUX;u-{oDWTqVzjeW2aEQ`l7?IX!1XKoNYm@76NAP+Uf`Fe+h&GHLk%5sJr@KVPde{Iq~oE02+{l2N6;W*vX}On)Q- zwwU$Fs^_#l!q06wlN3ez+M1_p>1o4L{zR;M7i>as?C(Q{6kD+qX_C$;BiQ-yqjbJd z?$*nP*z{o`?;FP1l;lnP{gjS!J$OOmc!}<_rlkDuS7*GGL1itLT@izHbc9v_J%|KjKPuS|EEd!n?Kf=@-r&x-$sP$7m@BeM%sSyE~U@WsshRy*B?3a25?Brge{L6+~>VS50aU}n%p*wq&nE$03WR|lH&Di z8F_31!R?3~r12(Z{rw7mco_0%dw|k^3FmD=X z(rT-H0C6%0CGbP{aze1`=r6l3V|dhL`NjkX=Qf~&*it=8x9T?(CwcWF3Y3LnRG|gh zy(0EUhll6u$0DFh1CyJ7sol~0}+G4Sr#^1 z1qeUvG^ik@Nb=)G(g{Q@Jmaj5WYX)7;V5lYbYTm4u*20BS^*|aR@7C=pvkP3Y3(*} zxT?A14j-vefw@|pxR!ZkE5FFa;=(B#i!Lb{D})X^YGC)%^7egrk!!XbrHK6+V?XVH zU^oA-1!~&on7O?k$kcTSa^~z`|fT^-_dwOQ3<@bu2yWc4G?y*oYYUK&YfWA*Rzk+ z^)~X8*bqOhoa2;a52ti24)6+(q$(LV=SV#IWJZq&dfM&<(JA4IbG{3fA7AhA#y)Cf)oZ1@w@Y62;yf8p1xfF!YyT8>1oAnF zW4uJ_dEAz1K9J)SG6!^cAF(YF{o7Mc{R|&1XP{j5wjFSRb9=pcS;oONxLj3e%V$lxA2=p?6p{Z#mg zMxEP{!*+uKXclRHr>9tK8(=)(nMIvn91dbOa)uo!@QiueykS)@c-G+UIliR^2Kgh> z-@FQ)<(sQN_qW^&?TKMIbB}GuqBvYfZ=&os8_dZ2pFIphu|5p$UZ=GOamI4!S;ge5 z@-@hcrGH_F8Vjv9>1MxZ_}+J7^LIpQnmz(7CYSw} zT+3ZRsx|sIqUW}eo*4kevF8qBGT}H{lJ17SM|usrVo(oGi*SdIbX})BzJS40Jq%SO=ML3Lf`In0S zh?mVnN6jg}{tX5FR~QzMy?FosD0|^;XNIu_Pg^WX@!G*mIDy(Ln`bwR5P#M4STzO9 zhmkA8f2VO9s^FMB9U2LecLY^ZrHHVvg1}>pa@TC%8RDwJEPUsG9_djs#H56!*A*LPZKHpVVD)>8uMiUVQ;Fba&(@cL()4irm(A~u`ERvAFaLj|6U1_DICR0$wrjzw)9;9T ze#>b9;24@cG$IMRUbX$WQ%ae~t(|E~tUdTia2gHni3M@k>aE^%A2+(fMg%_^J~UF$=2e_1fOuTSV+MIA?pW55NSR z2l{M>UAhU2SS|^*DrC*GStZ48zyAHA`Tmi(@HN{@CX6REe_WYF5ou~K1@(aMGyAh3 z=yrw${rh3@2lsFOaWN$UHH}Pf%KmW|_>lBd8cEg%A@_nm;(Y!6659l7iWyMQ_`eFC z++@}c(sWV!^Hs%e%QDhP=DWDnzWZkZ;T=H5ur1C1AFujE=_OE8X8CB$KMNwH#e&tJ zkWdo;*@pXmBS1|oNl8WjSHWwHcNK)C8>xS`;UiA80#MWDwoB$e3!V~2q{V!d#QtZG zr@8<&{l7L8C7Mghl)6kfeMy3o>}6d~!W!AieNLP4$x&aRPW_dzH~D<_&sMcGPt|cZ zPzK(M$?-hRh*D*Ws;#nKb(XmL{j9IKTrY+{9dVbE^uk|_3+Sd#xiF`<{Ga4)3 zsr}xnH`;zM*e-v0;XHW=*1=dm=4^2AE6;VoGV|dUtbnF~P+>g^mqqw@=MqKOJwN<9 zr{Y`=P!uBR@rH*C#ug?XZ>seE2;zEkbc~!2M6Cv<_^=ok1j_=gE`892CbqSqSN2(_ z-E(&9@JjX%JL+_UgWV`RLMEsvsw^|;fAT}`ej}@{&~>CoUgY{FB3E7=<#%QwV4ViO z2%oCO4t%gGzbIO_3o5Q-vsr6DGhthA6@ry83FI-9ClEkNs5+7xrCTeAWRkJWxgA`?fhAmj`vbF!3rR!8E)a;Z`*7OxK${ z?k<`@wgfBhXRsR#D^HO-DrnD2|i;@*&82qjol zKUxRt=4T38)^XTnX8stUD5^=>M2yr{LbGiJtIiKtS6Z}YG>}vCvnL05JC>rFI>rGH zVYG-U+;Y&Z`46+gJSVQA=_0L_Iv{-aoq@U{JP;fDf#3x%LPAI=9IU|0;99s=W586&s7o;Ab#uh z32j<|3ph1sgUZJ_)XT1?&Tfr=zFJS@wA;2y0q%f+T;4d-rzSm^BTd1ss#Ncf zuYsRzl6_k=bBZlaAgy;@j3JnFXZ^5KXJ1h&2sSpafvxhp%+nI~ zx*3i1bgSg~Tp{83_34XQ-Y0R;T2t1lsw$k)j_$Stmqd-bkE&DPvpAg!sIKF!q2cDC z&s@mI4k4)a!EeSgw2FPv&WfQQ+#|h=wp1r4SfQ}&z%wCEavgUZIJQJGV}RGz?G$}l zqpULq12luwEGSUNYQJ3%a!KIQ%U+rxc=Qbl>*-~KD>W5SiS!AJx(0itP7c#j$JK|O zcz7|cgrO=!s%q0*E;>5>yjLI6Em`aozRGr=9cFz)2g_krfvH;;t}1N9+HFgE@^;S6 z1M7^47(b&-I*<7s%;_t{d#RCo=gD~9U`=Cr_d0j{j@rmKIjp)*rOq#$I8~5>XGfZX z=AZBuRtnON4Ipo+1Z;_S&ogL_X7kEW9=@D}VPrivAJ5 zft|pl2f}ssIb~IUC0#F(>zI4&?5BesZQ&WROAY&ZyV4C|LDMo6YKT@~E^ywX&Uz*z zsP3?Y&e@SHeWSsq%v%dIMsw2eW=K<*8 zDAvfztmecq?5w3KsCD=80)xq{C+G1X$9a5X-PM5YsFQ7Pya;dzT73rW11$YvCM^w- z!)Ohz3AZHear^IA)tjTO=`pq>Eja}H1Ctu3OVN-+OJ?_cRMx!^d z-~`klU4@|cAH9~EP)@{mI%yV)Gz=X5LDgy(h7Y?lL6Zntj&Bd#K2uNCS0AgA9v^q| z;s&fvM=28A((s;@@yg8fRoipg&t&Qq4HQKbeeh(G!SWbk4ZoZC04u-T`{K-`qo7zX zT*v;ve{s5oCiYBRBl11p94ogMY>boio?S*eTJRoX)lJv_GJ?uqB?@`*<$=x1j|<7p zJrYRlj*AXgJPnSkaBufAiVrK#gNk%NC!LJP`VF7WCE;P-v#fmghAg89c|M3=*(!Ne1+>A7{MChGs4wdU<9zH@ zqmErfj~Fg}^JlNX>d39mmc27XBDHWfr&FLNcOcsm`j@mLgtpkzbaE?snMsH#w7~Cm z7j)S^91opx;$M?M@Z!bTaIvHJg8rdnTpcw6J0L&Ge$bo0nT2O`{U(3<(?u$egU?a0 zCHeTLNdsP?{p?Gwu1M?R7gs3|_|8D|h-EUgfSL>O5p{!a%sFzqdJfBO5}yw@I}Pdd zPE+uNHT*1&kiiy|jflkxr(9O}u#g-fuD+^^JC9?X5&!lHWkPkCKNo;+DPeWFf6hZg-N0@12zRc zi4xca?SIyz+TlJoI1m0-$mQ<|XAQ4G7U_~f(EFVZ@-tV0v0{`4BPZPLN4YZHv*`1U zAw{QeBK{}c<)3}F;zSd-)OCE$9LR|9hFu$m8~tjN7iZ(;N7k-q{@qKD9nM9c(xCez zY5Klb^viaZmRl;o;m(KCxBJn6V%3f~lZPJeM;BgH75R|;nSU{M_{)xlQ6%RMp{RxA zhZpHgG(s+KyU&q6*tK_jYnvL}Is|A5gbGT&(DvPkk8};IQf+W=mbB~BTK_U_N5ui! z8Dz4ebyy*=`)EA4ML|q(FWuzQqe>XIa>(K0?@3MZD)Qc~u~+YM*xHO_Nz~~MUd+V? zQr<;~Yif|6P9M_D_vjqz3tZYDhYdI!t0=uS?V1Q1PRf48-5m7rxgqz`KFPUJ&J z`?}Ps=|J8fmSo3-+MrQh#6d=a3D2LM2rCl@p7ArO(f!C;y!%sYj>-TIk{XE#QEn{h zq17ZPc}?rUz_~)kO8j_>P?y}uo~vR|W|3cgBF9jT5{9a7vOOH1#Q7l~&4#rbP6_Rl z7eWr&waH{-Wkq-j4s~6@ZF`mOKf}N z@x8Vy;(QawvzqXG_gu&4begMu=TDGNWksEaBRZXl?!C22tX$?;e8FZUk?=M$!&OIS z@qjXfTV7}05=B1~#H{5`?PF5yTOD3<@XXKo_-pohFS$pW&)kbcm;*K84LEm;>t5=> z_wS93mI-HUeJInyN~Y%wOdFaO-#4E6Cshr;hms)AsOtlwPtN;-va#%MEWLk4$8q-r z?Yuy{qc=bJewwus{jIatK6;|!^6hhwl@NOYNaHL>>hsCr7kdpNZ;H0Ox4tJPVEa_c z={J&^3{mG_YNoqFy1h;aMVY^&$$}3$FWk zzLO=1+a5Q9FSIm)`=x9uT_0UIUifozb6->&(+Jf&U>oCE>e?4g)k!&&TGqTTcbF@9 zB|KxdHk-vqP>v8X;n9VK9c1RV-!8@k+`$+8lZLs=;@Ewu%;JJom|8chnft6q&S% zW4ce;P`$7A}f@OnmoV85t&5pAKb&?c_)OftVp5Q zCqlW2nZloy&6f#tjMYO#KyvoW?ROXAmT&eyQ@DoX5x(-QAjmlGfw=n4vpNqhXOYCJ zG|=B?#r8i-)^C=0^m(xdOK>K&J9N5y+qywCca*U#(NSRKO7is9*9+2O+4ZTyscs9NC&(iTH<^PCh2Pli{oSWZa2+^A8SAt_qxSyH{0d~nA<^?;W%j&+Ha5TR7i>v z+@(Tscg%5+k}ienJa^$g9WuRF`b))|#mE>%c1XRX;_+_`dVYv#eb{?D;J(M^W$vOg ztTRshAqgEZEfK?gU{KXH4aCL6f>-fZSy@Q#4LFw}x(4hwCXM4tCLUPExx!ZjiSAaA z?L5SSt`ZhdmaJZd6}P7gA06H?(klQzVwIcxNs?y|x5q`wkx5>xktX9^#%CI*v=LQ3 z1|v!Ah|UF~1VqixU!#)NqP*M;ARQq|WXdi^_EC?7FF&hR6o+(}AGeoQ*y3eQPhdLf zLC4jXTkARoc2A~r$Lrz#q2|vo-MSaf3q!a>1>MFH z7<}wOEV^zYn^9zQIa9S12S)JK?fOeI=UWsx_c`(^G&NB?rh)Tr4N2wmXA{Nu?HD1A z*y7FSZ94W;zJkV*t+w}#I-t=i6ZGsvi*GOBd^*#Gjjzn`v8*j3vgFrxJAMqz`O=ET zUA;aefiRX3{`96+so4HdDO#uywbhEXUZ3G1E*ow6>l}QQr35)zb&tCWae@k4npVtD zfDs?+MN=ssiQ=jBF(z21S_rQ&%9lJ%fEps@`FknknQig#OtpiM_#NesFWqN+I;uON z1g2k+xiYIQt`7F-B7Qglziny!d``Cf)Iv)^zpnY^75{X1oQ3X5Ur92T?OfDSiSa(F z^BWv6J;ZLWQUCfXqlS}e*d9}8#iV74+o?@Fkx=6Bn4gCTi>lh>8BVjjDIUa&dT}nf zdD}=3kA%ue)8)QfqfSKGw3YQ|d2ENxmyIgxy6PhZ==VzD&-T`DhC_qz;1#B~*zhDg zp($W&8OIm*kj=N4-R}umB!~4l9Ba?$nB8|PF87msq0~m5uxPiY7otf)LT#g^Y8LS8 zo1=56_Ju>C(fzKz3#=>19S6blh+fWJCE~Vyrv@3fU+bTfW}0{>+{v5>&%1N^#&f9SOg-Z& zV}GfWcJ63K_A_9M!w(TV-z@nOvm5Y)->m=Dq7{=YiJ|RY`>i0`5As)Aq=UPg>>T`| zZj3pJbq;|ig%lzYeKZ7oEpwiB%^tsdXNHc{`0vc zhtI)2%o4Wl;2RR$e=q$r_^^kv<<N*! zDaaGgs@W*Cvpji3YeV(veISL|5oSp>ibnIc0}g&o*{G96#I%Z6=uc6)D2lf041^$`pZJHK=K+NWt^$v#8mzbo)z+0SK*kY68kQCOe|Nb?Jsse$H?5P4Bp`WPwDHI;KKPex_b( zS@955$`H5s@KQz9ff?e~#{I2P?FkT|+9QgPw7xl6ss#||lXj11TN)m>Z`K1+9u5$( z6v{a_$fkkO{t2;Yhy_8Y#Ed&mx1on2t>~>KL{S}!&6mCJ^F7c4tut^QhZNOlN3&Q| z81;hJk+Az3hXk$cGF4kqXhEzYjp+M>m6Dqn69uQ0wihIuZZ`8*{DC()CJHimpVh-V zTFUH#-4{z#3^gDQ)R^}$Kf9{nSU=dJW3rjtg>rA->*mny%d6T~e>3u&zB78Ux9%7R z_hFsvdwOlxX;bF}zmg!#od_HX(WZ>~ayl3&884WSGHS&y~)HuQX;;)z4n6aew}lzo!)7Xfj;wlBPemI zC%pv)yJ zTwqD6ul;~N{}J^SQ*g*-Q%V@8gMhK&m&gDeVrYvLX}Li(erIb4nQ=5*v?P^NfLU+c zv1Gi7X!_>itoP<}XUJuLk*rm8Uva=P7s8FPL+XJ0TyR#`@!u=z(+Sp#%FUPm26bH^7qz^(kt6FDVy&-=h+o1 zh&ASy8!=~fiDm;w1tv65hwjyXjE>!ENov2mYvCXuRB@?JqBor4T1j?b>_PV)*3yXH zltRDT_7&Ni2U+aS^T!8*FVa3r9e(E=bTy?* zVYRx5uU+EEY8*Y1TM2R~2um|q(gQJRy{&yVRT*nP8I%3t>P%ke*KRr}O_vd|P1^7c z-=)vf|DEx!d+?Va-(q`caHqzGJLr7(1I!W?R{@xrK0eEYT^u<$py!;D2B5QtFpoNu z=yi*vvgN16W~rj7yXkWt9Eil(v#|+_2O2Z=M0|yY%@tvvHxg{Hb)l-p04+uaI0;F7 zFhV|%(mJc@pUUaHzmq+9HV(>dVMZ zB3@EL`D|e#0-{6ka;#J-*-x;K%kB0RMQKW}?%^Z?I;5 zWjh9KKbSL z04I)70SF&{$v`GhnJn`YIlk6DGm`Yn^W2zNt(jtOtDUNQ_7wUpy02An0epf6!<7)= z1*IBb2Zb=~hJ`d@r4Hb^mTljjQnff;k=YS|Jh)rbS%2`6H)lV#ELPY^62L`=46k8^ zk7{(1`8U;r%bxxLh)Uki0jH_W@R>;x16nD+Bdgb-)&!39a9$<3hQ~ijSgt|C_6My0 zL?5;30DyDCN_X|)pCvgjfL1<~D)=YvX%z;JFONnHYZSM6~r;Xg3i99{r> zv?}aS)Bh8s^$Wg6dmY7-&fWY?Gk8Ik!s?#iae?q`wuGgb~ z&pZ>bJAQ}Il_Y?{8CNpR&-vpv4aPVvF#0bOV}k!t5B_y9Mk1y#?H@q7Y9KKBTMp_h z|EP!eH88vI)xg33n(_ZBRH6h%Kd)6Q_YW8zSVQ-L+4bKB03G$ekHD$#tSxz+#X9xR Q8^Di@q{8c>SB9Vd4>(5GLI3~& diff --git a/docs/en/ingest-management/elastic-agent/images/helm-example-nodes-logs-and-metrics.png b/docs/en/ingest-management/elastic-agent/images/helm-example-nodes-logs-and-metrics.png deleted file mode 100644 index 4d57e979d864b4a79091eb456f6244f917a9c1d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26464 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 hl$i2*4Xiu!SX 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�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

@}hW7W4mlf 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

YXDsqVE<0I$DCoh` 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