Fluent Bit

This topic explains how to send logs from Fluent Bit to the LaunchDarkly observability dashboards. Fluent Bit is a lightweight and high-performance log processor and forwarder that is commonly used in containerized environments such as Kubernetes and Amazon ECS.

By configuring Fluent Bit to forward logs to LaunchDarkly, you can centralize your application logs alongside your feature flag data for unified observability.

Prerequisites

To use the Fluent Bit integration, you need:

  • A LaunchDarkly project key for your target environment
  • Fluent Bit installed and running in your environment
  • Network access to the LaunchDarkly OpenTelemetry endpoint

To learn how to find and copy your LaunchDarkly project key, read Project keys.

Configure Fluent Bit

Fluent Bit uses the Forward protocol to send logs to the LaunchDarkly OpenTelemetry collector endpoint.

Basic configuration

Add the following output configuration to your Fluent Bit configuration file:

fluent-bit.conf
[OUTPUT]
Name forward
Match *
Host otel.observability.app.launchdarkly.com
Port 24224
Tag launchdarkly.project_id=YOUR_PROJECT_KEY

Replace YOUR_PROJECT_KEY with your LaunchDarkly project key.

Configuration with TLS

For production environments, enable TLS for secure communication:

fluent-bit.conf
[OUTPUT]
Name forward
Match *
Host otel.observability.app.launchdarkly.com
Port 24224
Tag launchdarkly.project_id=YOUR_PROJECT_KEY
tls on
tls.verify on

AWS ECS with AWS FireLens

If you’re running containers on Amazon ECS, you can use AWS FireLens to route logs through Fluent Bit to LaunchDarkly. FireLens is a container log router for Amazon ECS that gives you the ability to use Fluent Bit for log processing.

Here’s an example ECS task definition snippet:

task-definition.json
{
"containerDefinitions": [
{
"name": "your-app",
"image": "your-app-image",
"logConfiguration": {
"logDriver": "awsfirelens",
"options": {
"Name": "forward",
"Host": "otel.observability.app.launchdarkly.com",
"Port": "24224",
"Tag": "launchdarkly.project_id=YOUR_PROJECT_KEY"
}
}
},
{
"name": "log_router",
"image": "amazon/aws-for-fluent-bit:latest",
"essential": true,
"firelensConfiguration": {
"type": "fluentbit"
}
}
]
}

Here is an example using Terraform:

ecs.tf
resource "aws_ecs_task_definition" "app" {
# ... other configuration ...
container_definitions = jsonencode([
{
name = "your-app"
image = "your-app-image"
logConfiguration = {
logDriver = "awsfirelens"
options = {
Name = "Forward"
Host = var.observability_logging.host
Port = "24224"
Tag = "launchdarkly.project_id=${var.launchdarkly_project_id}"
}
}
},
{
name = "log_router"
image = "amazon/aws-for-fluent-bit:latest"
essential = true
firelensConfiguration = {
type = "fluentbit"
}
}
])
}

Kubernetes with Fluent Bit DaemonSet

For Kubernetes environments, you can configure Fluent Bit as a DaemonSet to collect logs from all pods:

fluent-bit-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: fluent-bit-config
namespace: logging
data:
fluent-bit.conf: |
[SERVICE]
Flush 1
Log_Level info
Daemon off
Parsers_File parsers.conf
[INPUT]
Name tail
Path /var/log/containers/*.log
Parser docker
Tag kube.*
Refresh_Interval 5
Mem_Buf_Limit 5MB
[OUTPUT]
Name forward
Match *
Host otel.observability.app.launchdarkly.com
Port 24224
Tag launchdarkly.project_id=YOUR_PROJECT_KEY
tls on
tls.verify on

Configuration options

The following table describes the key configuration options for the Fluent Bit Forward output:

OptionDescriptionRequired
HostThe LaunchDarkly OpenTelemetry endpoint: otel.observability.app.launchdarkly.comYes
PortThe port number: 24224Yes
TagMust include launchdarkly.project_id=YOUR_PROJECT_KEY to route logs to your projectYes
tlsEnable TLS encryption. Set to on for production.Recommended
tls.verifyVerify TLS certificates. Set to on for production.Recommended

View logs in LaunchDarkly observability dashboards

After you configure Fluent Bit, logs begin flowing to LaunchDarkly within a few minutes.

To review your logs:

  1. Navigate to Observability in LaunchDarkly.
  2. Select the environment associated with your project.
  3. Navigate to the Logs tab.
  4. Use the search and filter options to find specific log entries.

Your logs are automatically associated with your LaunchDarkly project, allowing you to correlate log data with feature flag evaluations and other observability metrics.

Troubleshooting

If logs are not appearing in LaunchDarkly:

  1. Verify network connectivity: Ensure your Fluent Bit instance can reach otel.observability.app.launchdarkly.com on port 24224.

  2. Check the project key: Verify that the launchdarkly.project_id in your tag matches your actual LaunchDarkly project key.

  3. Review Fluent Bit logs: Check Fluent Bit’s own logs for connection errors or warnings:

Shell
# For standalone Fluent Bit
fluent-bit -c /path/to/fluent-bit.conf -v
# For Kubernetes DaemonSet
kubectl logs -n logging -l app=fluent-bit
  1. Test connectivity: Use a tool like nc or telnet to verify port accessibility:
Shell
nc -zv otel.observability.app.launchdarkly.com 24224