You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: development/developer-guide.md
+42-39Lines changed: 42 additions & 39 deletions
Original file line number
Diff line number
Diff line change
@@ -1,39 +1,39 @@
1
-
## Beginners Guide to Contributing to Fluent Bit
1
+
#Developer guide for beginners on contributing to Fluent Bit
2
2
3
-
Assuming you have some basic knowledge of C, this guide should help you understand how to make code
4
-
changes to Fluent Bit.
3
+
Assuming you have some basic knowledge of C, this guide should help you understand how to make code changes to Fluent Bit.
5
4
6
-
###Libraries
5
+
## Libraries
7
6
8
-
Most external libraries are embedded in the project in the [/lib](/lib) folder. To keep its footprint low and make cross-platform builds simple, Fluent Bit attempts keep its dependency graph small.
7
+
Most external libraries are embedded in the project in the [/lib](https://github.com/fluent/fluent-bit-docs/tree/3304eeed3122ab98a20fc4344ba573b00f698515/lib/README.md) folder. To keep its footprint low and make cross-platform builds simple, Fluent Bit attempts keep its dependency graph small.
9
8
10
9
The external library you are mostly likely to interact with is [msgpack](https://github.com/msgpack/msgpack-c).
11
10
12
11
For crypto, Fluent Bit uses [mbedtls](https://github.com/ARMmbed/mbedtls).
13
12
14
-
####Memory Management
13
+
### Memory Management
15
14
16
15
When you write Fluent Bit code, you will use Fluent Bit's versions of the standard C functions for working with memory:
17
-
-[`flb_malloc()`](include/fluent-bit/flb_mem.h) - equivalent to `malloc`, allocates memory.
18
-
-[`flb_calloc()`](include/fluent-bit/flb_mem.h) - equivalent to `calloc`, allocates memory and initializes it to zero.
19
-
-[`flb_realloc()`](include/fluent-bit/flb_mem.h) - equivalent to `realloc`.
20
-
-[`flb_free()`](include/fluent-bit/flb_mem.h) - equivalent to `free`, releases allocated memory.
21
16
22
-
Note that many types have a specialized create and destroy function. For example,
23
-
[`flb_sds_create()` and `flb_sds_destroy()`](include/fluent-bit/flb_sds.h) (more about this in the next section).
17
+
*[`flb_malloc()`](https://github.com/fluent/fluent-bit-docs/tree/3304eeed3122ab98a20fc4344ba573b00f698515/development/include/fluent-bit/flb_mem.h) - equivalent to `malloc`, allocates memory.
18
+
*[`flb_calloc()`](https://github.com/fluent/fluent-bit-docs/tree/3304eeed3122ab98a20fc4344ba573b00f698515/development/include/fluent-bit/flb_mem.h) - equivalent to `calloc`, allocates memory and initializes it to zero.
19
+
*[`flb_realloc()`](https://github.com/fluent/fluent-bit-docs/tree/3304eeed3122ab98a20fc4344ba573b00f698515/development/include/fluent-bit/flb_mem.h) - equivalent to `realloc`.
20
+
*[`flb_free()`](https://github.com/fluent/fluent-bit-docs/tree/3304eeed3122ab98a20fc4344ba573b00f698515/development/include/fluent-bit/flb_mem.h) - equivalent to `free`, releases allocated memory.
24
21
25
-
#### Strings
22
+
Note that many types have a specialized create and destroy function. For example, [`flb_sds_create()` and `flb_sds_destroy()`](https://github.com/fluent/fluent-bit-docs/tree/3304eeed3122ab98a20fc4344ba573b00f698515/development/include/fluent-bit/flb_sds.h)\(more about this in the next section\).
26
23
27
-
Fluent Bit has a stripped down version of the popular [SDS](https://github.com/antirez/sds) string library. See [flb_sds.h](include/fluent-bit/flb_sds.h) for the API.
24
+
### Strings
25
+
26
+
Fluent Bit has a stripped down version of the popular [SDS](https://github.com/antirez/sds) string library. See [flb\_sds.h](https://github.com/fluent/fluent-bit-docs/tree/3304eeed3122ab98a20fc4344ba573b00f698515/development/include/fluent-bit/flb_sds.h) for the API.
28
27
29
28
In general, you should use SDS strings in any string processing code. SDS strings are fully compatible with any C function that accepts a null-terminated sequence of characters; to understand how they work, see the [explanation on Github](https://github.com/antirez/sds#how-sds-strings-work).
30
29
31
-
####HTTP Client
30
+
### HTTP Client
32
31
33
32
Fluent Bit has its own network connection library. The key types and functions are defined in the following header files:
An `flb_upstream` structure represents a host/endpoint that you want to call. Normally, you'd store this structure somewhere so that it can be re-used. An `flb_upstream_conn` represents a connection to that host for a single HTTP request. The connection structure should not be used for more than one request.
116
116
117
-
#### Linked Lists
117
+
### Linked Lists
118
118
119
-
Fluent Bit contains a library for constructing linked lists- [mk_list](lib/monkey/include/monkey/mk_core/mk_list.h). The type stores data as a circular linked list.
119
+
Fluent Bit contains a library for constructing linked lists- [mk\_list](https://github.com/fluent/fluent-bit-docs/tree/3304eeed3122ab98a20fc4344ba573b00f698515/development/lib/monkey/include/monkey/mk_core/mk_list.h). The type stores data as a circular linked list.
120
120
121
-
The [`mk_list.h`](lib/monkey/include/monkey/mk_core/mk_list.h) header file contains several macros and functions for use with the lists. The example below shows how to create a list, iterate through it, and delete an element.
121
+
The [`mk_list.h`](https://github.com/fluent/fluent-bit-docs/tree/3304eeed3122ab98a20fc4344ba573b00f698515/development/lib/monkey/include/monkey/mk_core/mk_list.h) header file contains several macros and functions for use with the lists. The example below shows how to create a list, iterate through it, and delete an element.
122
122
123
123
```c
124
124
#include <monkey/mk_core/mk_list.h>
@@ -173,11 +173,11 @@ static int example()
173
173
}
174
174
```
175
175
176
-
####Message Pack
176
+
### Message Pack
177
177
178
178
Fluent Bit uses [msgpack](https://msgpack.org/index.html) to internally store data. If you write code for Fluent Bit, it is almost certain that you will interact with msgpack.
179
179
180
-
Fluent Bit embeds the [msgpack-c](https://github.com/msgpack/msgpack-c) library. The example below shows manipulating message pack to add a new key-value pair to a record. In Fluent Bit, the [filter_record_modifier](plugins/filter_record_modifier) plugin adds or deletes keys from records. See its code for more.
180
+
Fluent Bit embeds the [msgpack-c](https://github.com/msgpack/msgpack-c) library. The example below shows manipulating message pack to add a new key-value pair to a record. In Fluent Bit, the [filter\_record\_modifier](https://github.com/fluent/fluent-bit-docs/tree/3304eeed3122ab98a20fc4344ba573b00f698515/development/plugins/filter_record_modifier/README.md) plugin adds or deletes keys from records. See its code for more.
Please also check out the message pack examples on the [msgpack-c GitHub repo](https://github.com/msgpack/msgpack-c).
265
265
266
-
### Plugin API
266
+
## Plugin API
267
267
268
268
Each plugin is a shared object which is [loaded into Fluent Bit](https://github.com/fluent/fluent-bit/blob/1.3/src/flb_plugin.c#L70) using dlopen and dlsym.
269
269
270
-
#### Input
270
+
### Input
271
271
272
-
The input plugin structure is defined in [flb_input.h](https://github.com/fluent/fluent-bit/blob/master/include/fluent-bit/flb_input.h#L62). There are a number of functions which a plugin can implement, most only implement `cb_init`, `cb_collect`, and `cb_exit`.
272
+
The input plugin structure is defined in [flb\_input.h](https://github.com/fluent/fluent-bit/blob/master/include/fluent-bit/flb_input.h#L62). There are a number of functions which a plugin can implement, most only implement `cb_init`, `cb_collect`, and `cb_exit`.
273
273
274
-
The [`"dummy"` input plugin](plugins/in_dummy) very simple and is an excellent example to review to understand more.
274
+
The [`"dummy"` input plugin](https://github.com/fluent/fluent-bit-docs/tree/3304eeed3122ab98a20fc4344ba573b00f698515/development/plugins/in_dummy/README.md) very simple and is an excellent example to review to understand more.
275
275
276
-
#### Filter
276
+
### Filter
277
277
278
-
The structure for filter plugins is defined in [flb_filter.h](https://github.com/fluent/fluent-bit/blob/master/include/fluent-bit/flb_filter.h#L44). Each plugin must implement `cb_init`, `cb_filter`, and `cb_exit`.
278
+
The structure for filter plugins is defined in [flb\_filter.h](https://github.com/fluent/fluent-bit/blob/master/include/fluent-bit/flb_filter.h#L44). Each plugin must implement `cb_init`, `cb_filter`, and `cb_exit`.
279
279
280
-
The [filter_record_modifier](plugins/filter_record_modifier) is a good example of a filter plugin.
280
+
The [filter\_record\_modifier](https://github.com/fluent/fluent-bit-docs/tree/3304eeed3122ab98a20fc4344ba573b00f698515/development/plugins/filter_record_modifier/README.md) is a good example of a filter plugin.
281
281
282
282
Note that filter plugins can not asynchronously make HTTP requests. If your plugin needs to make a request, add the following code when you initialize your `flb_upstream`:
283
283
@@ -286,25 +286,27 @@ Note that filter plugins can not asynchronously make HTTP requests. If your plug
286
286
upstream->flags &= ~(FLB_IO_ASYNC);
287
287
```
288
288
289
-
####Output
289
+
### Output
290
290
291
-
Output plugins are defined in [flb_output.h](https://github.com/fluent/fluent-bit/blob/master/include/fluent-bit/flb_output.h#L57). Each plugin must implement `cb_init`, `cb_flush`, and `cb_exit`.
291
+
Output plugins are defined in [flb\_output.h](https://github.com/fluent/fluent-bit/blob/master/include/fluent-bit/flb_output.h#L57). Each plugin must implement `cb_init`, `cb_flush`, and `cb_exit`.
292
292
293
-
The [stdout plugin](plugins/out_stdout) is very simple; review its code to understand how output plugins work.
293
+
The [stdout plugin](https://github.com/fluent/fluent-bit-docs/tree/3304eeed3122ab98a20fc4344ba573b00f698515/development/plugins/out_stdout/README.md) is very simple; review its code to understand how output plugins work.
294
294
295
-
###Testing
295
+
## Testing
296
296
297
297
During development, you can build Fluent Bit as follows:
298
298
299
-
```
299
+
```text
300
300
cd build
301
301
cmake -DFLB_DEV=On ../
302
302
make
303
303
```
304
+
304
305
Note that Fluent Bit uses Cmake 3 and on some systems you may need to invoke it as `cmake3`.
@@ -313,13 +315,14 @@ Internal tests are for the internal libraries of Fluent Bit. Runtime tests are f
313
315
314
316
You can run the unit tests with `make test`, however, this is inconvenient in practice. Each test file will create an executable in the `build/bin` directory which you can run directly. For example, if you want to run the SDS tests, you can invoke them as follows:
315
317
316
-
```
318
+
```text
317
319
$ ./bin/flb-it-sds
318
320
Test sds_usage... [ OK ]
319
321
Test sds_printf... [ OK ]
320
322
SUCCESS: All unit tests have passed.
321
323
```
322
324
323
-
###Need more help?
325
+
## Need more help?
324
326
325
327
The best way to learn how Fluent Bit code works is to read it. If you need help understanding the code, reach out to the community, or open a PR with changes that are a work in progress.
Copy file name to clipboardExpand all lines: installation/linux/raspbian-raspberry-pi.md
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -2,9 +2,9 @@
2
2
3
3
Fluent Bit is distributed as **td-agent-bit** package and is available for the Raspberry, specifically for [Raspbian](http://raspbian.org) distribution, the following versions are supported:
The _Standard Output Filter_plugin allows to print to the standard output the data received through the _input_ plugin.
3
+
The **stdout** output plugin allows to print to the standard output the data received through the _input_ plugin. Their usage is very simple as follows:
4
4
5
5
## Configuration Parameters
6
6
7
-
There are no parameters.
8
-
9
-
## Getting Started
10
-
11
-
In order to start filtering records, you can run the filter from the command line or through the configuration file.
7
+
| Key | Description | default |
8
+
| :--- | :--- | :--- |
9
+
| Format | Specify the data format to be printed. Supported formats are _msgpack__json_, _json\_lines_ and _json\_stream_. | msgpack |
10
+
| json\_date\_key | Specify the name of the date field in output | date |
11
+
| json\_date\_format | Specify the format of the date. Supported formats are _double_, _iso8601_\(eg: _2018-05-30T09:39:52.000681Z_\) and _epoch_. | double |
In your main configuration file append the following _FILTER_ sections:
19
+
We have specified to gather [CPU](https://github.com/fluent/fluent-bit-docs/tree/ddc1cf3d996966b9db39f8784596c8b7132b4d5b/pipeline/input/cpu.md) usage metrics and print them out to the standard output in a human readable way:
22
20
23
-
```python
24
-
[INPUT]
25
-
Name cpu
26
-
Tag cpu.local
21
+
```bash
22
+
$ bin/fluent-bit -i cpu -o stdout -p format=msgpack -v
0 commit comments