https://github.com/binjr/binjr

A Time Series Browser

https://github.com/binjr/binjr

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.5%) to scientific vocabulary

Keywords

analytics binjr chart java javafx javafx-desktop-apps jrds logviewer monitoring netdata rrd4j rrdtool time-series visualization
Last synced: 5 months ago · JSON representation

Repository

A Time Series Browser

Basic Info
  • Host: GitHub
  • Owner: binjr
  • License: apache-2.0
  • Language: Java
  • Default Branch: master
  • Homepage: https://binjr.eu
  • Size: 20.2 MB
Statistics
  • Stars: 310
  • Watchers: 6
  • Forks: 24
  • Open Issues: 11
  • Releases: 114
Topics
analytics binjr chart java javafx javafx-desktop-apps jrds logviewer monitoring netdata rrd4j rrdtool time-series visualization
Created over 9 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Security Notice Dco

README.md

binjr

Build Status Github Release Maven Central

trailer

Contents

What is binjr?

binjr is a time series browser; it renders time series data produced by other applications as dynamically editable representations and provides advanced features to navigate the data smoothly and efficiently (drag & drop, zoom, history, detachable tabs, advanced time-range picker).

It is a standalone client application, that runs independently of the applications that produce the data; there are no server or server-side components dedicated to binjr that need to be installed on the source.

The user experience in binjr revolves around enabling users to compose a custom view by using any of the time-series exposed by the source, simply by dragging and dropping them on the view. That view then constantly evolves as users add or remove series from different sources, while navigating through it by changing the time range, the type of chart visualization and smaller aspects such as the color or transparency for each series. Users can navigate the change history for these views, using “back” and “forward” like in a web browser, and save the current state of their session at any time to a file, in order to reopen it later or to share it with someone else.

binjr also possesses the ability to visualize time series not only as charts of numeric values, but can be customized to support visualization for any data type; for instance it features out-of-the-box a source adapter for text based log files.

Log files, produced by applications to trace their lifecycle at runtime, typically contain timestamps for each event they contain; so we can think of them as time series, but with data points being textual information instead of numerical values. In practical terms, this means that a lot of the features built into binjr to compose and navigate time series visualizations can be applied to log files with great benefits.

Behind the scene, binjr uses Apache Lucene to index data from log files; meaning users can use its powerful query language to hack through vast quantities logged events. It also allows binjr to open log files of any size; unlike most text editors which will fail to load multi gigabytes-sized files as they try to fit it all in memory, binjr will happily index those and present a paginated view so that memory usage remains reasonable, while the backing index ensures that searches are fast and navigation snappy.

With these abilities, binjr aims to become the missing link between text editors and command line tools traditionally used to analyse monitoring data locally and full-blown log analytics platforms (e.g. Elastic/Logstash/Kibana stack) that centralizes logs for entire organizations. It provides many of the same powerful visualization and search features while still remaining a totally local solution (the data never needs to be pushed to the cloud - or anywhere else for that matter), and requiring no setup nor maintenance to speak of.

...and what it isn't

  • binjr is not a system performance collector, nor a collector of anything else for that matter. What it provides is efficient navigation and pretty presentation for time series collected elsewhere.
  • binjr is not a live system monitoring dashboard. While you can use it to connect to live sources, its feature set is not geared toward that particular task, and there are better tools for that out there. Instead, it aims to be an investigation tool, for when you don't necessarily know what you're looking for beforehand and you'll want to build and change the view of the data as you navigate through it rather than be constrained by pre-determined dashboards.
  • binjr is not SaaS or otherwise cloud-based.It is a purely client-side application that runs locally; there is no need to sign up to anything or upload your data anywhere.

Features

Data source agnostic

  • Standalone, client-side application.
  • Can connect to any number of sources, of different types, at the same time.
  • Communicates though the APIs exposed by the source.
  • Supports for data sources is extensible via plugins.
  • Supports time-series with numeric (e.g. charts) or text (e.g. logs) values.

