All Projects → banzaicloud → Hollowtrees

banzaicloud / Hollowtrees

Licence: apache-2.0
A ruleset based watchguard to keep spot/preemptible instance based clusters safe, with plugins for VMs, Kubernetes, Prometheus and Pipeline

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Hollowtrees

Gocloud
☁️ Go API for open cloud
Stars: ✭ 112 (-20.57%)
Mutual labels:  aws, cloud
Cloud Security Remediation Guides
Security Remediation Guides
Stars: ✭ 121 (-14.18%)
Mutual labels:  aws, cloud
Udacity
➿ 💡 My Udacity projects that I have made to improve my skills and complete my nanodegree. Please don't use it to copy the projects. Submit the PR if you want something to be added to this repository.
Stars: ✭ 113 (-19.86%)
Mutual labels:  aws, cloud
Prometheus
The Prometheus monitoring system and time series database.
Stars: ✭ 40,114 (+28349.65%)
Mutual labels:  prometheus, alerting
Prometheus To Cloudwatch
Utility for scraping Prometheus metrics from a Prometheus client endpoint and publishing them to CloudWatch
Stars: ✭ 127 (-9.93%)
Mutual labels:  aws, prometheus
Grafana
The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
Stars: ✭ 45,930 (+32474.47%)
Mutual labels:  prometheus, alerting
Node Lambda Log
Basic logging mechanism for Node 6.10+ Lambda Functions
Stars: ✭ 115 (-18.44%)
Mutual labels:  aws, cloud
Mist Ce
Mist is an open source, multi-cloud management platform
Stars: ✭ 1,391 (+886.52%)
Mutual labels:  aws, cloud
Prom2teams
prom2teams is an HTTP server built with Python that receives alert notifications from a previously configured Prometheus Alertmanager instance and forwards it to Microsoft Teams using defined connectors
Stars: ✭ 122 (-13.48%)
Mutual labels:  prometheus, alerting
Awsprocesscreds
Process credential providers for AWS SDKs and Tools
Stars: ✭ 123 (-12.77%)
Mutual labels:  aws, cloud
Seldon Server
Machine Learning Platform and Recommendation Engine built on Kubernetes
Stars: ✭ 1,435 (+917.73%)
Mutual labels:  aws, cloud
Aws Cli
Universal Command Line Interface for Amazon Web Services
Stars: ✭ 11,804 (+8271.63%)
Mutual labels:  aws, cloud
Linchpin
ansible based multicloud orchestrator
Stars: ✭ 107 (-24.11%)
Mutual labels:  aws, cloud
S3transfer
Amazon S3 Transfer Manager for Python
Stars: ✭ 108 (-23.4%)
Mutual labels:  aws, cloud
Playwright Aws Lambda
Support for running Microsoft's Playwright on AWS Lambda and Google Cloud Functions
Stars: ✭ 107 (-24.11%)
Mutual labels:  aws, cloud
Awesome Layers
λ A curated list of awesome AWS Lambda Layers. Sponsored by https://cloudash.dev
Stars: ✭ 1,655 (+1073.76%)
Mutual labels:  aws, cloud
Learning Cloud
List of resources - courses, sample code, articles and screencasts for learning AWS, Azure, GCP and Alibaba Cloud
Stars: ✭ 100 (-29.08%)
Mutual labels:  aws, cloud
Adaptdl
Resource-adaptive cluster scheduler for deep learning training.
Stars: ✭ 100 (-29.08%)
Mutual labels:  aws, cloud
Aws Faq
Stars: ✭ 122 (-13.48%)
Mutual labels:  aws, cloud
Ecs Exporter
Export AWS ECS cluster metrics to Prometheus
Stars: ✭ 127 (-9.93%)
Mutual labels:  aws, prometheus

Hollowtrees

Hollowtrees is a wave for the highest level, the pin-up centrefold for the Mentawai islands bringing a new machine-like level to the word perfection. Watch out for the vigilant guardian aptly named The Surgeons Table, whose sole purpose is to take parts of you as a trophy.

Hollowtrees, a ruleset based watchguard is keeping spot/preemptible instance based clusters safe and allows to use them in production. Handles spot price surges within one region or availability zone and reschedules applications before instances are taking down. Hollowtrees follows the "batteries included but removable" principle and has plugins for different runtimes and frameworks. At the lowest level it manages spot based clusters of virtual machines, however it contains plugins for Kubernetes, Prometheus and Pipeline as well.

Hollowtrees is a core building block of the Pipeline platform. Check out the developer beta:

Warning: Hollowtrees is experimental, under development and does not have a stable release yet. If in doubt, don't go out.

Quick start

Building the project is as simple as running a go build command. The result is a statically linked executable binary.

make build
./build/hollowtrees

Configuration of the project is done through a YAML config file. An example for that can be found under config.yaml.dist

Quick architecture overview

For an introduction and overview of the architecture please read the following blog post

Hollowtrees

Configuring Prometheus to send alerts to Hollowtrees

Hollowtrees is listening on an API similar to the Prometheus Alert Manager and it can be configured in Prometheus as an Alert Manager. For example if Hollowtrees is running locally on port 9092 (configurable through global.bindAddr), Prometheus can be configured like this to send its alerts to Hollowtrees directly:

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
       - localhost:9092

Configuring action flows

After a Prometheus alert is received by Hollowtrees, it first converts it to an event that complies to the OpenEvents specification, then it processes it based on the action flows configured in the config.yaml file, and sends events to its configured action plugins. An example configuration can be found in config.yaml.dist under plugins and flows.

Hollowtrees uses gRPC to send events to its action plugins, and calls the action plugins sequentially. This very simple rule engine will probably change once Hollowtrees will have a release and will support different calling mechanisms, and passing of configuration parameters to the plugins.

Alerts coming from Prometheus are converted to events with a type of prometheus.server.alert.<AlertName>. Prometheus labels are converted to the data payload as JSON. Data payload elements can be used in the action flows to forward events to the plugins only when it matches a specific string.

Advanced control structures in action flows

  • cooldown: Cooldown time that passes after an action flow is successfully finished. During the cooldown the action flow is considered in progress. Format: golang time, e.g.: 5m30s
  • groupBy: Categorizes subsequent events as the same, if all the corresponding values of these attributes match
  • filters: Filter events by event values

Action plugins

Action plugins are microservices that can react to different Hollowtrees events. They are listening on a gRPC endpoint and processing events in an arbitrary way. An example action plugin is in examples/grpc_plugin.

To create an action plugin, the grpcplugin package must be imported, the EventHandler interface must be implemented and the gRPC server must be started with

as.Serve(port, newEventHandler())

License

Copyright (c) 2017-2019 Banzai Cloud, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

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].