Details
-
Feature Request
-
Resolution: Fixed
-
L3 - Default
-
None
-
None
-
None
Description
User story
We want to understand how many active Camunda projects[versions] are in use, and in what kind of technical environment they are used in so that we can make informed strategic decisions on how to improve the stability and performance of our products.
Background
Currently, we do not know how many active Camunda projects[product versions] are in use, and in what kind of technical environment they are used in.
We consider this to be essential telemetry as this information is crucial for us to further improve the stability and performance of our products, troubleshoot customer issues, increase customer success, and to make strategic decisions on how to best support our users in running successful Camunda projects.
AC
As PM/Engineer/Marketing, I can see
- how many Camunda projects[product versions] are active.
- Camunda version
- Webapps: Cockpit/Tasklist (if they are installed)
- in what technical environment they are used in
- app server vendor and version
- databases vendor and version
- JDK version (optional: vendor)
- how many process instances and decision tables these projects have executed (the pricing metrics we already collect)
- the count of the executed Java API commands per command
This information can be grouped by
- customer name (based on license key) to support our customers adopting Camunda projects successfully.
- Installation IDs (generated once and stored in the engine database, so that every subsequent telemetry call using that databases reuses the ID)
- timeframes (days, weeks, months..) (this does not need to be submitted by the client)
This information should be available for all supported Camunda versions.
Example ET Request
{ "installation": "b647de4d-e557-455a-a64f-feaecd55f53c", "product": { "name": "Camunda BPM Runtime", "version": "7.12.0", "edition": "community", (based on ee suffix in version) "internals": { "license-key": "key...", "webapps": ["cockpit", "tasklist"], "database": {"vendor": "postgres", "version": "12.2"}, "jdk": {"vendor": "Oracle", "version": "11"}, "application-server": {"vendor": "JBoss Wildfly", "version": "19"}, "metrics": {"root process instances": {"count": 5000}, "decision-instances": {"count": 10000}}, "commands": {"StartProcessInstanceCmd": {"count": 40}, "FetchExternalTasksCmd": {"count": 100}} } } }
Technical requirements:
Requirements are ordered roughly by priority
First increment
- Implemented product scope
- Collected data: Camunda version, installation id
- Nice to have: Database vendor and version
- Telemetry is deactivated by default
- The telemetry endpoint is configurable in the engine configuration with our current endpoint as the default value
- Similar to the metrics reporter, the process engine has a thread that makes telemetry requests in a configurable interval (every 24 hours)
- Submitting the telemetry must be fail-safe. It should not interfere with other engine operations. Even if the telemetry endpoint is not available, no log outputs should be written on INFO or higher.
- If telemetry is activated is stored as a property in the database
- I can set that via an engine configuration property (is applied as the default value if the property does not exist yet)
- It can be set via Java and REST API (admin permissions)
- The telemetry reporter thread regularly re-checks the property to (de-)activate transmission
Later increments
- Product scope: Remaining data
- I can activate debug logging to debug the telemetry reporter and to inspect the data it submits
- When a license is submitted, the customer name is written into the database. The telemetry reporter uses that for any subsequent telemetry requests.
- A command interceptor is used to count the executed commands
- There is a REST API endpoint to determine if telemetry is enabled (for use in the webapps)
- consideration: telemetry reporter to be able to deal with HTTP redirects if and when it's necessary
- the pings (request) on engine stop (and only) will require to define a timeout (default value tbd) so that the engine stop is not affected by the sending of the telemetry
- consideration: the database driver information could be retrieved as well via DatabaseMetaData
- submits first data on the start of the reporter if the reporter hasn't run in a while
- if the submit fail X (3) times, log a short message that something is wrong without stacktrace.
mgm-controller-panel
This is the controller panel for Smart Panels app
Attachments
Issue Links
- depends on
-
CAM-12108 Fix httpclient shading in the engine jar
- Closed
-
CAM-12406 initializeTelemetry property doesn't work in bpm-platform/standalone xml
- Closed
-
CAM-12412 Application server information is not fetch for telemetry in spring boot applications
- Closed
-
CAM-12426 Telemetry reporters in a cluster are not activated when telemetry is toggled
- Closed
-
CAM-12557 Intial telemetry report is sent during process engine close
- Closed
-
CAM-12020 I can configure telemetry endpoint via process engine configuration
- Closed
-
CAM-12021 Create telemetry "reporter"
- Closed
-
CAM-12023 I can enable telemetry via process engine configuration
- Closed
-
CAM-12024 In Java and Rest API, I can configure telemetry
- Closed
-
CAM-12025 The telemetry reporter considers the telemetry configuration
- Closed
-
CAM-12031 An installation id is stored in the database for each engine
- Closed
-
CAM-12078 Improve telemetry API in management service
- Closed
-
CAM-12022 Make telemetry submit a fail-safe
- Closed
-
CAM-12052 Document telemetry specifics to upgrade guide
- Closed
-
CAM-12069 Change the telemetry endpoint in engine configuration
- Closed
-
CAM-12089 Add user operation logs for telemetry
- Closed
-
CAM-12115 Improve telemetry reporting
- Closed
-
CAM-12125 Document telemetry topic
- Closed
-
CAM-12176 In telemetry data, API commands are added
- Closed
-
CAM-12177 In telemetry data, Application server information is added
- Closed
-
CAM-12227 In telemetry data, add a field for spring boot/run/wildfly/was/wls integration usage
- Closed
-
CAM-12238 In User guide, document telemetry logger and troubleshooting
- Closed
-
CAM-12377 Add initialized indicator for telemetry configuration
- Closed
-
CAM-12378 In telemetry data, metrics information is added
- Closed
-
CAM-12379 In telemetry data, license key is added
- Closed
-
CAM-12380 In telemetry data, jdk information is added
- Closed
-
CAM-12415 In telemetry, improve calculation of unique task workers count
- Closed
-
CAM-12416 Metrics should be reported only once in cluster setups
- Closed
-
CAM-12417 WAS requires certification to send telemetry
- Closed
-
CAM-12430 Adjust wiremock request in telemetry test
- Closed
-
CAM-12431 Use db metrics names in telemetry data
- Closed
-
CAM-12432 In telemetry, dynamic data shouldn't be collected when the telemetry is disable
- Closed
-
CAM-12433 In telemetry, ensure resetting the start report time doesn't cause losing data
- Closed
-
CAM-12459 When telemetry is initially disabled, send a single message to ET
- Closed
-
CAM-12471 In telemetry data, adjust EDE and EDI to be collected
- Closed
-
CAM-12522 Typo in Telemetry CamundaIntegration
- Closed
- is depended on by
-
CAM-11500 As user I can enable usage analytics
- Closed
- is related to
-
CAM-11500 As user I can enable usage analytics
- Closed
-
CAM-12285 Create integration tests for telemetry to test requests with connect plugin
- Closed
-
CAM-12381 Unprovided information in telemetry is send as "unknown"
- Closed
-
CAM-12420 Telemetry reporter can deal with redirects.
- Closed
-
CAM-12421 In telemetry, define timeout for the send request
- Closed
-
CAM-12422 Telemetry reporter submits data if hasn't run in a while
- Closed
-
CAM-12094 In REST API, I can fetch telemetry configuration
- Closed
-
OPT-3580 Optimize can send essential data to production ET
- Done
-
CAM-12049 [Backend] Backport telemetry topic
- Closed
-
CAM-12158 Use connect in telemetry reporter
- Closed
-
CAM-12495 Send telemetry request in gzip format
- Closed
- mentioned in
-
Page Loading...