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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Selena Deckelmann
May 06, 2014
Technology
8.5k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
700
Postgres: an intro for new developers
selenamarie
0
250
Alembic and SQLAlchemy: sane schema management
selenamarie
0
290
code4lib - What beginners teach us
selenamarie
0
1.5k
What beginners teach us - New Relic FutureTalk
selenamarie
0
230
Cost of 100% processing and crashstorage options for Socorro
selenamarie
0
210
Socorro, crash-stats.mozilla.com and Postgres
selenamarie
0
350
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
アクセスキー流出時の対応で再認識した攻撃側と防御側の非対称性について
kazzpapa3
0
330
AIレビュー時代に必要なのは、SLOで引く撤退ライン
nobuoooo
0
110
dbt と Snowflake と tag
kevinrobot34
1
250
型落ちシンクライアント端末のPoEモジュールを自作したかった話
logica0419
0
450
会計事務所と顧問先の契約関係をOIDC・OAuthで表現する
terara
0
380
サーバー常駐型の 簡易障害調査AI エージェントを作ってみた話
masayoshi
0
170
内製AIチャットボット開発で学んだ Datadog Agent Observability活用術
mkdev10
0
150
GopherCon @シアトル に行ってきました
logica0419
0
300
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
フィジカルAIの知識ゼロの僕でも AIを使えばここまでできた
tatsuya1970
0
180
AI for Science時代を切り開く、政府の次世代HPC戦略の展望
gpuunite_official
0
260
「面白い!」を信じ抜け。激動の時代を貫く、オンリーワン・エンジニアの条件
kizawa2020
0
250
Featured
See All Featured
We Are The Robots
honzajavorek
0
310
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
220
The Pragmatic Product Professional
lauravandoore
37
7.4k
The browser strikes back
jonoalderson
0
1.5k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
360
Utilizing Notion as your number one productivity tool
mfonobong
4
550
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
220
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
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/