HTTP sobre un URL determinado era diferente de un 200 OK. Sin embargo, lo que si provee en esta versión es la habilidad de expresar una condición a través de una función anónima (lambda).
De esta forma ni siquiera tenemos que extender los Conditions que provee Godpara agregar uno que acepte un URL y un código de respuesta HTTP esperado, sino que sencillamente podemos pasar el bloque de código que será evaluado para determinar si el proceso monitoreado debe ser reiniciado o no.
En mi caso además quería asegurar que la respuesta se diera en menos de un segundo, y al final quedó algo como esto:
uri = URI.parse('http://localhost/static/response200')
restart.condition(:lambda) do |c|
c.lambda = lambda do
begin
Timeout::timeout(1) do
Net::HTTP.get_response(uri).response.code.to_i != 200
end
rescue Exception
true
end
end
c.notify = 'anibal'
end
La gran ventaja que tiene God, sobre Monit es que se le saca el jugo a Ruby para poder expresar que es lo que vamos a monitorear, qué acciones vamos a tomar y bajo que condiciones.
Como les comenté sólo es una versión 0.6, y aún hay mucho por hacer, pero es Ruby así que siempre lo pueden extender fácilmente para conseguir lo que ustedes quieran.
You have already tagged this post. Your tags: