ZIO metrics

Project Stage CI Release Snapshot Discord
Project stage CI Release Artifacts Snapshot Artifacts Badge-Discord

Goal

A high-performance, purely-functional library for adding instrumentation to any application, with a simple web client and JMX support.

Introduction and Highlights

ZIO Metrics is a principled functional programming library to measure the behavior of your application. It focuses on providing metrics and health checks in a performant purely functional manner.

  • Comprehensive and consistent
  • Type safe, purely-functional
  • Pluggable effect monads
  • Asynchronous and non-blocking
  • Supports streaming
  • Can be used in Scala REPLs

If it can affect your code's business value, measure it. -- Coda Hale

In order to know how well our code is generating business value, we need metrics -- also Coda Hale

Usage and Docs can be found on https://zio.github.io/zio-metrics/

Competitors

Metrics Scala
Type safe, pure FP: ✘
Comprehensive: ✔
Scala: ✔
Notes:

Scala Metrics
Type safe, pure FP: ✘
Comprehensive: ✔
Scala: ✔
Notes:

Kamon
Type safe, pure FP: ✘
Comprehensive: ✔
Scala: ✔
Notes:

JAJMX
Type safe, pure FP: ✘ (but very FP oriented)
Comprehensive: ✔
Scala: ✔
Notes:

SSE-JMX
Type safe, pure FP: ✘
Comprehensive: ✔
Scala: ✔
Notes:

Metrics Datadog
Type safe, pure FP: ✘
Comprehensive: ✔
Scala: ✘ (Java)
Notes:

ekg: Remote monitoring of processes
Type safe, pure FP: ✔
Comprehensive: ✔
Scala: ✘ (Haskell)
Notes: Monad Metrics a wrapper and API for using EKG metrics

prometheus: Prometheus Haskell Client
Type safe, pure FP: ✔
Comprehensive: ✔
Scala: ✘ (Haskell)
Notes:

Metrics Type safe, pure FP: ✘
Comprehensive: ✔
Scala: ✘ (Go)
Notes: Haskell implementation, Metrics, Metrics, Everywhere - Coda Hale

Background

Optimizing Tagless Final – Saying farewell to Free

Tagless Final algebras and Streaming

Notes

Dropwizard and Cats Gist