Giter VIP home page Giter VIP logo

Description

Fluent Beats

Fluent Beats is a set of observability pipelines for Docker Containers and Linux Hosts, compatible with Elastic observabilily features based on FluentBit

Requirements

Supported Orchestrators

Elastic Supported Features

Fluent Beats uses the Elastic Common Schema to send data that can be ingested and consumed in key Kibana contexts

Fully supported contexts

  • Analytics
    • Dashboard
    • Discovery
    • Canvas
    • etc
  • Observability
    • Alerts
    • Logs
    • Infrastructure
      • Metrics Explorer
      • Hosts

Partially supported contexts

  • Observability
    • Infrastructure
      • Inventory
        • AWS and K8s filters are not supported
    • Uptime
      • Uptime Monitors
        • Only container over TCP (translated from healthchecks)

Unsupported contexts

  • APM
  • User Experience

Design

This service is designed to provide lightweight observability capababilities for microservices running as Docker containers.

Its was designed to be deployed as a Docker Swarm Global Service; or AWS ECS equivalent; in order to receive any type of observability information from other services.

Internally it translates all metrics and logs to Elastic ECS, which is the standard schema used by Elasticsearch

Requirements

To work properly it requires:

  • Port bindings:
    • 2020/tcp: Used to expose internal HTTP server
    • 24224/tcp: Used to receive Logs from Docker Fluentd Driver
    • 8125/udp: Used to receive Metrics/APM using extended StatsD datagrams (StatsD + Tags)
  • Volume bindings:
    • /var/run/docker.sock: Used to call Docker engine API
    • /var/lib/docker/containers: Used to detect all container running in the host
    • /proc: Used to extract host metrics (cpu, memory and load)

Provided configs

The service can be configured based on a set of environment variables that basically define limits for the Fluent Bit engine.

These variables can be easily stored as Environment File and exported as Docker Configs

The supported variables are:

Variable Description Default
FLB_DOCKER_METRICS_INTERVAL Time in seconds to collect Docker metrics 10
FLB_HOST_METRICS_INTERVAL Time in seconds to collect Host metrics 10
FLB_MEM_BUF_LIMIT Memory threshold for input plugins backpressure control 3M
FLB_FORWARD_BUF_CHUNK_SIZE Allocation block size used by forward input plugin 1M
FLB_FORWARD_BUF_MAX_SIZE Memory limit for a message received by forward input plugin 3M
FLB_STORAGE_BACKLOG_MEM_LIMIT Memory limit for backlog (unprocessed data) processing 10M
FLB_HOST_NET_INTERFACE Name of the host network interface to monitor eth0
FLB_COLLECT_CONTAINER_LABELS Enable Docker container labels collection false

Provided pipelines

Provided dashboards

The project provides some Kibana dashboards, equivalent to the original ones provided by Elastic Beats.

Running locally

Local test

The project contains a test stack, it requires properly configuration of Elasticsearch secrets by creating 2 files.

  • /test/secrets/http_host.txt: contains the ES hostname
  • /test./secrets/http_host.txt: contains the ES password

Once configured the test stack can be started:

./test.sh

Local build

To build Fluent-Beats, run:

./build.sh

Pull and inspect

You can optionally dive into a Fluent-Beats container using:

docker pull ghcr.io/fluent-beats/fluent-beats:latest
docker run --rm -ti --entrypoint sh ghcr.io/fluent-beats/fluent-beats

Notes about Fluent Bit

  • By default we use a bare minimal set of the standard Fluent Bit plugins/features
  • The Fluent Bit version used by this project is 1.8.11
    • In order to apply Docker Secrets extraction, the Fluent Bit Docker image version must include shell support (debug flavor).
  • Versions up to 1.8.11 are shipped as much bigger Docker images and don't provide any useful feature for this particular solution

Logo copyright

Fluent Beats logo was adapted from hati-royani hummingbird icon logo

Fluent Beats's Projects

fluent-beats icon fluent-beats

Observability for Docker containers based on Elasticsearch and Fluent Bit

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.