Thanks, Markus, maybe we should add this to the admin_manual? However I am now getting the error 'script: Fatal: Missing script path' Similar as when I try via the command line bash-5.0# /usr/libexec/dovecot/script -e /bin/health-check.sh Fatal: Missing script path bash-5.0# /usr/libexec/dovecot/script -e /bin/ health-check.sh Panic: BUG: No IOs or timeouts set. Not waiting for infinity. Aborted (core dumped) -----Original Message----- Subject: Re: Health check curl example Hi, you can use telnet or netcat to send input to that port and receive the answer. echo "PING" | nc localhost 5001 Best regards Markus On 11/24/19 2:43 PM, Marc Roos via dovecot wrote:> > How do I check the standard script then on this port 5001 from the > command line? > > > This one of alpine linux also does not have it yet bash-5.0# dovecot > --version > 2.3.7.2 (3c910f64b) > > > > > > -----Original Message----- > Subject: RE: Health check curl example > > Yes. The passthrough option is rather new. > > Aki > > On 24/11/2019 15:28 Marc Roos via dovecot < dovecot at dovecot.org> > wrote: > > > I think I already have that, I am having this configured > > service health-check { > # this is the default configuration using the simple PING->PONG > # example health-check. > executable = script -p /bin/health-check.sh > inet_listener health-check { > port = 5001 > } > } > > bash-5.0# /bin/health-check.sh > HTTP/1.1 200 OK > Connection: keep-alive > > OK > > > > > > -----Original Message----- > Subject: Re: Health check curl example > > Your health check script should implement HTTP protocol. Then youcan> use passthrough mode and use cURL. > > The provided script does not speak HTTP. > > Aki > > On 24/11/2019 15:12 Marc Roos via dovecot < dovecot at dovecot.org> > wrote: > > > I am not understanding how this health check[1] script shouldwork.> > From > the commandline it works fine when I type a PING I get a PONG.But> how > do I do a curl to this 5001 port? > > Tried something like this: > > bash-5.0# curl http://localhost:5001/ > curl: (56) Recv failure: Connection reset by peer > > bash-5.0# curl http://localhost:5001/PING > curl: (56) Recv failure: Connection reset by peer > > [1] > https://doc.dovecot.org/admin_manual/health_check/ > > > --- > Aki Tuomi > > > --- > Aki Tuomi > >
The -e parameter is used to define a "list of environment variables", so the error message telling you that you did not define a script is right. So far i understood that you wanted to use passthrough mode, so do not use -e but -p. (except you need to define some environment-variables for your script). Executing the script executable standalone does not work it must be started from the dovecot master process, that is why you are getting the Panic. Markus> On November 25, 2019 10:06 AM Marc Roos <m.roos at f1-outsourcing.eu> wrote: > > > Thanks, Markus, maybe we should add this to the admin_manual? However I > am now getting the error 'script: Fatal: Missing script path' > > Similar as when I try via the command line > bash-5.0# /usr/libexec/dovecot/script -e /bin/health-check.sh > Fatal: Missing script path > > > bash-5.0# /usr/libexec/dovecot/script -e /bin/ health-check.sh > Panic: BUG: No IOs or timeouts set. Not waiting for infinity. > Aborted (core dumped) > > > > > -----Original Message----- > Subject: Re: Health check curl example > > Hi, > > you can use telnet or netcat to send input to that port and receive the > answer. > > echo "PING" | nc localhost 5001 > > Best regards > > Markus > > > On 11/24/19 2:43 PM, Marc Roos via dovecot wrote: > > > > How do I check the standard script then on this port 5001 from the > > command line? > > > > > > This one of alpine linux also does not have it yet bash-5.0# dovecot > > --version > > 2.3.7.2 (3c910f64b) > > > > > > > > > > > > -----Original Message----- > > Subject: RE: Health check curl example > > > > Yes. The passthrough option is rather new. > > > > Aki > > > > On 24/11/2019 15:28 Marc Roos via dovecot < dovecot at dovecot.org> > > wrote: > > > > > > I think I already have that, I am having this configured > > > > service health-check { > > # this is the default configuration using the simple PING->PONG > > # example health-check. > > executable = script -p /bin/health-check.sh > > inet_listener health-check { > > port = 5001 > > } > > } > > > > bash-5.0# /bin/health-check.sh > > HTTP/1.1 200 OK > > Connection: keep-alive > > > > OK > > > > > > > > > > > > -----Original Message----- > > Subject: Re: Health check curl example > > > > Your health check script should implement HTTP protocol. Then you > can > > use passthrough mode and use cURL. > > > > The provided script does not speak HTTP. > > > > Aki > > > > On 24/11/2019 15:12 Marc Roos via dovecot < dovecot at dovecot.org> > > wrote: > > > > > > I am not understanding how this health check[1] script should > work. > > > > From > > the commandline it works fine when I type a PING I get a PONG. > But > > how > > do I do a curl to this 5001 port? > > > > Tried something like this: > > > > bash-5.0# curl http://localhost:5001/ > > curl: (56) Recv failure: Connection reset by peer > > > > bash-5.0# curl http://localhost:5001/PING > > curl: (56) Recv failure: Connection reset by peer > > > > [1] > > https://doc.dovecot.org/admin_manual/health_check/ > > > > > > --- > > Aki Tuomi > > > > > > --- > > Aki Tuomi > > > >
:) I really starting to feel a bit like an idiot, but all these 3 configs[0] give error 'Client not compatible with this binary' [0] service health-check { executable = script /bin/health-check.sh inet_listener health-check { port = 5001 } } service health-check { executable = script -e "HOME PATH" /bin/health-check.sh inet_listener health-check { port = 5001 } } service health-check { executable = script -e HOME PATH /bin/health-check.sh inet_listener health-check { port = 5001 } } Nov 25 11:44:52 test2 dovecot: script: Fatal: Client not compatible with this binary (connecting to wrong socket?) -----Original Message----- Subject: RE: Health check curl example The -e parameter is used to define a "list of environment variables", so the error message telling you that you did not define a script is right. So far i understood that you wanted to use passthrough mode, so do not use -e but -p. (except you need to define some environment-variables for your script). Executing the script executable standalone does not work it must be started from the dovecot master process, that is why you are getting the Panic. Markus> On November 25, 2019 10:06 AM Marc Roos <m.roos at f1-outsourcing.eu>wrote:> > > Thanks, Markus, maybe we should add this to the admin_manual? However > I am now getting the error 'script: Fatal: Missing script path' > > Similar as when I try via the command line bash-5.0# > /usr/libexec/dovecot/script -e /bin/health-check.sh > Fatal: Missing script path > > > bash-5.0# /usr/libexec/dovecot/script -e /bin/ health-check.sh > Panic: BUG: No IOs or timeouts set. Not waiting for infinity. > Aborted (core dumped) > > > > > -----Original Message----- > Subject: Re: Health check curl example > > Hi, > > you can use telnet or netcat to send input to that port and receive > the answer. > > echo "PING" | nc localhost 5001 > > Best regards > > Markus > > > On 11/24/19 2:43 PM, Marc Roos via dovecot wrote: > > > > How do I check the standard script then on this port 5001 from the > > command line? > > > > > > This one of alpine linux also does not have it yet bash-5.0# dovecot> > --version > > 2.3.7.2 (3c910f64b) > > > > > > > > > > > > -----Original Message----- > > Subject: RE: Health check curl example > > > > Yes. The passthrough option is rather new. > > > > Aki > > > > On 24/11/2019 15:28 Marc Roos via dovecot <dovecot at dovecot.org>> > wrote: > > > > > > I think I already have that, I am having this configured > > > > service health-check { > > # this is the default configuration using the simple PING->PONG> > # example health-check. > > executable = script -p /bin/health-check.sh > > inet_listener health-check { > > port = 5001 > > } > > } > > > > bash-5.0# /bin/health-check.sh > > HTTP/1.1 200 OK > > Connection: keep-alive > > > > OK > > > > > > > > > > > > -----Original Message----- > > Subject: Re: Health check curl example > > > > Your health check script should implement HTTP protocol. Thenyou> can > > use passthrough mode and use cURL. > > > > The provided script does not speak HTTP. > > > > Aki > > > > On 24/11/2019 15:12 Marc Roos via dovecot <dovecot at dovecot.org>> > wrote: > > > > > > I am not understanding how this health check[1] script should > work. > > > > From > > the commandline it works fine when I type a PING I get a PONG. > But > > how > > do I do a curl to this 5001 port? > > > > Tried something like this: > > > > bash-5.0# curl http://localhost:5001/ > > curl: (56) Recv failure: Connection reset by peer > > > > bash-5.0# curl http://localhost:5001/PING > > curl: (56) Recv failure: Connection reset by peer > > > > [1] > > https://doc.dovecot.org/admin_manual/health_check/ > > > > > > --- > > Aki Tuomi > > > > > > --- > > Aki Tuomi > > > >