Designed for ad-hoc view composition

  • Drag and drop series from any sources directly on the chart view.
  • Mix series from different sources on the same view.
  • Allows charts overlay: create charts with several Y axis and a shared timeline.
  • Highly customizable views; choose chart types, change series colours, transparency, legends, etc...
  • Save you work session to a file at any time, to be reopened later or shared with someone else.

Smooth navigation

  • Mouse driven zoom of both X and Y axis.
  • Drag and drop composition.
  • Browser-like, forward & backward navigation of zoom history.
  • Advanced time-range selection widget.
  • The tabs holding the chart views can be detached into separate windows.
  • Charts from different tabs/windows can be synchronized to a common timeline.

Fast, responsive & aesthetically pleasing visuals

  • Built on top of JavaFX for a modern look and cross-platform, hardware accelerated graphics.
  • Three different UI themes, to better integrate with host OS and fit user preferences.

Java based application

  • Cross-platform: works great on Linux, macOS and Windows desktops!
  • Strong performances, even under heavy load (dozens of charts with dozens of series and thousands of samples).

Supported data sources

binjr can consume time series data provided by the following data sources:

| Name | Description | Built-in[1] | Source type | |-------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------|-------------|-------------| | JRDS | A performance monitoring application written in Java. | ✓ | Remote | | Netdata | Distributed, real-time performance and health monitoring for systems and applications. | ✓ | Remote | | RRD Files | Round-Robin Database files produced by RRDtool and RRD4J. | ✓ | Local files | | CSV Files | Comma Separated Values files. | ✓ | Local files | | Log Files | Text based, semi-structured log files. | ✓ | Local files | | JDK Flight Recoder | Low-overhead data collection framework for troubleshooting Java applications and the HotSpot JVM. | ✓ | Local files | | Demo Adapter | A plugin for binjr that provides data sources for demonstration purposes. | | Local files |

[1]: Support for data sources not marked as 'Built-in' requires additional plugins.

Getting started

There are several ways to get up and running with binjr:

Download an application bundle

The simplest way to start using binjr is to download an application bundle from the download page.

These bundles contain all the dependencies required to run the app, including a copy of the Java runtime specially crafted to only include the required components and save disk space.
They are only ~80 MiB in size and there is one for each of the supported platform: Windows, Linux and macOS.

Simply download the one for your system, unpack it and run binjr to start!

Build from source

You can also build or run the application from the source code using the included Gradle wrapper.
Simply clone the repo from Github and run: * ./gradlew build to build the JAR for the all the modules. * ./gradlew run to build and start the application straight away. * ./gradlew clean packageDistribution to build an application bundle for the platform on which you ran the build.

Please note that it is mandatory to run the clean task in between two executions of the packageDistribution in the same environment.

Trying it out

If you'd like to experience binjr's visualization capabilities but do not have a compatible data source handy, you can use the demonstration data adapter.

It is a plugin which embeds a small, stand-alone data source that you can readily browse using binjr.

  1. Make sure binjr is installed on your system and make a note of the folder it is installed in.
  2. Download the binjr-adapter-demo-1.x.x.zip archive from https://github.com/binjr/binjr-adapter-demo/releases/latest
  3. Copy the binjr-adapter-demo-1.x.x.jar file contained in the zip file into the plugins folder of your binjr installation.
  4. Start binjr (or restart it if it was runnning when you copied the plugin) and open the demo.bjr workspace contained in the zip (from the command menu, select Workspaces > Open..., or press Ctrl+O)

Getting help

The documentation can be found here.

If you encounter an issue, or would like to suggest an enhancement or a new feature, you may do so here.

How is it licensed?

binjr is released under the Apache License version 2.0.

Contributing

This project accepts contributions made via either GitHub pull requests or Codeberg pull requests, at your convenience.

Certificate of Origin

By contributing to this project you agree to the Developer Certificate of Origin (DCO). This document was created by the Linux Kernel community and is a simple statement that you, as a contributor, have the legal right to make the contribution. See the DCO file for details.

Owner

  • Name: binjr
  • Login: binjr
  • Kind: organization

A Time Series Data Browser

GitHub Events

