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.

765 lines
27 KiB

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
8 years ago
8 years ago
8 years ago
6 years ago
6 years ago
9 years ago
9 years ago
  1. {% extends "base.html" %}
  2. {% load compress humanize i18n static %}
  3. {% block description %}
  4. <meta name="description" content="{% blocktrans %}Cron Monitoring. Monitor nightly backups, weekly reports, cron jobs and background tasks. Receive alerts when your tasks don't run on time.{% endblocktrans %}">
  5. {% endblock %}
  6. {% block head %}
  7. <link rel="canonical" href="{{ site_root }}" />
  8. {% endblock %}
  9. {% block containers %}
  10. <div class="index-bleed">
  11. <div class="container">
  12. <div class="row">
  13. <div class="col-sm-12">
  14. <h1 id="pitch">
  15. {% trans "Monitoring for your nightly backups, weekly reports, cron jobs and background tasks." %}
  16. </h1>
  17. </div>
  18. </div>
  19. <div class="row">
  20. <div class="col-sm-6 col-sm-push-6">
  21. <p id="pitch-text">
  22. {% trans "Make HTTP requests to the Ping URL at regular intervals." %}
  23. <strong>
  24. {% blocktrans trimmed %}
  25. When the URL is not pinged on time,
  26. {{ site_name }} will send you an alert.
  27. {% endblocktrans %}
  28. </strong>
  29. {% trans "You can monitor any service that can make HTTP requests or send emails." %}
  30. </p>
  31. </div>
  32. <div class="col-sm-6 col-sm-pull-6">
  33. <h2 id="pitch-subtitle">
  34. {% blocktrans trimmed %}
  35. For each of your periodic tasks,
  36. {{ site_name }} provides an unique URL similar to this one:
  37. {% endblocktrans %}
  38. </h2>
  39. <div id="pitch-url">
  40. <code>{{ ping_url }}</code>
  41. </div>
  42. </div>
  43. </div>
  44. <div class="row">
  45. <div class="col-sm-12">
  46. <ul class="nav nav-tabs" role="tablist">
  47. <li class="active">
  48. <a href="#crontab" data-toggle="tab">Crontab</a>
  49. </li>
  50. <li>
  51. <a href="#bash" data-toggle="tab">Bash</a>
  52. </li>
  53. <li>
  54. <a href="#python" data-toggle="tab">Python</a>
  55. </li>
  56. <li class="hidden-xs">
  57. <a href="#ruby" data-toggle="tab">Ruby</a>
  58. </li>
  59. <li class="hidden-xs">
  60. <a href="#node" data-toggle="tab">Node.js</a>
  61. </li>
  62. <li class="hidden-xs">
  63. <a href="#go" data-toggle="tab">Go</a>
  64. </li>
  65. <li class="hidden-xs">
  66. <a href="#php" data-toggle="tab">PHP</a>
  67. </li>
  68. <li class="hidden-xs">
  69. <a href="#cs" data-toggle="tab">C#</a>
  70. </li>
  71. <li class="hidden-xs">
  72. <a href="#browser" data-toggle="tab">{% trans "Browser" %}</a>
  73. </li>
  74. <li class="hidden-xs">
  75. <a href="#powershell" data-toggle="tab">PowerShell</a>
  76. </li>
  77. <li class="hidden-xs">
  78. <a href="#email" data-toggle="tab">{% trans "Email" %}</a>
  79. </li>
  80. </ul>
  81. <div class="tab-content">
  82. <div role="tabpanel" class="tab-pane active" id="crontab">
  83. {% include "front/snippets/crontab.html" %}
  84. </div>
  85. <div role="tabpanel" class="tab-pane" id="bash">
  86. {% include "front/snippets/bash_curl.html" %}
  87. {% include "front/snippets/bash_wget.html" %}
  88. </div>
  89. <div role="tabpanel" class="tab-pane" id="python">
  90. {% include "front/snippets/python_urllib2.html" %}
  91. {% include "front/snippets/python_requests.html" %}
  92. </div>
  93. <div role="tabpanel" class="tab-pane" id="ruby">
  94. {% include "front/snippets/ruby.html" %}
  95. </div>
  96. <div role="tabpanel" class="tab-pane" id="node">
  97. {% include "front/snippets/node.html" %}
  98. </div>
  99. <div role="tabpanel" class="tab-pane" id="go">
  100. {% include "front/snippets/go.html" %}
  101. </div>
  102. <div role="tabpanel" class="tab-pane" id="php">
  103. {% include "front/snippets/php.html" %}
  104. </div>
  105. <div role="tabpanel" class="tab-pane" id="cs">
  106. {% include "front/snippets/cs.html" %}
  107. </div>
  108. <div class="tab-pane" id="browser">
  109. {% include "front/snippets/browser.html" %}
  110. </div>
  111. <div class="tab-pane" id="powershell">
  112. {% include "front/snippets/powershell.html" %}
  113. {% include "front/snippets/powershell_inline.html" %}
  114. </div>
  115. <div class="tab-pane tab-pane-email" id="email">
  116. <p>
  117. {% blocktrans trimmed %}
  118. As an alternative to HTTP requests,
  119. you can also report "liveness" by
  120. <strong>sending email messages</strong>.
  121. {% endblocktrans %}
  122. </p>
  123. <p>
  124. {% blocktrans trimmed %}
  125. You can instruct {{ site_name }} to look for a particular
  126. keyword in the subject line. This is handy when your backup
  127. software sends an email after every run, and uses a different
  128. subject line depending on success or failure.
  129. {% endblocktrans %}
  130. </p>
  131. </div>
  132. </div>
  133. </div>
  134. </div>
  135. </div>
  136. </div>
  137. {% if registration_open %}
  138. <div class="get-started-bleed">
  139. <div class="container">
  140. <div class="row">
  141. <div id="get-started" class="col-sm-8 col-sm-offset-2 text-center">
  142. <h1>
  143. {% blocktrans trimmed %}
  144. {{ site_name }} monitors the heartbeat messages sent by your cron
  145. jobs, services and APIs. Get immediate alerts when they don't
  146. arrive on schedule.
  147. {% endblocktrans %}
  148. </h1>
  149. <a href="#" data-toggle="modal" data-target="#signup-modal" class="btn btn-lg btn-primary">
  150. {% trans "Sign Up – It's Free" %}
  151. </a>
  152. </div>
  153. </div>
  154. </div>
  155. </div>
  156. {% endif %}
  157. <div class="container">
  158. <div class="row">
  159. <div class="col-sm-12">
  160. <h2 class="tour-title">
  161. {% trans "A quick peek of what's inside:" %}
  162. </h2>
  163. </div>
  164. </div>
  165. <div class="row tour-section">
  166. <div class="col-sm-8">
  167. <img
  168. class="img-responsive"
  169. src="{% static 'img/my_checks.png' %}"
  170. srcset="{% static 'img/my_checks.png'%} 1x, {% static 'img/[email protected]'%} 2x"
  171. alt="My Checks page" />
  172. </div>
  173. <div class="col-sm-4">
  174. <h3>
  175. {% trans "Live-updating Dashboard" %}
  176. </h3>
  177. <p>
  178. {% blocktrans trimmed %}
  179. A list of your checks, one for each Cron job, daemon or
  180. scheduled task you want to monitor.
  181. {% endblocktrans %}
  182. </p>
  183. <p>
  184. {% blocktrans trimmed %}
  185. Give names and assign tags to your checks to easily recognize
  186. them later.
  187. {% endblocktrans %}
  188. </p>
  189. <p>
  190. {% blocktrans trimmed %}
  191. Tap on the integration icons to toggle them on and off.
  192. {% endblocktrans %}
  193. </p>
  194. <p>
  195. {% blocktrans trimmed %}
  196. Adjust Period and Grace time to match the
  197. periodicity and duration of your tasks.
  198. {% endblocktrans %}
  199. </p>
  200. </div>
  201. </div>
  202. <div class="row tour-section">
  203. <div class="col-sm-8">
  204. <img
  205. class="img-responsive"
  206. src="{% static 'img/period_grace.png' %}"
  207. srcset="{% static 'img/period_grace.png'%} 1x, {% static 'img/[email protected]'%} 2x"
  208. alt="Period/Grace Time dialog" />
  209. </div>
  210. <div class="col-sm-4">
  211. <h3>{% trans "Simple Configuration" %}</h3>
  212. {% blocktrans trimmed %}
  213. Each check has configurable <strong>Period</strong> and <strong>Grace Time</strong> parameters.
  214. Depending on these parameters and time since the last ping, the check is in one of the
  215. following states:
  216. {% endblocktrans %}
  217. <table class="table">
  218. <tr>
  219. <td>
  220. <span class="status icon-new"></span>
  221. </td>
  222. <td>
  223. {% blocktrans trimmed %}
  224. New.
  225. A check that has been created, but has not received any pings yet.
  226. {% endblocktrans %}
  227. </td>
  228. </tr>
  229. <tr>
  230. <td>
  231. <span class="status icon-up"></span>
  232. </td>
  233. <td>
  234. {% blocktrans trimmed %}
  235. Up.
  236. Time since last ping has not exceeded <strong>Period</strong>.
  237. {% endblocktrans %}
  238. </td>
  239. </tr>
  240. <tr>
  241. <td>
  242. <span class="status icon-grace"></span>
  243. </td>
  244. <td>
  245. {% blocktrans trimmed %}
  246. Late.
  247. Time since last ping has exceeded <strong>Period</strong>,
  248. but has not yet exceeded <strong>Period</strong> + <strong>Grace</strong>.
  249. {% endblocktrans %}
  250. </td>
  251. </tr>
  252. <tr>
  253. <td>
  254. <span class="status icon-down"></span>
  255. </td>
  256. <td>
  257. {% blocktrans trimmed %}
  258. Down.
  259. Time since last ping has exceeded <strong>Period</strong> + <strong>Grace</strong>.
  260. When check goes from "Late" to "Down", {{ site_name }}
  261. sends you a notification.
  262. {% endblocktrans %}
  263. </td>
  264. </tr>
  265. </table>
  266. </div>
  267. </div>
  268. <div class="row tour-section">
  269. <div class="col-sm-8">
  270. <img
  271. class="img-responsive"
  272. src="{% static 'img/cron.png' %}"
  273. srcset="{% static 'img/cron.png'%} 1x, {% static 'img/[email protected]'%} 2x"
  274. alt="Cron dialog" />
  275. </div>
  276. <div class="col-sm-4">
  277. <h3>{% trans "Cron Expression Support" %}</h3>
  278. <p>
  279. {% blocktrans trimmed %}
  280. Alternatively, you can define the expected ping dates and times
  281. using a cron expression. See
  282. {% endblocktrans %}
  283. <a href="{% url 'hc-docs-cron' %}">
  284. {% trans "Cron Syntax Cheatsheet" %}
  285. </a>
  286. {% blocktrans trimmed %}
  287. for the supported syntax features.
  288. {% endblocktrans %}
  289. </p>
  290. <p>
  291. {% blocktrans trimmed %}
  292. <strong>Grace Time</strong> specifies how "late" a ping can
  293. be before you will be alerted. Set it to be a little above
  294. the expected duration of your cron job.
  295. {% endblocktrans %}
  296. </p>
  297. </div>
  298. </div>
  299. <div class="row tour-section">
  300. <div class="col-sm-8">
  301. <img
  302. class="img-responsive"
  303. src="{% static 'img/check_details.png' %}"
  304. srcset="{% static 'img/check_details.png'%} 1x, {% static 'img/[email protected]'%} 2x"
  305. alt="Details Page" />
  306. </div>
  307. <div class="col-sm-4">
  308. <h3>{% trans "Details and Event Log" %}</h3>
  309. <p>
  310. {% blocktrans trimmed %}
  311. You can add a longer, free-form description to each
  312. check. Leave notes and pointers for yourself and
  313. for your team.
  314. {% endblocktrans %}
  315. </p>
  316. <p>
  317. {% blocktrans trimmed %}
  318. You can also see the log of received pings and
  319. sent "Down" notifications.
  320. {% endblocktrans %}
  321. </p>
  322. </div>
  323. </div>
  324. <div class="row tour-section">
  325. <div class="col-sm-8">
  326. <img
  327. class="img-responsive"
  328. src="{% static 'img/badges.png' %}"
  329. srcset="{% static 'img/badges.png'%} 1x, {% static 'img/[email protected]'%} 2x"
  330. alt="Details Page" />
  331. </div>
  332. <div class="col-sm-4">
  333. <h3>{% trans "Public Status Badges" %}</h3>
  334. <p>
  335. {% blocktrans trimmed %}
  336. {{ site_name }} provides status badges for each of the tags
  337. you have used. Additionally, the "{{ site_name }}" badge
  338. shows the overall status of all checks in your account.
  339. {% endblocktrans %}
  340. </p>
  341. <p>
  342. {% blocktrans trimmed %}
  343. The badges have public, but hard-to-guess URLs.
  344. You can use them in your READMEs, dashboards or status pages.
  345. {% endblocktrans %}
  346. </p>
  347. </div>
  348. </div>
  349. <div id="welcome-integrations" class="row">
  350. <div class="col-sm-12">
  351. <h1>{% trans "Integrations" %}<br>
  352. <small>
  353. {% trans "Set up multiple ways to get notified:" %}
  354. </small>
  355. </h1>
  356. </div>
  357. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  358. <div class="integration">
  359. <img src="{% static 'img/integrations/email.png' %}" class="icon" alt="" />
  360. <h3>
  361. {% trans "Email" %}<br>
  362. <small>&nbsp;</small>
  363. </h3>
  364. </div>
  365. </div>
  366. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  367. <div class="integration">
  368. <img src="{% static 'img/integrations/webhook.png' %}" class="icon" alt="" />
  369. <h3>
  370. Webhooks<br>
  371. <small>&nbsp;</small>
  372. </h3>
  373. </div>
  374. </div>
  375. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  376. {% if enable_slack_btn %}
  377. <a href="{% url 'hc-slack-help' %}" class="integration">
  378. <img src="{% static 'img/integrations/slack.png' %}" class="icon" alt="" />
  379. <h3>
  380. Slack<br>
  381. <small>{% trans "Chat" %}</small>
  382. </h3>
  383. </a>
  384. {% else %}
  385. <div class="integration">
  386. <img src="{% static 'img/integrations/slack.png' %}" class="icon" alt="" />
  387. <h3>
  388. Slack<br>
  389. <small>{% trans "Chat" %}</small>
  390. </h3>
  391. </div>
  392. {% endif %}
  393. </div>
  394. {% if enable_apprise %}
  395. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  396. <div class="integration">
  397. <img src="{% static 'img/integrations/apprise.png' %}" class="icon" alt="" />
  398. <h3>
  399. Apprise<br>
  400. <small>{% trans "Push Notifications" %}</small>
  401. </h3>
  402. </div>
  403. </div>
  404. {% endif %}
  405. {% if enable_discord %}
  406. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  407. <div class="integration">
  408. <img src="{% static 'img/integrations/discord.png' %}" class="icon" alt="" />
  409. <h3>
  410. Discord<br>
  411. <small>{% trans "Chat" %}</small>
  412. </h3>
  413. </div>
  414. </div>
  415. {% endif %}
  416. {% if enable_linenotify %}
  417. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  418. <div class="integration">
  419. <img src="{% static 'img/integrations/linenotify.png' %}" class="icon" alt="" />
  420. <h3>LINE Notify<br><small>Chat</small></h3>
  421. </div>
  422. </div>
  423. {% endif %}
  424. {% if enable_matrix %}
  425. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  426. <div class="integration">
  427. <img src="{% static 'img/integrations/matrix.png' %}" class="icon" alt="" />
  428. <h3>
  429. Matrix<br>
  430. <small>{% trans "Chat" %}</small>
  431. </h3>
  432. </div>
  433. </div>
  434. {% endif %}
  435. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  436. <div class="integration">
  437. <img src="{% static 'img/integrations/mattermost.png' %}" class="icon" alt="" />
  438. <h3>
  439. Mattermost<br>
  440. <small>{% trans "Chat" %}</small>
  441. </h3>
  442. </div>
  443. </div>
  444. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  445. <div class="integration">
  446. <img src="{% static 'img/integrations/msteams.png' %}" class="icon" alt="" />
  447. <h3>
  448. Microsoft Teams<br>
  449. <small>{% trans "Chat" %}</small>
  450. </h3>
  451. </div>
  452. </div>
  453. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  454. <div class="integration">
  455. <img src="{% static 'img/integrations/opsgenie.png' %}" class="icon" alt="" />
  456. <h3>
  457. OpsGenie<br>
  458. <small>{% trans "Incident Management" %}</small>
  459. </h3>
  460. </div>
  461. </div>
  462. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  463. {% if enable_pdc %}
  464. <a href="{% url 'hc-pdc-help' %}" class="integration">
  465. <img src="{% static 'img/integrations/pd.png' %}" class="icon" alt="" />
  466. <h3>
  467. PagerDuty<br>
  468. <small>{% trans "Incident Management" %}</small>
  469. </h3>
  470. </a>
  471. {% else %}
  472. <div class="integration">
  473. <img src="{% static 'img/integrations/pd.png' %}" class="icon" alt="" />
  474. <h3>
  475. PagerDuty<br>
  476. <small>{% trans "Incident Management" %}</small>
  477. </h3>
  478. </div>
  479. {% endif %}
  480. </div>
  481. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  482. <div class="integration">
  483. <img src="{% static 'img/integrations/pagertree.png' %}" class="icon" alt="" />
  484. <h3>
  485. PagerTree<br>
  486. <small>{% trans "Incident Management" %}</small>
  487. </h3>
  488. </div>
  489. </div>
  490. {% if enable_call %}
  491. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  492. <div class="integration">
  493. <img src="{% static 'img/integrations/call.png' %}" class="icon" alt="" />
  494. <h3>
  495. {% trans "Phone Call" %}<br>
  496. <small>&nbsp;</small>
  497. </h3>
  498. </div>
  499. </div>
  500. {% endif %}
  501. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  502. <a href="{% url 'hc-serve-doc' 'configuring_prometheus' %}" class="integration">
  503. <img src="{% static 'img/integrations/prometheus.png' %}" class="icon" alt="" />
  504. <h3>
  505. Prometheus<br>
  506. <small>{% trans "Event Monitoring" %}</small>
  507. </h3>
  508. </a>
  509. </div>
  510. {% if enable_pushbullet %}
  511. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  512. <div class="integration">
  513. <img src="{% static 'img/integrations/pushbullet.png' %}" class="icon" alt="" />
  514. <h3>
  515. Pushbullet<br>
  516. <small>{% trans "Push Notifications" %}</small>
  517. </h3>
  518. </div>
  519. </div>
  520. {% endif %}
  521. {% if enable_pushover %}
  522. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  523. <a href="{% url 'hc-pushover-help' %}" class="integration">
  524. <img src="{% static 'img/integrations/po.png' %}" class="icon" alt="" />
  525. <h3>
  526. Pushover<br>
  527. <small>{% trans "Push Notifications" %}</small>
  528. </h3>
  529. </a>
  530. </div>
  531. {% endif %}
  532. {% if enable_shell %}
  533. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  534. <div class="integration">
  535. <img src="{% static 'img/integrations/shell.png' %}" class="icon" alt="" />
  536. <h3>
  537. {% trans "Shell Commands" %}<br>
  538. <small>&nbsp;</small>
  539. </h3>
  540. </div>
  541. </div>
  542. {% endif %}
  543. {% if enable_signal %}
  544. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  545. <div class="integration">
  546. <img src="{% static 'img/integrations/signal.png' %}" class="icon" alt="" />
  547. <h3>
  548. {% trans "Signal" %}<br>
  549. <small>{% trans "Chat" %}</small>
  550. </h3>
  551. </div>
  552. </div>
  553. {% endif %}
  554. {% if enable_sms %}
  555. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  556. <div class="integration">
  557. <img src="{% static 'img/integrations/sms.png' %}" class="icon" alt="" />
  558. <h3>
  559. {% trans "SMS" %}<br>
  560. <small>&nbsp;</small>
  561. </h3>
  562. </div>
  563. </div>
  564. {% endif %}
  565. <div class="col-md-2 col-sm-4 col-xs-6">
  566. <div class="integration">
  567. <img src="{% static 'img/integrations/spike.png' %}" class="icon" alt="Spike.sh icon" />
  568. <h3>
  569. Spike.sh<br>
  570. <small>{% trans "Incident Management" %}</small>
  571. </h3>
  572. </div>
  573. </div>
  574. {% if enable_telegram %}
  575. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  576. <a href="{% url 'hc-telegram-help' %}" class="integration">
  577. <img src="{% static 'img/integrations/telegram.png' %}" class="icon" alt="" />
  578. <h3>
  579. Telegram<br>
  580. <small>{% trans "Chat" %}</small>
  581. </h3>
  582. </a>
  583. </div>
  584. {% endif %}
  585. {% if enable_trello %}
  586. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  587. <div class="integration">
  588. <img src="{% static 'img/integrations/trello.png' %}" class="icon" alt="" />
  589. <h3>
  590. Trello<br>
  591. <small>{% trans "Project Management" %}</small>
  592. </h3>
  593. </div>
  594. </div>
  595. {% endif %}
  596. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  597. <div class="integration">
  598. <img src="{% static 'img/integrations/victorops.png' %}" class="icon" alt="" />
  599. <h3>
  600. VictorOps<br>
  601. <small>{% trans "Incident Management" %}</small>
  602. </h3>
  603. </div>
  604. </div>
  605. {% if enable_whatsapp %}
  606. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  607. <div class="integration">
  608. <img src="{% static 'img/integrations/whatsapp.png' %}" class="icon" alt="" />
  609. <h3>
  610. WhatsApp<br>
  611. <small>{% trans "Chat" %}</small>
  612. </h3>
  613. </div>
  614. </div>
  615. {% endif %}
  616. <div class="col-lg-2 col-md-3 col-sm-4 col-xs-6">
  617. <div class="integration">
  618. <img src="{% static 'img/integrations/zulip.png' %}" class="icon" alt="" />
  619. <h3>
  620. Zulip<br>
  621. <small>{% trans "Chat" %}</small>
  622. </h3>
  623. </div>
  624. </div>
  625. </div>
  626. <div class="row tour-section">
  627. <div class="col-sm-12">
  628. <h1 class="text-center">
  629. {% blocktrans trimmed %}
  630. What Can I Monitor With {{ site_name }}?
  631. {% endblocktrans %}
  632. </h1>
  633. </div>
  634. <div class="col-sm-6 use-cases">
  635. <h2>{% trans "Cron Jobs" %}</h2>
  636. <p>
  637. {% blocktrans trimmed %}
  638. {{ site_name }} monitoring is a great fit for cron jobs and cron-like
  639. systems (systemd timers, Jenkins build jobs, Windows Scheduled Tasks,
  640. wp-cron, uwsgi cron-like interface, Heroku Scheduler, ...). A failed
  641. cron job often has no immediate visible consequences, and can go
  642. unnoticed for a long time.
  643. {% endblocktrans %}
  644. </p>
  645. <p>{% trans "Specific examples:" %}</p>
  646. <ul>
  647. <li>{% trans "Filesystem backups" %}</li>
  648. <li>{% trans "Database backups" %}</li>
  649. <li>{% trans "Daily, weekly, monthly report emails" %}</li>
  650. <li>{% trans "SSL renewals" %}</li>
  651. <li>{% trans "Business data import and sync" %}</li>
  652. <li>{% trans "Antivirus scans" %}</li>
  653. <li>{% trans "Dynamic DNS updates" %}</li>
  654. </ul>
  655. </div>
  656. <div class="col-sm-6 use-cases">
  657. <h2>{% trans "Processes, Services, Servers" %}</h2>
  658. <p>
  659. {% blocktrans trimmed %}
  660. {{ site_name }} monitoring can be used for lightweight server
  661. monitoring: ensuring a particular system service, or the server as a
  662. whole is alive and healthy. Write a shell script that checks for a
  663. specific condition, and pings {{ site_name }} if successful. Run the
  664. shell script regularly.
  665. {% endblocktrans %}
  666. </p>
  667. <p>{% trans "Specific examples:" %}</p>
  668. <ul>
  669. <li>{% trans "Check a specific docker container is running" %}</li>
  670. <li>{% trans "Check a specific application process is running" %}</li>
  671. <li>{% trans "Check database replication lag" %}</li>
  672. <li>{% trans "Check system resources: free disk, free RAM, ..." %}</li>
  673. <li>
  674. {% blocktrans trimmed %}
  675. Send simple, unconditional "I'm alive" messages from your server
  676. (or your NAS, router, Raspberry Pi, ...)
  677. {% endblocktrans %}
  678. </li>
  679. </ul>
  680. </div>
  681. </div>
  682. <div class="row">
  683. {% if registration_open %}
  684. <div class="footer-jumbo-bleed">
  685. <div class="col-sm-10 col-sm-offset-1">
  686. <div id="footer-cta" class="jumbotron text-center">
  687. <p>
  688. {% blocktrans trimmed %}
  689. {{ site_name }} is a <strong>free</strong> and
  690. <a href="https://github.com/healthchecks/healthchecks">open source</a>
  691. service. Setting up monitoring for your cron jobs only takes minutes.
  692. Start sleeping better at nights!
  693. {% endblocktrans %}
  694. </p>
  695. <a href="#" data-toggle="modal" data-target="#signup-modal" class="btn btn-lg btn-primary">
  696. {% trans "Sign Up" %}
  697. </a>
  698. </div>
  699. </div>
  700. </div>
  701. {% endif %}
  702. </div>
  703. </div>
  704. {% include "front/signup_modal.html" %}
  705. {% endblock %}
  706. {% block scripts %}
  707. {% compress js %}
  708. <script src="{% static 'js/jquery-2.1.4.min.js' %}"></script>
  709. <script src="{% static 'js/bootstrap.min.js' %}"></script>
  710. <script src="{% static 'js/clipboard.min.js' %}"></script>
  711. <script src="{% static 'js/snippet-copy.js' %}"></script>
  712. <script src="{% static 'js/signup.js' %}"></script>
  713. {% endcompress %}
  714. {% endblock %}