Skip to content

Commit

Permalink
output: implement metrics counter
Browse files Browse the repository at this point in the history
Signed-off-by: Eduardo Silva <[email protected]>
  • Loading branch information
edsiper committed Oct 14, 2017
1 parent 0519f62 commit 1e4fea2
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
25 changes: 25 additions & 0 deletions include/fluent-bit/flb_output.h
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,10 @@ struct flb_output_instance {
struct mk_list properties; /* properties / configuration */
struct mk_list _head; /* link to config->inputs */

#ifdef FLB_HAVE_METRICS
struct flb_metrics *metrics; /* metrics */
#endif

/* Keep a reference to the original context this instance belongs to */
struct flb_config *config;
};
Expand Down Expand Up @@ -415,6 +419,9 @@ static inline void flb_output_return(int ret, struct flb_thread *th) {
uint64_t val;
struct flb_task *task;
struct flb_output_thread *out_th;
#ifdef FLB_HAVE_METRICS
int records;
#endif

out_th = (struct flb_output_thread *) FLB_THREAD_DATA(th);
task = out_th->task;
Expand All @@ -435,6 +442,24 @@ static inline void flb_output_return(int ret, struct flb_thread *th) {
if (n == -1) {
flb_errno();
}

#ifdef FLB_HAVE_METRICS
if (out_th->o_ins->metrics) {
if (ret == FLB_OK) {
records = flb_mp_count(task->buf, task->size);
flb_metrics_sum(FLB_METRIC_OUT_OK_RECORDS, records,
out_th->o_ins->metrics);
flb_metrics_sum(FLB_METRIC_OUT_OK_BYTES, task->size,
out_th->o_ins->metrics);
}
else if (ret == FLB_ERROR) {
flb_metrics_sum(FLB_METRIC_OUT_ERROR, 1, out_th->o_ins->metrics);
}
else if (ret == FLB_RETRY) {
/* FIXME */
}
}
#endif
}

static inline void flb_output_return_do(int x)
Expand Down
19 changes: 19 additions & 0 deletions src/flb_output.c
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,14 @@ int flb_output_instance_destroy(struct flb_output_instance *ins)
}
}
#endif

/* Remove metrics */
#ifdef FLB_HAVE_METRICS
if (ins->metrics) {
flb_metrics_destroy(ins->metrics);
}
#endif

/* release properties */
flb_output_free_properties(ins);

Expand Down Expand Up @@ -274,6 +282,17 @@ struct flb_output_instance *flb_output_new(struct flb_config *config,
mk_list_init(&instance->properties);
mk_list_add(&instance->_head, &config->outputs);

/* Metrics */
#ifdef FLB_HAVE_METRICS
instance->metrics = flb_metrics_create(instance->name);
if (instance->metrics) {
flb_metrics_add(FLB_METRIC_OUT_OK_RECORDS, "proc_records", instance->metrics);
flb_metrics_add(FLB_METRIC_OUT_OK_BYTES, "proc_bytes", instance->metrics);
flb_metrics_add(FLB_METRIC_OUT_ERROR, "errors", instance->metrics);
flb_metrics_add(FLB_METRIC_OUT_RETRY, "retries", instance->metrics);
}
#endif

return instance;
}

Expand Down

0 comments on commit 1e4fea2

Please sign in to comment.