monitでbasic認証がかかったURLをcheckする

send/expectでheaderを指定する

Authorization headerで送信する文字列。

$ echo -n user:pass | nkf -MB
dXNlcjpwYXNzmk

monitのapacheの設定

check process apache with pidfile /var/run/httpd.pid
  group www
  start program = "/etc/init.d/httpd start"
  stop  program = "/etc/init.d/httpd stop"
  if failed host localhost port 80
    send "GET /path/to/auth/ HTTP/1.0\r\nAuthorization: Basic dXNlcjpwYXNzmk\r\n\r\n"
    expect "HTTP/[0-9\.]{3} 200 .*\r\n"  then restart
    if 5 restarts within 5 cycles then timeout

URLに埋めこむ

書いてから気づいたけど、userとpassはURLに埋め込めるのだった。こっちのほうが楽だな。

check process apache with pidfile /var/run/httpd.pid
  group www
  start program = "/etc/init.d/httpd start"
  stop  program = "/etc/init.d/httpd stop"
  if failed url
    http://user:pass@localhost/path/to/auth/ then restart
    if 5 restarts within 5 cycles then timeout