Data collected by balena
In order to make data driven decisions, balena collects usage related events via a 3rd party analytics service, Amplitude. These events provide us context on the state of container execution steps. This way we could observe the health of fleets in balenaCloud ecosystem and analyze the potential problems as well as trends.
User data collected by balena
balena collects information about CLI and web dashboard usage behavior. User data we process includes
- user name (login) and the email address used to log into the system,
- device type, operating system and browser versions,
- device screen size,
- IP address,
- referrer to balena sites,
- company user belongs to (when web dashboard is used only).
Please note that balena does not collect information about end users of devices managed with balena platform, i.e. information about our customer users is not collected or processed. We work only with data collected for users who use balena to manage their device fleets.
balenaEtcher
balenaEtcher is an application maintained by balena team that can be used to easily flash OS images to SD cards and USB drives. If user does not opt out from collecting the analytics data, the application tracks its usage. In addition to the data described above, information about the type of SD cards and USB drives is collected too.
Device data collected by the supervisor
Data are submitted to Amplitude from balena-managed devices on the events listed in the table below. Submitted packets may contain the following information:
- Fleet ID and name
- Docker image hash
- Service ID, name, labels
- Release ID and/or git commit hash used to make the release
- Device IP address (as reported in balena dashboard)
- OS and supervisor versions
- Error root cause message (in case of error events)
- Timing info about device management operations (see event names)
Event name | Report type | Source file |
---|---|---|
Device state report failure | EventTracker | src/api-binder.ts |
Device bootstrap success | EventTracker | src/api-binder.ts |
Device bootstrap | EventTracker | src/api-binder.ts |
Update notification | EventTracker | src/api-binder.ts |
Device bootstrap failed | EventTracker | src/api-binder.ts |
Image downloaded | SystemEvent | src/compose/images.ts |
Delta still processing remotely. | SystemEvent | src/compose/images.ts |
Image removal | SystemEvent | src/compose/images.ts |
Image removed | SystemEvent | src/compose/images.ts |
Delta image download | SystemEvent | src/compose/images.ts |
Docker image download | SystemEvent | src/compose/images.ts |
Image cleanup error | SystemMessage | src/compose/images.ts |
Image download error | SystemEvent | src/compose/images.ts |
Image removal error | SystemEvent | src/compose/images.ts |
Network creation error | SystemEvent | src/compose/network-manager.ts |
Network creation | SystemEvent | src/compose/network.ts |
Network removal | SystemEvent | src/compose/network.ts |
Network creation error | SystemEvent | src/compose/network.ts |
Remove dead container | SystemEvent | src/compose/service-manager.ts |
Service install | SystemEvent | src/compose/service-manager.ts |
Service installed | SystemEvent | src/compose/service-manager.ts |
Service start | SystemEvent | src/compose/service-manager.ts |
Service started | SystemEvent | src/compose/service-manager.ts |
Service exit | SystemEvent | src/compose/service-manager.ts |
Service kill | SystemEvent | src/compose/service-manager.ts |
Service already stopped | SystemEvent | src/compose/service-manager.ts |
Service stop | SystemEvent | src/compose/service-manager.ts |
Remove dead container error | SystemEvent | src/compose/service-manager.ts |
Service install error | SystemEvent | src/compose/service-manager.ts |
Service start error | SystemEvent | src/compose/service-manager.ts |
Service restart | SystemEvent | src/compose/service-manager.ts |
Service already stopped and container removed | SystemEvent | src/compose/service-manager.ts |
Service stop error | SystemEvent | src/compose/service-manager.ts |
Volume migration error | SystemMessage | src/compose/volume-manager.ts |
Volume creation error | SystemEvent | src/compose/volume-manager.ts |
Volume creation | SystemEvent | src/compose/volume.ts |
Volume removal | SystemEvent | src/compose/volume.ts |
Volume removal error | SystemEvent | src/compose/volume.ts |
Purge data | SystemMessage | src/device-api/common.coffee |
Purge data success | SystemMessage | src/device-api/common.coffee |
Purge data error | SystemMessage | src/device-api/common.coffee |
Restart container (v1) | EventTracker | src/device-api/v1.coffee |
GET app (v1) | EventTracker | src/device-api/v1.coffee |
Apply config change (success/failed/in progress) | ConfigChange | src/device-config.ts |
Apply boot config error | SystemMessage | src/device-config.ts |
Apply boot config in progress | SystemMessage | src/device-config.ts |
Apply boot config success | SystemMessage | src/device-config.ts |
Reboot | SystemMessage | src/device-state.coffee |
Shutdown | SystemMessage | src/device-state.coffee |
Loading preloaded apps failed | EventTracker | src/device-state.coffee |
Device blink | EventTracker | src/supervisor-api.ts |
Supervisor start | SystemMessage | src/supervisor.ts |
Data collected automatically by Amplitude
Amplitude library generates a unique identifier for each device that sends an event. We associate the events with the device UUID provided by balenaCloud as well. Besides these identifiers, we don’t send any other user ID to Amplitude.
Amplitude library automatically extracts geographical location data from the device’s IP address, so it collects city, region and country information. See more in a relevant article by Amplitude.
About logging
Logs produced by the releases deployed to the devices via balena supervisor application can be streamed to web dashboard or CLI user who has permissions to view them through our cloud. However, the logs are stored in the cloud temporarily only in order to allow the streaming functionality - balena does not process device application logs unless technical support is requested by our users.