A method of monitoring the usage of an internal combustion engine comprising: performing an engine monitoring routine using a local monitoring device (100, 200, 300) attached to an internal combustion engine, wherein the local monitoring device: generates data representative of a plurality of vibrations of an internal combustion engine using a vibration sensor (120, 237, 337) of the local monitoring device (100, 200, 300); processes the generated data to determine a first value representative of a firing frequency of the internal combustion engine; the method being characterized in that the local monitoring device further: updates an aggregated summary of the firing frequency of the internal combustion engine based on the first value by updating an element of the aggregated summary based on the first value, the aggregated summary comprising a plurality of elements corresponding to ranges of engine cylinder firing frequencies and the cumulative time for which the engine has been determined to be operating within each of the engine cylinder firing frequency ranges; and transmits the aggregated summary and identification data for the local monitoring device (100, 200, 300) to a remote application, wherein the remote application processes the transmitted aggregated summary based on the identification data to determine engine speed usage data, wherein the engine monitoring routine is repeated at least once over a time period to generate engine usage data over the time period. performing an engine monitoring routine using a local monitoring device (100, 200, 300) attached to an internal combustion engine, wherein the local monitoring device: generates data representative of a plurality of vibrations of an internal combustion engine using a vibration sensor (120, 237, 337) of the local monitoring device (100, 200, 300); processes the generated data to determine a first value representative of a generates data representative of a plurality of vibrations of an internal combustion engine using a vibration sensor (120, 237, 337) of the local monitoring device (100, 200, 300); processes the generated data to determine a first value representative of a firing frequency of the internal combustion engine; the method being characterized in that the local monitoring device further: updates an aggregated summary of the firing frequency of the internal combustion engine based on the first value by updating an element of the aggregated summary based on the first value, the aggregated summary comprising a plurality of elements corresponding to ranges of engine cylinder firing frequencies and the cumulative time for which the engine has been determined to be operating within each of the engine cylinder firing frequency ranges; and transmits the aggregated summary and identification data for the local monitoring device (100, 200, 300) to a remote application, updates an aggregated summary of the firing frequency of the internal combustion engine based on the first value by updating an element of the aggregated summary based on the first value, the aggregated summary comprising a plurality of elements corresponding to ranges of engine cylinder firing frequencies and the cumulative time for which the engine has been determined to be operating within each of the engine cylinder firing frequency ranges; and transmits the aggregated summary and identification data for the local monitoring device (100, 200, 300) to a remote application, wherein the remote application processes the transmitted aggregated summary based on the identification data to determine engine speed usage data, wherein the engine monitoring routine is repeated at least once over a time period to generate engine usage data over the time period.