Skip to Main Content

Monitoring Kafka with Burrow: How & Best Practices

Overview

Kafka monitoring is essential for maintaining healthy data streaming ecosystems, and Burrow stands out as a purpose-built monitoring solution for tracking consumer lag without relying on arbitrary thresholds. Created by LinkedIn and released as open-source software, Burrow has become a crucial tool for organizations relying on Kafka for their streaming data needs. This comprehensive guide explores Burrow's architecture, setup process, configuration options, best practices, and integration capabilities to help you effectively monitor your Kafka infrastructure.

Understanding Burrow and Its Importance

Burrow fundamentally transforms how we approach Kafka consumer monitoring by providing an objective view of consumer status based on offset commitments and broker state. Unlike traditional monitoring solutions that rely on fixed thresholds, Burrow evaluates consumer behavior over a sliding window, making it more effective at detecting real problems while reducing false alarms.

Core Concepts of Burrow

Burrow operates by consuming the special internal Kafka topic to which consumer offsets are written, providing a centralized service that monitors all consumers across all partitions they consume. It examines several crucial factors:

  1. Whether consumers are committing offsets

  2. If consumer offset commits are increasing

  3. Whether lag is increasing

  4. If lag is increasing consistently or fluctuating

Based on this evaluation, Burrow assigns each partition a status (OK, WARNING, or ERROR) and then distills these individual statuses into a single consumer group status, providing a holistic view of consumer health.

Key Features of Burrow

Burrow offers a robust set of features that make it particularly valuable for Kafka monitoring:

Burrow Architecture and Components

Burrow employs a modular design that separates responsibilities into distinct subsystems, each handling a specific aspect of monitoring:

Clusters Subsystem

The Clusters subsystem runs Kafka clients that periodically update topic lists and track the current HEAD offset (most recent offset) for every partition. This provides the baseline for measuring consumer lag.

Consumers Subsystem

The Consumers subsystem fetches information about consumer groups from repositories like Kafka clusters (consuming the __consumer_offsets topic) or Zookeeper. This data includes details about which consumers are active and what offsets they've committed.

Storage Subsystem

The Storage subsystem maintains all the information gathered by the Clusters and Consumers subsystems. It provides this data to other subsystems when requested for evaluation and notification purposes.

Evaluator Subsystem

The Evaluator subsystem retrieves information from Storage for specific consumer groups and calculates their status following consumer lag evaluation rules. This is where Burrow's threshold-free approach is implemented.

Notifier Subsystem

The Notifier subsystem periodically requests status information on consumer groups and sends notifications (via Email, HTTP, or other methods) for groups meeting configured criteria. This enables proactive monitoring and alerts.

HTTP Server Subsystem

The HTTP Server subsystem provides an API interface for retrieving information about clusters and consumers, making Burrow's data accessible to external systems and dashboards.

Setting Up and Configuring Burrow

Setting up Burrow involves several steps, with multiple deployment options available depending on your environment and requirements.

Using Docker Compose

The simplest way to get started with Burrow is using Docker Compose:


docker-compose up --build -d

This command uses the Docker Compose file to install Apache ZooKeeper, Kafka, and Burrow, with some test topics created by default.

Building from Source with Go

As Burrow is written in Go, you can also build it from source:

  1. Install Go on your system

  2. Download Burrow from the GitHub repository

  3. Configure Burrow using a YAML file

  4. Build and run the binary:


export GO111MODULE=on
go mod tidy
go install
$GOPATH/bin/Burrow --config-dir /path/containing/config

Basic Configuration

Burrow uses the viper configuration framework for Golang applications. A minimal configuration file might look like this:


zookeeper:
servers:
- "localhost:2181"
timeout: 3

kafka:
brokers:
- "localhost:9092"

burrow:
logdir: /var/log/burrow

storage:
local:
path: /var/lib/burrow

client-id: burrow-client
cluster-name: local

consumer-groups:
- "burrow-test-consumer-group"

httpserver:
address: "localhost:8000"


This configuration connects to a local Zookeeper and Kafka instance, specifies storage locations, and sets up a basic HTTP server.

Advanced Configuration Options

For production deployments, you might want to configure additional features:

  1. Security settings for SASL and SSL

  2. Multiple Kafka clusters for centralized monitoring

  3. Notification configurations for alerts via email or HTTP

  4. Customized HTTP API settings for integration with other systems

Interacting with Burrow

Once Burrow is running, you can interact with it in several ways to monitor your Kafka infrastructure.

Using the REST API

Burrow exposes several REST API endpoints that provide information about Kafka clusters, consumer groups, and their status. Some key endpoints include:

