mcproc 2016.2.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. checksums.yaml +7 -0
  2. data/Announce.txt +135 -0
  3. data/Gemfile +9 -0
  4. data/History.txt +469 -0
  5. data/LICENSE +22 -0
  6. data/README.md +37 -0
  7. data/Rakefile +185 -0
  8. data/TODO.md +37 -0
  9. data/bin/mcproc +134 -0
  10. data/doc/intro.asciidoc +20 -0
  11. data/doc/mcproc.asciidoc +1592 -0
  12. data/ext/god/.gitignore +5 -0
  13. data/ext/god/extconf.rb +56 -0
  14. data/ext/god/kqueue_handler.c +133 -0
  15. data/ext/god/netlink_handler.c +182 -0
  16. data/lib/god.rb +780 -0
  17. data/lib/god/behavior.rb +52 -0
  18. data/lib/god/behaviors/clean_pid_file.rb +21 -0
  19. data/lib/god/behaviors/clean_unix_socket.rb +21 -0
  20. data/lib/god/behaviors/notify_when_flapping.rb +51 -0
  21. data/lib/god/cli/command.rb +268 -0
  22. data/lib/god/cli/run.rb +170 -0
  23. data/lib/god/cli/version.rb +23 -0
  24. data/lib/god/compat19.rb +33 -0
  25. data/lib/god/condition.rb +96 -0
  26. data/lib/god/conditions/always.rb +36 -0
  27. data/lib/god/conditions/complex.rb +86 -0
  28. data/lib/god/conditions/cpu_usage.rb +80 -0
  29. data/lib/god/conditions/degrading_lambda.rb +52 -0
  30. data/lib/god/conditions/disk_usage.rb +32 -0
  31. data/lib/god/conditions/file_mtime.rb +28 -0
  32. data/lib/god/conditions/file_touched.rb +44 -0
  33. data/lib/god/conditions/flapping.rb +128 -0
  34. data/lib/god/conditions/http_response_code.rb +184 -0
  35. data/lib/god/conditions/lambda.rb +25 -0
  36. data/lib/god/conditions/memory_usage.rb +82 -0
  37. data/lib/god/conditions/process_exits.rb +66 -0
  38. data/lib/god/conditions/process_running.rb +63 -0
  39. data/lib/god/conditions/socket_responding.rb +142 -0
  40. data/lib/god/conditions/tries.rb +44 -0
  41. data/lib/god/configurable.rb +57 -0
  42. data/lib/god/contact.rb +114 -0
  43. data/lib/god/contacts/airbrake.rb +44 -0
  44. data/lib/god/contacts/campfire.rb +121 -0
  45. data/lib/god/contacts/email.rb +130 -0
  46. data/lib/god/contacts/hipchat.rb +117 -0
  47. data/lib/god/contacts/jabber.rb +75 -0
  48. data/lib/god/contacts/prowl.rb +57 -0
  49. data/lib/god/contacts/scout.rb +55 -0
  50. data/lib/god/contacts/sensu.rb +59 -0
  51. data/lib/god/contacts/slack.rb +98 -0
  52. data/lib/god/contacts/statsd.rb +46 -0
  53. data/lib/god/contacts/twitter.rb +51 -0
  54. data/lib/god/contacts/webhook.rb +74 -0
  55. data/lib/god/driver.rb +238 -0
  56. data/lib/god/errors.rb +24 -0
  57. data/lib/god/event_handler.rb +112 -0
  58. data/lib/god/event_handlers/dummy_handler.rb +13 -0
  59. data/lib/god/event_handlers/kqueue_handler.rb +17 -0
  60. data/lib/god/event_handlers/netlink_handler.rb +13 -0
  61. data/lib/god/logger.rb +109 -0
  62. data/lib/god/metric.rb +87 -0
  63. data/lib/god/process.rb +381 -0
  64. data/lib/god/registry.rb +32 -0
  65. data/lib/god/simple_logger.rb +59 -0
  66. data/lib/god/socket.rb +113 -0
  67. data/lib/god/sugar.rb +62 -0
  68. data/lib/god/sys_logger.rb +45 -0
  69. data/lib/god/system/portable_poller.rb +42 -0
  70. data/lib/god/system/process.rb +50 -0
  71. data/lib/god/system/slash_proc_poller.rb +92 -0
  72. data/lib/god/task.rb +552 -0
  73. data/lib/god/timeline.rb +25 -0
  74. data/lib/god/trigger.rb +43 -0
  75. data/lib/god/watch.rb +340 -0
  76. data/mcproc.gemspec +192 -0
  77. data/test/configs/child_events/child_events.god +44 -0
  78. data/test/configs/child_events/simple_server.rb +3 -0
  79. data/test/configs/child_polls/child_polls.god +37 -0
  80. data/test/configs/child_polls/simple_server.rb +12 -0
  81. data/test/configs/complex/complex.god +59 -0
  82. data/test/configs/complex/simple_server.rb +3 -0
  83. data/test/configs/contact/contact.god +118 -0
  84. data/test/configs/contact/simple_server.rb +3 -0
  85. data/test/configs/daemon_events/daemon_events.god +37 -0
  86. data/test/configs/daemon_events/simple_server.rb +8 -0
  87. data/test/configs/daemon_events/simple_server_stop.rb +11 -0
  88. data/test/configs/daemon_polls/daemon_polls.god +17 -0
  89. data/test/configs/daemon_polls/simple_server.rb +6 -0
  90. data/test/configs/degrading_lambda/degrading_lambda.god +31 -0
  91. data/test/configs/degrading_lambda/tcp_server.rb +15 -0
  92. data/test/configs/keepalive/keepalive.god +9 -0
  93. data/test/configs/keepalive/keepalive.rb +12 -0
  94. data/test/configs/lifecycle/lifecycle.god +25 -0
  95. data/test/configs/matias/matias.god +50 -0
  96. data/test/configs/real.rb +59 -0
  97. data/test/configs/running_load/running_load.god +16 -0
  98. data/test/configs/stop_options/simple_server.rb +12 -0
  99. data/test/configs/stop_options/stop_options.god +39 -0
  100. data/test/configs/stress/simple_server.rb +3 -0
  101. data/test/configs/stress/stress.god +15 -0
  102. data/test/configs/task/logs/.placeholder +0 -0
  103. data/test/configs/task/task.god +26 -0
  104. data/test/configs/test.rb +61 -0
  105. data/test/configs/usr1_trapper.rb +10 -0
  106. data/test/helper.rb +172 -0
  107. data/test/suite.rb +6 -0
  108. data/test/test_airbrake.rb +14 -0
  109. data/test/test_behavior.rb +18 -0
  110. data/test/test_campfire.rb +22 -0
  111. data/test/test_condition.rb +52 -0
  112. data/test/test_conditions_disk_usage.rb +50 -0
  113. data/test/test_conditions_http_response_code.rb +109 -0
  114. data/test/test_conditions_process_running.rb +40 -0
  115. data/test/test_conditions_socket_responding.rb +176 -0
  116. data/test/test_conditions_tries.rb +67 -0
  117. data/test/test_contact.rb +109 -0
  118. data/test/test_driver.rb +26 -0
  119. data/test/test_email.rb +34 -0
  120. data/test/test_event_handler.rb +82 -0
  121. data/test/test_god.rb +710 -0
  122. data/test/test_god_system.rb +201 -0
  123. data/test/test_handlers_kqueue_handler.rb +16 -0
  124. data/test/test_hipchat.rb +23 -0
  125. data/test/test_jabber.rb +29 -0
  126. data/test/test_logger.rb +55 -0
  127. data/test/test_metric.rb +74 -0
  128. data/test/test_process.rb +263 -0
  129. data/test/test_prowl.rb +15 -0
  130. data/test/test_registry.rb +15 -0
  131. data/test/test_sensu.rb +11 -0
  132. data/test/test_slack.rb +57 -0
  133. data/test/test_socket.rb +34 -0
  134. data/test/test_statsd.rb +22 -0
  135. data/test/test_sugar.rb +42 -0
  136. data/test/test_system_portable_poller.rb +17 -0
  137. data/test/test_system_process.rb +30 -0
  138. data/test/test_task.rb +246 -0
  139. data/test/test_timeline.rb +37 -0
  140. data/test/test_trigger.rb +63 -0
  141. data/test/test_watch.rb +286 -0
  142. data/test/test_webhook.rb +22 -0
  143. metadata +475 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8d6bfdb0931d2431e3a74deebc24e8a627e10ec6
