All Projects → ucbrise → Confluo

ucbrise / Confluo

Licence: apache-2.0
Real-time Monitoring and Analysis of Data Streams

Programming Languages

C++
36643 projects - #6 most used programming language
java
68154 projects - #9 most used programming language
python
139335 projects - #7 most used programming language
CMake
9771 projects
shell
77523 projects
Thrift
134 projects

Projects that are alternatives of or similar to Confluo

Naza
🍀 Go basic library. || Go语言基础库
Stars: ✭ 253 (-82.28%)
Mutual labels:  atomic, log
Ring Buffer
simple C++11 ring buffer implementation, allocated and evaluated at compile time
Stars: ✭ 80 (-94.4%)
Mutual labels:  lock-free, atomic
Atomic queue
C++ lockless queue.
Stars: ✭ 373 (-73.88%)
Mutual labels:  lock-free, atomic
Onering
A collection of concurrent ring buffers
Stars: ✭ 114 (-92.02%)
Mutual labels:  lock-free, atomic
Swiftcoroutine
Swift coroutines for iOS, macOS and Linux.
Stars: ✭ 690 (-51.68%)
Mutual labels:  lock-free, atomic
Easyflash
Lightweight IoT device information storage solution: KV/IAP/LOG. | 轻量级物联网设备信息存储方案:参数存储、在线升级及日志存储 ,全新一代版本请移步至 https://github.com/armink/FlashDB
Stars: ✭ 1,236 (-13.45%)
Mutual labels:  log
Gemma
A lightweight CSS library.
Stars: ✭ 94 (-93.42%)
Mutual labels:  atomic
Xa
Beautiful & Customizable logger ❤️
Stars: ✭ 78 (-94.54%)
Mutual labels:  log
Loguru
Python logging made (stupidly) simple
Stars: ✭ 10,510 (+635.99%)
Mutual labels:  log
Simple Console
Add an elegant command-line interface to any page
Stars: ✭ 107 (-92.51%)
Mutual labels:  log
Logview
Emacs mode for viewing log files.
Stars: ✭ 104 (-92.72%)
Mutual labels:  log
Dipstick
Configurable metrics toolkit for Rust applications
Stars: ✭ 92 (-93.56%)
Mutual labels:  log
Coolog
A expandable and flexible log framework for iOS. iOS一个灵活、可扩展的日志组件。
Stars: ✭ 82 (-94.26%)
Mutual labels:  log
Quark
Quark.js is a microscopic atomic CSS polyfill in JS just 140 bytes
Stars: ✭ 97 (-93.21%)
Mutual labels:  atomic
Log2ram
ramlog like for systemd (Put log into a ram folder)
Stars: ✭ 1,751 (+22.62%)
Mutual labels:  log
Laravel Log To Db
Custom Laravel and Lumen 5.6+ Log channel handler that can store log events to SQL or MongoDB databases. Uses Laravel/Monolog native logging functionality.
Stars: ✭ 76 (-94.68%)
Mutual labels:  log
Imtools
Fast and memory-efficient immutable collections and helper data structures
Stars: ✭ 85 (-94.05%)
Mutual labels:  lock-free
Zlog
A high-performance distributed shared-log for Ceph
Stars: ✭ 103 (-92.79%)
Mutual labels:  log
Rain
Visualize vertical data inside your terminal 💦
Stars: ✭ 84 (-94.12%)
Mutual labels:  log
Teler
Real-time HTTP Intrusion Detection
Stars: ✭ 1,248 (-12.61%)
Mutual labels:  log

Confluo

Build Status License

Confluo is a system for real-time monitoring and analysis of data, that supports:

  • high-throughput concurrent writes of millions of data points from multiple data streams;
  • online queries at millisecond timescale; and
  • ad-hoc queries using minimal CPU resources.

Please find detailed documentation here.

Installation

Required dependencies:

  • MacOS X or Unix-based OS; Windows is not yet supported.
  • C++ compiler that supports C++11 standard (e.g., GCC 5.3 or later)
  • CMake 3.2 or later
  • Boost 1.58 or later

For python client, you will additionally require:

  • Python 2.7 or later
  • Python Packages: setuptools, six 1.7.2 or later

For java client, you will additionally require:

  • Java JDK 1.7 or later
  • ant 1.6.2 or later

Source Build

To download and install Confluo, use the following commands:

git clone https://github.com/ucbrise/confluo.git
cd confluo
mkdir build
cd build
cmake ..
make -j && make test && make install

Using Confluo

While Confluo supports multiple execution modes, the simplest way to get started is to start Confluo as a server daemon and query it using one of its client APIs.

To start the server daemon, run:

confluod --address=127.0.0.1 --port=9090

Here's some sample usage of the Python API:

import sys
from confluo.rpc.client import RpcClient
from confluo.rpc.storage import StorageMode

# Connect to the server
client = RpcClient("127.0.0.1", 9090)

# Create an Atomic MultiLog with given schema for a performance log
schema = """{
  timestamp: ULONG,
  op_latency_ms: DOUBLE,
  cpu_util: DOUBLE,
  mem_avail: DOUBLE,
  log_msg: STRING(100)
}"""
storage_mode = StorageMode.IN_MEMORY
client.create_atomic_multilog("perf_log", schema, storage_mode)

# Add an index
client.add_index("op_latency_ms")

# Add a filter
client.add_filter("low_resources", "cpu_util>0.8 || mem_avail<0.1")

# Add an aggregate
client.add_aggregate("max_latency_ms", "low_resources", "MAX(op_latency_ms)")

# Install a trigger
client.install_trigger("high_latency_trigger", "max_latency_ms > 1000")

# Load some data
off1 = client.append([100.0, 0.5, 0.9,  "INFO: Launched 1 tasks"])
off2 = client.append([500.0, 0.9, 0.05, "WARN: Server {2} down"])
off3 = client.append([1001.0, 0.9, 0.03, "WARN: Server {2, 4, 5} down"])

# Read the written data
record1 = client.read(off1)
record2 = client.read(off2)
record3 = client.read(off3)

# Query using indexes
record_stream = client.execute_filter("cpu_util>0.5 || mem_avail<0.5")
for r in record_stream:
  print r

# Query using filters
record_stream = client.query_filter("low_resources", 0, sys.maxsize)
for r in record_stream:
  print r

# Query an aggregate
print client.get_aggregate("max_latency_ms", 0, sys.maxsize)

# Query alerts generated by a trigger
alert_stream = client.get_alerts(0, sys.maxsize, "high_latency_trigger")
for a in alert_stream:
  print a

Contributing

Please create a GitHub issue to file a bug or request a feature. We welcome pull-requests, but request that you review the pull-request process before submitting one.

Please subscribe to the mailing list ([email protected]) for project announcements, and discussion regarding use-cases and development.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].