The most important endpoint for monitoring is the consumer group status endpoint, which returns detailed information about the status of a consumer group, including which partitions are lagging.

Using Dashboard UIs

While Burrow itself doesn't include a dashboard, several open-source projects provide front-end interfaces:

  1. BurrowUI : A simple dashboard that can be installed via Docker:

docker pull generalmills/burrowui
docker run -p 80:3000 -e BURROW_HOME="http://localhost:8000/v3/kafka" -d generalmills/burrowui

  1. Burrow Dashboard : Another option that can be deployed with:

docker pull joway/burrow-dashboard
docker run --network host -e BURROW_BACKEND=http://localhost:8000 -d -p 80:80 joway/burrow-dashboard:latest

Integration with Monitoring Tools

Burrow can be integrated with popular monitoring tools to enhance visibility and alerting capabilities.

Prometheus and Grafana

Using Burrow Exporter, you can export Burrow metrics to Prometheus and visualize them in Grafana dashboards:

  1. Install Burrow Exporter

  2. Configure it to scrape metrics from Burrow

  3. Set up Prometheus to collect metrics from the exporter

  4. Create Grafana dashboards to visualize the metrics

InfluxDB and Telegraf

The Burrow Telegraf Plugin allows integration with InfluxDB:


[[inputs.burrow]]
servers = ["http://localhost:8000"]
# api_prefix = "/v3/kafka"
# response_timeout = "5s"
# concurrent_connections = 20
# clusters_include = []
# clusters_exclude = []
# groups_include = []
# groups_exclude = []
# topics_include = []
# topics_exclude = []


This configuration enables Telegraf to collect Burrow metrics and write them to InfluxDB for visualization and alerting.

Best Practices for Using Burrow

To maximize the effectiveness of Burrow in monitoring your Kafka infrastructure, consider the following best practices:

Deployment Considerations

  1. High Availability : Deploy Burrow with redundancy to avoid monitoring gaps.

  2. Resource Allocation : Ensure Burrow has sufficient resources to monitor all your Kafka clusters.

  3. Security Configuration : Properly secure Burrow's API endpoints, especially in production environments.

  4. Regular Updates : Keep Burrow updated to support newer Kafka versions and fix security vulnerabilities.

Monitoring Strategy

  1. Monitor All Consumer Groups : Let Burrow automatically discover and monitor all consumer groups.

  2. Focus on Critical Groups : Identify and prioritize consumer groups that are critical to your business.

  3. Set Appropriate Window Sizes : Configure evaluation windows based on your message processing patterns.

  4. Implement Notification Filters : Avoid alert fatigue by filtering notifications based on consumer group priority.

Integration with Operations

  1. Centralize Monitoring : Integrate Burrow with your existing monitoring systems for a unified view.

  2. Automate Responses : Where possible, automate responses to common consumer lag issues.

  3. Document Recovery Procedures : Create clear documentation for addressing different types of consumer lag problems.

  4. Regular Testing : Periodically test your monitoring and alerting setup to ensure it works as expected.

Common Issues and Troubleshooting

Despite its robust design, Burrow users may encounter certain issues that require troubleshooting.

Kafka Version Compatibility

Burrow may stop emitting metrics after Kafka upgrades, as seen in the issue where it stopped working after upgrading from Kafka 3.6.x to 3.7.x[1]. If you experience this:

  1. Check that Burrow's kafka-version configuration matches your actual Kafka version

  2. Review Burrow logs for errors like "failed to fetch offsets from broker" or "error in OffsetResponse"

  3. Restart Burrow to reestablish connections to the Kafka cluster

Consumer Lag Calculation Issues

If Burrow is unable to calculate consumer lag for some topics:

  1. Verify that consumers are committing offsets correctly

  2. Check if the low water mark is available for the partitions

  3. Ensure that Burrow has the necessary permissions to access the __consumer_offsets topic

Performance Considerations

For large Kafka deployments with many topics and consumer groups:

  1. Limit concurrent connections using the concurrent_connections configuration

  2. Filter which clusters, groups, or topics to monitor using include/exclude patterns

  3. Adjust the response timeout to avoid timeouts during heavy load periods

Alternative Monitoring Tools

While Burrow is powerful, other monitoring solutions might better suit specific needs:

More Kafka tools can be found here: Top 12 Free Kafka GUI Tools 2025

Conclusion

Burrow represents a significant advancement in Kafka monitoring by eliminating arbitrary thresholds and providing a more nuanced view of consumer health. Its modular architecture, robust API, and integration capabilities make it a valuable tool for organizations relying on Kafka for their streaming data needs.

