ExHealth 
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"
}
}Installation
Add :ex_health to your list of dependencies in mix.exs:
def deps do
[
{:ex_health, "~> 0.4.0"}
]
end
Ensure :ex_health is started alongside your application by adding this to
your mix.exs
def application do
[
applications: [:ex_health]
]
endGetting Started
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
http_err_code: true # Enable http error code (503) on unhealthy status
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
endIntegrating with Phoenix
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.
Contributing
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.getand then you can start ExHealth with CLI:
$ iex -S mixCopyright and License
Copyright (c) 2018 Herman Singh.
This software is licensed under the MIT license.