Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
The Final Crontab
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Selena Deckelmann
May 06, 2014
Technology
8.4k
3
Share
The Final Crontab
About crontabber:
https://github.com/mozilla/crontabber
Selena Deckelmann
May 06, 2014
More Decks by Selena Deckelmann
See All by Selena Deckelmann
Our privacy and the web
selenamarie
0
670
Postgres: an intro for new developers
selenamarie
0
230
Alembic and SQLAlchemy: sane schema management
selenamarie
0
270
code4lib - What beginners teach us
selenamarie
0
1.4k
What beginners teach us - New Relic FutureTalk
selenamarie
0
210
Cost of 100% processing and crashstorage options for Socorro
selenamarie
0
200
Socorro, crash-stats.mozilla.com and Postgres
selenamarie
0
340
What beginners teach us - Passion Projects
selenamarie
6
2.3k
Sane Schema Management with Alembic
selenamarie
2
1.4k
Other Decks in Technology
See All in Technology
独断と偏見で試してみる、 シングル or マルチエージェント どっちがいいの?
shichijoyuhi
1
130
「誰一人取り残されない」 AIエージェント時代のプロダクト設計思想 Product Management Summit 2026
mizushimac
1
1.6k
コミュニティ・勉強会を作るのは目的じゃない
ohmori_yusuke
0
260
生成AIが変える SaaS の競争原理と弁護士ドットコムのプロダクト戦略
bengo4com
1
2.3k
20年前の「OSS革命」に学ぶ AI時代の生存戦略
samakada
0
480
AIを共同作業者にして書籍を執筆する方法 / How to Write a Book with AI as a Co-Creator
ama_ch
2
150
AgentCore Managed Harness を使ってみよう
yakumo
2
230
Keeping Ruby Running on Cygwin
fd0
0
180
CloudTrail を見つめ直してみる
kazzpapa3
1
120
AWS Agent Registry の基礎・概要を理解する/aws-agent-registry-intro
ren8k
3
400
Claude Code を安全に使おう勉強会 / Claude Code Security Basics
masahirokawahara
12
37k
20260428_Product Management Summit_Loglass_JoeHirose
loglassjoe
3
3.8k
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
698
190k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.5k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
180
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
780
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.8k
How to Talk to Developers About Accessibility
jct
2
180
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
140
Transcript
The Final Crontab Selena Deckelmann Data Architect, Mozilla @selenamarie http://chesnok.com/
crontabber
None
None
socorro1 socorro3 WAL Socorro1 .dev Socorro1. stage base_backup copy Sunday
noon PT streaming rep Prod socorro2 backup4 base_backup & pg_dump backup reporting1 WAL socorro-db-zeus-rw socorro-db-zeus-ro very architecture very architecture such replicas such replicas wow wow
None
None
None
None
None
Tons more at: http://lqbs.fr/suchcomments/
None
http://github.com/mozilla/socorro
http://bit.ly/1fOgBSB
*/5 * * * * socorro crontabber.sh
image by @CoryLoftis
Motivating factors
#ThreeWordHorrorStories
No unit tests
No unit tests
Bespoke shell scripts
Postgres stored procedures
Email from cron
0 5000 10000 15000 20000 25000 Dec 5, 2010 May
5, 2011 Oct 5, 2011 Mar 5, 2012 Aug 5, 2012 Jan 5, 2013 Jun 5, 2013 Nov 5, 2013 Apr 5, 2014 Cron alert messages
None
Email from cron that you need to read.
None
Cron, what is it good for? • birthday reminders •
status updates for a website • doxygen output for manuals every 12 hours • email nags about bugs filed wrong • ETL • Postgres -> Cloudwatch • Batch processing • Backups of RO DB • Machine heartbeat • “sweet fuck all” • “auto” updates • logging laptop IP • check for abandoned twitter accounts
Running jobs on a predictable schedule
How Socorro uses cron • Time-dependent reports or maintenance •
“Simple” event detection and triggers • Status logging
Our use cases • Stored procedures for materialized views in
Postgres • Daily map-reduces (largely deprecated) • FTP Scraping into Postgres • Bulk email responses to crash submissions pulled from Elastic Search
Jobs that don’t lend themselves to queue management because of
time-dependencies, fragility or complexity.
crontabber https://github.com/mozilla/crontabber
On Github: Peter Bengtsson @peterbe & Lars Lohn @twobraids
pip install crontabber
Our crontabber jobs
None
None
None
None
configman https://github.com/mozilla/configman
Our config https://github.com/mozilla/socorro/blob/ master/config/crontabber.ini-dist
None
No more shell scripts
#!/bin/bash . /etc/socorro/socorrorc NAME=`basename $0 .sh` lock --ignore-existing $NAME ${PYTHON}
${APPDIR}/socorro/cron/crontabber.py \ --admin.conf=/etc/socorro/crontabber.ini \ >> /var/log/socorro/crontabber.log 2>&1 EXIT_CODE=$? unlock $NAME exit $EXIT_CODE
Retries on failure
Waits to run if a dependency fails
Nagios alerts
15:58 < nagios-phx1> | Sun 15:58:44 PDT [1085] socorroadm.stage.private.phx1.mozilla.com: Socorro
Admin - crontab is CRITICAL: CRITICAL - correlations-addon-matview (CorrelationsAddonCronApp) (http://m.mozilla.org/Socorro+Admin+-+crontab)
Allow configurable number of failures before CRITICAL
Unit test framework for all jobs
Documented dependencies
None
None
Config can get hairy
One-off runs aren’t simple
Parallel execution coming soon! or...
*/5 * * * * socorro crontabber \ --admin.conf=/etc/crontabber1.ini */5
* * * * socorro crontabber \ --admin.conf=/etc/crontabber2.ini */5 * * * * socorro crontabber \ --admin.conf=/etc/crontabber3.ini
crontabber as a module is running in our stage environment
Dependencies • Python 2.6 or higher • Postgres 9.2 or
higher •
https://github.com/mozilla/crontabber Ping us in #breakpad on irc.mozilla.org Tune in: Tuesday
June 10th at 7pm PDT at air.mozilla.com!
The Final Crontab Selena Deckelmann Data Architect, Mozilla @selenamarie http://chesnok.com/