4
+ data.tar.gz: 80817e29a167482beed67d241e9df02e6fe70063
5
+ SHA512:
6
+ metadata.gz: e38b8e07ee38f004ce24473c84868d2d3636c823da80498378c48e8f2d0fdc1209ea8cbf9ed3252b8b4d96286614656b9bb292c4d88dc53af86764be501db558
7
+ data.tar.gz: feb789907c6b64dcec74fdbc1c534e9b46aa204815a0a42c41ff3e78ed1d5d4397c75615b7ebdc287a79f74455efa019acd7c94095da8a104f48a00e10cea3b4
data/Announce.txt ADDED
@@ -0,0 +1,135 @@
1
+ Subject: [ANN] god 0.6.0 released (and mailing list)
2
+
3
+ !!!NEW MAILING LIST!!! We now have a mailing list at http://groups.google.com/group/god-rb
4
+
5
+ This release is primarily focused on increased stability, robustness, and code cleanliness.
6
+
7
+ The last release (0.5.0) switched from TCP sockets to Unix Domain Sockets for the CLI tools. There were some issues regarding file descriptors that would cause god to hang when restarting (the unix socket was being held open by spawned processes). These problems are all fixed in 0.6.0. You may need to kill any processes that were started under god 0.5.0 when you upgrade to 0.6.0 (you will only need to do this once during the upgrade process).
8
+
9
+ More attention is now paid to Syslogging behavior.
10
+
11
+ God will delete its own PID file when terminated via a user request.
12
+
13
+ A new command line option now allows you to check whether your installation properly handles events (sometimes the C extension will compile ok, but still not support events. Gentoo, I'm looking at you). Run `god check` to see an attempt to use the event system. It will tell you if your installation does not support events.
14
+
15
+ A watch can now be removed entirely at runtime using `god remove <watch name>`.
16
+
17
+ A new condition DiskUsage allows you to check the available disk space on a given volume.
18
+
19
+ Updated documentation is now available on the website:
20
+
21
+ http://god.rubyforge.org/
22
+
23
+
24
+ WHAT IS GOD?
25
+
26
+ God is an easy to configure, easy to extend monitoring framework written in Ruby.
27
+
28
+ Keeping your server processes and tasks running should be a simple part of your deployment process. God aims to be the simplest, most powerful monitoring application available.
29
+
30
+
31
+ DISCLAIMER
32
+
33
+ God is still beta so I do not yet recommend you use it for mission critical tasks. We are using it at Powerset, Inc. to monitor our public facing applications, but then, we're daring fellows.
34
+
35
+
36
+ INSTALL
37
+
38
+ sudo gem install god
39
+
40
+
41
+ FEATURES
42
+
43
+ * Config file is written in Ruby
44
+ * Easily write your own custom conditions in Ruby
45
+ * Supports both poll and event based conditions
46
+ * Different poll conditions can have different intervals
47
+ * Easily control non-daemonized processes
48
+
49
+
50
+ EXAMPLE
51
+
52
+ The easiest way to understand how god will make your life better is by looking at a sample config file. The following configuration file is what I use at gravatar.com to keep the mongrels running:
53
+
54
+ # run with: god -c /path/to/gravatar.god
55
+ #
56
+ # This is the actual config file used to keep the mongrels of
57
+ # gravatar.com running.
58
+
59
+ RAILS_ROOT = "/Users/tom/dev/gravatar2"
60
+
61
+ %w{8200 8201 8202}.each do |port|
62
+ God.watch do |w|
63
+ w.name = "gravatar2-mongrel-#{port}"
64
+ w.interval = 30.seconds # default
65
+ w.start = "mongrel_rails start -c #{RAILS_ROOT} -p #{port} \
66
+ -P #{RAILS_ROOT}/log/mongrel.#{port}.pid -d"
67
+ w.stop = "mongrel_rails stop -P #{RAILS_ROOT}/log/mongrel.#{port}.pid"
68
+ w.restart = "mongrel_rails restart -P #{RAILS_ROOT}/log/mongrel.#{port}.pid"
69
+ w.start_grace = 10.seconds
70
+ w.restart_grace = 10.seconds
71
+ w.pid_file = File.join(RAILS_ROOT, "log/mongrel.#{port}.pid")
72
+
73
+ w.behavior(:clean_pid_file)
74
+
75
+ w.start_if do |start|
76
+ start.condition(:process_running) do |c|
77
+ c.interval = 5.seconds
78
+ c.running = false
79
+ end
80
+ end
81
+
82
+ w.restart_if do |restart|
83
+ restart.condition(:memory_usage) do |c|
84
+ c.above = 150.megabytes
85
+ c.times = [3, 5] # 3 out of 5 intervals
86
+ end
87
+
88
+ restart.condition(:cpu_usage) do |c|
89
+ c.above = 50.percent
90
+ c.times = 5
91
+ end
92
+ end
93
+
94
+ # lifecycle
95
+ w.lifecycle do |on|
96
+ on.condition(:flapping) do |c|
97
+ c.to_state = [:start, :restart]
98
+ c.times = 5
99
+ c.within = 5.minute
100
+ c.transition = :unmonitored
101
+ c.retry_in = 10.minutes
102
+ c.retry_times = 5
103
+ c.retry_within = 2.hours
104
+ end
105
+ end
106
+ end
107
+ end
108
+
109
+
110
+ DOCS
111
+
112
+ Detailed documentation is available at http://god.rubyforge.org/
113
+
114
+
115
+ CHANGES
116
+
117
+ == 0.6.0 / 2007-12-4
118
+
119
+ * Minor Enhancement
120
+ * Move Syslog calls into God::Logger and clean up all calling code
121
+ * Remove god's pid file on user requested termination
122
+ * Better handling and cleanup of DRb server's unix domain socket
123
+ * Allow shorthand for requesting a god log
124
+ * Add `god check` to make it easier to diagnose event problems
125
+ * Refactor god binary into class/method structure
126
+ * Implement `god remove` to remove a Task altogether
127
+ * New Conditions
128
+ * DiskUsage < PollCondition - trigger if disk usage is above limit on mount [Rudy Desjardins]
129
+
130
+
131
+
132
+ AUTHORS
133
+
134
+ Tom Preston-Werner
135
+ Kevin Clark
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
3
+
4
+ gem 'redcarpet', '< 3.0.0'
5
+ gem 'sanitize', '2.0.3'
6
+
7
+ group :development, :test do
8
+ gem 'asciidoctor' # generate HTML files from Markdown notation
9
+ end
data/History.txt ADDED
@@ -0,0 +1,469 @@
1
+ == 0.13.7 / 2015-08-19
2
+ * Bug fixes
3
+ * Fixed slack integration (#217)
4
+ * Update twitter gem to support newer rubies (#219)
5
+ * Make stop_all work with newer rubies (#209)
6
+ * Don't start more DRb servers than necessary
7
+ * Minor Enhancements
8
+ * Allow uid and gid to be specified as an integer (#202)
9
+
10
+ == 0.13.6 / 2015-02-21
11
+ * Minor Enhancements
12
+ * sensu notifier (#199)
13
+
14
+ == 0.13.5 / 2015-01-09
15
+ * Minor Enhancements
16
+ * statsd notifier (#144)
17
+ * Slack notifier (#172)
18
+ * Bug fixes
19
+ * Add support for Ruby 2.2.0 (#206)
20
+ * Fix tests for Ruby 2.0 (#205)
21
+ * Make group assignment more like login (#159)
22
+ * Flush file descriptors to prevent too many processes from being started (#141)
23
+ * Allow SSL URLs (#168)
24
+ * Documentation fixes
25
+ * Clarify Hipchat privilege requirements (#176)
26
+
27
+ == 0.13.4 / 2014-03-05
28
+ * Minor Enhancements
29
+ * Hipchat reporter (#162)
30
+ * Re-open log files on SIGUSR1 (#103)
31
+ * Bug fixes
32
+ * Send query params on webhook reporter (#160)
33
+ * Don't thow an exception when there are problems reading pid file (#164)
34
+
35
+ == 0.13.3 / 2013-09-25
36
+ * Minor Enhancements
37
+ * Invoke commands for all watchers
38
+ * Airbrake reporter
39
+ * Improvements to socket responding condition
40
+
41
+ == 0.13.2 / 2013-02-26
42
+ * Minor Enhancements
43
+ * Added file_touched condition (#86)
44
+ * Bug fixes
45
+ * Ensure Ruby 1.9 fixes only apply to 1.9.0 and 1.9.1 (#125)
46
+ * Documentation fixes (#109, #84, #92)
47
+
48
+ == 0.13.1 / 2012-09-18
49
+ * Minor Changes
50
+ * Prevent auto-loading from bundler by requiring $load_god to require (#97)
51
+
52
+ == 0.13.0 / 2012-09-17
53
+ * Minor Changes
54
+ * Reduce verbosity of non-failing conditions (#111)
55
+
56
+ == 0.12.1 / 2012-01-21
57
+ * Bug Fixes
58
+ * Fix undefined variable problem in CLI (#82)
59
+
60
+ == 0.12.0 / 2012-01-13
61
+ * Minor Enhancements
62
+ * Add umask support
63
+ * Add socket response condition (#25)
64
+ * Don't require tests run as sudo under non-linux systems (#15)
65
+ * Add Bundler support
66
+ * Add keepalive simple conditional setups (#71)
67
+ * Better load command to act upon removed watches (#70)
68
+ * Add support for ssl in http_response_code condition (#36)
69
+ * New documentation at http://godrb.com
70
+ * Bug Fixes
71
+ * Use IO.print instead of IO.puts for thread safety (#35)
72
+ * Fix Slashproc poller for commands with spaces (#31)
73
+ * Various segfault and kernel panic fixes
74
+ * Fix SMTP Auth documentation (#29)
75
+ * Fix a bunch of tests that were failing on Ruby 1.9
76
+
77
+ == 0.11.0 / 2010-07-01
78
+ * Major Changes
79
+ * Rewrite notification system to be more consistent and flexible.
80
+
81
+ == 0.10.1 / 2010-05-17
82
+ * Bug Fixes
83
+ * Fix date in gemspec
84
+
85
+ == 0.10.0 / 2010-05-17
86
+ * Minor Enhancements
87
+ * Add stop_timeout and stop_signal options to Watch
88
+ * Bug Fixes
89
+ * Stop command string was being ignored
90
+
91
+ == 0.9.0 / 2010-04-03
92
+ * Minor Enhancements
93
+ * Allow kqueue for OpenBSD and NetBSD
94
+ * Add err_log and err_log_cmd
95
+ * Add God.terminate_timeout option
96
+ * Respect --log-level in Syslog
97
+ * Add configuration parameters to set permissions on socket
98
+ * Add Scout contact
99
+ * Add Prowl contact
100
+ * Bug Fixes
101
+ * Fix interleaved log messages
102
+ * Experimental
103
+ * Ruby 1.9 support
104
+
105
+ == 0.8.0 / 2009-11-30
106
+ * Minor Enhancements
107
+ * Rubygems decontamination
108
+ * Use Monitor instead of Mutex to provide ability to wait with a timeout
109
+ * Only generate log messages when they're being used
110
+ * Remove usage of Thread.critical in DriverEventQueue
111
+ * Update to work with latest bleak-house
112
+ * Cache some frequent lookups to reduce object creation
113
+ * Changing the @io.print call in SimpleLogger to not concatenate
114
+ the formatted results before printing
115
+ * Bug fixes
116
+ * Make sure we don't leak hash slots when processes die
117
+ * Make sure the driver is shutdown on Task#unregister!
118
+ * Fix memory leak when issuing "god load" successfully
119
+ * Fix defunct process
120
+
121
+ == NOTE
122
+ At this point I will stop giving credit in the history. Look at the author
123
+ and committer in the commit for that info.
124
+
125
+ == 0.7.22 / 2009-10-29
126
+ * Minor Enhancements
127
+ * Save ARGV so we can get access to it later if we want [github.com/eric]
128
+
129
+ == 0.7.21 / 2009-10-29
130
+ * Minor Enhancements
131
+ * Cache some frequent lookups to reduce object creation [github.com/eric]
132
+ * Try to make SimpleLogger less leaky [github.com/eric]
133
+
134
+ == 0.7.20 / 2009-09-24
135
+ * Minor Enhancements
136
+ * Rewrite `god status` command to be not as horrible. Add ability to get
137
+ status for individual tasks.
138
+
139
+ == 0.7.19 / 2009-09-21
140
+ * Minor Enhancements
141
+ * Teach `god status` to take a task name as a param and return
142
+ an exit code of 0 if all watches are up or a non-zero exit code
143
+ (equal to the number of non-up watches) if they are not.
144
+
145
+ == 0.7.18 / 2009-09-09
146
+ * Minor Enhancements
147
+ * Better handling of unexpected exceptions in conditions
148
+ * Added support for running processes in a directory other than '/' [github.com/samhendley]
149
+ * Bug Fixes
150
+ * Generate an actual unique identifier for email contact [github.com/underley]
151
+
152
+ == 0.7.17 / 2009-08-25
153
+ * Bug Fixes
154
+ * Fix the glob and directory config loading for -c option
155
+
156
+ == 0.7.16 / 2009-08-24
157
+ * Minor Enhancements
158
+ * Better logging for disk_usage condition [github.com/lettherebecode]
159
+ * Bug Fixes
160
+ * Only sleep if driver delay is > 0 [github.com/ps2]
161
+ * Rescue Timeout::Error exception due to smtp server timing out [github.com/ps2]
162
+ * Disk usage condition should use `df -P` to prevent line splitting [github.com/mseppae]
163
+ * Always require YAML so binary works on dumb systems
164
+
165
+ == 0.7.15 / 2009-08-19
166
+ * Minor Enhancements
167
+ * Support SSL Campfire connections [github.com/eric]
168
+ * Allow wildcards in -c configuration file option
169
+
170
+ == 0.7.14 / 2009-08-10
171
+ * Minor Enhancements
172
+ * Only store log lines when a client wishes to see them
173
+ * Add an lsb-compliant init script into god/init [Woody Peterson]
174
+ * Never require stop command; use default killer if none is specified
175
+ * Bug Fixes
176
+ * Fix redefinition error for time.h and allow it to compile on Ubuntu Edgy [github.com/tbuser]
177
+ * Fix a memory leak in jabber by adding a call to jabber_client.close [github.com/woahdae]
178
+ * Make jabber code manage one connection to make it faster, use less memory,
179
+ and not leak [github.com/woahdae]
180
+
181
+ == 0.7.13 / 2009-05-04
182
+ * Bug Fixes
183
+ * Auto daemonized processes are now stopped/unmonitored correctly [github.com/jcapote]
184
+
185
+ == 0.7.12 / 2008-12-10
186
+ * Bug Fixes
187
+ * Fix capistrano deployability [github.com/eric]
188
+ * Fix event handling [brianw]
189
+
190
+ == 0.7.11 / 2008-11-14
191
+ * Bug Fixes
192
+ * Make notifications work inside lifecycle blocks
193
+
194
+ == 0.7.10 / 2008-11-13
195
+ * Major Enhancements
196
+ * Enable sending of arbitrary signals to a task or group via `god signal`
197
+ * Bug Fixes
198
+ * setup logging *after* loading a given config file when daemonized.
199
+ enables logging to the 'God.log_file' specified in a config file. [github.com/jnewland]
200
+ * New Conditions
201
+ * FileMtime < PollCondition - trigger on file mtime durations [github.com/jwilkins]
202
+ * New Contacts
203
+ * Twitter - allow messages to twitter [github.com/jwilkins]
204
+ * Campfire - send messages to 37signals' Campfire [github.com/hellvinz]
205
+ * Minor Enhancements
206
+ * Add watch log_cmd that can be reopened with STDOUT instead of a log file [github.com/jberkel]
207
+ * Added webhook output support [Martyn Loughran]
208
+
209
+ == 0.7.9 / 2008-08-06
210
+ * Major Enhancements
211
+ * Use a psuedo-priority queue for more efficient driver loop [Darrell Kresge]
212
+ * Bug Fixes
213
+ * Fix file_writable? when using chroot [github.com/eric]
214
+
215
+ == 0.7.8 / 2008-07-09
216
+ * Bug Fixes
217
+ * Catch all Exceptions from HttpResponseCode condition [github.com/rliebling]
218
+ * Don't error out if the process went away in SlashProcPoller [Kevin Clark]
219
+ * Correction of Task#handle_poll to prevent crash under event registration failure conditions. [github.com/raggi]
220
+ * Cleaned up logging of failed e-mail sends. [github.com/raggi]
221
+ * Listen on 127.0.0.1 when using God as a client. [github.com/halorgium]
222
+ * New Behaviors
223
+ * clean_unix_socket [github.com/gma]
224
+ * New Contacts
225
+ * jabber [github.com/jwulff]
226
+ * email via sendmail [github.com/monde]
227
+ * Minor Enhancements
228
+ * chroot support [github.com/eric]
229
+ * Added God.log_file for the main god log, overridden by command line option. [github.com/raggi]
230
+ * Print groups from `god status` command if present [github.com/pdlug]
231
+ * Allow headers to be specified for http_response_code condition [github.com/pdlug]
232
+
233
+ == 0.7.7 / 2008-06-17
234
+ * Bug Fixes
235
+ * Fix detection of proc file system [raggi]
236
+
237
+ == 0.7.6 / 2008-05-13
238
+ * Major Enhancements
239
+ * Implement System::Process methods for Linux based on /proc [Kevin Clark]
240
+ * Minor Enhancements
241
+ * Allowing directories to be loaded at start [Bert Goethals]
242
+ * Bug Fixes
243
+ * Don't leak events on error in the kqueue handler [Kevin Clark]
244
+
245
+ == 0.7.5 / 2008-02-21
246
+ * Bug Fixes
247
+ * Remove Ruby's Logger and replace with custom SimpleLogger to stop threaded leak
248
+
249
+ == 0.7.4 / 2008-02-18
250
+ * Bug Fixes
251
+ * Introduce local scope to prevent faulty optimization that causes memory to leak
252
+
253
+ == 0.7.3 / 2008-02-14
254
+ * Minor Enhancements
255
+ * Add --bleakhouse to make running diagnostics easier
256
+ * Bug Fixes
257
+ * Use ::Process.kill(0, ...) instead of `kill -0` [queso]
258
+ * Fix pid_file behavior in process-centric conditions so they work with tasks [matias]
259
+ * Redirect output of daemonized god to log file or /dev/null earlier [_eric]
260
+
261
+ == 0.7.2 / 2008-02-04
262
+ * Bug Fixes
263
+ * Start event system for CLI commands
264
+ * Up internal history to 100 lines per watch
265
+
266
+ == 0.7.1 / 2008-02-04
267
+ * Minor Enhancements
268
+ * Add --no-events option to completely disable events system
269
+
270
+ == 0.7.0 / 2008-02-01
271
+ * Minor Enhancements
272
+ * Better default pid_file_directory behavior
273
+ * Add --attach <pid> to specify that god should quit if <pid> exits
274
+ * Bug Fixes
275
+ * Handle ECONNRESET in HttpResponseCode
276
+
277
+ == 0.6.12 / 2008-01-31
278
+ * Minor Enhancements
279
+ * Allow log file output for non-daemonized god
280
+ * Switch to SIGTERM from SIGHUP for default lambda killer
281
+
282
+ == 0.6.11 / 2008-01-31
283
+ * Major Enhancements
284
+ * HUGE refactor of timer system to simplify scheduling
285
+ * Minor Enhancements
286
+ * Check for a truly working event system and disallow event conditions if none is present
287
+
288
+ == 0.6.10 / 2008-01-24
289
+ * Bug Fixes
290
+ * Fix ensure_stop nil pid no local variable bug
291
+
292
+ == 0.6.9 / 2008-01-23
293
+ * Bug Fixes
294
+ * Fix Timer condition dedup behavior
295
+
296
+ == 0.6.8 / 2008-01-23
297
+ * Minor Enhancements
298
+ * Warn if a command returns a non-zero exit code
299
+ * Ensure that stop command actually stops process
300
+
301
+ == 0.6.7 / 2008-01-22
302
+ * Minor Enhancements
303
+ * Add --no-syslog option to disable Syslog
304
+ * Allow contact redeclaration (dups are ignored)
305
+
306
+ == 0.6.6 / 2008-01-07
307
+ * Bug Fixes
308
+ * Redo Timer mutexing to reduce synchronization needs
309
+
310
+ == 0.6.5 / 2008-01-04
311
+ * Bug Fixes
312
+ * Fix Timer descheduling deadlock issue
313
+ * Change HttpResponseCode to use GET instead of HEAD
314
+
315
+ == 0.6.4 / 2008-12-31
316
+ * Bug Fixes
317
+ * Refactor Hub to clarify mutexing
318
+ * Eliminate potential iteration problem in Timer
319
+ * Add caching PID accessor to process to solve event deregistration failure
320
+
321
+ == 0.6.3 / 2007-12-18
322
+ * Minor Enhancements
323
+ * Output ProcessExits registration/deregistration info
324
+
325
+ == 0.6.2 / 2007-12-17
326
+ * Minor Enhancements
327
+ * Output registered PID for ProcessExits
328
+ * Bug Fixes
329
+ * Fix `god remove <group>` not working for unmonitored watches
330
+
331
+ == 0.6.1 / 2007-12-14
332
+
333
+ * Minor Enhancement
334
+ * Log when state change is complete
335
+
336
+ == 0.6.0 / 2007-12-4
337
+
338
+ * Minor Enhancement
339
+ * Move Syslog calls into God::Logger and clean up all calling code
340
+ * Remove god's pid file on user requested termination
341
+ * Better handling and cleanup of DRb server's unix domain socket
342
+ * Allow shorthand for requesting a god log
343
+ * Add `god check` to make it easier to diagnose event problems
344
+ * Refactor god binary into class/method structure
345
+ * Implement `god remove` to remove a Task altogether
346
+ * New Conditions
347
+ * DiskUsage < PollCondition - trigger if disk usage is above limit on mount [Rudy Desjardins]
348
+
349
+ == 0.5.2 / 2007-10-10
350
+
351
+ * Minor Enhancement
352
+ * Allow extra args to pass through to config file
353
+
354
+ == 0.5.1 / 2007-10-08
355
+
356
+ * Bug Fixes
357
+ * Rescue connection refused in http response code condition
358
+
359
+ == 0.5.0 / 2007-10-05
360
+
361
+ * Major Enhancements
362
+ * Implement lifecycle scoped metric to allow for cross-state conditions
363
+ * Add TriggerCondition for conditions that need info about state changes
364
+ * Implement notification system
365
+ * Add Tasks (a generalization of Watches) to do non-process related tasks
366
+ * Add example init.d file in GOD_INSTALL_DIR/init/god [scott becker]
367
+ * Add human readable info to conditions (and make low level log lines debug)
368
+ * Switch DRb to use a unix domain socket for security reasons
369
+ * Minor Enchancements
370
+ * Allow EventConditions to do transition overloading
371
+ * Report errors during god startup instead of failing silently
372
+ * Make transition block optional (default to Always condition returning true)
373
+ * Better usage info for `god --help`
374
+ * Explain what's going on when attempting to rebind to an in-use port
375
+ * Add -b option to god binary to auto-bind to an unused port
376
+ * Add `god quit` to stop god without stopping any tasks
377
+ * Make self-daemonized Watch commands synchronous (as they should be)
378
+ * Allow self-daemonized Watches to specify a log (could be useful)
379
+ * Check for existence of config file if specified
380
+ * Robustify `god load` and report errors back to the command issuer
381
+ * Warn when `god load` tries to set global options
382
+ * Add Configurable.clear method and make built-in conditions clear on entry
383
+ * New Conditions
384
+ * Flapping < TriggerCondition - trigger on state change
385
+ * HttpResponseCode < PollCondition - trigger on http response code or timeout (thx scott becker)
386
+ * New Contacts
387
+ * Email < Contact - notify via email (smtp)
388
+ * Bug Fixes
389
+ * Fix abort not aborting problem
390
+ * Fix -p option not working for god binary
391
+ * Fix God.init not accepting block (thx _eric)
392
+ * Fix SIGHUP ignore (thx _eric)
393
+ * Fix error reporting on `god --help` (don't error report a normal SystemExit)
394
+
395
+ == 0.4.3 / 2007-09-10
396
+ * Bug Fixes
397
+ * fix Process#alive? to not raise on no such file (affects `god terminate`)
398
+
399
+ == 0.4.2 / 2007-09-10
400
+ * Bug Fixes
401
+ * fix netlink buffer issue that prevented events on Linux from working consistently [dkresge]
402
+
403
+ == 0.4.1 / 2007-09-10
404
+ * Bug Fixes
405
+ * require 'stringio' for ruby 1.8.5
406
+
407
+ == 0.4.0 / 2007-09-10
408
+
409
+ * Major Enhancements
410
+ * Add the ability for conditions to override transition state (for exceptional cases)
411
+ * Implement dynamic load of config files while god is running (god load <filename>)
412
+ * Add ability to save auto-daemonized process output to a log file
413
+ * Add robust default stop lambda command for auto-daemonized processes (inspired by _eric)
414
+ * Add status command for god binary (shows status of each watch)
415
+ * Create proper logger with timestamps
416
+ * Add log command to god binary to get real time logs for a specific watch from a running god instance
417
+ * Add terminate command for god binary (stop god and all watches)
418
+ * Minor Enhancements
419
+ * Enforce validity of Watches
420
+ * Enforce that God.init is not called after a Watch
421
+ * Move pid_file_directory creation and validation to God.start
422
+ * Remove check for at least one Watch during startup (now that dynamic loading exists)
423
+ * New Conditions
424
+ * Tries < PollCondition - triggers after the specified number of tries
425
+ * Add :notify_when_flapping behavior to check for oscillation [kevinclark]
426
+ * Add :degrading_lambda condition. [kevinclark]
427
+ It uses a decaying interval (1/2 rate) for 3 cycles before failing.
428
+ * Bug Fixes
429
+ * Use exit!(0) instead of exit! in god binary to exit with code 0 (instead of default -1)
430
+ * Command line group control fixed
431
+ * Fix cross-thread return problem
432
+
433
+ == 0.3.0 / 2007-08-17
434
+
435
+ * Fix netlink header problem on Ubuntu Edgy [Dan Sully]
436
+ * Add uid/gid setting for processes [kevinclark]
437
+ * Add autostart flag for watches so they don't necessarily startup with god [kevinclark]
438
+ * Change command line call options for god binary to accommodate watch start/stop functionality
439
+ * Add individual start/stop/restart grace periods for finer grained control
440
+ * Change default DRb port to 17165 ('god'.to_i(32))
441
+ * Implement command line control to start/restart/stop/monitor/unmonitor watches/groups by name
442
+ * Watches can now belong to a group that can be controlled as a whole
443
+ * Allow god to be installed (sans events) on systems that don't support events
444
+ * Daemonize and handle PID files for non-daemonizing scripts [kevinclark]
445
+ * Fix simple mode lifecycle gap
446
+ * Remove necessity to specify pid_file for conditions
447
+ * Change config file to use God.init and God.watch directly instead of God.meddle block
448
+ * Move god binary command logic to main library
449
+ * Enhance god binary with better reporting
450
+ * Fix synchronization bug in Timer (reported by Srini Panguluri)
451
+ * Add Lambda condition for easy custom conditions [Mike Mintz]
452
+ * Add sugar for numerics (seconds, minutes, kilobytes, megabytes, percent, etc)
453
+ * Add optional PID and log file generation to god binary for daemon mode
454
+ * Add God.load to do glob enabled loading
455
+ * Add -V option to god binary for detailed version/build info
456
+
457
+ == 0.2.0 / 2007-07-18
458
+
459
+ * Rewrote innards to use a state and event based lifecycle
460
+ * Basic support for events via kqueue (bsd/darwin) and netlink/pec (linux) [kevinclark]
461
+ * Added advanced syntax (simple syntax calls advanced api underneath)
462
+ * Condition returns have changed meaning. With simple syntax, a true return activates block
463
+ * Updated http://god.rubyforge.org with updated simple config and new advanced config
464
+
465
+ == 0.1.0 / 2007-07-07
466
+
467
+ * 1 major enhancement
468
+ * Birthday!
469
+