Skip to content

Kartstig/ex_health

Repository files navigation

ExHealth ExHealth

CircleCI codecov Module Version Hex Docs Total Download License Last Updated

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]
  ]
end

Getting 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
end

Integrating 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.get

and then you can start ExHealth with CLI:

$ iex -S mix

Sponsorship

Put your logo here! Become a sponsor and support this project!

Copyright and License

Copyright (c) 2018 Herman Singh.

This software is licensed under the MIT license.