All Projects → elastic → beefheart

elastic / beefheart

Licence: Apache-2.0 license
A tool to index Fastly realtime analytics metrics into Elasticsearch.

Programming Languages

haskell
3896 projects
Dockerfile
14818 projects
Makefile
30231 projects
shell
77523 projects

Projects that are alternatives of or similar to beefheart

uptrace
Open source APM: OpenTelemetry traces, metrics, and logs
Stars: ✭ 1,187 (+8378.57%)
Mutual labels:  observability
skywalking-client-js
Client-side JavaScript exception and tracing library for Apache SkyWalking APM.
Stars: ✭ 171 (+1121.43%)
Mutual labels:  observability
skywalking-query-protocol
Query Protocol for Apache SkyWalking in GraphQL format
Stars: ✭ 45 (+221.43%)
Mutual labels:  observability
live-platform
Add breakpoints, logs, metrics, and spans to live production applications
Stars: ✭ 37 (+164.29%)
Mutual labels:  observability
cryostat
Secure JDK Flight Recorder management for containerized JVMs
Stars: ✭ 147 (+950%)
Mutual labels:  observability
robusta
Open source Kubernetes monitoring, troubleshooting, and automation platform
Stars: ✭ 772 (+5414.29%)
Mutual labels:  observability
atlas
Secure Distributed Thanos Deployment using an Observability Cluster
Stars: ✭ 39 (+178.57%)
Mutual labels:  observability
slab
An extensible Scala framework for creating monitoring dashboards.
Stars: ✭ 23 (+64.29%)
Mutual labels:  observability
glouton
Monitoring agent for servers, containers, and applications 🔬
Stars: ✭ 19 (+35.71%)
Mutual labels:  observability
skywalking-banyandb
An observability database aims to ingest, analyze and store Metrics, Tracing and Logging data.
Stars: ✭ 111 (+692.86%)
Mutual labels:  observability
elastic-stax
elastic-stax Docker Compose projects => for learning/training purposes only!
Stars: ✭ 13 (-7.14%)
Mutual labels:  observability
policy-reporter
Monitoring and Observability Tool for the PolicyReport CRD with an optional UI.
Stars: ✭ 140 (+900%)
Mutual labels:  observability
nestjs-otel
OpenTelemetry (Tracing + Metrics) module for Nest framework (node.js) 🔭
Stars: ✭ 273 (+1850%)
Mutual labels:  observability
cilium-cli
CLI to install, manage & troubleshoot Kubernetes clusters running Cilium
Stars: ✭ 162 (+1057.14%)
Mutual labels:  observability
cryostat-operator
An OpenShift Operator to facilitate setup and management of Cryostast and expose the Cryostat API through Kubernetes Custom Resources.
Stars: ✭ 25 (+78.57%)
Mutual labels:  observability
frisbee
A Kubernetes Framework for Cloud-Native Application Testing
Stars: ✭ 39 (+178.57%)
Mutual labels:  observability
opentelemetry-js-api
OpenTelemetry Javascript API
Stars: ✭ 75 (+435.71%)
Mutual labels:  observability
grafana-operator
An operator for Grafana that installs and manages Grafana instances, Dashboards and Datasources through Kubernetes/OpenShift CRs
Stars: ✭ 449 (+3107.14%)
Mutual labels:  observability
k8s-istio-observe-frontend
Angular 12-based front-end UI for k8s Golang observability project: https://github.com/garystafford/k8s-istio-observe-backend/tree/2021-istio
Stars: ✭ 20 (+42.86%)
Mutual labels:  observability
esp-insights
ESP Insights: A remote diagnostics/observability framework for connected devices
Stars: ✭ 31 (+121.43%)
Mutual labels:  observability

beefheart

a natural black angus beef heart slow-cooked in a fiery sriracha honey wasabi BBQ sauce and set on a rotating lazy Susan.

Beefheart is a tool that monitors Fastly real-time analytics data and indexes it into Elasticsearch.

Screenshot

quickstart

Prerequisites:

  • Build
  • Run or Demo
    • Fastly API key available in environment variable FASTLY_KEY
    • Docker

The following command will look for your Fastly API key in the environment variable FASTLY_KEY and, by default, send metrics documents to a local Elasticsearch listener at http://localhost:9200.

$ make run

Testing (Docker is required)

$ make test

See available command shortcuts to build, run a demo, and so on.

$ make help

Beefheart comes with a Makefile target to quickly demonstrate its features if a) you have a Fastly account and b) your API key that can read realtime metrics is available in your shell environment under the name FASTLY_KEY. With the key exported to your environment, run the demo target in a shell:

$ make demo

And open http://localhost:5601 to begin creating dashboards from your Fastly metrics. Use Ctrl-C to stop the demo, which will cleanup any Docker containers.

If you'd like to run the application with custom flags or settings, invoke the command with stack, passing in arguments in the following format:

$ stack exec beefheart -- --help
<help output>

Why?

Fastly provides a real-time analytics API that exposes a variety of metrics across services for a given account that include useful insights like transmitted bytes, number of hits, and number of requests. While the default stats dashboard provided in the Fastly management portal is useful, extracting and storing these metrics can provide another level of utility, such as for use cases like monitoring and custom dashboards. Beefheart extracts all (as of the time of this writing) available metrics from this API and stores them in Elasticsearch which permits you to drill down into Fastly service performance deeply. For example, you might want to create a Kibana dashboard that highlights services pushing the most traffic, or visualize what the cache hit to cache miss ratio looks like.

Implementation

As part of Elastic's Space, Time engineering principles, Beefheart was written in Haskell as a learning opportunity. The core operations of a tool like this are not excessively esoteric (that is, consuming metrics from a JSON API, transforming them, and sending them along to another REST API), which provided a good neutral ground to explore principles of Haskell software development.

Note that significant effort has been taken to document the code extensively and use techniques and patterns that are friendly to newcomers. Although the code comments and documentation should help lead a novice through the program's logic, the bulk of this project was written by a newcomer to Haskell, so contributions are welcome!

Beefheart provides useful real-world Haskell examples for:

Maintenance

This project is provided as a utility to the Elastic community and is not an officially supported product. Responsiveness to contributions, bugfixes, and features will be collaboratively supported on a best-effort basis.

Licensing

This project is licensed under the Apache 2 open source license.

FAQ

Why not use Bloodhound instead of req?

Elasticsearch communication is done over plain HTTP libraries instead of Bloodhound because there are a few missing pieces like ILM support from the library. Adding support for missing features to Bloodhound and using it in Beefheart would be great!

Why is this project named "Beefheart"?

The Stack Infrastructure team at Elastic has a tradition of naming some projects after our favorite celebrities. Guy Fieri is one of our honored team mascots, and the name for this project was picked from a satirical restaurant menu.

Wishlist

Beefheart tries to avoid overly complex abstractions, so if you're new to the language and are itching to try some Haskell, please do! Contributions are welcome. Here are some ideas:

  • Standardized bracket or json log formatting everywhere in the code (for example, picking out any simple printed output)
  • Add the ability to send EKG metrics to Elasticsearch
  • Enrich point-of-presence codes with human-readable names using the datacenter API
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].