• Stars
    star
    152
  • Rank 244,685 (Top 5 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 4 years ago
  • Updated over 1 year ago

Reviews

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

Repository Details

Slo-exporter computes standardized SLI and SLO metrics based on events coming from various data sources.

SLO exporter

CircleCI GitHub release (latest SemVer) Docker Pulls GitHub All Releases

Tool slo-exporter computes standardized Service Level Indicator (SLI) and Service Level Objectives (SLO) metrics based on events coming from various data sources. It follows principles from the SRE Workbook. With already prepared examples, Grafana dashboards, Prometheus recording rules and alerts, you can easily start to alert on SLO in your infrastructure.

If you want to start with computing SLOs, make sure to check out this guide!

Motivation

After more than year of experience of maintaining SLO alerting based on application metrics just from Prometheus, number of issues showed up which made it very difficult and unbearable. Few among others:

  • High cardinality of metrics if we wanted to easily find out which event type caused the alert or affected the error budget.
  • Classification of events ending up as huge regular expressions in the PromQLs.
  • Issues with default values for the computation if no events happened.
  • Need to filter out some events based on high cardinality metadata which cannot be added to metrics.

This lead us to decision that we need to process the events separately and in Prometheus do just the final computation and alerting.

We describe our journey towards SLO based alerting more in detail in the two articles:

How it works

Every ingested event has metadata which are used to classify it to specific SLO domain and class as described in the SRE Workbook chapter Alerting on SLOs. Additionally, name of the application where the event happened and identifier of the event is also added to ease the debugging of possible SLO violation. Finally, you decide based on the metadata if the event was a successful or failed one. Slo-exporter then exposes Prometheus metric slo_domain_slo_class:slo_events_total{slo_domain="...", slo_class="...", result="..."}. This gives you number of successful or failed events which is all you need to calculate the error budget, burn rate etc.

Installing

Build

In the root of the repository run

make

Docker

Prebuilt docker images can be found at Docker Hub.

docker run -it seznam/slo-exporter:<version> --help

Prebuilt binaries

See the the latest release page for the prebuilt binaries.

Configuration and examples

Detailed configuration documentation you can find here docs/configuration.

To see some real use-cases and examples you can look at the examples/.

Operating

Some advices on operating the slo-exporter, debugging and profiling can be found here docs/operating.md.

Please note that features marked as Experimental are not considered stable and may be removed or changed even in minor or patch release.

Community

More Repositories

1

elasticlient

C++ Elasticsearch client library
C++
131
star
2

compose-react-refs

A small utility that composes two or more react refs into a ref callback.
TypeScript
114
star
3

pyoo

PyOO allows you to control a running OpenOffice or LibreOffice program for reading and writing spreadsheet documents
Python
99
star
4

euphoria

Euphoria is an open source Java API for creating unified big-data processing flows. It provides an engine independent programming model which can express both batch and stream transformations.
Java
83
star
5

halson

The HAL+JSON Resource Object
JavaScript
61
star
6

JAK

JAK je kompaktní a jednoduchý systém volně provázaných knihoven, usnadňující práci v prostředí jazyka JavaScript.
JavaScript
49
star
7

small-e-czech

46
star
8

IMA.js-skeleton

JavaScript
43
star
9

fastrpc

FastRPC library
C++
41
star
10

ima

TypeScript
38
star
11

httpmockserver

C++ HTTP mock server for client tests.
C++
32
star
12

SuperiorMySqlpp

SuperiorMySQL++
C++
31
star
13

QApe

Independent tester for any website
JavaScript
25
star
14

homepage-legacy

Historické verze zdrojového kódu různých komponent hlavní stránky Seznam.cz
JavaScript
23
star
15

szn-select

Accessible HTML selectbox with customizable UI. Based on web components and easy to integrate with various frameworks like React or Angular.
JavaScript
18
star
16

teng

TENG - Template ENGine
C++
14
star
17

vindaloo

Universal deployer into kubernetes
Python
13
star
18

IMA.js-core

The core library of the IMA.js application stack
JavaScript
12
star
19

vertical-search-blending-dataset

Python
12
star
20

cppsphinxclient

Sphinx searchserver C++ client library, an alternative to the native C library distributed with sphinx. The communication module is written using unix sockets, so this library is only suitable for unix-like systems.
C++
12
star
21

swift-uniredis

Redis client for Swift on macOS and Linux
Swift
11
star
22

IMA.js-babel6-polyfill

Babel 6 polyfill for IE<=10
JavaScript
11
star
23

koa-hal

hal+json response support for Koa
JavaScript
11
star
24

IMA.js-plugins

IMA.js plugins repository
JavaScript
10
star
25

dbuilder

Docker images for building packages with clean dependencies in multiple distributions.
Python
10
star
26

CVUT

HTML
9
star
27

SDS

JavaScript
8
star
28

shelter

Python
8
star
29

DaReCzech

Python
8
star
30

IMA.js-ui-atoms

Elementary UI components based on the Pattern Lab
HTML
8
star
31

flexp

Python
8
star
32

IMA.js-tutorial

IMA.js-tutorial
JavaScript
7
star
33

proxis

TLS + ACL proxy for redis
C
7
star
34

sklik-data-studio-connector

Sklik connector to google data studio
JavaScript
7
star
35

zbozi-konverze

PHP kód pro měření konverzí na Zboží.cz
PHP
6
star
36

IT-akademie

Seznam IT akademie
JavaScript
6
star
37

swift-uniyaml

Na(t)ive YAML/JSON (de)serializer for Swift
Swift
6
star
38

sklik-api-python-client

Sklik.cz API Python client
Python
6
star
39

Hackathon-Brno-2021

Public resources related to Seznam.cz's Hackathon that happened in Brno in 2021.
JavaScript
5
star
40

ProPsy

ProPsy is a simple tool to discover, generate and distribute Envoy configuration from Kubernetes clusters
Go
5
star
41

tornado-fastrpc

Python
4
star
42

mcache-client

C++&Python memcache client
C++
4
star
43

szndaogen

Python
4
star
44

gulp-brotli

A gulp plugin for file compression using the brotli compression included in node.js's zlib native module, without any native or WASM extraneous libraries.
TypeScript
4
star
45

nats-jwt-py

Python library for creating JWTs for NATS ecosystem using nkeys
Python
4
star
46

yieldable

Make methods yieldable
JavaScript
3
star
47

node-fastrpc

Javascript implementation of FastRPC (de-)serialization
JavaScript
3
star
48

szn-select-react

Szn-select integration for React projects
JavaScript
3
star
49

hal-body

Parse hal+json body using halson and co-body
JavaScript
2
star
50

api-examples

2
star
51

sklikscripts

Script pro práci s Sklik kampaněmi
JavaScript
2
star
52

captcha-api

Seznam's captcha API tools
PHP
2
star
53

xgboostpredictor

C++ header-only thread-safe XGBoost predictor
C++
2
star
54

IT-akademie-bigdata

Jupyter Notebook
2
star
55

go-simple-server

Exercise for a candidate to SRE role
Go
1
star
56

killick

1
star
57

szn-apis

JavaScript
1
star
58

libsphinxql

C++ SphinxQL client for Sphinxsearch daemon
C++
1
star
59

swift-unisocket

Sockets for Swift
Swift
1
star
60

Kommons

Kotlin
1
star
61

thunkagent

Yieldable SuperAgent with a thunk() method
JavaScript
1
star
62

seznam.github.io

JavaScript
1
star
63

swift-logfile

Logfiles for Swift
Swift
1
star
64

jsonl-formatter

Python
1
star
65

jobslib

Library for launching tasks in parallel environment.
Python
1
star
66

szn-util-jsdoc2

Javascript autodocumentation tool jsdoc-toolkit-2 debian package source
JavaScript
1
star
67

visibility-observer

Helper making the observation of element's visibility a little more convenient. Based on the IntersectionObserver API.
TypeScript
1
star
68

IMA.js-plugin-self-xss

The module is trying to mitigate Self-XSS security attack by sending simple message into console.
JavaScript
1
star
69

szn-map

<szn-map> web component
1
star
70

modern-legacy-js-distribution

JavaScript
1
star
71

MLPrague-2022

Jupyter Notebook
1
star