I’ve just noticed the last post on my blog was almost a year ago!, I will try to fix that and post more often.

Fluent Bit on 2017 got a lot of traction, since people from the CloudNative-space started asking for more specific features and these were implemented, now we can see that Fluent Bit is deployed a few thousands of times each single day and having a real impact where it’s solving logging pains at scale.

As a maintainer and core developer, I am very happy to see this traction from users, but also there is a community growth which honestly, without them, the project will not be rocking as it’s doing today. End users around the project are an important piece which helps with contributions, troubleshooting and feedback to align roadmap in the right direction, so thank you all for your help and patience!

On 2017 as of today, we have done 27 releases where 3 of them are major releases and the other just bug fixes focusing on stability. We started the year with 0.10 major version and finalizing with 0.12 as next stable, 0.13 is just showing up in a development stage.

From a technical perspective Fluent Bit acquired the following features on this year:

the list could be more extensive as there are many other improvements on each subsystem, all of this have been done thanks to the contribution of more than 30 people considering areas such as bug reporting, troubleshooting, code fixes and documentation within others.

Fluent Bit 0.13

This is the current development version and in addition to 0.12 the following features are already available:

  • New HTTP REST Interface:
    • Service information
    • JSON Metrics
    • Prometheus Metrics

More details about new stuff will be published at CloudNativeCon US!

Fluent Bit is a multi-platform Log Forwarder written in C

This year Fluent Bit got several new features, such as events routing, buffering, improved shared library mode and many new plugins to collect data and deliver to new destinations: in_tcp, in_forward, in_health, in_proc, out_http, out_influxdb, out_flowcounter, etc.

One of the recent features it got a lot of attention in the last CloudNativeCon, was the ability to extend it output destinations through Golang plugins, so Fluent Bit can load dynamically shared libraries created with Go, it’s really neat.

Something I did not write too much about it, is the that the new version is fully running in Windows environment, the same code base works on Windows, it’s portable (no Cygwin/MinGW), it can be compiled with Visual Studio without effort. This is still experimental but functional, I expect that for 0.11 release we have Windows binaries available and docs about it.

It have been exciting to see how the project have evolved and now is walking towards to be a Cloud Native Log Forwarder, there are some few missing features that are a priority for the beginning of this 2017 such as Filtering and Monitoring capabilities; they will come very soon.

At Treasure Data, we are fully committed to continue working hard to improve all aspects of logging in Cloud Environments, the recent news about Fluentd joining the Cloud Native Computing Foundation is just the beginning. You will expect many good news from both projects (Fluentd and Fluent Bit) in the incoming 2017.

Thanks to everyone involved in Fluent Bit!

It have been a while since the last post, so many good things happened. I will not dig into a full_detailed_post but some hints:

  • Fluent Bit project v0.9 have been released. Now working towards 0.10 which comes with Golang support for output plugins within other neat things. Shortly it will become the default Log Forwarder :).
  • Fluentd project have joined the Cloud Native Computing Foundation!
  • I spoke at LinuxCon Europe (Berlin), LinuxCon NorthAmerica (Toronto) and CloudNativeCon (Seattle).

I have no updates for Monkey or Duda, but they will come shortly as from a features perspective I need to connect the dots in Fluent Bit.

Some weeks ago I attended the Embedded Linux Conference in San Diego, I’ve participate from the Showcase demonstrating Fluent Bit and a non-longer-secret-project that runs on top of it, more news in the incoming weeks.

The guys from NextThing Co were around giving for free C.H.I.Ps, for who’s not aware about what it is, the C.H.I.P is a 9USD ARM Embedded Computer, it’s pretty neat!

As soon you power up the device through the micro-USB, you can access the serial console and start playing with it; it comes with Debian 8, Wifi (AP mode supported), 512 MB Ram, 1GHz Processor, 4GB storage…within others (and for 9 dollars!). Definitely you should consider to get one!

I am putting my hands on to make packages now for Fluent Bit and Monkey HTTP Server

Last year I moved Monkey build system to CMake and when I started Fluent Bit I did it in the same way, a great experience.

Due to the nature of the projects mentioned where they can be build as libraries, I found that overriding the sub directories options was not too straightforward: if I have a project A with some options they should be listed like this in the CMakeLists.txt file:

option(WITH_FEATURE_AA  "Enable feature AA"   ON)
option(WITH_FEATURE_BB  "Enable feature BB"   OFF)

Now if I started a project B and I have included project A in a subdirectory, the files hierarchy should be:

project_B/
project_B/CMakeLists.txt
project_B/project_A/
project_B/project_A/CMakelists.txt

When building project_B based on it CMakeLists.txt rules, I may want to override some default options values of project_A, documentation is a bit confusing and you are likely to waste time trying to determinate why you cannot override the values, the guilty is the CMake Cache. As a workaround I found that building a simple macro in project_B/CMakeLists.txt solves the problem without complexity:

macro(SET_OPTION option value)
  set(${option} ${value} CACHE INTERNAL "" FORCE)
endmacro()

# Let's override the values
SET_OPTION(WITH_FEATURE_AA  OFF)
SET_OPTION(WITH_FEATURE_AA  ON)

# Now join the subdirectory
add_subdirectory(project_A)

If you want to see a working code example, checkout the following GIT repository:

http://github.com/edsiper/cmake-options

