• This repository has been archived on 15/Mar/2019
  • Stars
    star
    143
  • Rank 255,547 (Top 6 %)
  • Language
    Clojure
  • License
    Apache License 2.0
  • Created over 9 years ago
  • Updated over 8 years ago

Reviews

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

Repository Details

Satellite monitors, alerts on, and self-heals your Mesos cluster.

Satellite

Satellite monitors, alerts on, and self-heals your Mesos cluster.

Overview

Satellite currently serves three functions, each adding functionality to Mesos:

  1. Most importantly, Satellite Master directly monitors Mesos masters and receives monitoring information from Mesos slaves through Satellite Slaves, producing a Riemann event stream for aggregate statistics of the cluster (e.g., utilization, number of tasks lost) as well as events specific to the masters (e.g., how many leaders are there).

    As Satellite embeds Riemann, you can do anything you would usually do with a Riemann event stream. You can configure to alert (e.g., email and pagerduty), feed your dashboards, and trigger whitelist updates. If you already have a primary Riemann server, you can forward events to that and contain all or some of the stream eventing logic there; the power is yours. You can look at our recipes in src/recipes.clj for patterns we have found useful.

  2. Satellite provides a REST interface for interacting with the Mesos master whitelist. The whitelist is a text file of hosts to which the master will consider sending tasks. Satellite ensures that update requests are consistent across the Mesos masters. See Whitelist below for a more detailed explanation of the model for interacting with the whitelist.

  3. Satellite can provide a REST interface for accessing cached Mesos task metadata. To be very clear, Satellite does not cache the metadata, simply an interface to retrieve it, if it has been cached. This is useful if you have persisted task metadata to get around the weak persistence guarantees currently offered by Mesos. This feature is optional.

Whitelist

As we said above, the Mesos whitelist is a text file of hosts to which the master will consider sending tasks. Satellite adds two additional conceptual whitelists to the mix:

  1. A managed whitelist: Hosts that have been entered automatically in response to your Riemann configuration.
  2. A manual whitelist: If a host is in this whitelist, its status overrides that in the managed whitelist. This is to allow manual override. The interface to this whitelist is in the PUT and DELETE REST endpoints.

A periodic merge operation merges these two to the whitelist file that Mesos observes.

Architecture

High level

There are two kinds of Satellite processes: satellite-masters and satellite-slaves. For each mesos-master and mesos-slave process, there is a satellite-master and satellite-slave process watching it respectively.

| Follower         | Leader           | Follower         |
|------------------|------------------|------------------|
| mesos-master     | mesos-master     | mesos-master     |
| satellite-master | satellite-master | satellite-master |

      ^               <-  ^  ->                 ^
      |  -> ->          \ | /           <-  <-  |
      | / _/             \|/              \,_ \ |

| satellite-slave | satellite-slave | satellite-slave |
| mesos-slave     | mesos-slave     | mesos-slave     |

Little lower

satellite-master embeds Riemann and satellite-slave embeds a Riemann client. satellite-slaves send one type of message to all the satellite-masters, a Riemann event that is the result of a user-specified test.

You can use Riemann's powerful stream processing DSL to act on the events your slave is sending the masters--email, alert, turn hosts on or off--it's up to you!

We've provided some very, very basic recipes and are interested in adding more, so please send a pull request if you think anything would serve the larger community.

Deploying Satellite

If you're deploying Satellite to a Mesos cluster, you might find that installing and configuring it on all of your hosts involves some repetitive busy work. To help you automate these tasks, we've provided some Ansible Roles.

Contributing

We need all contributors to fill out our Contributor License Agreement found in /cla before we can accept any code or pull requests.

&c

Apache Mesos is a trademark of the Apache Software Foundation.

More Repositories

1

beakerx

Beaker Extensions for Jupyter Notebook
Jupyter Notebook
2,784
star
2

flint

A Time Series Library for Apache Spark
Scala
993
star
3

Cook

Fair job scheduler on Kubernetes and Mesos for batch workloads and Spark
Clojure
336
star
4

git-meta

Repository for the git-meta project -- build your own monorepo using Git submodules
JavaScript
218
star
5

marbles

Read better test failures.
Python
116
star
6

fastfreeze

Turn-key solution to checkpoint/restore applications running in Linux containers
Rust
113
star
7

waiter

Runs, manages, and autoscales web services on Mesos and Kubernetes
Clojure
83
star
8

ngrid

It's "less" for data!
Python
75
star
9

nsncd

nscd-compatible daemon that proxies lookups, without caching
Rust
47
star
10

uberjob

uberjob is a Python package for building and running call graphs.
Python
27
star
11

riemann-jmx

A reliable JMX connector for Riemann
Clojure
25
star
12

libvirtcpuid

libvirtcpuid provides transparent CPUID virtualization, all in userspace.
C
24
star
13

blinky

C++
22
star
14

tensu

Tensu is a TUI (text user interface) based program for interacting Sensu Go's monitoring pipeline and backend API.
Python
21
star
15

ts_isolate

C
17
star
16

libvirttime

libvirttime provides transparent time virtualization, all in userspace.
Rust
14
star
17

postgresql-contrib

PLpgSQL
12
star
18

goll-e

Graph Object Language and Layout Editor
JavaScript
11
star
19

beaker-notebook-archive

Archive of Beaker Notebook
Java
11
star
20

gcsthin

Rust
11
star
21

envoy-viz

Go
10
star
22

mbeat-core

Command-line utilities for testing multicast network.
C
10
star
23

beakerx_tabledisplay

TypeScript
9
star
24

docker-repo-auth-demo

Demonstration of auth with the Docker open source registry
Python
9
star
25

set_ns_last_pid

The semantics of writing to /proc/sys/kernel/ns_last_pid without privileges
C
8
star
26

iqueue

C
8
star
27

debootwrap

Create a Debian chroot unprivileged, with the help of bubblewrap and debootstrap.
Shell
6
star
28

nxv

Render NetworkX graphs using GraphViz
Python
5
star
29

OpenJDK

Two Sigma Open Source fork of OpenJDK for contributions to upstream, based on AdoptOpenJDK
Java
5
star
30

docker-sideways

Go
4
star
31

beakerx_widgets

TypeScript
4
star
32

pagerduty-supervisor

Integrates PagerDuty with SupervisorD
Python
4
star
33

beakerx_kernel_base

Base repository for BeakerX JVM based kernels
Java
3
star
34

verilator_support

Support scripts for verilator
Perl
3
star
35

beakerx_kernel_scala

Java
3
star
36

memento

Framework and lightweight set of standards that encourage discipline in the way data is incrementally transformed through code
Python
3
star
37

beakerx_kernel_groovy

Java
2
star
38

beakerx_kernel_sql

Java
2
star
39

gsskrb5

C
2
star
40

beakerx_kernel_java

Java
1
star
41

relexec

A program to enable relative shebangs in scripts
Python
1
star
42

beakerx_base

Python
1
star
43

beakerx_tests

Jupyter Notebook
1
star
44

beakerx_kernel_autotranslation

A repository for BeakerX Autotranslation components.
Python
1
star