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
Selena Deckelmann
May 06, 2014
Technology
3
8k
The Final Crontab
About crontabber:
https://github.com/mozilla/crontabber
Selena Deckelmann
May 06, 2014
Tweet
Share
More Decks by Selena Deckelmann
See All by Selena Deckelmann
Our privacy and the web
selenamarie
0
540
Postgres: an intro for new developers
selenamarie
0
130
Alembic and SQLAlchemy: sane schema management
selenamarie
0
200
code4lib - What beginners teach us
selenamarie
0
1.3k
What beginners teach us - New Relic FutureTalk
selenamarie
0
180
Cost of 100% processing and crashstorage options for Socorro
selenamarie
0
110
Socorro, crash-stats.mozilla.com and Postgres
selenamarie
0
290
What beginners teach us - Passion Projects
selenamarie
6
2.1k
Sane Schema Management with Alembic
selenamarie
2
1.3k
Other Decks in Technology
See All in Technology
10分でわかるfreee エンジニア向け会社説明資料
freee
18
520k
いまならこう作りたい AWSコンテナ[本格]入門ハンズオン 〜2024年版 ハンズオンの構想〜
horsewin
9
2.1k
AIを駆使したゲーム開発戦略: 新設AI組織の取り組み / sge-ai-strategy
cyberagentdevelopers
PRO
1
130
コンテンツを支える 若手ゲームクリエイターの アートディレクションの事例紹介 / cagamefi-game
cyberagentdevelopers
PRO
1
130
【技術書典17】OpenFOAM(自宅で極める流体解析)2次元円柱まわりの流れ
kamakiri1225
0
220
ユーザーの購買行動モデリングとその分析 / dsc-purchase-analysis
cyberagentdevelopers
PRO
2
100
スプリントゴールにチームの状態も設定する背景とその効果 / Team state in sprint goals why and impact
kakehashi
2
100
オーティファイ会社紹介資料 / Autify Company Deck
autifyhq
9
120k
AWS CDKでデータリストアの運用、どのように設計する?~Aurora・EFSの実践事例を紹介~/aws-cdk-data-restore-aurora-efs
mhrtech
4
650
なんで、私がAWS Heroに!? 〜社外の広い世界に一歩踏み出そう〜
minorun365
PRO
6
1.1k
LeSSに潜む「隠れWF病」とその処方箋
lycorptech_jp
PRO
2
120
新卒1年目が挑む!生成AI × マルチエージェントで実現する次世代オンボーディング / operation-ai-onboarding
cyberagentdevelopers
PRO
1
170
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
39
2.4k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Ruby is Unlike a Banana
tanoku
96
11k
Building Adaptive Systems
keathley
38
2.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
RailsConf 2023
tenderlove
29
880
Product Roadmaps are Hard
iamctodd
PRO
48
10k
Side Projects
sachag
452
42k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.2k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
Why You Should Never Use an ORM
jnunemaker
PRO
53
9k
The Pragmatic Product Professional
lauravandoore
31
6.3k
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/