It’s not a surprise that year over year the number of connected embedded devices is growing exponentially; from one side many Hardware challenges are being addressed properly, we can find cheap devices that provides low power consumption with good connectivity, improved processors and flexible architectures in general. These are enough reasons to encourage the creation of innovative solutions for different markets such as automotive, medical and home automation within many.

When creating software on top of these new hardware, we often needs to address the next layer of challenges, one of them is data. The operating system and the set of applications that runs on your device often generate events that helps to troubleshoot of monitor general statuses, so collecting this information is a must.

There is one concept that is changing over the years, sometimes data is commonly known as logs, but logs are not longer considered a register as a set of bytes in the file system, logs are now a stream of events that usually can be collected through a serial or network interface.

Early this year at Treasure Data, we started researching the best ways to address all concerns described above for Embedded Software, for short how to solve data collection. I have to recall that data usually comes in different formats, while the Kernel writes to it Kernel messages interface, others applications writes to syslog or push some message to some network service.

Treasure Data solved data collection for servers with the creation of Fluentd, but this tool may not be applicable as a solution for all Embedded devices because of design and resources required, but there is a lot of acquired experience that can be used as the foundation for a new specialized solution, that’s why Fluent Bit have been created.



Along this year, the project have been growing and it’s becoming a great solution for data collection and data routing in general, the following table describe the usual scenarios on how Fluent Bit can collect data:

modes description
library Fluent Bit can be build as a shared or static library that can be used by your own program. So you invoke it API and ingest data to it.
metrics generator Fluent Bit auto-generate data from it built-in input metrics: CPU, Memory and Kernel log messages.
remote service This mode means that Fluent Bit runs as a service in a separate hardware and your embedded applications can send data to it.

In a more descriptive way, Fluent Bit provides input types for data, the current ones available as of v0.5 release are:

Input Plugin Description
CPU Calculate CPU usage in the system
Memory (metric) Gather memory usage in the system
Kernel log messages Gather Kernel logs from the Kernel messages interface
Serial Read data from the serial interface
STDIN Read data from the standard input interface
MQTT Listen for MQTT messages over the network.
XBee Listen for messages over a XBee Radio device.

Once the data is collected, it should go somewhere, that’s when the output plugins provide different options.

Output Plugin Description
Fluentd Fluentd is a famous open source data collector for servers, it provides an extensive list of interfaces for collecting and routing data to third party services.
Elastic Search Elastic Search is an open source database to search & analyze Data in Real Time.
Treasure Data Treasure Data provides an Analytics Cloud service for Big Data.
STDOUT Print event records to the standard output.

The project has reach a good level, flexible enough to behave as a puzzle in terms of which features to include and which not, it allows you to collect and route events easily across the network.

As this year I had the opportunity to attend and speak at a few conferences, I had learn from very experienced Embedded Engineers and end-users who shared their concerns and ideas on how data should be collected, this have been very useful to define current roadmap and general features available today.

Fluent Bit is Open Source and licensed under the terms of Apache License v2, feel free to contribute through our public repository on http://github.com/fluent/fluent-bit, or if you just want to get in touch, join our Slack team at http://slack.fluentd.org.

As said, embedded/IoT data matters, and Fluent Bit take cares of it, spread the word!

It have been a long time since my last post, it’s a really busy year at work with enjoyable things to do!, but of course nothing is an excuse to stop sharing updates.

This year I have been working in several areas which includes software development, community strategies and spreading the word at several conferences. I think it have been the perfect mix of things to learn and improve. All of this consumes a lot of time, hopefully my wife and kids are very supportive on all of this, the balance is very important to keep everyone healthy.

Below you will find a short update for:

  • Fluent Bit
  • Conferences and Fluentd
  • Monkey & Duda I/O

Continue reading

Almost three months ago, I started a new Open Source Adventure and I called it adventure because I had to take decisions where different variables to evaluate were involved like: family, stability, country, long-term-plans, etc.

So how things are going now?, I would say pretty well!, there is a lot of fun things to do, I feel more happy contributing than just calling working. One thing that I am very pleasant about Treasure Data is about the work environment, despites I am a remote worker (I work from Costa Rica), I had the opportunity to visit the HQ offices in Mountain View a couple of times and I can say that people is very friendly.

td_logo3

Continue reading

[Updated on March 10th, 2015]

I just got my new setup for work and as usual I performed Softwares changes: Install Ubuntu on the MackBook Pro retina. With the system by default I run on the following issues:

  • Suspend takes a long time
  • On Resume after suspend, the wireless driver stopped working
  • CPU scaling governor is powersave, but the CPU is always at maximum! (high temperature)

I manage to solve the problems with the following steps:

Continue reading

Two weeks ago was my last day at Oracle (after 7 years!) and now I am starting a new adventure.

I joined Treasure Data Inc as an Open Source developer to contribute to the Fluentd open source project and it related tools. Definitely this is a very exciting movement, the project is widely used and is the defacto Log/Events Collector for Servers, Mobile & Embedded. There is a lot of fun things to do and I will be mostly focused on it Golang, Embedded Linux versions and it Community within others, more news will come soon…

If you are a Fluentd user let me know, I’d be happy to hear from feedback and use cases, otherwise let’s talk anyways, I am sure it can solve your events collection needs 🙂