Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch apm integration package to input-only package #11529

Closed
simitt opened this issue Aug 30, 2023 · 32 comments
Closed

Switch apm integration package to input-only package #11529

simitt opened this issue Aug 30, 2023 · 32 comments
Assignees
Milestone

Comments

@simitt
Copy link
Contributor

simitt commented Aug 30, 2023

Migrate the APM integration package to become an input-only package (elastic/package-spec#319), meaning that the package would not define any data streams.

This can only be done once #11528 is implemented.

@simitt simitt added this to the 8.11 milestone Aug 30, 2023
@simitt simitt changed the title Switch apm integration package to inpu-only package Switch apm integration package to input-only package Aug 30, 2023
@axw axw mentioned this issue Nov 17, 2023
1 task
@simitt simitt modified the milestones: 8.11, 8.13 Dec 5, 2023
@axw
Copy link
Member

axw commented Dec 16, 2023

We should take a staged approach to minimise risk:

  • Enable the plugin in Serverless QA, concurrently with the APM Fleet integration package. This will build confidence that enabling the plugin doesn't break anything, but we will continue relying on the integration package for the templates & pipelines.
  • Disable the integration package in QA, so we start relying on the plugin for index templates & pipelines. One complication here is that the Serverless Kibana config files (e.g. https://github.com/elastic/kibana/blob/main/config/serverless.oblt.yml) are not environment-specific, so we'll need to do something about that.
  • Repeat above steps for non-QA environments.
  • Enable the plugin by default in Elasticsearch.
  • Remove the data stream definitions from the integration package.

In the end we should still have the integration installed for non-Serverless, but not in any Serverless environments. For steps 4 and 5, we can test locally in apm-server by adapting #12066.

Some other things require further thought and discussion before going all the way with rolling this out to non-Serverless:

@axw
Copy link
Member

axw commented Jan 9, 2024

This change would break existing ILM customisation

I'm not 100% sure about this now. If ILM overrides DSL then it's not breaking, will need to look into this some more.

index.lifecycle.prefer_ilm (defaults to true) controls whether ILM takes precedence. So I think we're good here, but we should confirm with some testing.

EDIT: confirmed that the existing instructions still work, even with DSL enabled. So, that's pretty great - we can make this change first and update the instructions later to cover both DSL (simple) and ILM (advanced).

@axw
Copy link
Member

axw commented Jan 10, 2024

Enable the plugin in Serverless QA

Requires https://elasticco.atlassian.net/browse/CP-5487

@axw
Copy link
Member

axw commented Jan 12, 2024

Enabled in serverless QA:

image

@axw
Copy link
Member

axw commented Jan 18, 2024

Integration package disabled in QA, running tests now. (Notice that there are no @package templates, like there are in the screenshot above.)

image

axw added a commit to elastic/kibana that referenced this issue Jan 30, 2024
## Summary

We will depend on the apm-data Elasticsearch plugin for setting up index
templates and ingest pipelines. We have been testing this in serverless
dev and QA with config overrides -- this is just final step to roll it
out to all environments.

See elastic/apm-server#11529
@axw
Copy link
Member

axw commented Jan 30, 2024

The apm-data plugin is enabled in all serverless environments, and disabling the integration package will roll out soon.

nreese pushed a commit to nreese/kibana that referenced this issue Jan 31, 2024
## Summary

We will depend on the apm-data Elasticsearch plugin for setting up index
templates and ingest pipelines. We have been testing this in serverless
dev and QA with config overrides -- this is just final step to roll it
out to all environments.

See elastic/apm-server#11529
WafaaNasr pushed a commit to WafaaNasr/kibana that referenced this issue Feb 5, 2024
## Summary

We will depend on the apm-data Elasticsearch plugin for setting up index
templates and ingest pipelines. We have been testing this in serverless
dev and QA with config overrides -- this is just final step to roll it
out to all environments.

See elastic/apm-server#11529
WafaaNasr pushed a commit to WafaaNasr/kibana that referenced this issue Feb 6, 2024
## Summary

We will depend on the apm-data Elasticsearch plugin for setting up index
templates and ingest pipelines. We have been testing this in serverless
dev and QA with config overrides -- this is just final step to roll it
out to all environments.

See elastic/apm-server#11529
@kruskall
Copy link
Member

kruskall commented Feb 6, 2024

@axw do we still need the grok processor to perform the version check in apm package ?

@axw
Copy link
Member

axw commented Feb 7, 2024

@kruskall when the package is input-only we won't need or use the grok processor anymore

@axw
Copy link
Member

axw commented Feb 7, 2024

The integration package is no longer installed in any of the serverless environments. We'll let this soak for a bit, but I think we can now look towards enabling the plugin by default in Elasticsearch and then removing the data stream definitions from the integration package - probably for 8.14+.

@simitt simitt modified the milestones: 8.13, 8.14 Feb 7, 2024
CoenWarmer pushed a commit to CoenWarmer/kibana that referenced this issue Feb 15, 2024
## Summary

We will depend on the apm-data Elasticsearch plugin for setting up index
templates and ingest pipelines. We have been testing this in serverless
dev and QA with config overrides -- this is just final step to roll it
out to all environments.

See elastic/apm-server#11529
CoenWarmer pushed a commit to CoenWarmer/kibana that referenced this issue Feb 15, 2024
## Summary

We will depend on the apm-data Elasticsearch plugin for setting up index
templates and ingest pipelines. We have been testing this in serverless
dev and QA with config overrides -- this is just final step to roll it
out to all environments.

See elastic/apm-server#11529
@endorama
Copy link
Member

I just opened #13181 to keep track of an undesired Kibana behavior when upgrading an integration package where data streams have been removed. This can be considered a blocker for step 5 mentioned in this comment as it would not mean removing the index template already created.

@axw
Copy link
Member

axw commented May 20, 2024

An alternative to #13181 would be to increase the priority of the apm-data index templates over the integration package. Doesn't seem ideal, since we should be able to clean up those old index templates, but it's an option to unblock.

@endorama
Copy link
Member

@axw old index templates could be deleted by removing the integration though, but is it desirable?

We already move forward with increasing the priorities in elastic/elasticsearch#108885.
To my understanding that change now enables this upgrade workflow:

  1. install the plugin
  2. start Elasticsearch & leverage the updated templates
  3. remove the integration once confirmed everything works
  4. reinstall the integration

What do you think?

What is the versioning strategy for the plugin? If it's bundled with Elasticsearch (which is my understanding) we need to be careful if we break compatibility between integration index templates and plugin index templates (as the migration path above may not work). Also do removing the plugin removes index templates installed by it?

@axw
Copy link
Member

axw commented May 23, 2024

To my understanding that change now enables this upgrade workflow:

  1. install the plugin

This is not necessary, it's part of Elasticsearch and now enabled by default.

  1. start Elasticsearch & leverage the updated templates
  2. remove the integration once confirmed everything works
  3. reinstall the integration

What do you think?

What's the reason for removing and reinstalling the integration?

I think what we should do is:

  1. Create an 8.14.x stack
  2. Ingest some APM data using APM Server
  3. Upgrade the stack & APM Server to 8.15.0-SNAPSHOT
  4. Ingest some more APM data using APM Server

We'll need to check that this rolls over the existing data streams, and starts using the new index templates.

What is the versioning strategy for the plugin? If it's bundled with Elasticsearch (which is my understanding) we need to be careful if we break compatibility between integration index templates and plugin index templates (as the migration path above may not work).

It's part of ES, it doesn't have any specific versioning. Regarding backwards compatibility: a similar issue exists with integration packages, and the ingest pipelines are expected to "upgrade" data from older agents.

We'll need to do this in the apm-data provided ingest pipeline too. That's why, for example, this part exists: https://github.com/elastic/elasticsearch/blob/7f35f1bed0a8f82466b3354bbd5935386839e311/x-pack/plugin/apm-data/src/main/resources/ingest-pipelines/metrics-apm.internal%40default-pipeline.yaml#L13-L27

Also do removing the plugin removes index templates installed by it?

You can't remove the plugin. You can disable it, but I'm pretty sure it won't delete the index templates.

@axw
Copy link
Member

axw commented May 23, 2024

@endorama
Copy link
Member

@axw thanks for the additional details! That clarifies

What's the reason for removing and reinstalling the integration?

Do we expect users upgrading from older version to retain the integrations index templates forever? I see some additional burden for troubleshooting or avenues for bugs by doing that. As removing the integration would remove the assets the idea was to leverage that to clean up older index templates.

I think what we should do is:
Create an 8.14.x stack
Ingest some APM data using APM Server
Upgrade the stack & APM Server to 8.15.0-SNAPSHOT
Ingest some more APM data using APM Server

I'll proceed with testing this scenario.

@axw
Copy link
Member

axw commented May 24, 2024

Do we expect users upgrading from older version to retain the integrations index templates forever? I see some additional burden for troubleshooting or avenues for bugs by doing that. As removing the integration would remove the assets the idea was to leverage that to clean up older index templates.

We shouldn't expect them to keep it, but we should expect that some users will not know they should uninstall it. So we should probably test both with and without uninstalling the integration package.

@endorama
Copy link
Member

endorama commented May 24, 2024

Today I run this scenario:

  • start 8.14 stack (from apm-server repo 8.14 branch, using docker-compose edited with data persistence)
  • ingest data with apmsoak
  • stop stack
  • switch to main branch and start stack again

and encountered this error:

[2024-05-24T14:46:30.570+00:00][INFO ][plugins.fleet] Attempt to update the mappings for the metrics-apm.transaction.1m-default (write_index_only)
[2024-05-24T14:46:30.586+00:00][INFO ][plugins.fleet] Mappings update for metrics-apm.transaction.1m-default failed due to ResponseError: illegal_argument_exception
     Root causes:
             illegal_argument_exception: Mapper for [metricset.interval] conflicts with existing mapper:
     Cannot update parameter [value] from [1m] to [null]
[2024-05-24T14:46:30.586+00:00][INFO ][plugins.fleet] Triggering a rollover for metrics-apm.transaction.1m-default
[2024-05-24T14:46:30.587+00:00][INFO ][plugins.fleet] Attempt to update the mappings for the metrics-apm.service_destination.1m-default (write_index_only)
[2024-05-24T14:46:30.588+00:00][INFO ][plugins.fleet] Attempt to update the mappings for the metrics-apm.service_transaction.60m-default (write_index_only)
[2024-05-24T14:46:30.589+00:00][INFO ][plugins.fleet] Attempt to update the mappings for the metrics-apm.transaction.60m-default (write_index_only)
[2024-05-24T14:46:30.597+00:00][INFO ][plugins.fleet] Attempt to update the mappings for the traces-apm-default (write_index_only)
[2024-05-24T14:46:30.599+00:00][INFO ][plugins.fleet] Mappings update for metrics-apm.service_transaction.60m-default failed due to ResponseError: illegal_argument_exception
     Root causes:
             illegal_argument_exception: Mapper for [metricset.interval] conflicts with existing mapper:
     Cannot update parameter [value] from [60m] to [null]
[2024-05-24T14:46:30.599+00:00][INFO ][plugins.fleet] Triggering a rollover for metrics-apm.service_transaction.60m-default
[2024-05-24T14:46:30.600+00:00][INFO ][plugins.fleet] Attempt to update the mappings for the metrics-apm.app.opbeans_python-default (write_index_only)
[2024-05-24T14:46:30.603+00:00][INFO ][plugins.fleet] Attempt to update the mappings for the metrics-apm.service_destination.10m-default (write_index_only)
[2024-05-24T14:46:30.609+00:00][INFO ][plugins.fleet] Attempt to update the mappings for the metrics-apm.service_destination.60m-default (write_index_only)
[2024-05-24T14:46:30.614+00:00][INFO ][plugins.fleet] Attempt to update the mappings for the metrics-apm.service_transaction.10m-default (write_index_only)
[2024-05-24T14:46:30.616+00:00][INFO ][plugins.fleet] Attempt to update the mappings for the metrics-apm.service_summary.1m-default (write_index_only)
[2024-05-24T14:46:30.621+00:00][INFO ][plugins.fleet] Attempt to update the mappings for the metrics-apm.service_transaction.1m-default (write_index_only)
[2024-05-24T14:46:30.627+00:00][INFO ][plugins.fleet] Mappings update for metrics-apm.transaction.60m-default failed due to ResponseError: illegal_argument_exception
     Root causes:
             illegal_argument_exception: Mapper for [metricset.interval] conflicts with existing mapper:
     Cannot update parameter [value] from [60m] to [null]
[2024-05-24T14:46:30.627+00:00][INFO ][plugins.fleet] Triggering a rollover for metrics-apm.transaction.60m-default
[2024-05-24T14:46:30.630+00:00][INFO ][plugins.fleet] Attempt to update the mappings for the metrics-apm.service_summary.10m-default (write_index_only)
[2024-05-24T14:46:30.631+00:00][INFO ][plugins.fleet] Attempt to update the mappings for the metrics-apm.internal-default (write_index_only)
[2024-05-24T14:46:30.632+00:00][INFO ][plugins.fleet] Attempt to update the mappings for the logs-apm.error-default (write_index_only)
[2024-05-24T14:46:30.641+00:00][INFO ][plugins.fleet] Attempt to update the mappings for the metrics-apm.transaction.10m-default (write_index_only)
[2024-05-24T14:46:30.647+00:00][INFO ][plugins.fleet] Attempt to update the mappings for the metrics-apm.service_summary.60m-default (write_index_only)
[2024-05-24T14:46:30.658+00:00][INFO ][plugins.fleet] Mappings update for traces-apm-default failed due to ResponseError: illegal_argument_exception
     Root causes:
             illegal_argument_exception: can't merge a non object mapping [http.request.body] with an object mapping
[2024-05-24T14:46:30.658+00:00][INFO ][plugins.fleet] Triggering a rollover for traces-apm-default
[2024-05-24T14:46:30.660+00:00][INFO ][plugins.fleet] Mappings update for metrics-apm.service_destination.60m-default failed due to ResponseError: illegal_argument_exception
     Root causes:
             illegal_argument_exception: Mapper for [metricset.interval] conflicts with existing mapper:
     Cannot update parameter [value] from [60m] to [null]
[2024-05-24T14:46:30.660+00:00][INFO ][plugins.fleet] Triggering a rollover for metrics-apm.service_destination.60m-default
[2024-05-24T14:46:30.661+00:00][INFO ][plugins.fleet] Mappings update for metrics-apm.service_transaction.10m-default failed due to ResponseError: illegal_argument_exception
     Root causes:
             illegal_argument_exception: Mapper for [metricset.interval] conflicts with existing mapper:
     Cannot update parameter [value] from [10m] to [null]
[2024-05-24T14:46:30.661+00:00][INFO ][plugins.fleet] Triggering a rollover for metrics-apm.service_transaction.10m-default
[2024-05-24T14:46:30.662+00:00][INFO ][plugins.fleet] Mappings update for metrics-apm.service_summary.1m-default failed due to ResponseError: illegal_argument_exception
     Root causes:
             illegal_argument_exception: Mapper for [metricset.interval] conflicts with existing mapper:
     Cannot update parameter [value] from [1m] to [null]
[2024-05-24T14:46:30.662+00:00][INFO ][plugins.fleet] Triggering a rollover for metrics-apm.service_summary.1m-default
[2024-05-24T14:46:30.664+00:00][INFO ][plugins.fleet] Mappings update for metrics-apm.service_destination.1m-default failed due to ResponseError: illegal_argument_exception
     Root causes:
             illegal_argument_exception: Mapper for [metricset.interval] conflicts with existing mapper:
     Cannot update parameter [value] from [1m] to [null]
[2024-05-24T14:46:30.664+00:00][INFO ][plugins.fleet] Triggering a rollover for metrics-apm.service_destination.1m-default
[2024-05-24T14:46:30.665+00:00][INFO ][plugins.fleet] Mappings update for metrics-apm.service_transaction.1m-default failed due to ResponseError: illegal_argument_exception
     Root causes:
             illegal_argument_exception: Mapper for [metricset.interval] conflicts with existing mapper:
     Cannot update parameter [value] from [1m] to [null]
[2024-05-24T14:46:30.665+00:00][INFO ][plugins.fleet] Triggering a rollover for metrics-apm.service_transaction.1m-default
[2024-05-24T14:46:30.729+00:00][INFO ][plugins.fleet] Mappings update for metrics-apm.service_destination.10m-default failed due to ResponseError: illegal_argument_exception
     Root causes:
             illegal_argument_exception: Mapper for [metricset.interval] conflicts with existing mapper:
     Cannot update parameter [value] from [10m] to [null]
[2024-05-24T14:46:30.729+00:00][INFO ][plugins.fleet] Triggering a rollover for metrics-apm.service_destination.10m-default
[2024-05-24T14:46:30.730+00:00][INFO ][plugins.fleet] Mappings update for logs-apm.error-default failed due to ResponseError: illegal_argument_exception
     Root causes:
             illegal_argument_exception: can't merge a non object mapping [error.exception.attributes] with an object mapping
[2024-05-24T14:46:30.731+00:00][INFO ][plugins.fleet] Triggering a rollover for logs-apm.error-default
[2024-05-24T14:46:30.732+00:00][INFO ][plugins.fleet] Mappings update for metrics-apm.service_summary.10m-default failed due to ResponseError: illegal_argument_exception
     Root causes:
             illegal_argument_exception: Mapper for [metricset.interval] conflicts with existing mapper:
     Cannot update parameter [value] from [10m] to [null]
[2024-05-24T14:46:30.732+00:00][INFO ][plugins.fleet] Triggering a rollover for metrics-apm.service_summary.10m-default
[2024-05-24T14:46:30.733+00:00][INFO ][plugins.fleet] Mappings update for metrics-apm.transaction.10m-default failed due to ResponseError: illegal_argument_exception
     Root causes:
             illegal_argument_exception: Mapper for [metricset.interval] conflicts with existing mapper:
     Cannot update parameter [value] from [10m] to [null]
[2024-05-24T14:46:30.733+00:00][INFO ][plugins.fleet] Triggering a rollover for metrics-apm.transaction.10m-default
[2024-05-24T14:46:30.734+00:00][INFO ][plugins.fleet] Mappings update for metrics-apm.service_summary.60m-default failed due to ResponseError: illegal_argument_exception
     Root causes:
             illegal_argument_exception: Mapper for [metricset.interval] conflicts with existing mapper:
     Cannot update parameter [value] from [60m] to [null]
[2024-05-24T14:46:30.734+00:00][INFO ][plugins.fleet] Triggering a rollover for metrics-apm.service_summary.60m-default
[2024-05-24T14:46:30.975+00:00][ERROR][plugins.fleet] FleetError: error deleting pipeline metrics-apm.service_transaction.10m-8.14.0-SNAPSHOT: ResponseError: illegal_argument_exception
     Root causes:
             illegal_argument_exception: pipeline [metrics-apm.service_transaction.10m-8.14.0-SNAPSHOT] cannot be deleted because it is the default pipeline for 1 index(es) including [.ds-metrics-apm.service_transaction.10m-default-2024.05.24-000001]
    at deletePipeline (/usr/share/kibana/node_modules/@kbn/fleet-plugin/server/services/epm/elasticsearch/ingest_pipeline/remove.js:56:15)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Promise.all (index 12)
    at deletePreviousPipelines (/usr/share/kibana/node_modules/@kbn/fleet-plugin/server/services/epm/elasticsearch/ingest_pipeline/remove.js:26:5)
    at _installPackage (/usr/share/kibana/node_modules/@kbn/fleet-plugin/server/services/epm/packages/_install_package.js:228:22)
    at installPackageCommon (/usr/share/kibana/node_modules/@kbn/fleet-plugin/server/services/epm/packages/install.js:495:12)
    at installPackageByUpload (/usr/share/kibana/node_modules/@kbn/fleet-plugin/server/services/epm/packages/install.js:786:12)
    at installPackage (/usr/share/kibana/node_modules/@kbn/fleet-plugin/server/services/epm/packages/install.js:836:24)
    at /usr/share/kibana/node_modules/@kbn/fleet-plugin/server/services/epm/packages/bulk_install_packages.js:86:27
    at async Promise.allSettled (index 0)
    at bulkInstallPackages (/usr/share/kibana/node_modules/@kbn/fleet-plugin/server/services/epm/packages/bulk_install_packages.js:54:30)
    at ensurePreconfiguredPackagesAndPolicies (/usr/share/kibana/node_modules/@kbn/fleet-plugin/server/services/preconfiguration.js:57:33)
    at createSetupSideEffects (/usr/share/kibana/node_modules/@kbn/fleet-plugin/server/services/setup.js:98:7)
    at awaitIfPending (/usr/share/kibana/node_modules/@kbn/fleet-plugin/server/services/setup_utils.js:35:20)
    at setupFleet (/usr/share/kibana/node_modules/@kbn/fleet-plugin/server/services/setup.js:47:12)
    at BackOff.fleetSetupPromise.numOfAttempts [as request] (/usr/share/kibana/node_modules/@kbn/fleet-plugin/server/plugin.js:396:11)

I then uninstalled the integration and restarted the stack and tried ingesting data with apmsoak, which worked as expected.

@simitt
Copy link
Contributor Author

simitt commented May 24, 2024

@endorama this error occurs when a constant_keyword is defined in the mapping and the value has already be set (either by the first document indexed, or by a concrete value in the mapping), followed by the attempt of upgrading to a mapping where no default value is set for the constant_keyword.

As a concrete example, for service_destination_1m the integration package specifies a constant_keyword and a concrete value, for metricset.interval https://github.com/elastic/integrations/blob/main/packages/apm/data_stream/service_destination_1m_metrics/fields/fields.yml#L5:L7.
Whereas the ES apm-data plugin does not specify a concrete value, but only the constant_keyword, see https://github.com/elastic/elasticsearch/blob/01c937cfa21208751d7b424bef2dcab9f1d5acc5/x-pack/plugin/apm-data/src/main/resources/component-templates/metrics-apm.service_destination%40mappings.yaml#L12.
Therefore the attempt to upgrade from the integration based mapping to the ES apm-data plugin fails.

To fix this, we will need to add per interval mappings with the concrete values defined. The ES behavior for this was confirmed by ES engineers a while ago when we ran into the same problem with Fleet managed integrations.

I suggest to also grep for any other constant_keyword definitions in the apm-data plugin and ensure values are set.

@endorama
Copy link
Member

To check if I understood: adding value: 1m in the apm-data plugin template would fix it for metrics.internal? And similarly adding value with the appropriate value would fix it for others. I'm preparing a PR for it.

@endorama
Copy link
Member

Opened elastic/elasticsearch#109043 to address the mentioned errors.

elasticsearchmachine pushed a commit to elastic/elasticsearch that referenced this issue May 27, 2024
While testing the upgrade path from 8.14 to 8.15 I noticed an
[unexpected mapping
error](elastic/apm-server#11529 (comment)).

This PR aims at solving it by adding a concrete value to
`metricset.interval` mappings as suggested
[here](elastic/apm-server#11529 (comment)).

Upon testing the upgrade path again the mentioned error did not present
themselves anymore.
@endorama
Copy link
Member

I prepared a PR to switch to input only package. There is a linter failure related to fields folder (and files) missing from the package, as the linter expect a package to always include mappings and index information. We don't need to provide those are they are in the apm-data plugin. I asked for advice in #integrations

A last resort approach could be to add the smallest possible fields.yml as any integration provided index template should not be used due to lower priority, but I'll wait a bit moving forward with this plan to see if there is a less confusing route.

@endorama
Copy link
Member

Upon suggestion in the channel I proceeded with adding the smallest fields.yml file possible and this unblocked my testing. But the UI is not working as expected. Good news (probably?) is that no index template has been created by that change and that should avoid possible future conflicts.

@axw
Copy link
Member

axw commented Jun 4, 2024

@endorama since things are working as-is without explicitly changing the package type, maybe we could just call this done. Is there some user-impacting effect of changing the package type at the moment?

@endorama
Copy link
Member

endorama commented Jun 4, 2024

@endorama since things are working as-is without explicitly changing the package type, maybe we could just call this done

That is my current conclusion as well,

Is there some user-impacting effect of changing the package type at the moment?

This is not 100% clear to me and I'm trying to confirm a couple of hypothesis I have on input packages.

I'm working to have more details soon & report back (hopefully today)

@endorama
Copy link
Member

endorama commented Jun 5, 2024

I'm going to recap my findings so far, before moving forward further.

TL;DR: the changes have further implications that what initially suggested by the scope of this task. As our current solution does not show any evident limitation I would suggest following the course suggested by @axw.

In these days I worked to answer a set of questions:

  • how complex it is to change the UI?
  • what are the benefits of this change?
  • do the unknowns related to APM UI have a clear boundary?

Input packages do not create index templates until the policy template included in them is used. They can be used from Kibana UI as other packages with a small caveat: incidentally all our currently available input packages are in Beta (this is determined due to their manifest version < 1.0.0) so they are not going to be shown by Kibana UI unless the specific flag is selected in the left column. Documentation around input package usage is also very sparse.
The apm package too uses a beta/pre-release version number (8.15.0-preview-<timestamp>) which makes it behave similarly. In addition there is a custom UI developed for the apm integration package forms for creating and editing policies (code) and a custom onboarding UI that shows up as APM integration in the Kibana integration view. The apm integration package is hidden from Kibana (unless installed, but I installed it through elastic-package so I wasn't able to confirm the same result would happen using the custom onboarding).

I tried editing the custom integration form but wasn't able to reach a complete working solution (creating policies works, editing policies don't but also don't trigger debug statements so maybe my understanding of code flows is still wrong). In addition to this issue I'm also concerned that the custom onboarding UI may break but I wasn't able to confirm if it's using policy variables or not and if yes where.

The only benefit I've been able to discover so far is the "lazy" creation of index templates, but with the current integration type we don't have any index template, so it doesn't look worth the effort.

To answer my initial questions:

  • Kibana development is a challenge, both code wise than performance wise: testing changes has a generally slow loop and overall complexity/indirection is high
  • the benefits for end users are not relevant
  • the unknowns may be limited to integration installation but the APM UI is extensive and installation/editing data model is designed around an integration package type. I've not been able to confirm the boundary is limited to this area.

@simitt
Copy link
Contributor Author

simitt commented Jun 5, 2024

Thanks for the investigation and writeup @endorama .
+1 on on not actually changing the type to input, but just treating the apm package as input only type, given that we moved out the index templates setup to ES plugin, and calling this done.

@axw
Copy link
Member

axw commented Jun 6, 2024

Sounds good, let's call this done then! Thank you for digging into it @endorama ❤️

@axw axw closed this as completed Jun 6, 2024
@endorama
Copy link
Member

endorama commented Jun 6, 2024

I've cleaned up the open PR related to this.

craigtaverner pushed a commit to craigtaverner/elasticsearch that referenced this issue Jun 11, 2024
While testing the upgrade path from 8.14 to 8.15 I noticed an
[unexpected mapping
error](elastic/apm-server#11529 (comment)).

This PR aims at solving it by adding a concrete value to
`metricset.interval` mappings as suggested
[here](elastic/apm-server#11529 (comment)).

Upon testing the upgrade path again the mentioned error did not present
themselves anymore.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants