From 64486b19a87b210d50c90536ad76cdf3e696dfcf Mon Sep 17 00:00:00 2001 From: Francesco Gualazzi Date: Tue, 24 Oct 2023 22:10:52 +0200 Subject: [PATCH] [8.10] profiling: fix binary instructions (#169215) (#169657) # Backport This will backport the following commits from `main` to `8.10`: - [profiling: fix binary instructions (#169215)](https://github.com/elastic/kibana/pull/169215) ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sqren/backport) --- .../e2e/profiling_views/functions.cy.ts | 2 +- .../public/views/add_data_view/index.tsx | 834 ++++++++++-------- .../translations/translations/fr-FR.json | 20 - .../translations/translations/ja-JP.json | 20 - .../translations/translations/zh-CN.json | 20 - 5 files changed, 463 insertions(+), 433 deletions(-) diff --git a/x-pack/plugins/profiling/e2e/cypress/e2e/profiling_views/functions.cy.ts b/x-pack/plugins/profiling/e2e/cypress/e2e/profiling_views/functions.cy.ts index 7ad922ceb7936..1875f8b631e17 100644 --- a/x-pack/plugins/profiling/e2e/cypress/e2e/profiling_views/functions.cy.ts +++ b/x-pack/plugins/profiling/e2e/cypress/e2e/profiling_views/functions.cy.ts @@ -5,7 +5,7 @@ * 2.0. */ -describe('Functions page', () => { +describe.skip('Functions page', () => { const rangeFrom = '2023-04-18T00:00:00.000Z'; const rangeTo = '2023-04-18T00:00:30.000Z'; diff --git a/x-pack/plugins/profiling/public/views/add_data_view/index.tsx b/x-pack/plugins/profiling/public/views/add_data_view/index.tsx index 6025e6685c19d..556e29c1ba240 100644 --- a/x-pack/plugins/profiling/public/views/add_data_view/index.tsx +++ b/x-pack/plugins/profiling/public/views/add_data_view/index.tsx @@ -5,7 +5,7 @@ * 2.0. */ import { i18n } from '@kbn/i18n'; -import React from 'react'; +import React, { useEffect, useMemo, useState } from 'react'; import { EuiButton, EuiCallOut, @@ -43,11 +43,26 @@ export enum AddDataTabs { Symbols = 'symbols', } +interface Step { + title: string; + content: string | React.ReactNode; +} + +interface Tab { + key: string; + title: string; + steps?: Step[]; + subTabs?: Tab[]; +} + +const supportedCPUArchitectures = ['x86_64', 'arm64']; + export function AddDataView() { const { query } = useProfilingParams('/add-data-instructions'); const { selectedTab } = query; const profilingRouter = useProfilingRouter(); const routePath = useProfilingRoutePath(); + const [selectedSubTabKey, setSelectedSubTabKey] = useState(); const { services: { setupDataCollectionInstructions }, @@ -67,390 +82,429 @@ export function AddDataView() { const stackVersion = data?.stackVersion!; const majorVersion = stackVersion ? major(stackVersion).toString() : undefined; - const tabs = [ - { - key: AddDataTabs.Kubernetes, - title: i18n.translate('xpack.profiling.tabs.kubernetesTitle', { - defaultMessage: 'Kubernetes', - }), - steps: [ - { - title: i18n.translate('xpack.profiling.tabs.kubernetesRepositoryStep', { - defaultMessage: 'Configure the Universal Profiling host-agent Helm repository:', - }), - content: ( - - helm repo add elastic https://helm.elastic.co - - ), - }, - { - title: i18n.translate('xpack.profiling.tabs.kubernetesInstallStep', { - defaultMessage: 'Install host-agent via Helm:', - }), - content: ( - - {`helm install --create-namespace -n=universal-profiling universal-profiling-agent \\ + const tabs: Tab[] = useMemo( + () => [ + { + key: AddDataTabs.Kubernetes, + title: i18n.translate('xpack.profiling.tabs.kubernetesTitle', { + defaultMessage: 'Kubernetes', + }), + steps: [ + { + title: i18n.translate('xpack.profiling.tabs.kubernetesRepositoryStep', { + defaultMessage: 'Configure the Universal Profiling Agent Helm repository:', + }), + content: ( + + {i18n.translate('xpack.profiling.tabs.helmRepoAddElasticCodeBlockLabel', { + defaultMessage: 'helm repo add elastic https://helm.elastic.co', + })} + + ), + }, + { + title: i18n.translate('xpack.profiling.tabs.kubernetesInstallStep', { + defaultMessage: 'Install host-agent via Helm:', + }), + content: ( + + {`helm install --create-namespace -n=universal-profiling universal-profiling-agent \\ --set "projectID=1,secretToken=${secretToken}" \\ --set "collectionAgentHostPort=${collectionAgentHost}" \\ --set "version=${stackVersion}" \\ --version=${stackVersion} \\ elastic/pf-host-agent`} - - ), - }, - { - title: i18n.translate('xpack.profiling.tabs.kubernetesValidationStep', { - defaultMessage: 'Validate the host-agent pods are running:', - }), - content: ( - - kubectl -n universal-profiling get pods - - ), - }, - { - title: i18n.translate('xpack.profiling.tabs.postValidationStep', { - defaultMessage: - 'Use the Helm install output to get host-agent logs and spot potential errors', - }), - content: <>, - }, - ], - }, - { - key: AddDataTabs.Docker, - title: i18n.translate('xpack.profiling.tabs.dockerTitle', { - defaultMessage: 'Docker', - }), - steps: [ - { - title: i18n.translate('xpack.profiling.tabs.dockerRunContainerStep', { - defaultMessage: 'Run the Universal Profiling container:', - }), - content: ( - - {`docker run --name pf-host-agent --privileged --pid=host -v /etc/machine-id:/etc/machine-id:ro \\ + + ), + }, + { + title: i18n.translate('xpack.profiling.tabs.kubernetesValidationStep', { + defaultMessage: 'Validate the host-agent pods are running:', + }), + content: ( + + {i18n.translate('xpack.profiling.tabs.kubectlGetPods', { + defaultMessage: 'kubectl -n universal-profiling get pods', + })} + + ), + }, + { + title: i18n.translate('xpack.profiling.tabs.postValidationStep', { + defaultMessage: + 'Use the Helm install output to get host-agent logs and spot potential errors', + }), + content: <>, + }, + ], + }, + { + key: AddDataTabs.Docker, + title: i18n.translate('xpack.profiling.tabs.dockerTitle', { + defaultMessage: 'Docker', + }), + steps: [ + { + title: i18n.translate('xpack.profiling.tabs.dockerRunContainerStep', { + defaultMessage: 'Run the Universal Profiling container:', + }), + content: ( + + {`docker run --name pf-host-agent --privileged --pid=host -v /etc/machine-id:/etc/machine-id:ro \\ -v /var/run/docker.sock:/var/run/docker.sock -v /sys/kernel/debug:/sys/kernel/debug:ro \\ docker.elastic.co/observability/profiling-agent:${stackVersion} /root/pf-host-agent \\ -project-id=1 -secret-token=${secretToken} \\ -collection-agent=${collectionAgentHost}`} - - ), - }, - ], - }, - { - key: AddDataTabs.Binary, - title: i18n.translate('xpack.profiling.tabs.binaryTitle', { - defaultMessage: 'Binary', - }), - steps: [ - { - title: i18n.translate('xpack.profiling.tabs.binaryDownloadStep', { - defaultMessage: 'Download the binary for the right architecture:', - }), - content: ( - - For x86_64: - + + ), + }, + ], + }, + { + key: AddDataTabs.Binary, + title: i18n.translate('xpack.profiling.tabs.binaryTitle', { + defaultMessage: 'Binary', + }), + // Create a dedicated sub tab for each architecture that we support + subTabs: supportedCPUArchitectures.map((arch) => { + return { + key: arch, + title: `Linux ${arch}`, + steps: [ + { + title: i18n.translate('xpack.profiling.tabs.binaryDownloadStep', { + defaultMessage: 'Download the binary:', + }), + content: ( + + {`wget -O pf-host-agent.tgz "https://artifacts.elastic.co/downloads/prodfiler/pf-host-agent-${stackVersion}-linux-${arch}.tar.gz" && tar xzf pf-host-agent.tgz`} + + ), + }, + { + title: i18n.translate('xpack.profiling.tabs.binaryGrantPermissionStep', { + defaultMessage: 'Grant executable permissions:', + }), + content: ( + + {`chmod +x pf-host-agent-${stackVersion}-linux-${arch}/pf-host-agent`} + + ), + }, + { + title: i18n.translate('xpack.profiling.tabs.binaryRunHostAgentStep', { + defaultMessage: + 'Run the Universal Profiling host-agent (requires root privileges):', + }), + content: ( + + {`sudo pf-host-agent-${stackVersion}-linux-${arch}/pf-host-agent -project-id=1 -secret-token=${secretToken} -collection-agent=${collectionAgentHost}`} + + ), + }, + ], + }; + }), + }, + { + key: AddDataTabs.Deb, + title: i18n.translate('xpack.profiling.tabs.debTitle', { + defaultMessage: 'DEB Package', + }), + steps: [ + { + title: i18n.translate('xpack.profiling.tabs.debConfigureRepoStep', { + defaultMessage: 'Configure the apt repository (requires root privileges):', + }), + content: ( - {`wget -O pf-host-agent.tgz "https://artifacts.elastic.co/downloads/prodfiler/pf-host-agent-${stackVersion}-linux-x86_64.tar.gz" && tar xzf pf-host-agent.tgz`} + {`wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - + sudo apt-get install apt-transport-https + echo "deb https://artifacts.elastic.co/packages/${majorVersion}.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-${majorVersion}.x.list + `} - - For ARM64: - + ), + }, + { + title: i18n.translate('xpack.profiling.tabs.debInstallPackageStep', { + defaultMessage: 'Install the DEB package (requires root privileges):', + }), + content: ( - {`wget -O pf-host-agent.tgz "https://artifacts.elastic.co/downloads/prodfiler/pf-host-agent-${stackVersion}-linux-arm64.tar.gz" && tar xzf pf-host-agent.tgz`} + {`sudo apt-get update && sudo apt-get install pf-host-agent`} - - ), - }, - { - title: i18n.translate('xpack.profiling.tabs.binaryGrantPermissionStep', { - defaultMessage: 'Grant executable permissions:', - }), - content: ( - - chmod +x pf-host-agent/pf-host-agent - - ), - }, - { - title: i18n.translate('xpack.profiling.tabs.binaryRunHostAgentStep', { - defaultMessage: 'Run the Universal Profiling host-agent (requires root privileges):', - }), - content: ( - - {`sudo pf-host-agent/pf-host-agent -project-id=1 -secret-token=${secretToken} -collection-agent=${collectionAgentHost}`} - - ), - }, - ], - }, - { - key: AddDataTabs.Deb, - title: i18n.translate('xpack.profiling.tabs.debTitle', { - defaultMessage: 'DEB Package', - }), - steps: [ - { - title: i18n.translate('xpack.profiling.tabs.debConfigureRepoStep', { - defaultMessage: 'Configure the apt repository (requires root privileges):', - }), - content: ( - - {`wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - -sudo apt-get install apt-transport-https -echo "deb https://artifacts.elastic.co/packages/${majorVersion}.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-${majorVersion}.x.list -`} - - ), - }, - { - title: i18n.translate('xpack.profiling.tabs.debInstallPackageStep', { - defaultMessage: 'Install the DEB package (requires root privileges):', - }), - content: ( - - {`sudo apt-get update && sudo apt-get install pf-host-agent`} - - ), - }, - { - title: i18n.translate('xpack.profiling.tabs.debEditConfigStep', { - defaultMessage: 'Edit the configuration (requires root privileges):', - }), - content: ( - - {`echo -e "project-id 1\nsecret-token ${secretToken}\ncollection-agent ${collectionAgentHost}" | sudo tee -a /etc/Elastic/universal-profiling/pf-host-agent.conf`} - - ), - }, - { - title: i18n.translate('xpack.profiling.tabs.debStartSystemdServiceStep', { - defaultMessage: - 'Start the Universal Profiling systemd service (requires root privileges):', - }), - content: ( - - {`sudo systemctl enable pf-host-agent && sudo systemctl restart pf-host-agent`} - - ), - }, - ], - }, - { - key: AddDataTabs.RPM, - title: i18n.translate('xpack.profiling.tabs.rpmTitle', { - defaultMessage: 'RPM Package', - }), - steps: [ - { - title: i18n.translate('xpack.profiling.tabs.rpmConfigureRepoStep', { - defaultMessage: 'Configure the yum repository (requires root privileges):', - }), - content: ( - - {`sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch -cat < /etc/yum.repos.d/elastic.repo -[elastic-${majorVersion}.x] -name=Elastic repository for ${majorVersion}.x packages -baseurl=https://artifacts.elastic.co/packages/${majorVersion}.x/yum -gpgcheck=1 -gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch -enabled=1 -autorefresh=1 -type=rpm-md -EOF`} - - ), - }, - { - title: i18n.translate('xpack.profiling.tabs.rpmInstallPackageStep', { - defaultMessage: 'Install the RPM package (requires root privileges):', - }), - content: ( - - {`sudo yum install pf-host-agent`} - - ), - }, - { - title: i18n.translate('xpack.profiling.tabs.rpmEditConfigStep', { - defaultMessage: 'Edit the configuration (requires root privileges):', - }), - content: ( - - {`echo -e "project-id 1\nsecret-token ${secretToken}\ncollection-agent ${collectionAgentHost}" | sudo tee -a /etc/Elastic/universal-profiling/pf-host-agent.conf`} - - ), - }, - { - title: i18n.translate('xpack.profiling.tabs.rpmStartSystemdServiceStep', { - defaultMessage: - 'Start the Universal Profiling systemd service (requires root privileges):', - }), - content: ( - - {`sudo systemctl enable pf-host-agent && sudo systemctl restart pf-host-agent`} - - ), - }, - ], - }, - { - key: AddDataTabs.ElasticAgentIntegration, - title: i18n.translate('xpack.profiling.tabs.elasticAgentIntegration.title', { - defaultMessage: 'Elastic Agent Integration', - }), - steps: [ - { - title: i18n.translate('xpack.profiling.tabs.elasticAgentIntegration.step1', { - defaultMessage: 'Copy credentials', - }), - content: ( - <> - - {i18n.translate('xpack.profiling.tabs.elasticAgentIntegration.step1.hint', { - defaultMessage: - "You'll need these credentials to set up Universal Profiling. Please save them in a secure location, as they will be required in the subsequent step.", - })} - - - - {i18n.translate('xpack.profiling.tabs.elasticAgentIntegration.step1.secretToken', { - defaultMessage: 'Secret token:', - })} - + ), + }, + { + title: i18n.translate('xpack.profiling.tabs.debEditConfigStep', { + defaultMessage: 'Edit the configuration (requires root privileges):', + }), + content: ( - {secretToken} + {`echo -e "project-id 1\nsecret-token ${secretToken}\ncollection-agent ${collectionAgentHost}" | sudo tee -a /etc/Elastic/universal-profiling/pf-host-agent.conf`} - - - {i18n.translate( - 'xpack.profiling.tabs.elasticAgentIntegration.step1.collectionAgentUrl', - { defaultMessage: 'Universal Profiling Collector URL:' } - )} - + ), + }, + { + title: i18n.translate('xpack.profiling.tabs.debStartSystemdServiceStep', { + defaultMessage: + 'Start the Universal Profiling systemd service (requires root privileges):', + }), + content: ( - {collectionAgentHost} + {`sudo systemctl enable pf-host-agent && sudo systemctl restart pf-host-agent`} - - ), - }, - { - title: i18n.translate('xpack.profiling.tabs.elasticAgentIntegration.step2', { - defaultMessage: 'Fleet', - }), - content: ( - - {i18n.translate('xpack.profiling.tabs.elasticAgentIntegration.step2.button', { - defaultMessage: 'Manage Universal Profiling agent in Fleet', - })} - - ), - }, - ], - }, - { - key: AddDataTabs.Symbols, - title: i18n.translate('xpack.profiling.tabs.symbols.title', { - defaultMessage: 'Upload Symbols', - }), - steps: [ - { - title: i18n.translate('xpack.profiling.tabs.symbols.step1', { - defaultMessage: 'Download and extract symbtool', - }), - content: ( - - For x86_64: - + ), + }, + ], + }, + { + key: AddDataTabs.RPM, + title: i18n.translate('xpack.profiling.tabs.rpmTitle', { + defaultMessage: 'RPM Package', + }), + steps: [ + { + title: i18n.translate('xpack.profiling.tabs.rpmConfigureRepoStep', { + defaultMessage: 'Configure the yum repository (requires root privileges):', + }), + content: ( - {`wget -O symbtool-amd64.tgz "https://artifacts.elastic.co/downloads/prodfiler/symbtool-${stackVersion}-linux-x86_64.tar.gz" && tar xzf symbtool-amd64.tgz && cd symbtool-*-linux-x86_64`} + {`sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch + cat < /etc/yum.repos.d/elastic.repo + [elastic-${majorVersion}.x] + name=Elastic repository for ${majorVersion}.x packages + baseurl=https://artifacts.elastic.co/packages/${majorVersion}.x/yum + gpgcheck=1 + gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch + enabled=1 + autorefresh=1 + type=rpm-md + EOF`} - - For ARM64: - + ), + }, + { + title: i18n.translate('xpack.profiling.tabs.rpmInstallPackageStep', { + defaultMessage: 'Install the RPM package (requires root privileges):', + }), + content: ( - {`wget -O symbtool-arm64.tgz "https://artifacts.elastic.co/downloads/prodfiler/pf-host-agent-${stackVersion}-linux-arm64.tar.gz" && tar xzf symbtool-arm64.tgz && cd symbtool-*-linux-arm64`} + {`sudo yum install pf-host-agent`} - - ), - }, - { - title: i18n.translate('xpack.profiling.tabs.symbols.step2', { - defaultMessage: 'Generate an Elasticsearch token', - }), - content: ( - - - {i18n.translate('xpack.profiling.tabs.symbols.step2.instructions', { - defaultMessage: 'Instructions here', - })} - - - ), - }, - { - title: i18n.translate('xpack.profiling.tabs.symbols.step3', { - defaultMessage: 'Upload symbols', - }), - content: ( -
+ ), + }, + { + title: i18n.translate('xpack.profiling.tabs.rpmEditConfigStep', { + defaultMessage: 'Edit the configuration (requires root privileges):', + }), + content: ( - {`./symbtool push-symbols executable -u "${symbolUrl}" -t -e `} + {`echo -e "project-id 1\nsecret-token ${secretToken}\ncollection-agent ${collectionAgentHost}" | sudo tee -a /etc/Elastic/universal-profiling/pf-host-agent.conf`} - - - {``}, - help: --help, - }} - /> - - - - - {i18n.translate('xpack.profiling.tabs.symbols.step3.doc-ref.link', { - defaultMessage: 'the corresponding documentation page', - })} - - ), - }} - /> - -
- ), - }, - ], - }, - ]; + ), + }, + { + title: i18n.translate('xpack.profiling.tabs.rpmStartSystemdServiceStep', { + defaultMessage: + 'Start the Universal Profiling systemd service (requires root privileges):', + }), + content: ( + + {`sudo systemctl enable pf-host-agent && sudo systemctl restart pf-host-agent`} + + ), + }, + ], + }, + { + key: AddDataTabs.ElasticAgentIntegration, + title: i18n.translate('xpack.profiling.tabs.elasticAgentIntegration.title', { + defaultMessage: 'Elastic Agent Integration', + }), + steps: [ + { + title: i18n.translate('xpack.profiling.tabs.elasticAgentIntegration.step1', { + defaultMessage: 'Copy credentials', + }), + content: ( + <> + + {i18n.translate('xpack.profiling.tabs.elasticAgentIntegration.step1.hint', { + defaultMessage: + "You'll need these credentials to set up Universal Profiling. Please save them in a secure location, as they will be required in the subsequent step.", + })} + + + + {i18n.translate( + 'xpack.profiling.tabs.elasticAgentIntegration.step1.secretToken', + { + defaultMessage: 'Secret token:', + } + )} + + + {secretToken} + + + + {i18n.translate( + 'xpack.profiling.tabs.elasticAgentIntegration.step1.collectionAgentUrl', + { defaultMessage: 'Universal Profiling Collector URL:' } + )} + + + {collectionAgentHost} + + + ), + }, + { + title: i18n.translate('xpack.profiling.tabs.elasticAgentIntegration.step2', { + defaultMessage: 'Fleet', + }), + content: ( + + {i18n.translate('xpack.profiling.tabs.elasticAgentIntegration.step2.button', { + defaultMessage: 'Manage Universal Profiling agent in Fleet', + })} + + ), + }, + ], + }, + { + key: AddDataTabs.Symbols, + title: i18n.translate('xpack.profiling.tabs.symbols.title', { + defaultMessage: 'Upload Symbols', + }), + subTabs: supportedCPUArchitectures.map((arch) => { + return { + key: arch, + title: `Linux ${arch}`, + // inside each sub tab you define the steps as usual + steps: [ + { + title: i18n.translate('xpack.profiling.tabs.symbols.step1', { + defaultMessage: 'Download and extract symbtool', + }), + content: ( + + {`wget -O symbtool-${arch}.tgz "https://artifacts.elastic.co/downloads/prodfiler/symbtool-${stackVersion}-linux-${arch}.tar.gz" && tar xzf symbtool-${arch}.tgz && cd symbtool-${stackVersion}-linux-${arch}`} + + ), + }, + { + title: i18n.translate('xpack.profiling.tabs.symbols.step2', { + defaultMessage: 'Generate an Elasticsearch token', + }), + content: ( + + + {i18n.translate('xpack.profiling.tabs.symbols.step2.instructions', { + defaultMessage: 'Instructions here', + })} + + + ), + }, + { + title: i18n.translate('xpack.profiling.tabs.symbols.step3', { + defaultMessage: 'Upload symbols', + }), + content: ( +
+ + {`./symbtool push-symbols executable -u "${symbolUrl}" -t -e `} + + + + {``}, + help: ( + + {i18n.translate('xpack.profiling.tabs.symbols.helpFlag', { + defaultMessage: '--help', + })} + + ), + }} + /> + + + + + {i18n.translate('xpack.profiling.tabs.symbols.step3.doc-ref.link', { + defaultMessage: 'the corresponding documentation page', + })} + + ), + }} + /> + +
+ ), + }, + ], + }; + }), + }, + ], + [ + collectionAgentHost, + core.docLinks.DOC_LINK_VERSION, + core.docLinks.ELASTIC_WEBSITE_URL, + core.http.basePath, + data?.profilerAgent.version, + majorVersion, + secretToken, + stackVersion, + symbolUrl, + ] + ); - const displayedTab = tabs.find((tab) => tab.key === selectedTab)!; + const displayedTab = useMemo( + () => tabs.find((tab) => tab.key === selectedTab)!, + [selectedTab, tabs] + ); - const displayedSteps = displayedTab.steps ?? []; + useEffect(() => { + if (displayedTab.subTabs) { + const firstTabKey = displayedTab.subTabs[0].key; + setSelectedSubTabKey(firstTabKey); + } + }, [displayedTab]); + + const selectedSubTab = selectedSubTabKey + ? displayedTab.subTabs?.find((tab) => tab.key === selectedSubTabKey) + : undefined; + + const displayedSteps = displayedTab.steps || selectedSubTab?.steps || []; + const subTabs = displayedTab.subTabs ?? []; const isLoading = status === AsyncStatus.Loading; @@ -489,10 +543,23 @@ EOF`} id="xpack.profiling.tabs.debWarning" defaultMessage="Due to a {linuxLink} which impacts stability, the profiling agent will refuse to run on kernel versions {versionFrom} to {versionTo}. Refer to {debianLink} and {fedoraLink} to learn more. If you are running such a kernel with a backported fix, please refer to {advancedLink} for instructions to override the precautionary measure." values={{ - versionFrom: 5.19, - versionTo: 6.4, + versionFrom: ( + + {i18n.translate('xpack.profiling.tabs.strong.5.19Label', { + defaultMessage: '5.19', + })} + + ), + versionTo: ( + + {i18n.translate('xpack.profiling.tabs.strong.6.4Label', { + defaultMessage: '6.4', + })} + + ), linuxLink: ( @@ -503,6 +570,7 @@ EOF`} ), debianLink: ( @@ -513,6 +581,7 @@ EOF`} ), fedoraLink: ( @@ -523,6 +592,7 @@ EOF`} ), advancedLink: ( @@ -538,7 +608,7 @@ EOF`} {i18n.translate('xpack.profiling.noDataPage.addDataTitle', { - defaultMessage: 'Select an option below to deploy the host-agent.', + defaultMessage: 'Select an option below to deploy the Universal Profiling Agent.', })} @@ -565,16 +635,36 @@ EOF`} + + {subTabs.length > 0 && ( + + {subTabs.map((tab) => { + return ( + { + setSelectedSubTabKey(tab.key); + }} + isSelected={tab.key === selectedSubTabKey} + > + {tab.title} + + ); + })} + + )} - { - return { - title: step.title, - children: step.content, - status: 'incomplete', - }; - })} - /> + {displayedSteps.length > 0 && ( + { + return { + title: step.title, + children: step.content, + status: 'incomplete', + }; + })} + /> + )} diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 0baf9a322800f..022a7b0f6a02e 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -28172,8 +28172,6 @@ "xpack.profiling.maxValue": "Max : {max}", "xpack.profiling.noDataConfig.action.dataRetention": "Les coûts normaux de stockage des données s'appliquent aux données de profilage stockées dans Elasticsearch. En savoir plus sur {dataRetentionLink}.", "xpack.profiling.stackFrames.subChart.avg": "{percentage} moy.", - "xpack.profiling.tabs.symbols.step3.doc-ref": "Une documentation pour des cas d’utilisation plus avancés est disponible dans {link}.", - "xpack.profiling.tabs.symbols.step3.replace": "Remplacez {es_token} etc. avec les valeurs réelles. Vous pouvez transmettre {help} pour obtenir une liste d’autres arguments.", "xpack.profiling.appPageTemplate.pageTitle": "Universal Profiling", "xpack.profiling.asyncComponent.errorLoadingData": "Impossible de charger les données", "xpack.profiling.breadcrumb.differentialFlamegraph": "Flame-graph différentiel", @@ -28286,14 +28284,6 @@ "xpack.profiling.stackTracesView.stackTracesCountButton": "Traces de la pile", "xpack.profiling.stackTracesView.threadsTabLabel": "Threads", "xpack.profiling.stackTracesView.tracesTabLabel": "Traces", - "xpack.profiling.tabs.binaryDownloadStep": "Télécharger le dernier binaire :", - "xpack.profiling.tabs.binaryGrantPermissionStep": "Accorder des autorisations d'exécution :", - "xpack.profiling.tabs.binaryRunHostAgentStep": "Exécuter l'agent hôte Universal Profiling (requiert des privilèges racine) :", - "xpack.profiling.tabs.binaryTitle": "Binaire", - "xpack.profiling.tabs.debEditConfigStep": "Modifier la configuration (requiert des privilèges racine) :", - "xpack.profiling.tabs.debInstallPackageStep": "Installer le pack DEB (requiert des privilèges racine) :", - "xpack.profiling.tabs.debStartSystemdServiceStep": "Démarrer le service systemd Universal Profiling (requiert des privilèges racine) :", - "xpack.profiling.tabs.debTitle": "Pack DEB", "xpack.profiling.tabs.dockerRunContainerStep": "Exécuter le conteneur Universal Profiling :", "xpack.profiling.tabs.dockerTitle": "Docker", "xpack.profiling.tabs.kubernetesInstallStep": "Installer l'agent hôte via Helm :", @@ -28301,16 +28291,6 @@ "xpack.profiling.tabs.kubernetesTitle": "Kubernetes", "xpack.profiling.tabs.kubernetesValidationStep": "Confirmer que les pods de l'agent hôte sont en cours d'exécution :", "xpack.profiling.tabs.postValidationStep": "Utiliser la sortie d'installation Helm pour obtenir les logs de l'agent hôte et repérer les erreurs potentielles", - "xpack.profiling.tabs.rpmEditConfigStep": "Modifier la configuration (requiert des privilèges racine) :", - "xpack.profiling.tabs.rpmInstallPackageStep": "Installer le pack RPM (requiert des privilèges racine) :", - "xpack.profiling.tabs.rpmStartSystemdServiceStep": "Démarrer le service systemd Universal Profiling (requiert des privilèges racine) :", - "xpack.profiling.tabs.rpmTitle": "Pack RPM", - "xpack.profiling.tabs.symbols.step1": "Télécharger et extraire un symbtool", - "xpack.profiling.tabs.symbols.step2": "Générer un token Elasticsearch", - "xpack.profiling.tabs.symbols.step2.instructions": "Instructions disponibles ici", - "xpack.profiling.tabs.symbols.step3": "Charger les symboles", - "xpack.profiling.tabs.symbols.step3.doc-ref.link": "la page de documentation correspondante", - "xpack.profiling.tabs.symbols.title": "Charger les symboles", "xpack.profiling.topn.otherBucketLabel": "Autre", "xpack.profiling.universalProfiling": "Universal Profiling", "xpack.profiling.zeroSeconds": "0 seconde", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 25a57299350a2..48bd737e9353b 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -28172,8 +28172,6 @@ "xpack.profiling.maxValue": "最大:{max}", "xpack.profiling.noDataConfig.action.dataRetention": "Elasticsearchに格納されたプロファイリングデータには、標準データ保存コストが適用されます。{dataRetentionLink}の詳細をご覧ください。", "xpack.profiling.stackFrames.subChart.avg": "平均:{percentage}", - "xpack.profiling.tabs.symbols.step3.doc-ref": "高度なユースケースのドキュメントは{link}で提供されています。", - "xpack.profiling.tabs.symbols.step3.replace": "{es_token}などを実際の値で置換します。{help}を渡すと、他の引数のリストを取得できます。", "xpack.profiling.appPageTemplate.pageTitle": "ユニバーサルプロファイリング", "xpack.profiling.asyncComponent.errorLoadingData": "データを読み込めませんでした", "xpack.profiling.breadcrumb.differentialFlamegraph": "差分flamegraph", @@ -28286,14 +28284,6 @@ "xpack.profiling.stackTracesView.stackTracesCountButton": "スタックトレース", "xpack.profiling.stackTracesView.threadsTabLabel": "スレッド", "xpack.profiling.stackTracesView.tracesTabLabel": "トレース", - "xpack.profiling.tabs.binaryDownloadStep": "最新のバイナリをダウンロード:", - "xpack.profiling.tabs.binaryGrantPermissionStep": "実行可能権限を付与:", - "xpack.profiling.tabs.binaryRunHostAgentStep": "ユニバーサルプロファイリングホストエージェントを実行(ルート権限が必要):", - "xpack.profiling.tabs.binaryTitle": "バイナリー", - "xpack.profiling.tabs.debEditConfigStep": "構成を編集(ルート権限が必要):", - "xpack.profiling.tabs.debInstallPackageStep": "DEBパッケージをインストール(ルート権限が必要):", - "xpack.profiling.tabs.debStartSystemdServiceStep": "ユニバーサルプロファイリングシステムサービスを開始(ルート権限が必要):", - "xpack.profiling.tabs.debTitle": "DEBパッケージ", "xpack.profiling.tabs.dockerRunContainerStep": "ユニバーサルプロファイリングコンテナーを実行:", "xpack.profiling.tabs.dockerTitle": "Docker", "xpack.profiling.tabs.kubernetesInstallStep": "Helm経由でホストエージェントをインストール:", @@ -28301,16 +28291,6 @@ "xpack.profiling.tabs.kubernetesTitle": "Kubernetes", "xpack.profiling.tabs.kubernetesValidationStep": "ホストエージェントポッドが実行中であることを検証:", "xpack.profiling.tabs.postValidationStep": "Helmインストール出力を使用して、ホストエージェントログを取得し、潜在的なエラーを特定", - "xpack.profiling.tabs.rpmEditConfigStep": "構成を編集(ルート権限が必要):", - "xpack.profiling.tabs.rpmInstallPackageStep": "RPMパッケージをインストール(ルート権限が必要):", - "xpack.profiling.tabs.rpmStartSystemdServiceStep": "ユニバーサルプロファイリングシステムサービスを開始(ルート権限が必要):", - "xpack.profiling.tabs.rpmTitle": "RPMパッケージ", - "xpack.profiling.tabs.symbols.step1": "symbtoolをダウンロードして展開", - "xpack.profiling.tabs.symbols.step2": "Elasticsearchトークンを生成", - "xpack.profiling.tabs.symbols.step2.instructions": "手順", - "xpack.profiling.tabs.symbols.step3": "シンボルをアップロード", - "xpack.profiling.tabs.symbols.step3.doc-ref.link": "対応するドキュメントページ", - "xpack.profiling.tabs.symbols.title": "シンボルをアップロード", "xpack.profiling.topn.otherBucketLabel": "その他", "xpack.profiling.universalProfiling": "ユニバーサルプロファイリング", "xpack.profiling.zeroSeconds": "0秒", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 0523a6a2390ca..c2a17f65ea13a 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -28170,8 +28170,6 @@ "xpack.profiling.maxValue": "最大值:{max}", "xpack.profiling.noDataConfig.action.dataRetention": "分析 Elasticsearch 中存储的数据时,正常数据存储成本适用。详细了解 {dataRetentionLink}。", "xpack.profiling.stackFrames.subChart.avg": "平均 {percentage}", - "xpack.profiling.tabs.symbols.step3.doc-ref": "{link} 中提供了更高级用例的文档。", - "xpack.profiling.tabs.symbols.step3.replace": "用实际值替代 {es_token} 等。您可以传递 {help} 以获取其他参数列表。", "xpack.profiling.appPageTemplate.pageTitle": "Universal Profiling", "xpack.profiling.asyncComponent.errorLoadingData": "无法加载数据", "xpack.profiling.breadcrumb.differentialFlamegraph": "差异火焰图", @@ -28284,14 +28282,6 @@ "xpack.profiling.stackTracesView.stackTracesCountButton": "堆栈跟踪", "xpack.profiling.stackTracesView.threadsTabLabel": "线程", "xpack.profiling.stackTracesView.tracesTabLabel": "追溯", - "xpack.profiling.tabs.binaryDownloadStep": "下载最新二进制文件:", - "xpack.profiling.tabs.binaryGrantPermissionStep": "授予可执行权限:", - "xpack.profiling.tabs.binaryRunHostAgentStep": "运行 Universal Profiling 主机代理(需要根权限):", - "xpack.profiling.tabs.binaryTitle": "二进制", - "xpack.profiling.tabs.debEditConfigStep": "编辑配置(需要根权限):", - "xpack.profiling.tabs.debInstallPackageStep": "安装 DEB 软件包(需要根权限):", - "xpack.profiling.tabs.debStartSystemdServiceStep": "启动 Universal Profiling systemd 服务(需要根权限):", - "xpack.profiling.tabs.debTitle": "DEB 软件包", "xpack.profiling.tabs.dockerRunContainerStep": "运行 Universal Profiling 容器:", "xpack.profiling.tabs.dockerTitle": "Docker", "xpack.profiling.tabs.kubernetesInstallStep": "通过 Helm 安装主机代理:", @@ -28299,16 +28289,6 @@ "xpack.profiling.tabs.kubernetesTitle": "Kubernetes", "xpack.profiling.tabs.kubernetesValidationStep": "验证主机代理 Pod 是否正在运行:", "xpack.profiling.tabs.postValidationStep": "使用 Helm 安装输出以获取主机代理日志并发现潜在错误", - "xpack.profiling.tabs.rpmEditConfigStep": "编辑配置(需要根权限):", - "xpack.profiling.tabs.rpmInstallPackageStep": "安装 RPM 软件包(需要根权限):", - "xpack.profiling.tabs.rpmStartSystemdServiceStep": "启动 Universal Profiling systemd 服务(需要根权限):", - "xpack.profiling.tabs.rpmTitle": "RPM 软件包", - "xpack.profiling.tabs.symbols.step1": "下载并提取 symbtool", - "xpack.profiling.tabs.symbols.step2": "生成 Elasticsearch 令牌", - "xpack.profiling.tabs.symbols.step2.instructions": "此处提供了说明", - "xpack.profiling.tabs.symbols.step3": "上传符号", - "xpack.profiling.tabs.symbols.step3.doc-ref.link": "对应的文档页面", - "xpack.profiling.tabs.symbols.title": "上传符号", "xpack.profiling.topn.otherBucketLabel": "其他", "xpack.profiling.universalProfiling": "Universal Profiling", "xpack.profiling.zeroSeconds": "0 秒",