document.write('<link rel="stylesheet" href="http://gist.github.com/stylesheets/gist/embed.css"/>')





document.write('<div id=\"gist-48900\" class=\"gist\">\n  \n  \n    \n            \n\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n          \n          \n          \n            <div class=\"gist-highlight\"><pre><div class=\"line\" id=\"LC1\"><span class=\"no\">MERB_ROOT<\/span><span class=\"o\">=<\/span><span class=\"s1\">&#39;/home/deploy/repos/twitter/current&#39;<\/span><\/div><div class=\"line\" id=\"LC2\">&nbsp;<\/div><div class=\"line\" id=\"LC3\"><span class=\"k\">def<\/span> <span class=\"nf\">generic_monitoring<\/span><span class=\"p\">(<\/span><span class=\"n\">w<\/span><span class=\"p\">,<\/span> <span class=\"n\">options<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{})<\/span><\/div><div class=\"line\" id=\"LC4\">&nbsp;&nbsp;<span class=\"n\">w<\/span><span class=\"o\">.<\/span><span class=\"n\">start_if<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">start<\/span><span class=\"o\">|<\/span><\/div><div class=\"line\" id=\"LC5\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">start<\/span><span class=\"o\">.<\/span><span class=\"n\">condition<\/span><span class=\"p\">(<\/span><span class=\"ss\">:process_running<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">c<\/span><span class=\"o\">|<\/span><\/div><div class=\"line\" id=\"LC6\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">c<\/span><span class=\"o\">.<\/span><span class=\"n\">interval<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">10<\/span><span class=\"o\">.<\/span><span class=\"n\">seconds<\/span><\/div><div class=\"line\" id=\"LC7\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">c<\/span><span class=\"o\">.<\/span><span class=\"n\">running<\/span> <span class=\"o\">=<\/span> <span class=\"kp\">false<\/span><\/div><div class=\"line\" id=\"LC8\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC9\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC10\">&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC11\">&nbsp;&nbsp;<span class=\"n\">w<\/span><span class=\"o\">.<\/span><span class=\"n\">restart_if<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">restart<\/span><span class=\"o\">|<\/span><\/div><div class=\"line\" id=\"LC12\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">restart<\/span><span class=\"o\">.<\/span><span class=\"n\">condition<\/span><span class=\"p\">(<\/span><span class=\"ss\">:memory_usage<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">c<\/span><span class=\"o\">|<\/span><\/div><div class=\"line\" id=\"LC13\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">c<\/span><span class=\"o\">.<\/span><span class=\"n\">above<\/span> <span class=\"o\">=<\/span> <span class=\"n\">options<\/span><span class=\"o\">[<\/span><span class=\"ss\">:memory_limit<\/span><span class=\"o\">]<\/span><\/div><div class=\"line\" id=\"LC14\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">c<\/span><span class=\"o\">.<\/span><span class=\"n\">times<\/span> <span class=\"o\">=<\/span> <span class=\"o\">[<\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span> <span class=\"mi\">5<\/span><span class=\"o\">]<\/span> <span class=\"c1\"># 3 out of 5 intervals<\/span><\/div><div class=\"line\" id=\"LC15\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC16\">&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC17\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">restart<\/span><span class=\"o\">.<\/span><span class=\"n\">condition<\/span><span class=\"p\">(<\/span><span class=\"ss\">:cpu_usage<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">c<\/span><span class=\"o\">|<\/span><\/div><div class=\"line\" id=\"LC18\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">c<\/span><span class=\"o\">.<\/span><span class=\"n\">above<\/span> <span class=\"o\">=<\/span> <span class=\"n\">options<\/span><span class=\"o\">[<\/span><span class=\"ss\">:cpu_limit<\/span><span class=\"o\">]<\/span><\/div><div class=\"line\" id=\"LC19\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">c<\/span><span class=\"o\">.<\/span><span class=\"n\">times<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">5<\/span><\/div><div class=\"line\" id=\"LC20\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC21\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC22\">&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC23\">&nbsp;&nbsp;<span class=\"n\">w<\/span><span class=\"o\">.<\/span><span class=\"n\">lifecycle<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">on<\/span><span class=\"o\">|<\/span><\/div><div class=\"line\" id=\"LC24\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">on<\/span><span class=\"o\">.<\/span><span class=\"n\">condition<\/span><span class=\"p\">(<\/span><span class=\"ss\">:flapping<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">c<\/span><span class=\"o\">|<\/span><\/div><div class=\"line\" id=\"LC25\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">c<\/span><span class=\"o\">.<\/span><span class=\"n\">to_state<\/span> <span class=\"o\">=<\/span> <span class=\"o\">[<\/span><span class=\"ss\">:start<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:restart<\/span><span class=\"o\">]<\/span><\/div><div class=\"line\" id=\"LC26\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">c<\/span><span class=\"o\">.<\/span><span class=\"n\">times<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">5<\/span><\/div><div class=\"line\" id=\"LC27\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">c<\/span><span class=\"o\">.<\/span><span class=\"n\">within<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">5<\/span><span class=\"o\">.<\/span><span class=\"n\">minute<\/span><\/div><div class=\"line\" id=\"LC28\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">c<\/span><span class=\"o\">.<\/span><span class=\"n\">transition<\/span> <span class=\"o\">=<\/span> <span class=\"ss\">:unmonitored<\/span><\/div><div class=\"line\" id=\"LC29\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">c<\/span><span class=\"o\">.<\/span><span class=\"n\">retry_in<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">10<\/span><span class=\"o\">.<\/span><span class=\"n\">minutes<\/span><\/div><div class=\"line\" id=\"LC30\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">c<\/span><span class=\"o\">.<\/span><span class=\"n\">retry_times<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">5<\/span><\/div><div class=\"line\" id=\"LC31\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">c<\/span><span class=\"o\">.<\/span><span class=\"n\">retry_within<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">2<\/span><span class=\"o\">.<\/span><span class=\"n\">hours<\/span><\/div><div class=\"line\" id=\"LC32\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC33\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC34\"><span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC35\">&nbsp;<\/div><div class=\"line\" id=\"LC36\"><span class=\"no\">God<\/span><span class=\"o\">.<\/span><span class=\"n\">watch<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">w<\/span><span class=\"o\">|<\/span><\/div><div class=\"line\" id=\"LC37\">&nbsp;&nbsp;<span class=\"n\">w<\/span><span class=\"o\">.<\/span><span class=\"n\">name<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">&quot;consumer&quot;<\/span><\/div><div class=\"line\" id=\"LC38\">&nbsp;&nbsp;<span class=\"n\">w<\/span><span class=\"o\">.<\/span><span class=\"n\">interval<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">60<\/span><span class=\"o\">.<\/span><span class=\"n\">seconds<\/span><\/div><div class=\"line\" id=\"LC39\">&nbsp;&nbsp;<span class=\"n\">w<\/span><span class=\"o\">.<\/span><span class=\"n\">group<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">&quot;twitter&quot;<\/span><\/div><div class=\"line\" id=\"LC40\">&nbsp;&nbsp;<span class=\"n\">w<\/span><span class=\"o\">.<\/span><span class=\"n\">start<\/span> <span class=\"o\">=<\/span>  <span class=\"s2\">&quot;/bin/bash -c &#39;cd <\/span><span class=\"si\">#{<\/span><span class=\"no\">MERB_ROOT<\/span><span class=\"si\">}<\/span><span class=\"s2\">; ruby lib/daemons/starling_daemon_ctl.rb start&#39;&quot;<\/span><\/div><div class=\"line\" id=\"LC41\">&nbsp;<\/div><div class=\"line\" id=\"LC42\">&nbsp;&nbsp;<span class=\"n\">w<\/span><span class=\"o\">.<\/span><span class=\"n\">restart<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">&quot;/bin/bash -c &#39;cd <\/span><span class=\"si\">#{<\/span><span class=\"no\">MERB_ROOT<\/span><span class=\"si\">}<\/span><span class=\"s2\">; ruby  lib/daemons/starling_daemon_ctl.rb restart&#39;&quot;<\/span><\/div><div class=\"line\" id=\"LC43\">&nbsp;&nbsp;<span class=\"n\">w<\/span><span class=\"o\">.<\/span><span class=\"n\">stop<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">&quot;/bin/bash -c &#39;cd <\/span><span class=\"si\">#{<\/span><span class=\"no\">MERB_ROOT<\/span><span class=\"si\">}<\/span><span class=\"s2\">; ruby  lib/daemons/starling_daemon_ctl.rb stop&#39;&quot;<\/span><\/div><div class=\"line\" id=\"LC44\">&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC45\">&nbsp;&nbsp;<span class=\"n\">w<\/span><span class=\"o\">.<\/span><span class=\"n\">start_grace<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">60<\/span><span class=\"o\">.<\/span><span class=\"n\">seconds<\/span><\/div><div class=\"line\" id=\"LC46\">&nbsp;&nbsp;<span class=\"n\">w<\/span><span class=\"o\">.<\/span><span class=\"n\">restart_grace<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">60<\/span><span class=\"o\">.<\/span><span class=\"n\">seconds<\/span><\/div><div class=\"line\" id=\"LC47\">&nbsp;&nbsp;<span class=\"n\">w<\/span><span class=\"o\">.<\/span><span class=\"n\">pid_file<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">&quot;<\/span><span class=\"si\">#{<\/span><span class=\"no\">MERB_ROOT<\/span><span class=\"si\">}<\/span><span class=\"s2\">/log/consumer.pid&quot;<\/span><\/div><div class=\"line\" id=\"LC48\">&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC49\">&nbsp;&nbsp;<span class=\"n\">w<\/span><span class=\"o\">.<\/span><span class=\"n\">behavior<\/span><span class=\"p\">(<\/span><span class=\"ss\">:clean_pid_file<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC50\">&nbsp;&nbsp;<span class=\"n\">generic_monitoring<\/span><span class=\"p\">(<\/span><span class=\"n\">w<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:cpu_limit<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"mi\">70<\/span><span class=\"o\">.<\/span><span class=\"n\">percent<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:memory_limit<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"mi\">18<\/span><span class=\"o\">.<\/span><span class=\"n\">megabytes<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC51\"><span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC52\">&nbsp;&nbsp;<\/div><\/pre><\/div>\n          \n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"http://gist.github.com/raw/48900/4f53ff94b80767fd0528a1918f83526145c1f155/god.rb\" style=\"float:right;\">view raw<\/a>\n          <a href=\"http://gist.github.com/48900#file_god.rb\" style=\"float:right;margin-right:10px;color:#666\">god.rb<\/a>\n          <a href=\"http://gist.github.com/48900\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n    \n  \n<\/div>\n')