Total
  • Create event: 72
  • Issues event: 10
  • Release event: 59
  • Watch event: 23
  • Delete event: 66
  • Issue comment event: 21
  • Push event: 184
  • Pull request review event: 1
  • Pull request event: 1
  • Fork event: 2
Last Year
  • Create event: 72
  • Issues event: 10
  • Release event: 59
  • Watch event: 23
  • Delete event: 66
  • Issue comment event: 21
  • Push event: 184
  • Pull request review event: 1
  • Pull request event: 1
  • Fork event: 2

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 2,672
  • Total Committers: 6
  • Avg Commits per committer: 445.333
  • Development Distribution Score (DDS): 0.065
Past Year
  • Commits: 127
  • Committers: 2
  • Avg Commits per committer: 63.5
  • Development Distribution Score (DDS): 0.008
Top Committers
Name Email Commits
Frederic Thevenet t****d@f****r 2,498
Travis CI User t****s@e****g 115
Jérémie Roquet j****t@a****t 32
Frederic Thevenet f****2@3****m 24
Travis t****s@T****l 2
thargor t****r 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 104
  • Total pull requests: 17
  • Average time to close issues: 3 months
  • Average time to close pull requests: 1 day
  • Total issue authors: 24
  • Total pull request authors: 3
  • Average comments per issue: 1.58
  • Average comments per pull request: 1.06
  • Merged pull requests: 15
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 7
  • Pull requests: 2
  • Average time to close issues: 4 days
  • Average time to close pull requests: 6 days
  • Issue authors: 6
  • Pull request authors: 1
  • Average comments per issue: 2.29
  • Average comments per pull request: 0.5
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • fthevenet (61)
  • Arkanosis (13)
  • apiszcz (4)
  • tstuefe (3)
  • xrysf03 (2)
  • PenelopeFudd (2)
  • PMunch (2)
  • leehangyue (1)
  • mardukbp (1)
  • ezvr (1)
  • viluon (1)
  • bunder (1)
  • mikehearn (1)
  • bozdemir84 (1)
  • cricrazy (1)
Pull Request Authors
  • Arkanosis (13)
  • fthevenet (2)
  • thargor (2)
Top Labels
Issue Labels
bug (28) enhancement (27) feature (11) feedback wanted (4) discussion (3) help wanted (3) question (1) beta (1) API breaking (1) regression (1) wontfix (1)
Pull Request Labels

Packages

  • Total packages: 9
  • Total downloads: unknown
  • Total dependent packages: 13
    (may contain duplicates)
  • Total dependent repositories: 2
    (may contain duplicates)
  • Total versions: 479
proxy.golang.org: github.com/binjr/binjr
  • Versions: 98
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 6.5%
Average: 6.7%
Dependent repos count: 7.0%
Last synced: 6 months ago
repo1.maven.org: eu.binjr:binjr-core

A Time Series Data Browser

  • Versions: 56
  • Dependent Packages: 7
  • Dependent Repositories: 1
Rankings
Dependent packages count: 8.3%
Average: 20.6%
Dependent repos count: 20.6%
Stargazers count: 21.5%
Forks count: 31.9%
Last synced: 6 months ago
repo1.maven.org: eu.binjr:binjr-adapter-csv

A Time Series Data Browser

  • Versions: 56
  • Dependent Packages: 1
  • Dependent Repositories: 0
Rankings
Stargazers count: 15.7%
Forks count: 22.0%
Average: 25.4%
Dependent repos count: 32.0%
Dependent packages count: 32.0%
Last synced: 6 months ago
repo1.maven.org: eu.binjr:binjr-adapter-text

A Time Series Data Browser

  • Versions: 33
  • Dependent Packages: 1
  • Dependent Repositories: 0
Rankings
Stargazers count: 15.7%
Forks count: 22.0%
Average: 25.4%
Dependent repos count: 32.0%
Dependent packages count: 32.0%
Last synced: 6 months ago
repo1.maven.org: eu.binjr:binjr-adapter-netdata

A Time Series Data Browser

  • Versions: 37
  • Dependent Packages: 1
  • Dependent Repositories: 0
