• Stars
    star
    111
  • Rank 314,510 (Top 7 %)
  • Language
    JavaScript
  • License
    Apache License 2.0
  • Created over 7 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Build Status Coverage Status

Haystack-UI

Haystack-ui is the web UI for haystack. It is the central place for visualizing processed data from various haystack sub-systems. Visualization tools in haystack-ui include -

Traces
Distributed tracing visualization for easy root cause analysis
Trace Timeline
Trends
Visualization of vital service and operation trending
Trends
Service Graph
Real time dependency graph with health and connectivity indicators
Service Graph
Alerts and Anomaly Detection
UI for displaying, configuring, and subscribing to alerts
Alerts
Universal Search
Intuitive, sandbox-style searching for accurate results.
Universal Search

Development

It is a expressjs based single page client side app written in ES6 + React and using Mobx for data flow.

Pre-requisites

Ensure you have node >= 10.0 and npm >= 6.0 installed.

Clone the repository including recursive submodules:

$ git clone --recurse-submodules https://github.com/ExpediaDotCom/haystack-ui.git
$ cd haystack-ui

If the repository was already cloned, you can initialize and update submodules with git submodule update --init --recursive

Build and Run

This application uses webpack for building + bundling resources. To run in developer mode with client and server side hotloading, use:

$ npm install                # install dependencies
$ npm run start:dev          # start server in dev mode with hotloading

Once start is successful you can visit http://localhost:8080/

For running in production mode, use:

$ npm install                # install dependencies
$ npm run build              # run tests(with coverage), build client side code and emit produciton optimized bundles
$ npm start                  # start node server

Autoformatting in your favorite IDE with Prettier Integration

This projects supports auto-formatting of source code! Simply find your favorite IDE from the list in the following list: https://prettier.io/docs/en/editors.html

For VSCode support, perform the following steps:

  • Launch VS Code Quick Open (Ctrl+P)
  • Paste the following command, and press enter:
ext install esbenp.prettier-vscode

This projects has a pre-configured .vscode/settings.json which enables format on save. Auto-formatting should execute everytime you save a file.

Prettier is also configured to run in a pre-commit hook to make enforcing consistency of source code between developers easy.

Testing

Haystack-ui utilizes Mocha as it's testing framework, with Chai as the assertation library, Enzyme for utility, and JSDOM as a headless browser for rendering React components. ESLint is used as a linter and insurance of code quality.

To run the test suite, enter the command npm test.

To check code coverage, run npm run coverage and open the generated index.html in the created coverage folder

Note- You may have to install Cairo dependencies separately for tests to work.

  • OS X Users : brew install pkg-config cairo pango libpng jpeg giflib
    • NOTE: If you run into Package libffi was not found in the pkg-config search path. errors while running npm install, you will need to addtionally run the following command: export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:/usr/local/opt/libffi/lib/pkgconfig"
  • Others: Refer https://www.npmjs.com/package/canvas#installation

Docker

We have provided make commands to facilitate building. For creating docker image use -

$ make all

Configuration

Haystack UI can be configured to use one or more stores, each providing user interface for one subsystem in Haystack. Based on what subsystems you have available in your haystack cluster, you can configure corresponding stores and UI will adapt to show interfaces only for the configured subsystems. For more details on this refer - https://github.com/ExpediaDotCom/haystack-ui/wiki/Configuring-Subsystem-Connectors

Haystack-ui as drop-in replacement for Zipkin UI

If you have an existing zipkin cluster you can use haystack UI as a drop-in replacement for zipkin's UI. For more details on this refer - https://github.com/ExpediaDotCom/haystack-ui/wiki/Configuring-Subsystem-Connectors#using-haystack-ui-as-replacement-for-zipkin-ui

More Repositories

1

haystack

Top level repository for Haystack, containing documentation and deployment scripts
HCL
306
star
2

alexa-conversation

Framework to easily test your Alexa skills functionally by creating a conversation with your skill.
JavaScript
52
star
3

cloudtrail-log-analytics

Cloudtrail Log Analytics using Amazon Elasticsearch Service - AWS Serverless Application
Python
31
star
4

haystack-docker

Repository with docker-compose files to start Haystack components in sandbox
TSQL
17
star
5

tesla

Java
15
star
6

haystack-agent

agent that dispatches spans to various sinks depending upon the configuration
Java
14
star
7

haystack-trends

Scala
10
star
8

haystack-traces

Components that handle spans, buffers them, writes to ElasticSearch/Cassandra, and provides API to access them .
Scala
9
star
9

haystack-idl

Span and other data model definitions used by Haystack
Go
9
star
10

haystack-client-java

Haystack bindings for OpenTracing API
Java
9
star
11

metrics-java

Metric library based on the Metrics 2.0 specification.
Java
8
star
12

spring-cloud-sleuth-haystack-reporter

Java
5
star
13

opentracing-spring-haystack-example

Java
5
star
14

haystack-client-go

Haystack bindings for OpenTracing API in Go
Go
5
star
15

haystack-metrics

A library to facilitate collecting metrics in Haystack
Java
4
star
16

haystack-collector

haystack component that collects spans from various sources and publish to kafka
Scala
4
star
17

haystack-client-python

Haystack bindings for OpenTracing in Python
Python
4
star
18

adaptive-alerting-detector-build

Adaptive Alerting detector build library
Python
4
star
19

haystack-istio

Haystack adapter for Istio Service Mesh
Go
3
star
20

haystack-blob-example

Example application to show how blobs and spans interact with haystack environment
Java
3
star
21

opentracing-spring-haystack-starter

Integration library to enable haystack integration with opentracing-spring-cloud-starter @ https://github.com/opentracing-contrib/java-spring-cloud
Java
3
star
22

haystack-alerting

Scala
3
star
23

haystack-dropwizard

Java
3
star
24

alert-manager

Java
3
star
25

haystack-service-graph

haystack component that infers service call graph from the spans received
Scala
3
star
26

EchoX3

EchoX3 is a distributed object cache that allows methods to be added to those objects so they can be called remotely.
Java
3
star
27

haystack-opencensus-exporter-java

OpenCensus Haystack Trace Exporter is an Opencensus exporter that exports data to Haystack.
Java
2
star
28

blobs-example

Dockerfile
2
star
29

haystack-dropwizard-example

Java
2
star
30

haystack-pipes

Packages to send ("pipe") Haystack data to external sinks (like AWS Firehose)
Java
2
star
31

haystack-client-node

Haystack bindings for OpenTracing API in node
TypeScript
2
star
32

haystack-commons

Module with common code that is used by various haystack components
Scala
2
star
33

haystack-log4j-metrics-appender

A log4j appender that sends an error count to a graphite endpoint
Java
1
star
34

haystack-logback-metrics-appender

A logback appender that sends an error count to a graphite endpoint
Java
1
star
35

nodebb-plugin-mentions-notifier

NodeBB plugin that posts mention notifications to endpoints, like slack
JavaScript
1
star
36

ExpediaDotCom.github.io

HTML
1
star
37

haystack-blob-node

npm module to handle blobs
TypeScript
1
star
38

spring-cloud-sleuth-haystack-reporter-example

spring-cloud-sleuth-haystack-reporter-example
Java
1
star
39

haystack-secrets-commons

Java
1
star