Skip to content

Commit

Permalink
Add metrics_writer type
Browse files Browse the repository at this point in the history
  • Loading branch information
shannonklaus committed Jan 23, 2024
1 parent a53adb2 commit b739b91
Show file tree
Hide file tree
Showing 4 changed files with 152 additions and 115 deletions.
35 changes: 27 additions & 8 deletions src/include/aerospike/as_metrics.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,19 +78,19 @@ typedef struct as_policy_metrics_s {

struct as_metrics_listeners_s* metrics_listeners;

FILE* file;
void* udata;
} as_policy_metrics;

struct as_cluster_s;
struct as_node_s;

typedef void (*as_metrics_enable_callback)(struct as_policy_metrics_s* policy);
typedef void (*as_metrics_enable_callback)(const struct as_policy_metrics_s* policy);

typedef void (*as_metrics_snapshot_callback)(const struct as_policy_metrics_s* policy, const struct as_cluster_s* cluster);
typedef void (*as_metrics_snapshot_callback)(const struct as_cluster_s* cluster, void* udata);

typedef void (*as_metrics_node_close_callback)(const struct as_policy_metrics_s* policy, const struct as_node_s* node);
typedef void (*as_metrics_node_close_callback)(const struct as_node_s* node, void* udata);

typedef void (*as_metrics_disable_callback)(struct as_policy_metrics_s* policy, const struct as_cluster_s* cluster);
typedef void (*as_metrics_disable_callback)(const struct as_cluster_s* cluster, void* udata);

typedef struct as_metrics_listeners_s {
as_metrics_enable_callback enable_callback;
Expand All @@ -103,6 +103,22 @@ typedef struct as_node_metrics_s {
as_latency_buckets* latency;
} as_node_metrics;

typedef struct as_metrics_writer_s {
FILE* file;

as_string_builder* sb;

bool enable;

uint64_t max_size;

uint64_t size;

int32_t latency_columns;

int32_t latency_shift;
} as_metrics_writer;

const char*
utc_time_str(time_t t);

Expand Down Expand Up @@ -137,13 +153,16 @@ void
as_metrics_process_cpu_load_mem_usage(double* cpu_usage, double* mem);

void
as_metrics_write_cluster(struct as_policy_metrics_s* policy, const struct as_cluster_s* cluster);
as_metrics_write_cluster(as_metrics_writer* mw, const struct as_cluster_s* cluster);

void
as_metrics_write_node(as_metrics_writer* mw, struct as_node_stats_s* node_stats);

void
as_metrics_write_node(as_string_builder* sb, struct as_node_stats_s* node_stats);
as_metrics_write_conn(as_metrics_writer* mw, struct as_conn_stats_s* conn_stats);

void
as_metrics_write_conn(as_string_builder* sb, struct as_conn_stats_s* conn_stats);
as_metrics_write_line(as_metrics_writer* mw);

#if defined(__linux__)
void
Expand Down
3 changes: 3 additions & 0 deletions src/include/aerospike/as_node.h
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,9 @@ typedef struct as_node_s {
*/
as_racks* racks;

/**
* Node metrics
*/
as_node_metrics* metrics;

/**
Expand Down
8 changes: 4 additions & 4 deletions src/main/aerospike/as_cluster.c
Original file line number Diff line number Diff line change
Expand Up @@ -559,7 +559,7 @@ as_cluster_enable_metrics(as_cluster* cluster, as_policy_metrics* policy)
{
if (cluster->metrics_enabled)
{
cluster->metrics_listeners->disable_callback(policy, cluster);
cluster->metrics_listeners->disable_callback(policy, cluster, policy->udata);
}

cluster->metrics_listeners = policy->metrics_listeners;
Expand All @@ -576,7 +576,7 @@ as_cluster_enable_metrics(as_cluster* cluster, as_policy_metrics* policy)
as_node_enable_metrics(node, policy);
}

cluster->metrics_listeners->enable_callback(policy);
cluster->metrics_listeners->enable_callback(policy, policy->udata);
}

void
Expand All @@ -585,7 +585,7 @@ as_cluster_disable_metrics(as_cluster* cluster)
if (cluster->metrics_enabled)
{
cluster->metrics_enabled = false;
cluster->metrics_listeners->disable_callback(cluster->metrics_policy, cluster);
cluster->metrics_listeners->disable_callback(cluster->metrics_policy, cluster, cluster->metrics_policy->udata);
}
}

Expand Down Expand Up @@ -968,7 +968,7 @@ as_cluster_tend(as_cluster* cluster, as_error* err, bool is_init)

if (cluster->metrics_enabled && (cluster->tend_count % cluster->metrics_policy->interval))
{
cluster->metrics_listeners->snapshot_callback(cluster->metrics_policy, cluster);
cluster->metrics_listeners->snapshot_callback(cluster->metrics_policy, cluster, cluster->metrics_policy->udata);
}

as_cluster_destroy_peers(&peers);
Expand Down
Loading

0 comments on commit b739b91

Please sign in to comment.