Burrow

command module
v1.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 28, 2023 License: Apache-2.0 Imports: 10 Imported by: 0

README

Build Status go report card Coverage Status GoDoc

Burrow - Kafka Consumer Lag Checking

Burrow is a monitoring companion for Apache Kafka that provides consumer lag checking as a service without the need for specifying thresholds. It monitors committed offsets for all consumers and calculates the status of those consumers on demand. An HTTP endpoint is provided to request status on demand, as well as provide other Kafka cluster information. There are also configurable notifiers that can send status out via email or HTTP calls to another service.

Features

  • NO THRESHOLDS! Groups are evaluated over a sliding window.
  • Multiple Kafka Cluster support
  • Automatically monitors all consumers using Kafka-committed offsets
  • Configurable support for Zookeeper-committed offsets
  • Configurable support for Storm-committed offsets
  • HTTP endpoint for consumer group status, as well as broker and consumer information
  • Configurable emailer for sending alerts for specific groups
  • Configurable HTTP client for sending alerts to another system for all groups

Getting Started

Prerequisites

Burrow is written in Go, so before you get started, you should install and set up Go. As the dependencies are managed using Go module, the lowest version of Go supported is 1.11, though we recommend using version 1.12 for development.

Build and Install
$ Clone github.com/linkedin/Burrow to a directory outside of $GOPATH. Alternatively, you can export GO111MODULE=on to enable Go module.
$ cd to the source directory.
$ go mod tidy
$ go install
Running Burrow
$ $GOPATH/bin/Burrow --config-dir /path/containing/config
Using Docker

A Docker file is available which builds this project on top of an Alpine Linux image. To use it, build your docker container, mount your Burrow configuration into /etc/burrow and run docker.

A Docker Compose is also available for quick and easy development.

Install Docker Compose and then:

  1. Build the docker container:

    docker-compose build
    
  2. Run the docker compose stack which includes kafka and zookeeper:

    docker-compose down; docker-compose up
    
  3. Some test topics have already been created by default and Burrow can be accessed on http://localhost:8000/v3/kafka.

Configuration

For information on how to write your configuration file, check out the detailed wiki

License

Copyright 2017 LinkedIn Corp. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

Documentation

Overview

Burrow provides advanced Kafka Consumer Lag Checking. It is a monitoring companion for Apache Kafka that provides consumer lag checking as a service without the need for specifying thresholds. It monitors committed offsets for all consumers and calculates the status of those consumers on demand. An HTTP endpoint is provided to request status on demand, as well as provide other Kafka cluster information. There are also configurable notifiers that can send status out via email or HTTP calls to another service.

CLI or Library

Burrow is designed to be run as a standalone application (CLI), and this is what the main package provides. In some situations it may be better for you to wrap Burrow with another application - for example, in environments where you have your own application structure to provide configuration and logging. To this end, Burrow can also be used as a library within another app.

When embedding Burrow, please refer to https://github.com/linkedin/Burrow/blob/master/main.go for details on what preparation should happen before starting it. This is the wrapper that provides the CLI interface. The main logic for Burrow is in the core package, while the protocol package provides some of the common interfaces that are used.

Additional Documentation

More documentation on Burrow, including configuration and HTTP requests, can be found at https://github.com/linkedin/Burrow/wiki

Directories

Path Synopsis
Package core - Core Burrow logic.
Package core - Core Burrow logic.
internal
Package internal - Here be dragons.
Package internal - Here be dragons.
internal/cluster
Package cluster - Kafka cluster subsystem.
Package cluster - Kafka cluster subsystem.
internal/consumer
Package consumer - Kafka consumer subsystem.
Package consumer - Kafka consumer subsystem.
internal/evaluator
Package evaluator - Group evaluation subsystem.
Package evaluator - Group evaluation subsystem.
internal/helpers
Package helpers - Common utilities.
Package helpers - Common utilities.
internal/httpserver
Package httpserver - HTTP API endpoint The httpserver subsystem provides an HTTP interface to Burrow that can be used to fetch information about the clusters and consumers it is monitoring.
Package httpserver - HTTP API endpoint The httpserver subsystem provides an HTTP interface to Burrow that can be used to fetch information about the clusters and consumers it is monitoring.
internal/notifier
Package notifier - Status notification subsystem.
Package notifier - Status notification subsystem.
internal/storage
Package storage - Data storage subsystem.
Package storage - Data storage subsystem.
internal/zookeeper
Package zookeeper - Common Zookeeper subsystem.
Package zookeeper - Common Zookeeper subsystem.
protocol
Package protocol - Burrow types and interfaces.
Package protocol - Burrow types and interfaces.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL