aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/grpc/census.h
diff options
context:
space:
mode:
authorGravatar Alistair Veitch <aveitch@google.com>2015-08-27 16:24:27 -0700
committerGravatar Alistair Veitch <aveitch@google.com>2015-08-27 16:24:27 -0700
commite62f68cebb8a43f880542035ef8b3369ebb46f6b (patch)
tree7fea7d11f45413c50604724698174f4653e5ef79 /include/grpc/census.h
parent9a09982e2dd193a91430ba70ed4e446d8d96e363 (diff)
make metric part of view
Diffstat (limited to 'include/grpc/census.h')
-rw-r--r--include/grpc/census.h59
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
}