Skip to content

Commit c9d1164

Browse files
committed
output: add a new Histogram to measure chunks latency
Signed-off-by: Eduardo Silva <[email protected]>
1 parent 42e29d6 commit c9d1164

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

include/fluent-bit/flb_output.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
#include <cmetrics/cmetrics.h>
5353
#include <cmetrics/cmt_gauge.h>
5454
#include <cmetrics/cmt_counter.h>
55+
#include <cmetrics/cmt_histogram.h>
5556
#include <cmetrics/cmt_decode_msgpack.h>
5657
#include <cmetrics/cmt_encode_msgpack.h>
5758

@@ -454,6 +455,8 @@ struct flb_output_instance {
454455
struct cmt_gauge *cmt_upstream_busy_connections;
455456
/* m: output_chunk_available_capacity_percent */
456457
struct cmt_gauge *cmt_chunk_available_capacity_percent;
458+
/* m: output_latency_seconds */
459+
struct cmt_histogram *cmt_latency;
457460

458461
/* OLD Metrics API */
459462
#ifdef FLB_HAVE_METRICS

src/flb_output.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@
4242

4343
FLB_TLS_DEFINE(struct flb_out_flush_params, out_flush_params);
4444

45+
/* Histogram buckets for output latency in seconds */
46+
static const double output_latency_buckets[] = {
47+
0.5, 1.0, 1.5, 2.5, 5.0, 10.0, 20.0, 30.0
48+
};
49+
4550
struct flb_config_map output_global_properties[] = {
4651
{
4752
FLB_CONFIG_MAP_STR, "match", NULL,
@@ -1179,6 +1184,7 @@ int flb_output_init_all(struct flb_config *config)
11791184
struct flb_output_instance *ins;
11801185
struct flb_output_plugin *p;
11811186
uint64_t ts;
1187+
struct cmt_histogram_buckets *buckets;
11821188

11831189
/* Retrieve the plugin reference */
11841190
mk_list_foreach_safe(head, tmp, &config->outputs) {
@@ -1320,6 +1326,22 @@ int flb_output_init_all(struct flb_config *config)
13201326
100.0,
13211327
1, (char *[]) {name});
13221328

1329+
/* fluentbit_output_latency_seconds */
1330+
buckets = cmt_histogram_buckets_create_size((double *) output_latency_buckets,
1331+
sizeof(output_latency_buckets) / sizeof(double));
1332+
if (!buckets) {
1333+
flb_error("could not create latency histogram buckets for %s", name);
1334+
return -1;
1335+
}
1336+
1337+
ins->cmt_latency = cmt_histogram_create(ins->cmt,
1338+
"fluentbit",
1339+
"output",
1340+
"latency_seconds",
1341+
"End-to-end latency in seconds",
1342+
buckets,
1343+
2, (char *[]) {"input", "output"});
1344+
13231345
/* old API */
13241346
ins->metrics = flb_metrics_create(name);
13251347
if (ins->metrics) {

0 commit comments

Comments
 (0)