A health check utility for any OTP application
ExHealth runs a supervised GenServer that performs routine health checks which are configurable to your application. Check out ExHealth.Plug for integrating the result into a web endpoint which yields a JSON response like:
{
last_check:"2018-09-18T06:43:53.773719Z",
result:{
check_results:[
[
"Database",
"ok"
],
[
"PhoenixExampleWeb_Endpoint",
"ok"
]
],
msg:"healthy"
}
}
Add :ex_health
to your list of dependencies in mix.exs
:
def deps do
[
{:ex_health, "~> 0.2.0"}
]
end
Ensure :ex_health
is started alongside your application by adding this to
your mix.exs
def application do
[
applications: [:ex_health]
]
end
Configuration for ExHealth must be present the Application environment. This
can be done by updating the :ex_health
values in your config/config.exs
:
config :ex_health,
module: MyApplication.HealthChecks,
interval_ms: 1000 # Interval between checks in milliseconds
Then you must define a module MyApplication.HealthChecks
with some checks:
defmodule MyApplication.HealthChecks do
process_check(MyApplication.CacheServer)
test "Redis" do
MyRedis.ping() # This should return :ok | {:error, "Message"}
end
end
To integrate with Phoenix
or any other web framework, you can take advantage of ExHealth.Plug
which handles serving a JSON response for you.
See ExHealth.Plug
for instructions.
Pull requests are welcome. The best way to get started is to check out CONTRIBUTING.
Once you have the repo cloned, just run:
$ mix deps.get
and then you can start ExHealth with CLI:
$ iex -S mix
Copyright (c) 2018 Herman Singh.
This software is licensed under the MIT license.