A summary of data about the Ruby ecosystem.

https://github.com/kostya/eye

Process monitoring tool. Inspired from Bluepill and God.
https://github.com/kostya/eye

Keywords

daemonize monitoring process-monitor tool

Keywords from Contributors

activerecord ruby-gem rspec activejob mvc debugger dry-rb data-validation coercion rubygems

Last synced: 9 minutes ago
JSON representation

Repository metadata

Process monitoring tool. Inspired from Bluepill and God.

README.md

Eye

Gem Version
Build Status
Coverage Status

Process monitoring tool. Inspired from Bluepill and God. Requires Ruby(MRI) >= 1.9.3-p194. Uses Celluloid and Celluloid::IO.

Little demo, shows general commands and how chain works:

Eye

Installation:

$ gem install eye

Why?

We have used god and bluepill in production and always ran into bugs (segfaults, crashes, lost processes, kill not-related processes, load problems, deploy problems, ...)

We wanted something more robust and production stable.

We wanted the features of bluepill and god, with a few extras like chains, nested configuring, mask matching, easy debug configs

I hope we've succeeded, we're using eye in production and are quite happy.

Config example

examples/test.eye (more examples)

# load submodules, here just for example
Eye.load('./eye/*.rb')

# Eye self-configuration section
Eye.config do
  logger '/tmp/eye.log'
end

# Adding application
Eye.application 'test' do
  # All options inherits down to the config leafs.
  # except `env`, which merging down

  # uid "user_name" # run app as a user_name (optional) - available only on ruby >= 2.0
  # gid "group_name" # run app as a group_name (optional) - available only on ruby >= 2.0

  working_dir File.expand_path(File.join(File.dirname(__FILE__), %w[ processes ]))
  stdall 'trash.log' # stdout,err logs for processes by default
  env 'APP_ENV' => 'production' # global env for each processes
  trigger :flapping, times: 10, within: 1.minute, retry_in: 10.minutes
  check :cpu, every: 10.seconds, below: 100, times: 3 # global check for all processes

  group 'samples' do
    chain grace: 5.seconds # chained start-restart with 5s interval, one by one.

    # eye daemonized process
    process :sample1 do
      pid_file '1.pid' # pid_path will be expanded with the working_dir
      start_command 'ruby ./sample.rb'

      # when no stop_command or stop_signals, default stop is [:TERM, 0.5, :KILL]
      # default `restart` command is `stop; start`

      daemonize true
      stdall 'sample1.log'

      # ensure the CPU is below 30% at least 3 out of the last 5 times checked
      check :cpu, below: 30, times: [3, 5]
    end

    # self daemonized process
    process :sample2 do
      pid_file '2.pid'
      start_command 'ruby ./sample.rb -d --pid 2.pid --log sample2.log'
      stop_command 'kill -9 {PID}'

      # ensure the memory is below 300Mb the last 3 times checked
      check :memory, every: 20.seconds, below: 300.megabytes, times: 3
    end
  end

  # daemon with 3 children
  process :forking do
    pid_file 'forking.pid'
    start_command 'ruby ./forking.rb start'
    stop_command 'ruby forking.rb stop'
    stdall 'forking.log'

    start_timeout 10.seconds
    stop_timeout 5.seconds

    monitor_children do
      restart_command 'kill -2 {PID}' # for this child process
      check :memory, below: 300.megabytes, times: 3
    end
  end

  # eventmachine process, daemonized with eye
  process :event_machine do
    pid_file 'em.pid'
    start_command 'ruby em.rb'
    stdout 'em.log'
    daemonize true
    stop_signals [:QUIT, 2.seconds, :KILL]

    check :socket, addr: 'tcp://127.0.0.1:33221', every: 10.seconds, times: 2,
                   timeout: 1.second, send_data: 'ping', expect_data: /pong/
  end

  # thin process, self daemonized
  process :thin do
    pid_file 'thin.pid'
    start_command 'bundle exec thin start -R thin.ru -p 33233 -d -l thin.log -P thin.pid'
    stop_signals [:QUIT, 2.seconds, :TERM, 1.seconds, :KILL]

    check :http, url: 'http://127.0.0.1:33233/hello', pattern: /World/,
                 every: 5.seconds, times: [2, 3], timeout: 1.second
  end
end

Start eye daemon and/or load config:

$ eye l(oad) examples/test.eye

load folder with configs:

$ eye l examples/
$ eye l examples/*.rb

foreground load:

$ eye l CONF -f

If the eye daemon has already started and you call the load command, the config will be updated (into eye daemon). New objects(applications, groups, processes) will be added and monitored. Processes removed from the config will be removed (and stopped if the process has stop_on_delete true). Other objects will update their configs.

Two global configs loaded by default, if they exist (with the first eye load):

/etc/eye.conf
~/.eyeconfig

Process statuses:

$ eye i(nfo)
test
  samples
    sample1 ....................... up  (21:52, 0%, 13Mb, <4107>)
    sample2 ....................... up  (21:52, 0%, 12Mb, <4142>)
  event_machine ................... up  (21:52, 3%, 26Mb, <4112>)
  forking ......................... up  (21:52, 0%, 41Mb, <4203>)
    child-4206 .................... up  (21:52, 0%, 41Mb, <4206>)
    child-4211 .................... up  (21:52, 0%, 41Mb, <4211>)
    child-4214 .................... up  (21:52, 0%, 41Mb, <4214>)
  thin ............................ up  (21:53, 2%, 54Mb, <4228>)
$ eye i -j # show info in JSON format

Commands:

start, stop, restart, delete, monitor, unmonitor

Command params (with restart for example):

$ eye r(estart) all
$ eye r test
$ eye r samples
$ eye r sample1
$ eye r sample*
$ eye r test:samples
$ eye r test:samples:sample1
$ eye r test:samples:sample*
$ eye r test:*sample*

Check config syntax:

$ eye c(heck) examples/test.eye

Config explain (for debug):

$ eye e(xplain) examples/test.eye

Log tracing (tail and grep):

$ eye t(race)
$ eye t test
$ eye t sample

Quit monitoring:

$ eye q(uit)
$ eye q -s # stop all processes and quit

Interactive info:

$ eye w(atch)

Process statuses history:

$ eye hi(story)

Eye daemon info:

$ eye x(info)
$ eye x -c # for show current config

Local Eye version LEye (like foreman):

LEye

Process states and events:

Eye

How to write Eye extensions, plugins, gems:

Eye-http Eye-rotate Eye-hipchat Plugin example

Eye related projects

Articles

Wiki

Thanks Bluepill for the nice config ideas.


Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 1 day ago

Total Commits: 1,273
Total Committers: 30
Avg Commits per committer: 42.433
Development Distribution Score (DDS): 0.045

Commits in past year: 0
Committers in past year: 0
Avg Commits per committer in past year: 0.0
Development Distribution Score (DDS) in past year: 0.0

Name Email Commits
Konstantin Makarchev k****7@g****m 1216
Bradley Schaefer b****r@g****m 5
Holger Amann h****r@s****e 5
Andrew Horner a****w@t****m 4
Piotr Szmielew p****w@a****l 4
orangeudav o****v@g****m 4
fengb c****t@f****o 3
Joe Grossberg j****b@g****m 3
Федосов Сергей s****v@i****u 2
Anton Chuchkalov a****w@y****u 2
Daniel Vartanov d****n@v****t 2
Daniele Orlandi d****e@o****m 2
Maciej Malecki s****6@g****m 2
Radek Paviensky r****k@p****m 2
Ryan Schlesinger r****n@i****m 2
Akira Matsuda r****e@d****p 1
Brandon Weaver k****r@g****m 1
Damir Sharipov d****k@g****m 1
David Billskog b****g@g****m 1
David Butler d****r@u****u 1
Kelly Martin k****v@g****m 1
Mark Keisler m****k@m****t 1
Martin Honermeyer m****e@s****e 1
Michael Varamashvili m****i@g****m 1
Viktor Lazarev t****v@g****m 1
Vladimir Kochnev h****e@y****u 1
Piotr Boniecki “****r@g****” 1
Artem Nistratov a****v@g****u 1
Yuri Leikind y****d@g****m 1
chadfennell l****s@g****m 1

Committer domains:


Issue and Pull Request metadata

Last synced: 11 days ago

Total issues: 94
Total pull requests: 8
Average time to close issues: 4 months
Average time to close pull requests: about 1 hour
Total issue authors: 58
Total pull request authors: 8
Average comments per issue: 5.33
Average comments per pull request: 0.38
Merged pull request: 5
Bot issues: 0
Bot pull requests: 0

Past year issues: 0
Past year pull requests: 0
Past year average time to close issues: N/A
Past year average time to close pull requests: N/A
Past year issue authors: 0
Past year pull request authors: 0
Past year average comments per issue: 0
Past year average comments per pull request: 0
Past year merged pull request: 0
Past year bot issues: 0
Past year bot pull requests: 0

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/kostya/eye

Top Issue Authors

  • rgaufman (8)
  • grimm26 (7)
  • emanzx (6)
  • innovia (6)
  • tetherit (4)
  • emn178 (3)
  • smt116 (2)
  • jbmyid (2)
  • wollistik (2)
  • brandondrew (2)
  • joshweir (2)
  • TomFreudenberg (2)
  • pravi (2)
  • ktimothy (2)
  • mkruliv (1)

Top Pull Request Authors

  • heyryanw (1)
  • grimm26 (1)
  • noma4i (1)
  • fanyeren (1)
  • hedgesky (1)
  • gentoid (1)
  • dammer (1)
  • amatsuda (1)

Top Issue Labels

  • need feedback (4)
  • bug (4)
  • need reproduce (3)
  • question (3)
  • enhancement (2)
  • to_think (1)

Top Pull Request Labels


Package metadata

gem.coop: eye

Process monitoring tool. Inspired from Bluepill and God. Requires Ruby(MRI) &gt;= 1.9.3-p194. Uses Celluloid and Celluloid::IO.

  • Homepage: http://github.com/kostya/eye
  • Documentation: http://www.rubydoc.info/gems/eye/
  • Licenses: MIT
  • Latest release: 0.10.0 (published about 8 years ago)
  • Last Synced: 2026-02-28T21:01:01.895Z (3 days ago)
  • Versions: 40
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 112,653,501 Total
  • Rankings:
    • Dependent repos count: 0.0%
    • Dependent packages count: 0.0%
    • Average: 0.072%
    • Downloads: 0.217%
  • Maintainers (1)
rubygems.org: eye

Process monitoring tool. Inspired from Bluepill and God. Requires Ruby(MRI) &gt;= 1.9.3-p194. Uses Celluloid and Celluloid::IO.

  • Homepage: http://github.com/kostya/eye
  • Documentation: http://www.rubydoc.info/gems/eye/
  • Licenses: MIT
  • Latest release: 0.10.0 (published about 8 years ago)
  • Last Synced: 2026-03-01T22:33:50.322Z (2 days ago)
  • Versions: 40
  • Dependent Packages: 18
  • Dependent Repositories: 107
  • Downloads: 112,657,825 Total
  • Rankings:
    • Downloads: 0.161%
    • Dependent packages count: 1.133%
    • Average: 1.714%
    • Stargazers count: 1.766%
    • Dependent repos count: 2.71%
    • Forks count: 2.799%
  • Maintainers (1)
proxy.golang.org: github.com/kostya/eye

  • Homepage:
  • Documentation: https://pkg.go.dev/github.com/kostya/eye#section-documentation
  • Licenses: mit
  • Latest release: v0.10.0 (published about 8 years ago)
  • Last Synced: 2026-02-28T21:01:03.933Z (3 days ago)
  • Versions: 26
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Dependent packages count: 6.508%
    • Average: 6.726%
    • Dependent repos count: 6.945%
gem.coop: reel-eye

Process monitoring tool. Inspired from Bluepill and God. Requires Ruby(MRI) >= 1.9.3-p194. Uses Celluloid and Celluloid::IO.

  • Homepage: http://github.com/kostya/eye
  • Documentation: http://www.rubydoc.info/gems/reel-eye/
  • Licenses: MIT
  • Latest release: 0.5.2 (published about 12 years ago)
  • Last Synced: 2026-02-28T21:01:00.894Z (3 days ago)
  • Versions: 8
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 24,566 Total
  • Rankings:
    • Dependent repos count: 0.0%
    • Dependent packages count: 0.0%
    • Average: 8.489%
    • Downloads: 25.466%
  • Maintainers (1)
gem.coop: ace-eye

FORK FOR TESTING. Process monitoring tool. Inspired from Bluepill and God. Requires Ruby(MRI) &gt;= 1.9.3-p194. Uses Celluloid and Celluloid::IO.

  • Homepage: http://github.com/kostya/eye
  • Documentation: http://www.rubydoc.info/gems/ace-eye/
  • Licenses: MIT
  • Latest release: 0.6.5 (published over 11 years ago)
  • Last Synced: 2026-02-28T21:01:00.886Z (3 days ago)
  • Versions: 5
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 23,367 Total
  • Rankings:
    • Dependent repos count: 0.0%
    • Dependent packages count: 0.0%
    • Average: 11.805%
    • Downloads: 35.415%
  • Maintainers (1)
rubygems.org: reel-eye

Process monitoring tool. Inspired from Bluepill and God. Requires Ruby(MRI) >= 1.9.3-p194. Uses Celluloid and Celluloid::IO.

  • Homepage: http://github.com/kostya/eye
  • Documentation: http://www.rubydoc.info/gems/reel-eye/
  • Licenses: MIT
  • Latest release: 0.5.2 (published about 12 years ago)
  • Last Synced: 2026-02-28T21:01:00.894Z (3 days ago)
  • Versions: 8
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 24,566 Total
  • Rankings:
    • Stargazers count: 1.59%
    • Forks count: 2.501%
    • Dependent packages count: 15.706%
    • Average: 18.448%
    • Downloads: 25.66%
    • Dependent repos count: 46.782%
  • Maintainers (1)
rubygems.org: ace-eye

FORK FOR TESTING. Process monitoring tool. Inspired from Bluepill and God. Requires Ruby(MRI) &gt;= 1.9.3-p194. Uses Celluloid and Celluloid::IO.

  • Homepage: http://github.com/kostya/eye
  • Documentation: http://www.rubydoc.info/gems/ace-eye/
  • Licenses: MIT
  • Latest release: 0.6.5 (published over 11 years ago)
  • Last Synced: 2026-02-28T21:01:00.932Z (3 days ago)
  • Versions: 5
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 23,367 Total
  • Rankings:
    • Stargazers count: 1.59%
    • Forks count: 2.501%
    • Dependent packages count: 15.706%
    • Average: 18.606%
    • Downloads: 26.449%
    • Dependent repos count: 46.782%
  • Maintainers (1)
ubuntu-23.10: ruby-eye

  • Homepage: http://github.com/kostya/eye
  • Licenses:
  • Latest release: 0.7-5.1 (published 18 days ago)
  • Last Synced: 2026-02-13T18:19:30.578Z (18 days ago)
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Dependent repos count: 0.0%
    • Dependent packages count: 0.0%
    • Average: 100%
debian-11: ruby-eye

  • Homepage: http://github.com/kostya/eye
  • Documentation: https://packages.debian.org/bullseye/ruby-eye
  • Licenses:
  • Latest release: 0.7-5 (published 21 days ago)
  • Last Synced: 2026-02-13T08:20:04.207Z (19 days ago)
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Dependent repos count: 0.0%
    • Dependent packages count: 0.0%
    • Average: 100%
ubuntu-23.04: ruby-eye

  • Homepage: http://github.com/kostya/eye
  • Licenses:
  • Latest release: 0.7-5.1 (published 21 days ago)
  • Last Synced: 2026-02-11T06:39:02.091Z (21 days ago)
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Dependent repos count: 0.0%
    • Dependent packages count: 0.0%
    • Average: 100%
ubuntu-20.04: ruby-eye

  • Homepage: http://github.com/kostya/eye
  • Licenses:
  • Latest release: 0.7-5 (published 19 days ago)
  • Last Synced: 2026-02-13T07:13:11.574Z (19 days ago)
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Dependent repos count: 0.0%
    • Dependent packages count: 0.0%
    • Average: 100%
debian-12: ruby-eye

  • Homepage: http://github.com/kostya/eye
  • Documentation: https://packages.debian.org/bookworm/ruby-eye
  • Licenses:
  • Latest release: 0.7-5.1 (published 19 days ago)
  • Last Synced: 2026-02-12T23:28:58.250Z (19 days ago)
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Dependent repos count: 0.0%
    • Dependent packages count: 0.0%
    • Average: 100%
ubuntu-22.04: ruby-eye

  • Homepage: http://github.com/kostya/eye
  • Licenses:
  • Latest release: 0.7-5 (published 18 days ago)
  • Last Synced: 2026-02-13T13:16:24.219Z (18 days ago)
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Dependent repos count: 0.0%
    • Dependent packages count: 0.0%
    • Average: 100%

Dependencies

Gemfile rubygems
  • fakeweb >= 0
  • json >= 0
  • rack = 1.6.4
eye.gemspec rubygems
  • coveralls >= 0 development
  • eventmachine >= 1.0.3 development
  • fakeweb >= 0 development
  • forking >= 0 development
  • parallel_split_test >= 0 development
  • parallel_tests <= 1.3.1 development
  • rake >= 0 development
  • rr = 1.1.2 development
  • rspec < 2.14 development
  • rubocop >= 0 development
  • ruby-graphviz >= 0 development
  • simplecov >= 0.8.1 development
  • sinatra >= 0 development
  • slack-notifier >= 0 development
  • thin >= 0 development
  • tins = 1.6.0 development
  • xmpp4r >= 0 development
  • celluloid ~> 0.17.3
  • celluloid-io ~> 0.17.0
  • kostya-sigar ~> 2.0.0
  • state_machines >= 0
  • thor >= 0

Score: 29.72968138915444