diff options
author | Alistair Veitch <aveitch@google.com> | 2015-08-27 16:24:27 -0700 |
---|---|---|
committer | Alistair Veitch <aveitch@google.com> | 2015-08-27 16:24:27 -0700 |
commit | e62f68cebb8a43f880542035ef8b3369ebb46f6b (patch) | |
tree | 7fea7d11f45413c50604724698174f4653e5ef79 /include/grpc/census.h | |
parent | 9a09982e2dd193a91430ba70ed4e446d8d96e363 (diff) |
make metric part of view
Diffstat (limited to 'include/grpc/census.h')
-rw-r--r-- | include/grpc/census.h | 59 |
1 files changed, 29 insertions, 30 deletions
diff --git a/include/grpc/census.h b/include/grpc/census.h index 968f5825a5..77b93c1cb8 100644 --- a/include/grpc/census.h +++ b/include/grpc/census.h @@ -159,7 +159,7 @@ int census_tag_set_next(census_tag_set_iterator *it, census_tag_const *tag); invalidated, and should not be used once close is called. */ void census_tag_set_close(census_tag_set_iterator *it); -/* Core stats collection API's. There following concepts are used: +/* Core stats collection API's. The following concepts are used: * Aggregation: A collection of values. Census supports the following aggregation types: Scalar - a single scalar value. Typically used for keeping (e.g.) @@ -174,18 +174,18 @@ void census_tag_set_close(census_tag_set_iterator *it); * Metric: Each measurement is for a single metric. Examples include RPC latency, CPU seconds consumed, and bytes transmitted. * View: A view is a tag set, in which the tag values are regular expressions, - combined with an arbitrary number of aggregations and their initialization - parameters. + combined with a metric and an arbitrary number of aggregations and their + initialization parameters. Each metric can have an arbitrary number of views by which it will be broken down. For every measurement recorded, they are broken down by - unique tag combinations, and recorded in each matvhing view/aggregation. + unique tag combinations, and recorded in each matching view/aggregation. */ /* A single value to be recorded comprises two parts: an ID for the particular * metric and the value to be recorded against it. */ typedef struct { - gpr_int32 metric_id; + gpr_uint32 metric_id; double value; } census_value; @@ -210,25 +210,30 @@ typedef struct { void (*free_data)(const void *data); /* Reset an aggregation to default (zero) values. */ void (*reset)(void *aggregation); + /* Merge 'from' aggregation into 'to'. Both aggregations must be compatible */ + void (*merge)(void *to, const void *from); + /* Fill buffer with printable string version of aggregation contents. For + * debugging only. */ + void (*print)(const void *aggregation, char *buffer, size_t n); } census_aggregation_descriptor; /** Register a new aggregation type. @param descriptor Describes aggregation @return An identifier that can be used to identify the aggregation in other census functions. */ -gpr_int32 census_register_aggregation( +gpr_uint32 census_register_aggregation( const census_aggregation_descriptor *descriptor); /* Aggregation Identifiers for built-in census aggregations. */ -#define CENSUS_AGGREGATION_ID_SCALAR ((gpr_int32)0) -#define CENSUS_AGGREGATION_ID_DISTRIBUTION ((gpr_int32)1) -#define CENSUS_AGGREGATION_ID_HISTOGRAM ((gpr_int32)2) -#define CENSUS_AGGREGATION_ID_WINDOW ((gpr_int32)3) +#define CENSUS_AGGREGATION_ID_SCALAR ((gpr_uint32)0) +#define CENSUS_AGGREGATION_ID_DISTRIBUTION ((gpr_uint32)1) +#define CENSUS_AGGREGATION_ID_HISTOGRAM ((gpr_uint32)2) +#define CENSUS_AGGREGATION_ID_WINDOW ((gpr_uint32)3) /** Information needed to instantiate a new aggregation. Used in view construction via census_define_view(). */ typedef struct { - gpr_int32 id; /* aggregation ID */ + gpr_uint32 id; /* aggregation ID */ const void *create_arg; /* Argument to be used for aggregation initialization. */ } census_aggregation; @@ -237,16 +242,21 @@ typedef struct { typedef struct census_view census_view; /** Create a new view. + @param metric_id Metric with which this view is associated. @param tags tags that define the view @param aggregations aggregations to associate with the view @param naggregations number of aggregations @return A new census view */ -const census_view *census_define_view(const census_tag_set *tags, +const census_view *census_define_view(gpr_uint32 metric_id, + const census_tag_set *tags, const census_aggregation *aggregations, size_t naggregations); +/** Metric ID associated with a view */ +size_t census_view_metric(const census_view *view); + /** Number of aggregations associated with view. */ size_t census_view_naggregations(const census_view *view); @@ -256,15 +266,6 @@ const census_tag_set *census_view_tags(const census_view *view); /** Get aggregations associated with a view. */ const census_aggregation *census_view_aggregrations(const census_view *view); -/** Associate a given view with a metric. Every metric can have many different - views. - @param metric_id Identifier of metric with which to attah the view - @param view View to attach to the metric - @return A view identifier: can be used to retrieve aggregation data from - the view using census_view_data(). -*/ -gpr_int64 census_attach_view(gpr_int32 metric_id, const census_view *view); - /** Holds aggregation data, as it applies to a particular view. This structure is used as one component of the data returned from census_get_view_data(). */ typedef struct { @@ -288,25 +289,23 @@ typedef struct { /** Census view data as returned by census_get_view_data(). */ typedef struct { - const census_view *view; /* Original view */ - size_t n_tag_sets; /* Number of unique tag sets that matched view. */ + size_t n_tag_sets; /* Number of unique tag sets that matched view. */ const census_view_aggregation_data *data; /* n_tag_sets entries */ } census_view_data; /** Get data from aggregations associated with a view. - @param view_id View identifier returned from census_attach_view - @param aggregation_indices Indexes of aggregations (relative to original view) - for which to return current data. This parameter is ignored if - nindices == 0. + @param view View from which to get data. + @param aggregation_indices Indexes of view aggregations for which to return + current data. This parameter is ignored if nindices == 0. @param nindices. Number of entries in aggregation_indices. If this is set to - 0, then all aggregations for the current view are returned. + 0, then all aggregations are returned. */ -const census_view_data *census_get_view_data(gpr_int64 view_id, +const census_view_data *census_get_view_data(census_view *view, size_t *aggregation_indices, size_t nindices); /** Reset all view data to zero for the specified view id. */ -void census_reset_view_data(gpr_int64 view_id); +void census_reset_view_data(gpr_uint64 view_id); #ifdef __cplusplus } |