Rails にはKomachiHeartbeatと云ふ何かと有り難い mountable engine が在り、Elixir/Phoenix にも欲しかったので移植した。
Plug 若しくは Phoenix の application の、適当な path にぶら下げて使ふ。例では/ops
にぶら下げてある。Phoenix だと router で、
defmodule ExampleWeb.Router do use ExampleWeb, :router forward("/ops", KomachiHeartbeat) end
とすると、
GET /ops/heartbeat
GET /ops/stats
と云ふ二つの endpoint が出來る。heartbeat は 200 ok か 503 error を返す。application が新しい HTTP 接續を受けられるなら 200 ok が返ってくる。受けられないなら timeout するだらう。接續は受けられるが何か問題 (何を確認するかは plugin で擴張する) が在るなら 503 error を返すやうに出來る。
stats は application の統計情報を返せる。default では空っぽで、plugin で返す情報を増やす。
元の Rails のものとの違ひは、収集する情報は全てを plugin で作るやうにしてあり、入れ替へられるようにした。Elixir には Rails と違ひ、「標準の stack」の樣なものは Ecto 位いしか無く、application によって確認すべき事が全く異なるだらうからだ。とは言へ標準の plugin は幾つか作りたいと思ってゐる。
Git repository の名前は Ex-KomachiHeartbeat であるが、これは当然元としたものと區別出來なければならない事と、Max 新幹線の樣な語呂にする爲に suffix ではなく prefix にした。
はい?
(〃l _ l)