-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
out_parseable: Plugin for sending logs to Parseable #9622
Conversation
can you please provide the link to the API spec ? |
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does this build for all targets and do we need any extra dependencies? We probably need some unit tests at least too.
I think at the moment you've not actually enabled it to build, only for the container but then we don't test or exercise that in unit tests or builds.
@@ -75,6 +75,7 @@ RUN cmake -DFLB_RELEASE=On \ | |||
-DFLB_IN_SYSTEMD=On \ | |||
-DFLB_OUT_KAFKA=On \ | |||
-DFLB_OUT_PGSQL=On \ | |||
-DFLB_OUT_PARSEABLE=On \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this what should be used in the cmake config? It's already defaulting to on
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
feel free to suggest the best practice here. I tried to build without it but was not able to run the plugin.
Please suggest some examples on unit tests and what can be done on building the ideal way. I'll implement this. ( i am not an expert in C codebase, so whatever is the best practice, ill will try to adhere to it ). |
Signed-off-by: Eduardo Silva <[email protected]> Signed-off-by: AdheipSingh <[email protected]>
Signed-off-by: AdheipSingh <[email protected]>
Signed-off-by: AdheipSingh <[email protected]>
Signed-off-by: AdheipSingh <[email protected]>
Signed-off-by: AdheipSingh <[email protected]>
Signed-off-by: AdheipSingh <[email protected]>
Signed-off-by: AdheipSingh <[email protected]>
Signed-off-by: AdheipSingh <[email protected]>
Signed-off-by: AdheipSingh <[email protected]>
Signed-off-by: AdheipSingh <[email protected]>
Signed-off-by: AdheipSingh <[email protected]>
Signed-off-by: AdheipSingh <[email protected]>
Signed-off-by: AdheipSingh <[email protected]>
Hi @patrick-stephens review comments have been addressed. Over to you :) |
Signed-off-by: AdheipSingh <[email protected]>
@edsiper @patrick-stephens would be great to have a next round of review please |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Before merging this, it needs some refactor. I added some comments , as well need to follow the coding style described in the contrib guide: https://github.com/fluent/fluent-bit/blob/master/CONTRIBUTING.md#coding-style
plugins/out_parseable/parseable.c
Outdated
size_t b_sent; | ||
|
||
msgpack_unpacked_init(&result); | ||
while (msgpack_unpack_next(&result, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please use the flb_log_event_decode API, ref: https://github.com/fluent/fluent-bit/blob/master/plugins/out_stdout/stdout.c#L285
plugins/out_parseable/parseable.c
Outdated
|
||
/* Pack original key-value pairs */ | ||
msgpack_pack_map(&pk, p->via.map.size + 1); | ||
for (int i = 0; i < p->via.map.size; i++) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do not declare variables inside the for loop
plugins/out_parseable/parseable.c
Outdated
} | ||
|
||
|
||
flb_sds_t namespace_name = flb_sds_create_size(256); // Dynamic string |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
declare the variable on top
plugins/out_parseable/parseable.c
Outdated
} | ||
|
||
|
||
flb_sds_t namespace_name = flb_sds_create_size(256); // Dynamic string |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
validate if namespace_name is null
plugins/out_parseable/parseable.c
Outdated
msgpack_sbuffer_destroy(&sbuf); | ||
|
||
/* Determine the value of the X-P-Stream header */ | ||
if (ctx->stream && strcmp(ctx->stream, "$NAMESPACE") == 0) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it seems you are trying to accomplish what our record accessor API does, use the existing API
plugins/out_parseable/parseable.c
Outdated
entry = mk_list_entry(head, struct flb_slist_entry, _head); | ||
flb_plg_info(ctx->ins, "Checking against exclude namespace: %s", entry->str); | ||
// flb_plg_info(ctx->ins, "namespace_name: %s %d", namespace_name,flb_sds_len(namespace_name)); | ||
if (flb_sds_cmp(entry->str, namespace_name, flb_sds_len(namespace_name)) == 0) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
too many nested levels, refactor this in more clear functions
plugins/out_parseable/parseable.h
Outdated
flb_sds_t username; | ||
flb_sds_t password; | ||
flb_sds_t stream; | ||
struct mk_list *exclude_namespaces; // Use mk_list for namespace exclusion |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
use cfl_list
@@ -29,6 +29,9 @@ | |||
#ifndef CPROF_HAVE_GMTIME_R | |||
#define CPROF_HAVE_GMTIME_R | |||
#endif | |||
#ifndef CPROF_HAVE_CLOCK_GET_TIME |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do not touch this file
note: there are 81 commits in this PR, it should be only one. |
code review changes
Send kubernetes logs to https://www.parseable.com/
Enter
[N/A]
in the box, if an item is not applicable to your change.Testing
Before we can approve your change; please submit the following in a comment:
If this is a change to packaging of containers or native binaries then please confirm it works for all targets.
ok-package-test
label to test for all targets (requires maintainer to do).Documentation
Backporting
Fluent Bit is licensed under Apache 2.0, by submitting this pull request I understand that this code will be released under the terms of that license.