/healthz
or /health
curl localhost:5558/healthz
{"message":"ok"}
/metrics
Mirabelle metrics are returned as Prometheus format.
/api/v1/stream/<stream-name>
The body is a json string like {"config": "<stream-config>"}
.
should be the stream EDN configuration as base64. For example {:actions {:action :info}}
as base64 would be ezphY3Rpb25zIHs6YWN0aW9uIDppbmZvfX0=
.
You can pass the :default
option, like in the configuration, in order to specify if you want your stream to be used by default.
You can also set the :persist
field to true
in your stream configuration in order to persist it on disk.
In that case, Mirabelle will write the stream configuration into the first directory referenced into the :stream {:directory ..;}
configuration. The file name will be <stream-name>.edn
.
Deleting a stream through the API will also delete its file on the filesystem.
curl -H "Content-Type: application/json" -X POST --data '{"config": "ezphY3Rpb25zIHs6YWN0aW9uIDppbmZvfX0="}' 127.0.0.1:5558/api/v1/stream/foobar
{"message":"stream added"}
/api/v1/stream/
List all streams configured in Mirabelle.
curl localhost:5558/api/v1/stream
{"streams":["bar","foo","trololo"]}
/api/v1/stream/<stream-name>
Get a stream configuration and the time of its index.
curl localhost:5558/api/v1/stream/trololo
{"config":"ezphY3Rpb25zIHs6YWN0aW9uIDppbmZvfSwgOmRlZmF1bHQgZmFsc2V9","current-time":0}
/api/v1/stream/<stream-name>
Delete a stream by name.
If the stream was created using the API (see Add a stream
) and persisted on disk, this call will also deleted its configuration file.
curl -X DELETE localhost:5558/api/v1/stream/trololo
{"message":"stream removed"}
/api/v1/stream/<stream-name>
Push an event to the specified stream.
curl -H "Content-Type: application/json" -X PUT --data '{"event": {"service": "foo", "metric": 10}}' 127.0.0.1:5558/api/v1/stream/foo
{"message":"ok"}
/api/v1/prometheus/remote-write/<stream-name>
This endpoint can be used to send to a given Mirabelle stream Prometheus metrics. The Mirabelle endpoint should be configured into the Prometheus configuration file, for example:
remote_write:
- url: 'http://localhost:5558/api/v1/prometheus/remote-write/default'
The metric name will be bind in Mirabelle to the event :service
key, anc each label will be a key as well. The event :metric
will contain the Prometheus meric value.
/api/v1/opentelemetry/v1/traces/<stream-name>
This endpoint can be used to send Opentelemetry traces to Mirabelle. The HTTP transport (containing Protobuf body) should be used on Opentelemetry clients when pushing traces to Mirabelle.
/api/v1/index/<steam-name>/search
Returns events matching the query for the index of the stream <stream-name>
. The query passed in the body should be a where query.
curl -H "Content-Type: application/json" -X POST --data '{"query": "Wzo9IDpzZXJ2aWNlICJmb28iXQ=="}' 127.0.0.1:5558/api/v1/index/default/search
{"events":[]}
/api/v1/index/<stream-name>/current-time
Get the current time for an index
curl localhost:5558/api/v1/index/my-stream/current-time
{"current-time":0}