By following the setup procedures, configuration best practices, and integration strategies outlined in this guide, you can leverage Burrow to gain deep insights into your Kafka infrastructure, proactively address consumer lag issues, and ensure the reliability of your streaming data platform.

Whether you're running a small Kafka deployment or managing a large-scale streaming infrastructure, Burrow's objective monitoring approach and flexible configuration options make it an excellent choice for keeping your Kafka ecosystem healthy and performant.

If you find this content helpful, you might also be interested in our product AutoMQ. AutoMQ is a cloud-native alternative to Kafka by decoupling durability to S3 and EBS. 10x Cost-Effective. No Cross-AZ Traffic Cost. Autoscale in seconds. Single-digit ms latency. AutoMQ now is source code available on github. Big Companies Worldwide are Using AutoMQ. Check the following case studies to learn more:

References:

  1. Kafka Cluster Monitoring

  2. Struggling to Get Into Kafka's The Castle

  3. Kafka Minion Consumer Group Lag Calculation

  4. Very Little of Franz Kafka's Works Were Published During His Lifetime

  5. Horizontally Scaling Consumers

  6. Kafka Lag Monitoring and Metrics at AppsFlyer

  7. ShowAPI News Article

  8. Redpanda: A Kafka Alternative

  9. Introducing Kafka Minion: A Prometheus Exporter

  10. Gathering Opinions on Kafka Management Tools

  11. Burrow Wiki

  12. Burrow Issue #827

  13. Conduktor Platform Monitoring

  14. Monitoring Kafka Consumer Lag in Seconds

  15. Kafka Performance Optimization Guide

  16. Burrow: Kafka Consumer Monitoring Reinvented

  17. Understanding Kafka Burrow Partition Lag

  18. InfluxDB Burrow Integration

  19. Setting Up Burrow Dashboard for Kafka Lag Monitoring

  20. Keeping Track of Kafka Users

  21. Literary Greats Discussion

  22. Writing New Systems with Temporal

  23. Auto-play Gaming Discussion

  24. Browser for Kafka Topics

  25. NY Giants Daily Discussion

  26. Thoughts on Themes in Kafka

  27. UI for Tracking Debezium Postgres

  28. Rhodes Island Lounge Discussion

  29. Kafka's Personal Letters and Diaries

  30. Combat Theory: Vanguards

  31. Which Kafka's Works Should I Mainly Read in Order

  32. Consumer Lag Evaluation Rules

  33. Kafka Monitoring with Burrow

  34. Kafka Monitoring Using Burrow

  35. Burrow Issue #642

  36. Conduktor Alternatives

  37. Is Redpanda Going to Replace Apache Kafka?

  38. Burrow Issues

  39. Burrow Consumer Lag Dashboard for Grafana

  40. Monitoring Kafka Tools & Techniques

  41. Burrow Issue #653

  42. Top 12 Free Kafka GUI Tools 2025

  43. When to Choose Redpanda Instead of Apache Kafka

  44. Burrow Issue #701

  45. Is Monitoring Kafka Hard for You?

  46. Everyone Misses the Point of the Plan

  47. Help with F. Kafka

  48. Kafka Monitoring

  49. Let's Play the Old Game: What Was an Easier/Smarter Way?

  50. A List of GUI Tools for Working with Apache Kafka

  51. Reading The Castle and...

  52. Building Data Pipeline ETL

  53. KafkaCTL: CLI for Apache Kafka Management

  54. Since I'm in Need of Some Practice

  55. Kafka Monitoring Tools Guide

  56. Burrow Integration with MSK Kafka

  57. Not Able to Find Any Consumer Group in Kafka While Using Burrow

  58. Monitoring Kafka with Burrow - Part 1

  59. Burrow Kafka Dashboard

  60. Reason for Adding Console Consumer in Deny List in Burrow Configuration

  61. Conduktor Desktop Monitoring Features

  62. Burrow Issue #760

  63. Kafka Monitoring Tutorial

  64. LinkedIn Burrow

  65. Apache Mailing List Discussion

  66. Monitoring Kafka Cluster with Nagios

  67. PFF: Highest-Graded QBs Since Week 13

  68. DayZ Redditors: Why Do You Hate Bases?

  69. For Those of You Who Think a QB is the Solve

  70. Monitoring and Optimizing Kafka Consumers for Performance

  71. Monitoring Apache Kafka for Optimal Performance

  72. Kafka Administration and Monitoring UI Tools

  73. List of General Hidden Items

  74. Direct Burial POE Question

  75. Is Kafka Boring or Do I Have No Culture?

  76. Triple Banners Needs to Happen

  77. How Did Mahomes Get So Good?

  78. Monitoring Kafka with Burrow - Part 2