psjay / kids

Kids Is Data Stream

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

kids

Build Status

Kids is a log aggregation system.

It aggregates messages like Scribe and its pub/sub pattern is ported from Redis.

Features

  • Real-time subscription
  • Distributed collection
  • Message persistence
  • Multithreading
  • Redis protocol
  • No third-party dependencies

Installation

You need a complier with C++11 support like GCC 4.7 (or later) or Clang.

Download a release. Untar the tarball, then:

./configure
make
make test  # optional
make install

By default, it will be installed to /usr/local/bin/kids. You can use the --prefix option to specify the installation location. Run ./configure --help for more config options.

Quickstart

Kids comes with some sample config files in samples/, after building, simply run:

kids -c samples/dev.conf

Because kids uses redis protocol, so you can use redis-cli to play with it, open another terminal:

$ redis-cli -p 3888
$ 127.0.0.1:3388> PSUBSCRIBE *

In yet another terminal:

$ redis-cli -p 3388
$ 127.0.0.1:3388> PUBLISH test message

redis-cli needs redis to be installed, in MAC, you can run brew install redis to install it.

Full explanation of config file, see here.

Run kids --help for more running options.

Run in production

In production, we deploy kids agent at every host, and assign a powerful server to kids server,

We now support making deb package to simplify deployment, to do this, you need:

  • build-essential, libtool, automake for building the prject
  • fpm for packaging

Steps

git clone https://github.com/zhihu/kids.git
cd kids
./autogen.sh
./configure
make
cp samples/agent.conf debian/
# EDIT the config file to fit into your environment: for agent, if you use samples/agent.conf then
# you only need to fill in kids server's hostname
cd debian
./make_deb.sh

For server, use the same deb package and overwrite /etc/kids.conf with server's config file.

License

Kids is BSD-licensed, see LICENSE for more details.

FAQ

Q: What is the meaning of "kids"?
A: "kids" is the recursive acronym of "Kids Is Data Stream".

Architecture

image

You can view the Chinese version README here

About

Kids Is Data Stream

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:C++ 92.5%Language:C 6.2%Language:Go 0.6%Language:Python 0.4%Language:Bison 0.3%Language:Ragel in Ruby Host 0.1%Language:Shell 0.0%Language:Makefile 0.0%