Re: Feature request: Run a script when upstream detected down/up

Except that Nginx is asynchronous, not threaded. This means that when
your script is called, Nginx will now be delayed while the script is
launched (and what if the script fails?).

Nginx will just have to wait until fork returns.

I don’t know much about this stuff, but isn’t there a way to fork
something as a background process? Something equivalent to me typing
“./my_failover_script &” ? So assuming nginx could simply make a shell
system call or somehow make the call but tell it to run in the
background, then I imagine the nginx thread that would call out to run
the script would return almost immediately. At any rate, even if it
took a little time, this should be a rare event, like maybe once every
few weeks if things are running smoothly.

And if it can’t be launched as a background process, I would simply make
the script it calls do something like flag another process to run, and
then exit immediately so the thread returned quickly. The main thing is
that I just need nginx to signal me somehow when it takes an upstream
server out of rotation. Doing this by sniffing the log file is a hack
at best.

For the OP, executing a script when a backend fails is trivial, it
should be possibile to do it just be adding a new module.

Yes I had a look at the tutorial on building modules. Unfortunately it
is over my head. This is why I am hopeful that the developers will
recognize the importance of such a “hook” to an external monitoring
system would be very useful especially if it is straight-forward to do.
Thank you.

  ____________________________________________________________________________________

Be a better friend, newshound, and
know-it-all with Yahoo! Mobile. Try it now.
http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ

Rt Ibmer ha scritto:

Except that Nginx is asynchronous, not threaded. This means that when
your script is called, Nginx will now be delayed while the script is
launched (and what if the script fails?).

Nginx will just have to wait until fork returns.

I don’t know much about this stuff, but isn’t there a way to fork something as a background process? Something equivalent to me typing “./my_failover_script &” ? So assuming nginx could simply make a shell system call or somehow make the call but tell it to run in the background, then I imagine the nginx thread that would call out to run the script would return almost immediately. At any rate, even if it took a little time, this should be a rare event, like maybe once every few weeks if things are running smoothly.

And if it can’t be launched as a background process, I would simply make the script it calls do something like flag another process to run, and then exit immediately so the thread returned quickly. The main thing is that I just need nginx to signal me somehow when it takes an upstream server out of rotation. Doing this by sniffing the log file is a hack at best.

There are no problems at spawing an external process.
Simply, Nginx does not directly support this and you will get a lot of
NOTICE messages in the log when each process exits (even if it exits
with a success status code).

For the OP, executing a script when a backend fails is trivial, it
should be possibile to do it just be adding a new module.

Yes I had a look at the tutorial on building modules. Unfortunately it is over my head. This is why I am hopeful that the developers will recognize the importance of such a “hook” to an external monitoring system would be very useful especially if it is straight-forward to do. Thank you.

Personally I’m not interested in this feature, sorry.
I have given a look in the Nginx source code and it seems that all you
want is implementable, and it should require only a few hours of coding.

Regards Manlio P.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs