diff --git a/x-pack/solutions/observability/plugins/observability_onboarding/public/assets/auto_detect.sh b/x-pack/solutions/observability/plugins/observability_onboarding/public/assets/auto_detect.sh index 009b5821606a3..001611d771c53 100755 --- a/x-pack/solutions/observability/plugins/observability_onboarding/public/assets/auto_detect.sh +++ b/x-pack/solutions/observability/plugins/observability_onboarding/public/assets/auto_detect.sh @@ -310,9 +310,14 @@ apply_elastic_agent_config() { # Remove existing config file including `inputs.d` directory rm -rf "$elastic_agent_config_path" "$(dirname "$elastic_agent_config_path")/inputs.d" && # Extract new config files from downloaded archive - tar --extract --file "$elastic_agent_tmp_config_path" --directory "$(dirname "$elastic_agent_config_path")" && + tar --extract --file "$elastic_agent_tmp_config_path" --directory "$(dirname "$elastic_agent_config_path")" # Replace placeholder with the Ingest API key - sed -i='' "s/\${API_KEY}/$decoded_ingest_api_key/" "$elastic_agent_config_path" + if [ "${OS}" == "Linux" ]; then + sed -i "s/\${API_KEY}/$decoded_ingest_api_key/" "$elastic_agent_config_path" + else + # macOS requires an empty string for the backup extension + sed -i '' "s/\${API_KEY}/$decoded_ingest_api_key/" "$elastic_agent_config_path" + fi if [ "$?" -eq 0 ]; then printf "\e[32;1m✓\e[0m %s\n" "Config files written to:" while IFS= read -r file; do diff --git a/x-pack/solutions/observability/plugins/observability_onboarding/server/routes/flow/route.ts b/x-pack/solutions/observability/plugins/observability_onboarding/server/routes/flow/route.ts index d67fc15de0fce..38f4405bb7807 100644 --- a/x-pack/solutions/observability/plugins/observability_onboarding/server/routes/flow/route.ts +++ b/x-pack/solutions/observability/plugins/observability_onboarding/server/routes/flow/route.ts @@ -12,7 +12,7 @@ import { FleetUnauthorizedError, type PackageClient, } from '@kbn/fleet-plugin/server'; -import { safeDump } from 'js-yaml'; +import { safeLoad, safeDump } from 'js-yaml'; import { PackageDataStreamTypes, Output } from '@kbn/fleet-plugin/common/types'; import { transformOutputToFullPolicyOutput } from '@kbn/fleet-plugin/server/services/output_client'; import { OBSERVABILITY_ONBOARDING_TELEMETRY_EVENT } from '../../../common/telemetry_events'; @@ -454,7 +454,10 @@ async function ensureInstalledIntegrations( if (installSource === 'registry') { const installation = await packageClient.ensureInstalledPackage({ pkgName }); const pkg = installation.package; - const config = await packageClient.getAgentPolicyConfigYAML(pkg.name, pkg.version); + const config = filterUnsupportedInputs( + await packageClient.getAgentPolicyConfigYAML(pkg.name, pkg.version) + ); + const { packageInfo } = await packageClient.getPackage(pkg.name, pkg.version); return { @@ -525,6 +528,21 @@ async function ensureInstalledIntegrations( ); } +function filterUnsupportedInputs(policyYML: string): string { + const policy = safeLoad(policyYML); + + if (!policy) { + return policyYML; + } + + return safeDump({ + ...policy, + inputs: (policy.inputs || []).filter((input: any) => { + return input.type !== 'httpjson'; + }), + }); +} + /** * Parses and validates a TSV (tab-separated values) string of integrations with params. *