Rankings
Stargazers count: 15.7%
Forks count: 22.0%
Average: 25.4%
Dependent repos count: 32.0%
Dependent packages count: 32.0%
Last synced: 6 months ago
repo1.maven.org: eu.binjr:binjr-adapter-jrds

A Time Series Data Browser

  • Versions: 56
  • Dependent Packages: 1
  • Dependent Repositories: 0
Rankings
Stargazers count: 15.7%
Forks count: 22.0%
Average: 25.4%
Dependent repos count: 32.0%
Dependent packages count: 32.0%
Last synced: 6 months ago
repo1.maven.org: eu.binjr:binjr-adapter-logs

A Time Series Data Browser

  • Versions: 33
  • Dependent Packages: 1
  • Dependent Repositories: 1
Rankings
Dependent repos count: 20.8%
Stargazers count: 21.6%
Average: 26.8%
Forks count: 32.0%
Dependent packages count: 33.0%
Last synced: 6 months ago
repo1.maven.org: eu.binjr:binjr-app

A Time Series Data Browser

  • Versions: 54
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Stargazers count: 15.7%
Forks count: 22.0%
Average: 29.6%
Dependent repos count: 32.0%
Dependent packages count: 48.9%
Last synced: 6 months ago
repo1.maven.org: eu.binjr:binjr-adapter-rrd4j

A Time Series Data Browser

  • Versions: 56
  • Dependent Packages: 1
  • Dependent Repositories: 0
Rankings
Dependent repos count: 32.0%
Average: 32.0%
Dependent packages count: 32.0%
Last synced: 6 months ago

Dependencies

binjr-adapter-rrd4j/build.gradle maven
  • org.rrd4j:rrd4j 3.8.1 implementation
binjr-core/build.gradle maven
  • com.google.code.gson:gson 2.9.0 api
  • jakarta.xml.bind:jakarta.xml.bind-api 3.0.1 api
  • org.apache.commons:commons-csv 1.9.0 api
  • org.apache.httpcomponents.client5:httpclient5 5.1.3 api
  • org.apache.logging.log4j:log4j-core 2.17.2 api
  • org.apache.logging.log4j:log4j-jcl 2.17.2 api
  • org.controlsfx:controlsfx 11.1.1 api
  • org.fxmisc.richtext:richtextfx 0.10.9 api
  • org.openjfx:javafx-base ${OPENJFX_VERSION} compileOnlyApi
  • org.openjfx:javafx-controls ${OPENJFX_VERSION} compileOnlyApi
  • org.openjfx:javafx-fxml ${OPENJFX_VERSION} compileOnlyApi
  • org.openjfx:javafx-graphics ${OPENJFX_VERSION} compileOnlyApi
  • org.openjfx:javafx-swing ${OPENJFX_VERSION} compileOnlyApi
  • com.github.ben-manes.caffeine:caffeine 3.1.0 implementation
  • org.apache.logging.log4j:log4j-slf4j-impl 2.17.2 implementation
  • org.apache.lucene:lucene-core 9.1.0 implementation
  • org.apache.lucene:lucene-facet 9.1.0 implementation
  • org.apache.lucene:lucene-queryparser 9.1.0 implementation
  • org.bouncycastle:bcpg-jdk18on 1.71 implementation
  • org.gillius:jfxutils 1.0 implementation
  • org.glassfish.jaxb:jaxb-runtime 3.0.2 implementation
  • org.reflections:reflections 0.9.12 implementation
build.gradle maven
  • org.junit.jupiter:junit-jupiter-api 5.8.2 testImplementation
  • org.junit.jupiter:junit-jupiter-engine 5.8.2 testRuntimeOnly
.github/workflows/gradle-wrapper-validation.yml actions
  • actions/checkout v3 composite
  • gradle/wrapper-validation-action v1 composite
binjr-adapter-csv/build.gradle maven
binjr-adapter-jfr/build.gradle maven
binjr-adapter-jrds/build.gradle maven
binjr-adapter-logs/build.gradle maven
binjr-adapter-netdata/build.gradle maven
binjr-adapter-text/build.gradle maven
binjr-app/build.gradle maven