| OLD | NEW |
| 1 Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 1 Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| 2 Use of this source code is governed by a BSD-style license that can be | 2 Use of this source code is governed by a BSD-style license that can be |
| 3 found in the LICENSE file. | 3 found in the LICENSE file. |
| 4 | 4 |
| 5 The Chrome OS "metrics" package contains utilities for client-side | 5 The Chrome OS "metrics" package contains utilities for client-side |
| 6 user metric collection. The collected data is sent to Chrome for | 6 user metric collection. The collected data is sent to Chrome for |
| 7 transport to the UMA server. | 7 transport to the UMA server. |
| 8 | 8 |
| 9 | 9 |
| 10 ================================================================================ | 10 ================================================================================ |
| 11 The Metrics Library: libmetrics | 11 The Metrics Library: libmetrics |
| 12 ================================================================================ | 12 ================================================================================ |
| 13 | 13 |
| 14 libmetrics is a small library that implements the basic C++ API for | 14 libmetrics is a small library that implements the basic C and C++ API |
| 15 metrics collection. All metrics collection is funneled through this | 15 for metrics collection. All metrics collection is funneled through |
| 16 library. The easiest and recommended way for a client-side module to | 16 this library. The easiest and recommended way for a client-side module |
| 17 collect user metrics is to link libmetrics and use its APIs to send | 17 to collect user metrics is to link libmetrics and use its APIs to send |
| 18 metrics to Chrome for transport to UMA. In order to use the library in | 18 metrics to Chrome for transport to UMA. In order to use the library in |
| 19 a module, you need to do the following: | 19 a module, you need to do the following: |
| 20 | 20 |
| 21 - Add a dependence (DEPEND and RDEPEND) on chromeos-base/metrics to | 21 - Add a dependence (DEPEND and RDEPEND) on chromeos-base/metrics to |
| 22 the module's ebuild. | 22 the module's ebuild. |
| 23 | 23 |
| 24 - Link the module with libmetrics (for example, by passing -lmetrics | 24 - Link the module with libmetrics (for example, by passing -lmetrics |
| 25 to the module's link command). Both libmetrics.so and libmetrics.a | 25 to the module's link command). Both libmetrics.so and libmetrics.a |
| 26 are built and installed under $SYSROOT/usr/lib/. Note that by | 26 are built and installed under $SYSROOT/usr/lib/. Note that by |
| 27 default -lmetrics will link against libmetrics.so, which is | 27 default -lmetrics will link against libmetrics.so, which is |
| (...skipping 12 matching lines...) Expand all Loading... |
| 40 | 40 |
| 41 bool MetricsLibrary::SendEnumToUMA(const std::string& name, int sample, | 41 bool MetricsLibrary::SendEnumToUMA(const std::string& name, int sample, |
| 42 int max) | 42 int max) |
| 43 sends a sample for an enumeration (linear) histogram. | 43 sends a sample for an enumeration (linear) histogram. |
| 44 | 44 |
| 45 Before using these methods, a MetricsLibrary object needs to be | 45 Before using these methods, a MetricsLibrary object needs to be |
| 46 constructed and initialized through its Init method. See the | 46 constructed and initialized through its Init method. See the |
| 47 complete API documentation in metrics_library.h under | 47 complete API documentation in metrics_library.h under |
| 48 src/platform/metrics/. | 48 src/platform/metrics/. |
| 49 | 49 |
| 50 For more information on the C API see c_metrics_library.h. |
| 51 |
| 50 - On the target platform, shortly after the sample is sent it should | 52 - On the target platform, shortly after the sample is sent it should |
| 51 be visible in Chrome through "about:histograms". | 53 be visible in Chrome through "about:histograms". |
| 52 | 54 |
| 53 | 55 |
| 54 ================================================================================ | 56 ================================================================================ |
| 55 Histogram Naming Convention | 57 Histogram Naming Convention |
| 56 ================================================================================ | 58 ================================================================================ |
| 57 | 59 |
| 58 Use TrackerArea.MetricName. For example: | 60 Use TrackerArea.MetricName. For example: |
| 59 | 61 |
| 60 Logging.CrashCounter | 62 Logging.CrashCounter |
| 61 Network.TimeToDrop | 63 Network.TimeToDrop |
| 62 Platform.BootTime | |
| 63 | 64 |
| 64 | 65 |
| 65 ================================================================================ | 66 ================================================================================ |
| 66 Server Side | 67 Server Side |
| 67 ================================================================================ | 68 ================================================================================ |
| 68 | 69 |
| 69 If the histogram data is visible in about:histograms, it will be sent | 70 If the histogram data is visible in about:histograms, it will be sent |
| 70 by an official Chrome build to UMA, assuming the user has opted into | 71 by an official Chrome build to UMA, assuming the user has opted into |
| 71 metrics collection. To make the histogram visible on | 72 metrics collection. To make the histogram visible on |
| 72 "chromedashboard", the histogram wiki needs to be updated (steps 2 and | 73 "chromedashboard", the histogram wiki needs to be updated (steps 2 and |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 screen saver states to determine if the user is actively using the | 109 screen saver states to determine if the user is actively using the |
| 109 device or not and generates the corresponding data. The metrics daemon | 110 device or not and generates the corresponding data. The metrics daemon |
| 110 uses libmetrics to send the data to Chrome. | 111 uses libmetrics to send the data to Chrome. |
| 111 | 112 |
| 112 The recommended way to generate metrics data from a module is to link | 113 The recommended way to generate metrics data from a module is to link |
| 113 and use libmetrics directly. However, the module could instead send | 114 and use libmetrics directly. However, the module could instead send |
| 114 signals to or communicate in some alternative way with the metrics | 115 signals to or communicate in some alternative way with the metrics |
| 115 daemon. Then the metrics daemon needs to monitor for the relevant | 116 daemon. Then the metrics daemon needs to monitor for the relevant |
| 116 events and take appropriate action -- for example, aggregate data and | 117 events and take appropriate action -- for example, aggregate data and |
| 117 send the histogram samples. | 118 send the histogram samples. |
| OLD | NEW |