You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

423 lines
30 KiB

10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
9 years ago
10 years ago
9 years ago
10 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
  1. {% extends "base.html" %}
  2. {% load compress hc_extras humanize staticfiles %}
  3. {% block containers %}
  4. <div class="index-bleed">
  5. <div class="container">
  6. <div class="row">
  7. <div class="col-sm-12">
  8. <h1 id="pitch">Cron Monitoring. Get Notified When Your Cron Jobs Fail.</h1>
  9. </div>
  10. </div>
  11. <div class="row">
  12. <div class="col-sm-6 col-sm-push-6">
  13. <p id="pitch-text">Make a HTTP GET request to this address from your cron job, daemon, script or long running task.
  14. <strong>When this address is not requested for a set time period, you will get alerted.</strong> Below are snippets that are ready to be copy/pasted into your own scripts.</p>
  15. </div>
  16. <div class="col-sm-6 col-sm-pull-6">
  17. <h2 id="pitch-subtitle">Here's an unique ping address for you:</h2>
  18. <div id="pitch-url">
  19. <input
  20. id="pitch-url-input"
  21. class="form-control"
  22. type="text"
  23. value="{{ ping_url }}"
  24. readonly />
  25. </div>
  26. </div>
  27. </div>
  28. <div class="row">
  29. <div class="col-sm-12">
  30. <ul class="nav nav-tabs" role="tablist">
  31. <li class="active">
  32. <a href="#crontab" data-toggle="tab">Crontab</a>
  33. </li>
  34. <li>
  35. <a href="#bash" data-toggle="tab">Bash</a>
  36. </li>
  37. <li>
  38. <a href="#python" data-toggle="tab">Python</a>
  39. </li>
  40. <li class="hidden-xs">
  41. <a href="#node" data-toggle="tab">Node.js</a>
  42. </li>
  43. <li class="hidden-xs">
  44. <a href="#php" data-toggle="tab">PHP</a>
  45. </li>
  46. <li class="hidden-xs">
  47. <a href="#browser" data-toggle="tab">Browser</a>
  48. </li>
  49. <li class="hidden-xs">
  50. <a href="#powershell" data-toggle="tab">PowerShell</a>
  51. </li>
  52. <li class="hidden-xs">
  53. <a href="#email" data-toggle="tab">Email</a>
  54. </li>
  55. </ul>
  56. <div class="tab-content">
  57. <div role="tabpanel" class="tab-pane active" id="crontab">
  58. {% include "front/snippets/crontab.html" %}
  59. </div>
  60. <div role="tabpanel" class="tab-pane" id="bash">
  61. {% include "front/snippets/bash_curl.html" %}
  62. {% include "front/snippets/bash_wget.html" %}
  63. </div>
  64. <div role="tabpanel" class="tab-pane" id="python">
  65. {% include "front/snippets/python_urllib2.html" %}
  66. {% include "front/snippets/python_requests.html" %}
  67. </div>
  68. <div role="tabpanel" class="tab-pane" id="node">
  69. {% include "front/snippets/node.html" %}
  70. </div>
  71. <div role="tabpanel" class="tab-pane" id="php">
  72. {% include "front/snippets/php.html" %}
  73. </div>
  74. <div class="tab-pane" id="browser">
  75. {% include "front/snippets/browser.html" %}
  76. </div>
  77. <div class="tab-pane" id="powershell">
  78. {% include "front/snippets/powershell.html" %}
  79. {% include "front/snippets/powershell_inline.html" %}
  80. </div>
  81. <div class="tab-pane tab-pane-email" id="email">
  82. <p>
  83. As an alternative to HTTP/HTTPS requests,
  84. you can "ping" this check by sending an
  85. email message to
  86. <a href="mailto:{{ check.email }}">{{ check.email }}</a>
  87. </p>
  88. </div>
  89. </div>
  90. </div>
  91. </div>
  92. </div>
  93. </div>
  94. {% if registration_open %}
  95. <div class="get-started-bleed">
  96. <div class="container">
  97. <div class="row">
  98. <div id="get-started" class="col-sm-6 col-sm-offset-3">
  99. <h2>E-mail Address to Receive Alerts:</h2>
  100. <form action="{% url 'hc-login' %}" method="post">
  101. {% csrf_token %}
  102. <div class="form-group">
  103. <div class="input-group input-group-lg">
  104. <div class="input-group-addon">@</div>
  105. <input
  106. type="email"
  107. class="form-control"
  108. name="email"
  109. autocomplete="email"
  110. placeholder="Email">
  111. </div>
  112. </div>
  113. <div class="clearfix">
  114. <button type="submit" class="btn btn-lg btn-primary pull-right">
  115. Get Started
  116. </button>
  117. </div>
  118. </form>
  119. </div>
  120. </div>
  121. </div>
  122. </div>
  123. {% endif %}
  124. <div class="container">
  125. <div class="row">
  126. <div class="col-sm-12">
  127. <h2 class="tour-title">A quick peek of what's inside:</h2>
  128. </div>
  129. </div>
  130. <div class="row tour-section">
  131. <div class="col-sm-8">
  132. <img
  133. class="img-responsive"
  134. src="{% static 'img/my_checks.png' %}"
  135. srcset="{% static 'img/my_checks.png'%} 1x, {% static 'img/[email protected]'%} 2x"
  136. alt="My Checks page" />
  137. </div>
  138. <div class="col-sm-4">
  139. <p>
  140. A list of your checks, one for each Cron job, daemon or
  141. periodically running task you want to monitor.
  142. </p>
  143. <p>
  144. Give names to your checks to easily recognize them
  145. later. Adjust Period and Grace time to match the periodicity
  146. and duration of your tasks.
  147. </p>
  148. </div>
  149. </div>
  150. <div class="row tour-section">
  151. <div class="col-sm-8">
  152. <img
  153. class="img-responsive"
  154. src="{% static 'img/period_grace.png' %}"
  155. srcset="{% static 'img/period_grace.png'%} 1x, {% static 'img/[email protected]'%} 2x"
  156. alt="Period/Grace Time dialog" />
  157. </div>
  158. <div class="col-sm-4">
  159. Each check has configurable <strong>Period</strong> and <strong>Grace Time</strong> parameters.
  160. Depending on these parameters and time since the last ping, the check is in one of the
  161. following states:
  162. <table class="table">
  163. <tr>
  164. <td>
  165. <span class="status icon-up new"></span>
  166. </td>
  167. <td>
  168. New.
  169. A check that has been created, but has not received any pings yet.
  170. </td>
  171. </tr>
  172. <tr>
  173. <td>
  174. <span class="status icon-up"></span>
  175. </td>
  176. <td>
  177. Up.
  178. Time since last ping has not exceeded <strong>Period</strong>.
  179. </td>
  180. </tr>
  181. <tr>
  182. <td>
  183. <span class="status icon-grace"></span>
  184. </td>
  185. <td>
  186. Late.
  187. Time since last ping has exceeded <strong>Period</strong>,
  188. but has not yet exceeded <strong>Period</strong> + <strong>Grace</strong>.
  189. </td>
  190. </tr>
  191. <tr>
  192. <td>
  193. <span class="status icon-down"></span>
  194. </td>
  195. <td>
  196. Down.
  197. Time since last ping has exceeded <strong>Period</strong> + <strong>Grace</strong>.
  198. When check goes from "Late" to "Down", {% site_name %}
  199. sends you a notification.
  200. </td>
  201. </tr>
  202. </table>
  203. </div>
  204. </div>
  205. <div class="row tour-section">
  206. <div class="col-sm-8">
  207. <img
  208. class="img-responsive"
  209. src="{% static 'img/cron.png' %}"
  210. srcset="{% static 'img/cron.png'%} 1x, {% static 'img/[email protected]'%} 2x"
  211. alt="Cron dialog" />
  212. </div>
  213. <div class="col-sm-4">
  214. <p>
  215. Alternatively, you can define the expected ping dates and times
  216. using a cron expression. See
  217. <a href="{% url 'hc-docs-cron' %}">Cron Syntax Cheatsheet</a>
  218. for the supported syntax features.
  219. </p>
  220. <p>
  221. <strong>Grace Time</strong> specifies how "late" a ping can
  222. be before you will be alerted. Set it to be a little above
  223. the expected duration of your cron job.
  224. </p>
  225. </div>
  226. </div>
  227. <div class="row tour-section">
  228. <div class="col-sm-8">
  229. <img
  230. class="img-responsive"
  231. src="{% static 'img/channels.png' %}"
  232. srcset="{% static 'img/channels.png'%} 1x, {% static 'img/[email protected]'%} 2x"
  233. alt="Channels page" />
  234. </div>
  235. <div class="col-sm-4">
  236. <p>
  237. You can set up additional ways to get notified:
  238. </p>
  239. <table class="table welcome-integrations">
  240. <tr>
  241. <td>
  242. <img width="22" height="22" alt="Email icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsBAMAAADsqkcyAAAAGFBMVEVQXHNZZ3x6iJeQnKmrtb/P1trm6+79//zYm1FBAAABUElEQVQoz41TPXODMAyVHaBrPq5lpUOTtUysWVpWeleONe31wpqUgP5+JUtOY3q+qxbsh/z09AUoNr0/Aqxfer2CfC4Esq3rW3hcgprpfuGxgKvZ7grv4cYSDw8QWKVwEcJWYHHevCJ+ld4dlPlehL0pO+DIpwXisW2PiM986wj+lsPnCmC1FacdwQ19U6+m0isgJ9hNmqbp2d0gXBzzwavLHHsNTJ3zk03blqY0eGZy+GCOQZLApxEqZnmAhqkOHGyiYo/EQi9T2DN1Qc4UpKYKWyZPgAqSkI6cK2MJNj05WqAnGcEVK4KaYWI0fLmjKN1JTks9edgpz/4LC8nk4TAk+pChQGxUYJhOP2g6QfJDjltJPihVsUCUUgWFZR4p7KwNVtsQNo1FuKaFLRZL5wMhf3fz8XG5uvGJDFtsNCODHBv7yJLEViqygLF1/bPcP/n9sQPNd1oyAAAAAElFTkSuQmCC" />
  243. </td>
  244. <td>Good old email messages.</td>
  245. </tr>
  246. {% if enable_sms %}
  247. <tr>
  248. <td>
  249. <img width="22" height="22" alt="Email icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAFHElEQVRYw+2Ya2xURRSAv5m72+32wbbYgpSUElqUCPgAohJgoSgQpZHERIlK4gNisEL4IyEm/uCHYoIxhoeERKLiO8QEJBhJoVBKmhAoUihQ5WlTlmK3pbuw7733jj/AS7fbUkqV7iacP3cy99yTb86cOefcgfvy/4roafKz/bPyHDbb0MEEc4iwd/H0uuu9An+1f1ZmWNpXKNTbwJgUcegfCD73Gvrm1eU1ugW8/tBzQ7RofDcwNUUjoSrL1Be8WV4TkQBaLL4lhWEB5oak7VMAsf7gvMc002hIg/NmKN0sldIw56dJgtCkTc6TQqjidElpCkZJoZQtfZKwsN8RbLajgPEjKsjPKsah5RDVA1wN/cWxlm3oZhR32XKc9jwADjd/TWeoxfo2KyOfGaXLbnpIUdX0IQAZtmzGj6igILsUp91FzAjhD3s44dlOMNbRK0ufwEWuR6mYuAabdCTMl+Km6cpuAlEvJUOfIjdzOAD+iIdDF7+8pVcwk9JCt7WpVU3gchbx4uPrrEV2lUu+Y7cFln0BTypemABrKv22+mMLZycU0IeGzU7SmVC0IAG2L5v98vDQ7NHW+JcT7+HxHceuOXlwyCNE9WCSfm7mcEa4xtPqP4nLWcTwIeOSbWaVWOMDZ9dxqnUXmsygMKeMQNR7W54+PSzFrTWFYp0AxI0wLZ1HiRuhXrxc3uUperCpJdk0zBhXrp0eOPD1yN/WeM649ynIKetVNxK/BkBZ4UyksDH2ZjhE4v5Em9E2azyjrJJR+VPuOCT6BG649PONDAgU5JTx0qRNzH54JVkZyc2cP+whqgfItLuYVLyQ/KxRmMrAGziXoNfo2YFhxgHIcQyjYuLHzJ/wEflZxQMHPt9eS1XTGmvrBIJxw+fyypQtSd522HO50H4QgCkli26c+s6jCWEF4A2cZWfjKvxhjzVXMvRJXp60mdEPTB0YMMA5bw3fH3mdI83fopvRG3C2XJ4e/VaCnl1zcqZtX0Lsn2nbh11zJtls9TfyY/0Sas9tsEJGkxnMKH134MD/HrQjzd/w68kPrLn8rFGJxV7Yuew7bh2cuBHhYkcdmrT3aNNUOicv72Tb75WYyrCyTPec3++05g97rJgLx31dKqXood4rqv9ci8s5klCsg7gRSdLJcxYTjHVYWSZmBDGVnpA97hp42piljHBNIBBtQzdiCQejawbpKh5fAx5f7x3rxKIXGF9UwfVIGzEjiMs50vJqOO6zwu6ugAFs0kGes7jbdhocbfnprvsYKWy4nEVJ8/XN3w3Mwxc76rDJDLIdBdikg2Csg/bAeRo922kPXgCgI3SRiH6NWA+VD6Az1IypdJRSN/uFBvKzS8h1DMOuOQnH/XSGmjnVuguP7/jtG7ZNNc98oYRYkibt5VqppFBp08ArpaRSXE2jS5R2KZSsSxdgKcxa6VWx34AzqfgD1032v+Ped1iuLq/RTVO8BgRS+BLtrKmJRVZpXl6+p96Q2nSgPsWcHFOKDaGIfGL59D2Xk9ahFGJjzZzJUpqTBTLvZql1A893360uHzYJxNb/GtaU5qlwSNu/cl5VsM/by66ysfbZlUKxtpfXHqWb05Y9s6/5Xnl9IHcSHZpQc5feQ9h+tZfdJGwKsWCpu/r0vY7ru/GwIYR6dbl776Dk7/56WAnU4kp39Y5BKx79pF1VObN6K4Mo/QHeuMy995NBL893mMB/8Lqnr0iJfqIvBQ3zgD27843VYrXJfbkvqSf/AF8f89OScY4/AAAAAElFTkSuQmCC" />
  250. </td>
  251. <td>SMS text messages.</td>
  252. </tr>
  253. {% endif %}
  254. <tr>
  255. <td>
  256. <img width="22" height="22" alt="Webhook icon" src="data:image/gif;base64,R0lGODdhLAAsAOMQAEBCQEpMS8s8aF5gXmxubtRkhoWIhp2gnuGRqLi6uOm3yfHJ1tja2PHZ4+/s6/3//CwAAAAALAAsAAAE/vDJSau9OOvNu/+gtyBFWSBLGDqF4L5u0aidAt8vQmv23eK6ncUBKygoi5/LIawgXgXM0xVsPogxCcMQCBgYEuXM2hMcHQGAGhAAl6tC8cOwXg+uUOtDKRnU10x5VkpMfn8AgVlWUwIzdH93e4pNbw8MaXUHSGNWMDMMBJhsehdljRMMawakFkoCCGMEa2CsE1gvKVeqtRQNghIHs1YJtBOEFA6GAwwHBs4HxRsJaZoTlRXBh3bRF48ABBR8F4baaqsY5AADTA+MnBWpa12i5t2ZtL5UGnQEDAwODrZkqoBmTQJbcjIwu5CNDTtgBiUw0sfBgYEBAwgcfNCwmgRMtuAk3fCQDkA1WaMkOFijaQEOMxwzEnBG0xnKP0wasosH4KCpPAnKCe35IKiajTx9voxidOihg003rlSjKd+NFI8CHNjKtdmhNhyFfVQTaeIrXWpCWih5cg2FjhKSlDgyhyUGi2wGbGzq8YqovhMaBrjgj7C8hxDXaGTiIMFNANwspfmCiotdC96GnqPAU02AAfTUZWhYDrDKzNo2332sGLGFaeU2cmD2LIFrhTadyebFu7dvGhEAADs=" />
  257. </td>
  258. <td>HTTP webhooks.</td>
  259. </tr>
  260. <tr>
  261. <td>
  262. <img width="22" height="22" alt="Slack icon" src="data:image/jpeg;base64,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" />
  263. </td>
  264. <td>Notifications in <a href="https://slack.com/">Slack</a> channel.</td>
  265. </tr>
  266. {% if enable_pushover %}
  267. <tr>
  268. <td>
  269. <img width="22" height="22" alt="Pushover icon" src="data:image/gif;base64,R0lGODdhLAAsAMIIABic9Deo9E6x9XXD96rZ+sjn/O/4/v7//CwAAAAALAAsAAAD/ni63FZkiABAEIMU07r/iiFUZGkKHKgyBWW+b1CsoAjfMEo3BO7DhJ1i8CuagjSicVkZrJTLwcbAoRagJOenZxQgDwXIZtE6egxGmeL6+qJNKcbopzW4KgHoFwsQNApFMwdcBFQhJH5rL4IKdzeCXAENc30LbyWShz6Cl18HlwBaYDCClDCilHEHWIxcJ58/Ka6eB5hyMJKAOKJ3qq4AX7qkv4sLLonGJJlDu3wmnCSqwgCtPhc+WlzIjVmWjjHfLxhKjLBN3j/h1pPnikxLnmhqn8TWTA5xBOo310a0BBEmvLPg7IavgSYC1DvVYF+UaTikIXwG6sa2Aw7TKDBFW4pBRYSJPpa4yBEhI4fxJtoig4OHShLlDpQE1uBlhYvm4DBY+E7VAmICwgjNGAgET5vtQBREKkrFUpVNVxwdGJOGjZc6hPwhiquqVjIC0wX9uuNKgLN4zkr5mgAAOw==" />
  270. </td>
  271. <td>Instant push notifications with <a href="https://pushover.net/">Pushover</a>.</td>
  272. </tr>
  273. {% endif %}
  274. {% if enable_pushbullet %}
  275. <tr>
  276. <td>
  277. <img width="22" height="22" alt="Pushbullet icon" src="data:image/png;base64,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" />
  278. </td>
  279. <td>Instant push notifications with <a href="https://www.pushbullet.com/">Pushbullet</a>.</td>
  280. </tr>
  281. {% endif %}
  282. {% if enable_telegram %}
  283. <tr>
  284. <td>
  285. <img width="22" height="22" alt="Telegram icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAwFBMVEUApN8ArOEAreIWp90AruMAr+QAsOYdqd8kq+Ilr98oseEVuOcrsuIvtOQauugeu+oytuY3uek3vOZHuuU6vudBw+1PwOtivOJXwOVTx+tgxetlyvBtyepxze100fF31PSC0u2A1fCL1vKzz+eH3Pev0+mW2/Ks2e291eeb3vWq4PPE3O6l5fav5fi35PnQ5PDB6vnS5vPI7fbZ6fDh6fLR7vjd7fTV8v3n8Pjb9Pjn+P7y+Prt+vv2+/75/v/+//ywoHJtAAACaElEQVQ4y4WV4XaiMBCFwyFHBZMsItgFwRW1VrRUEBE1Bt//rTYKmKhY7w8I3I+BkMwMON+pYPl3MHRs23GC75wV9y6QL1g+swkxTdOy+IEQe5azFzCLR38I54Q4P4pZE5wH1iXog4gV5M9w5DSgV9yJHuGZRV7Kmt3DAflVgQxPyBvNBBxZ72ArquHcJm9l5yXMxsZ7mPxjVzh+TXQNx64jxReY+d1m0kC9cXxcVnDXpxzOcCOKsb088lcvaxtnZ1BMkNEkP7tuOXazUVAAZuEnkFjzU7VoR6+2sclA3rrjMDYsPy534Z5/xUHEamUgRFgIof5wfijTgO4oP2WSGQIfSagziWn5erpLL6Mi0oTtA6eCkYb96FDlUbFPUlbOTxewA6wKNsPDLSdomqTlY9SVvtIEBroKi+TkYZNd/TNMJGTUMFoWRTWxdH1jzwdFgjEw9XIEyXjDV4zt1+tkf8u6JRSsboKBXo+h1p9kyTqR2PNYk2AbDDX9Jk1x+dSoVHMGsjsEIdQkoTRZS4EL2YNzkHXkG62vdLXYilqiSF4nA8yALUnedjWdrm/zU4QDDQaKkfy0hreL6eJjUG06T/pGZVTwzQ9l6V+r6V8IUXz9633JUTY8U06uIt3S3M+P63nOF7+QHMU9XRL2R7sLXUfzcr4kQq2oLAWeHBrWF0rfM8TdtkfLIpP1lEa1O2Lcy+ryFWrKG8FQFMbRO9iXS673O+vdF/ORpr4iVeg/tonQUNV2g1TVCJ8bUDbsqA3qDDdNrY3+uM+sG9EXTZPGfgsIEEA/pi877KUdbyZuX2+39b472Ty24/+iGdn8sw214gAAAABJRU5ErkJggg==" />
  286. </td>
  287. <td>Notifications to a <a href="https://telegram.org/">Telegram</a> group or user.</td>
  288. </tr>
  289. {% endif %}
  290. {% if enable_pd %}
  291. <tr>
  292. <td>
  293. <img width="22" height="22" alt="PagerDuty icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAIAAACR5s1WAAAEcElEQVRYw+1Ya0wcVRQ+9zEDKwtlWRp5tA1gISywtNH+tFqN0gZTU1MVTRtjfSRtolFTIw2VIi19aSPRvyZqfZDUxmj6UtKUaKPGGKOmlAUtYGpg2WV3h2IR2tmZe/wBuzu7MAPZwq4/PJlsZu+9c+53v3Pudx8EEcFg3Zc9Xd986/H0KWNjCVW3aISQPIejuqpyw73ra901cVXRnhRl7MCho/0Df8qyBEtpYU0rKylpeX2Pw5EbB2JgYHB3417GGKTKNE1rP3akrLRkBkRIGXvm+V2pRBDFceLTD202GwWA/QePpB4BAHDOd734CgDw7ss9/f2DS50HZjY+/rfP52flla6h4WFIn13p72fFq0onJ6fSCCIUUriiKAAIaTUuRJoRAABfXFlMEsRiOTIbDCHklphAJI6KgGS/mViu08CvxYQJY+E96++22WwJHWq69tXX5yWJz8uEKYjcshCTtZJNfTwzHD84zHd7PcfXUT6Do6K8XFFCrfv2yrKc4MRdXXWs/R1rMaSIYPYInbq2//zHiTU3lNtuGp6poN3346qaZ38SGpluCQCH21obm/aN+PxDw97oc/XqX53nL+x5bbeuC4uOuOX8RKFT1/ZfLr5azzI1Y5g2tJ8WGlu+1hvsLgAABASAQwdaNm1+JMNABufSuVOfA8BHn3T4fH6LnLDItZlfwgXhhgwQBDUGCCjIzOc4vSDpsiRLkhFEJBuQWHRkxQRGqhBxzmYIkXIEk5Zm7wtmgmDsa2Oz2e8xuPFTFWMeMFkmYj5mMUEwwjDGOiMz/+YYPSbLBBAgBMYHHVmF15msx1JCp4FLty+v9cdwEgQAj6eXMWp0qOt6j6evuqoSLJkgGx/aYlaXVfBPxrKp1Q//bnMmLrPqhNzb4SYMx67kAcCK4mJVVX2jo3SWPgohVq5cEVbV0UAwmXAQohOKE95syR4mhmaIZMKbfX0oR1dphGiRk5Pt8/uA0FlOIHdZTiAQSjIcVBbuHb+pE3LXy3XGcAABJmtgGHNWlv3dt98MBIIN2542ijSl9MyXn3HOdzy3M8nEBEBEQrmgsmYUq7mnM0BmZoZAHYAZQJCIVGCyiYlRnYB5FvxoS2EyRS09WIsVMQx04duORRUrALFAJjDG2aKLlQBTsbJaa4zzSEQEQ1gzgZZihYEeJ5U1613gdGVLa9vFrs64Y2c4vPOFl558/NGRkRGLLRYrvaPCrM7muEFlcemDGsLmoSHf6fzu+x/eOnow0TtjRQWFTc2tZJZ+xA32/rp6U53gQlcZoQsJBD7R8FhYVROFVVVPnTlHKZ3n1uC+B+v/C7vt/88d03FfyLlgyZlw5uUFgsE0M7F2TW16EbgqK+nGugdUVcX0WXNTI113153l5avTRYPdbi8qKiSIGAwpm7dslaRU3xgRQi50nuWcUwDId+Ydf/+9cDicyigAwMmOj6e3PLHL1MnJyYZtT127Np6aKJz+4mT0fEYSxGp42Lu/7XBPb++S8A/gcrneaG4qKio0lv8LIahMKT/4QwUAAAAASUVORK5CYII=" />
  294. </td>
  295. <td>Open and resolve incidents in <a href="https://www.pagerduty.com/">PagerDuty</a>.</td>
  296. </tr>
  297. {% endif %}
  298. <tr>
  299. <td>
  300. <img width="22" height="22" alt="PagerTree icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAACW1BMVEVMaXEpr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Uor+Upr+Upr+Upr+Uor+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Uor+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Upr+Uor+Upr+UrsOUor+Upr+Upr+Upr+Upr+Upr+Upr+UssOUpr+Upr+Upr+Upr+Upr+Upr+U4tOcpr+Upr+Uor+UmruV6zO9QveossOVIuulNvOmW1/ElruUoruUuseY0s+Y3tOc7tedBt+hCuOhLu+lVv+pgw+x2y+98ze+Az++Cz++J0vCV1/GY2PKv4fWx4fW65fYqr+UtsOUtseYvseY5tec/tuhHuulKuulKu+lRvepSvupTvupcwetvyO5wye51yu5+zu+H0fCL0/CR1fGU1vGo3vSr3/S+5vYrsOUwsuYzsuYzs+Y1s+Y2tOc6tec7tuc9tuc+tuhCt+hDuOhEuehFuehHuelHuuhMu+lOvOlPvOlPvOpPvepRvupUv+pWv+pZwOtfwutgwuthw+xjxOxkxOxnxextyO1tyO5uyO1vyO1vye1xye5zyu50yu53y+94y+55zO55zO+Bz++D0O+F0O+G0e+H0vCI0vCO1PCO1PGP1PCP1fGS1fGV1vGU1/GX1/Kc2fKd2vKf2/Og2/Oj3POk3fOl3fOm3fSm3vSn3vOn3vSy4vW04/W24/W24/a75fbF6fh3jVHtAAAASXRSTlMAAgMEBQYHCAoLDhkaGy8wMTQ1OjtKWltfaG1tcXqEhYiLjY6Pl5mao6OkqKutubzLzNLT2NnZ3d3q6u/w8vP19/j5+vv8/f3+chuXrQAAAcJJREFUeNpjYAABRj4pXSNTUwN1cR4GBOCRNXb2BANbfTFOmKigHkQwHUTYqfJCRIUMPb2DPT29c6rzvLyCPN00uEGi3HqemTGRXl5ZiUf7vHtmZGQ4KbAChWVdvNrT1nhnrU329fPbkhq+aYGlKAMDn5GnV/ii5LkV1cXHZ5ZUdU2rneelw8Ug5eLpubwuek9t9P7d5YlhEwMLvTzNRRh0Pb28uzfHBSQdO1DpE+YbOD073dNDisEoZOlkL/+K+MVpc7y8fQMLy1NDgzyVGMwaa3YF1MXPmr9qe0tB4ISYlBW++Z66DKae2QmJ61KKPJu2JSWVJaQeXJ1SVa/JYOAZ3OCTsONIaUf8pOKtC31b2/wjPOUY1Dw9vULyp8ZU+vvkLCk7vNHPy8vLUYJBwh4o3r8+d2WeT0RsWk0AKFyM+Rh49IHCRSc2xPn7RCbvDQsGCSszMzCI2QHFc/cdivLpjI0OAomaCADDhEPVFRh8UTsDlkWUFHgDRW0kGUFByKvl5ukVGhfZ21w6BShsLcMOCXBeRSvP0Nhwb7/ZUd4eppJssOhhEdWxcM/09AxxMFbhZ0KKTS5haSVdbXkJPhYIHwDXP44RDT0o3QAAAABJRU5ErkJggg==" />
  301. </td>
  302. <td>Open and resolve incidents in <a href="https://pagertree.com/">PagerTree</a>.</td>
  303. </tr>
  304. <tr>
  305. <td>
  306. <img width="22" height="22" alt="HipChat icon" src="data:image/gif;base64,R0lGODdhLAAsAMIIAAQyZSFOez9ljWKEooOetqa2ycvV4P3//CwAAAAALAAsAAAD/ni63P4wykmrNUSIEMQghiUeRiEAaKqiQhGOjzGsNB0ML6ycdU8POkNg1SG4GKXBhpijEFatJqQ0VBUqhdUVllURJl2WbmHgobYx77jxTEXMwHVjhgo8wnF5w/xtpOx6D39sKX2BDWFoB1UAhxBVeQaFjg90gAdhUpSYbgptjZsNkigvbQKhDilbpqh+KH1tl60Hqp6ds6MAL5mia1JhDCl5CgACmhJlsgeWDGZ7rxZtw4sow2GGClUBIFME2oSkDdpNZSodHgNKjMWig+1i4D6T4rUOcA4yZlDTCnTsacKmYCBA0MCxA2aUvYM3RoiKgwvCvII4RUuFXHVwiMgVPYCig3V1uCHB0KTeCG/yaBiiwy9aSiYkbo0xAdKHMR4KgxQoQJDgTgw2PQbyR0NooAwgjR4yyNPIrKetEgAAOw==" />
  307. </td>
  308. <td>Notifications in <a href="https://hipchat.com/">HipChat</a> channel.</td>
  309. </tr>
  310. <tr>
  311. <td>
  312. <img width="22" height="22" alt="VictorOps icon" src="data:image/gif;base64,R0lGODdhLAAsAMIIAP6oKP2vPv26V/7Nhf7bpv7nw//w2v7/+ywAAAAALAAsAAAD/ni63FpkDCEkKS7rbYgIYCiCAmFsaGMMY+sOZ6qtnxtQ9g3LTVHnA0KOhOEdfMMAwGAAJEs8YfKm+A0JKemQMlAIrTasBpncMVjPogo8QgfUB0PN7RLEzskCCyD2OgcFZWuCLF0LAwBddHVwi3UKEmeGbC2GcVMgMXBMl5gxWkkymAGTNmB9GaA3lAKdLQJ6P3YzsoCUAQaBNl00IJYNaBUnjiERVwodH6gPFCZeQxJ5C7l30wV3ujk4OQBwRtmmt75GDsQh22HkPeLoLgCw1Slk2uYjJfEqHpgVUxLNGhEq1AsBaEqrXMsWFLh2QFwxA/uMOAxxYuK4LBEPqDLlY20dJkMQR0HxOOrOQBEjGej7yGBeGgZyRr0BJnNWHIsEHcQUyQQnCXxHfAa44GRfwgUbgSTdleIkwaWVolgMYvCXvIlUtxxFsQIaVFJAeegJt6ujOmQTqoY9CzMghbdB1mZIAAA7" />
  313. </td>
  314. <td>Open and resolve incidents in <a href="https://victorops.com/">VictorOps</a>.</td>
  315. </tr>
  316. {% if enable_discord %}
  317. <tr>
  318. <td>
  319. <img width="22" height="22" alt="Discord icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsBAMAAADsqkcyAAAAGFBMVEVrhNpyidl/kd2KneGls+fK1PLq7Pr9//2AijvmAAABCElEQVQoz8XTS4+CMBAA4LLivZV1z2uCd0h8nI0Sr2KoPW+26A9QOn/fKQU7Rc67k0yafiHD9MUAdC6CSBUAA/Mdhcxjy78DRVfIP+KNt8inNxZ/xG2bbMA82XPGPg5ZFHBcFRKjkhllLi83wLhKTTlu0YbJCU/hFTvCG89nz/zo+U6+Vp4fnhP8o1YuG88T28Fnm2A846yJBCbHKosXzy3POs4puyJz13jHS5zVyiWUhE23ehxLWqRqW28KWgT7NvtC1tX6Rvu2xUu7o19g6FaJVC7skNS78NDcKXbDP92q8H6vetbBa1j2R2xyRiLuFw/6QKKAc+R4EE02yvj0Rtlkowx6nOEIT3y532UE1V+8AAAAAElFTkSuQmCC" />
  320. </td>
  321. <td>Notifications in <a href="https://discordapp.com/">Discord</a> channel.</td>
  322. </tr>
  323. {% endif %}
  324. <tr>
  325. <td>
  326. <img width="22" height="22" alt="OpsGenie icon" src="data:image/gif;base64,R0lGODdhLAAsAMIIAP+OGP+YLf+qUf+2a//EiP/Tpf/kx/7++SwAAAAALAAsAAAD/ni63GdEhADAFMS4zbkZVCWOVTBoXcoUAikKrQsIhdoZsQwUhV4JKNuiECIFIkCJACQL1IQHgo4XGsSAAx1BmHU5iboARDdQSWWZouDQex26ri2n7Y2OyobiLj/d8GVrOQBlYCJbeiNiDoIkW4JOcBVljCNrKz4AjiUjBIWTmE8KlJUHLUckNRRliCSWD5gWdjguBgZ7rCQokVMsB4BvY7BlB7ittbYyx8WJr7A/Cn2jyWfOM6Vo0tjVIgXI2zoS3xUs4k3LPkzlieoUiOfqRgS4EeLvJRnSQIWwEz4BGBpm+asBIVwYSidWZIsXJFglahZQQLAXJqECPRlGEFwonw5IswoaiijY9c9gOUsiAowUoSFRNwMFCKQT11KSAm81UsKU0G5AtwUFMdViueCKrwr0ShCMOWAAgU4PpAVzxYYloAK7jMRkhbPBFVYcU7LqQvVmCIrsglz6BgPtjg4QB7bAWk1Oh6wu35SotXCYGS80RKF6IC8OFDZFnBAGFzCH4sNRKznT4xHykLAuAlt28MGeCbWb/UToZ+FfBsgJAAA7" />
  327. </td>
  328. <td>Open and resolve incidents in <a href="https://www.opsgenie.com/">OpsGenie</a>.</td>
  329. </tr>
  330. </table>
  331. </div>
  332. </div>
  333. <div class="row">
  334. {% if registration_open %}
  335. <div class="footer-jumbo-bleed">
  336. <div class="col-sm-12">
  337. <div class="jumbotron">
  338. <div class="row">
  339. <div class="col-sm-7">
  340. <p>healthchecks.io is a <strong>free</strong> and
  341. <a href="https://github.com/healthchecks/healthchecks">open source</a> service.
  342. Setting up monitoring for your cron jobs only takes minutes.
  343. Start sleeping better at nights!</p>
  344. </div>
  345. <div class="col-sm-1"></div>
  346. <div class="col-sm-4">
  347. <form action="{% url 'hc-login' %}" method="post">
  348. {% csrf_token %}
  349. <div class="form-group">
  350. <div class="input-group input-group-lg">
  351. <div class="input-group-addon">@</div>
  352. <input
  353. type="email"
  354. class="form-control"
  355. name="email"
  356. autocomplete="email"
  357. placeholder="Email">
  358. </div>
  359. </div>
  360. <div class="clearfix">
  361. <button type="submit" class="btn btn-lg btn-primary pull-right">
  362. Get Started
  363. </button>
  364. </div>
  365. </form>
  366. </div>
  367. </div>
  368. </div>
  369. </div>
  370. </div>
  371. {% endif %}
  372. </div>
  373. </div>
  374. {% endblock %}
  375. {% block scripts %}
  376. {% compress js %}
  377. <script src="{% static 'js/jquery-2.1.4.min.js' %}"></script>
  378. <script src="{% static 'js/bootstrap.min.js' %}"></script>
  379. <script src="{% static 'js/clipboard.min.js' %}"></script>
  380. <script src="{% static 'js/snippet-copy.js' %}"></script>
  381. {% endcompress %}
  382. {% endblock %}