riemann alternatives and similar packages
Based on the "Third Party APIs" category.
Alternatively, view riemann alternatives based on common mentions on social networks and blogs.
-
ethereumex
Elixir JSON-RPC client for the Ethereum blockchain 0x063D3d782598744AF1252eBEaf3aA97D990Edf72 -
MongoosePush
MongoosePush is a simple Elixir RESTful service allowing to send push notification via FCM and/or APNS. -
cashier
Cashier is an Elixir library that aims to be an easy to use payment gateway, whilst offering the fault tolerance and scalability benefits of being built on top of Erlang/OTP -
airbrake
An Elixir notifier to the Airbrake/Errbit. System-wide error reporting enriched with the information from Plug and Phoenix channels.
CodeRabbit: AI Code Reviews for Developers
Do you think we are missing an alternative of riemann or a related project?
README
Riemann
Riemann is (surprise!) a Riemann client for Elixir.
Getting Started
Chuck this into your project config:
defp deps do
[{:riemann, " ~> 0.1.6"},
end
You'll also need to start the :riemann
application, either manually (Application.start(:riemann)
) or in your mix.exs
application config.
Usage
Sending Events
Events are anything that implements the Dict
protocol, so you'll likely want a Keyword
list or a Map
.
If you want to send custom attributes, stick them in the attributes
key as a Dict
. You can add in the state
key, if you want to add a state to your event.
Send your events with Riemann.send/1
and Riemann.send_async/1
, blocking and non-blocking (just call
and cast
). They both expect an event, or a list of events.
Riemann.send(service: "my awesome app", metric: 5.0, attributes: [build: "7543"])
Riemann.send_async([
[service: "my awesome app req", metric: 1, state: "up", attributes: [build: "7543"]],
%{service: "things in queue", metric: 100, attributes: [build: "7543"]}
])
Querying for Events
To ask the server for a list of events matching a query string, use Riemann.query/1
.
{:ok, events} = Riemann.query('service ~= "my awesome"')
#=> events = [%{attributes: %{"build" => "7543"}, description: nil, host: "dax",
# metric: nil, service: "my awesome app", state: nil, tags: [],
# time: 1430329965, ttl: 60.0},
# %{attributes: %{"build" => "7543"}, description: nil, host: "dax", metric: 1,
# service: "my awesome app req", state: "up", tags: [], time: 1430329965,
# ttl: 60.0}]
Configuration
Just toss this snippet into your environment's config:
config :riemann, :address,
host: "127.0.0.1",
port: 5555
You can also set a hostname for events to override the default (the machine's name).
config :riemann, event_host: "app host (staging)"
Caveats
- Only TCP is supported, read this.
If you want UDP, feel free to submit a PR (with tests 👺) or bug me to implement it.
License
See the LICENSE file. (spoiler: it's MIT)
*Note that all licence references and agreements mentioned in the riemann README section above
are relevant to that project's source code only.