nagira 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- data/History.md +89 -0
- data/Rakefile +128 -0
- data/bin/nagira +11 -0
- data/bin/nagira-setup +6 -0
- data/config/defaults.rb +74 -0
- data/config/environment.rb +44 -0
- data/config/nagira.defaults +66 -0
- data/config/nagira.init_d +133 -0
- data/lib/app.rb +330 -0
- data/lib/app/routes/get/config.rb +22 -0
- data/lib/app/routes/get/objects.rb +71 -0
- data/lib/app/routes/get/status.rb +153 -0
- data/lib/app/routes/put.rb +52 -0
- data/lib/app/routes/put/status.rb +139 -0
- data/lib/nagira.rb +55 -0
- data/lib/nagira/background_parse.rb +28 -0
- data/lib/nagira/nagios.rb +20 -0
- data/lib/nagira/timed_parse.rb +77 -0
- data/spec/00_configuration_spec.rb +62 -0
- data/spec/01_nagira_response_spec.rb +122 -0
- data/spec/02_0_status_spec.rb +53 -0
- data/spec/02_nagira_data_spec.rb +101 -0
- data/spec/03_api_spec.rb +48 -0
- data/spec/spec_helper.rb +4 -0
- data/test/benchmark.rb +26 -0
- data/test/data/bad/README +1 -0
- data/test/data/bad/nagios.cfg +1305 -0
- data/test/data/bad/objects.cache +1868 -0
- data/test/data/bad/status.dat +1766 -0
- data/test/data/json/GET.txt +15 -0
- data/test/data/json/README.txt +9 -0
- data/test/data/json/host_check.json +4 -0
- data/test/data/json/host_check.sh +4 -0
- data/test/data/json/ping.json +5 -0
- data/test/data/json/ping_and_http.json +12 -0
- data/test/data/json/ping_and_http_check.sh +4 -0
- data/test/data/json/ping_check.sh +4 -0
- data/test/data/nagios.cfg +1305 -0
- data/test/data/objects.cache +1868 -0
- data/test/data/status.dat +1652 -0
- data/version.txt +1 -0
- metadata +384 -0
data/History.md
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
### v.0.2.5
|
2
|
+
|
3
|
+
* Fri Mar 15 2013 -- Dmytro Kovalov
|
4
|
+
- Environment variables support and defaults file:
|
5
|
+
- `NAGIRA_TTL`
|
6
|
+
- `NAGIRA_BG_PARSING`
|
7
|
+
- `NAGIRA_PORT` - see Sinatra `set :port`
|
8
|
+
- `NAGIRA_BIND` - see Sinatra `set :bind`
|
9
|
+
- Packaged as gem
|
10
|
+
- nagira and nagira-setup binaries
|
11
|
+
- cleaner init.d script, support for Debian and RedHat
|
12
|
+
- defaults file in `/etc/sysconfig` or `/etc/default`
|
13
|
+
- tasks to check configuration by user
|
14
|
+
- Add partial ActiveSupport routes
|
15
|
+
- `/_objects/host` works as well as `/_objects/hosts`
|
16
|
+
- selection objects by ID is TODO
|
17
|
+
* Feb 19, 2013 -- Dmytro Kovalov
|
18
|
+
- Background parser.
|
19
|
+
|
20
|
+
To avoid delays on HTTP request from user. All data are parsed in separate thread.
|
21
|
+
- configurable TTL for background parsing
|
22
|
+
- can be disabled
|
23
|
+
- Start-up section for the Nagira app.
|
24
|
+
|
25
|
+
All Nagios files are validated at start-up, rather than on first HTTP request.
|
26
|
+
|
27
|
+
If there are permission problem or file don't exist error is reported to user.
|
28
|
+
* Feb 9, 2013
|
29
|
+
- Merge all custom changes to `ruby-nagios` into upstream, use `ruby-nagios` as gem, not git sub-module
|
30
|
+
- `nagios.cfg` file selection is in `ruby-nagios` now.
|
31
|
+
|
32
|
+
Look for config in `/etc/nagios*/` and `/usr/local/nagios/etc/`. Can be overridden by `NAGIOS_CFG_FILE` environment.
|
33
|
+
|
34
|
+
### v.0.2.1
|
35
|
+
|
36
|
+
* Wed Dec 19 2012 - Dmytro Kovalov
|
37
|
+
- fix for DOS formatted and spaces in config ; better error reporting for spec. fixes #8
|
38
|
+
- Switch to markdown in documentation: README, CONFIGURAION etc.
|
39
|
+
- Configuration documentation. Examples of usage for JSON: example files and scripts.
|
40
|
+
- Nagira::INSTALL configuration constant. Use Nagira::INSTALL for init.d creation.
|
41
|
+
- ERB template for /etc/init./d file
|
42
|
+
- Fixes for YARD formatting
|
43
|
+
- Use Travis CI for Nagira testing
|
44
|
+
* Thu Oct 4 19:45:00 JST 2012
|
45
|
+
|
46
|
+
### v.0.2.0
|
47
|
+
|
48
|
+
- lot of bug fixes
|
49
|
+
- API: first working PUT API for process host status and process service status external commands
|
50
|
+
* 2012-09-28 Dmytro Kovalov - v. 0.1.5
|
51
|
+
- many changes for testing files nagios.cfg, objects, status. Tested to work both in dev/test and production environments.
|
52
|
+
- more documentation
|
53
|
+
- API: additional modifier for output: `_full`. By default now `/_status` returns Hash with hoststatus only. Use ../_full to get both hoststatus and sevicestatus.
|
54
|
+
|
55
|
+
### v. 0.1.4
|
56
|
+
|
57
|
+
* 2012-09-26 Dmytro Kovalov -
|
58
|
+
- added support for JSON-P parameters (?callback=<nam>)
|
59
|
+
- change API to have all keywords underscored, to avoid clashes with object names (`/_status`, `_objects`, `/_status/_list` etc).
|
60
|
+
|
61
|
+
### v. 0.1.3
|
62
|
+
|
63
|
+
* 2012-06-8 Dmytro Kovalov
|
64
|
+
- specs for /config, /status, /objects - simple page loads and data
|
65
|
+
checks;
|
66
|
+
- /api route;
|
67
|
+
- bugfixes;
|
68
|
+
- YARD documentation;
|
69
|
+
|
70
|
+
### v. 0.1.2
|
71
|
+
|
72
|
+
* 2012-06-2 Dmytro Kovalov
|
73
|
+
- spec for configuration files
|
74
|
+
- spec for basic responses from Sinatra (`GET /objects`, `GET /status`)
|
75
|
+
- CONFIGURATION.rdoc
|
76
|
+
- configuration cleanup
|
77
|
+
* 2012-05-22 Dmytro Kovalov
|
78
|
+
- start using Gemfile
|
79
|
+
- INSTALL.rdoc - simple description of installation procedure
|
80
|
+
* 2012-01-12 Dmytro Kovalov
|
81
|
+
- History.rdoc and version.txt files
|
82
|
+
- Routes for objects configuration GET's
|
83
|
+
- FEATURES.rdoc
|
84
|
+
- YARD documentation
|
85
|
+
* 2012-01-02 Dmytro Kovalov
|
86
|
+
- First Sinatra application to return service state information
|
87
|
+
* 2011-12-25 @dmytro
|
88
|
+
- Started Github project
|
89
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require_relative 'lib/nagira'
|
3
|
+
|
4
|
+
def log_user msg
|
5
|
+
puts "#{Time.now} -- #{msg.chomp}"
|
6
|
+
end
|
7
|
+
|
8
|
+
namespace :doc do
|
9
|
+
|
10
|
+
desc 'Generate YARD documentation'
|
11
|
+
task :yard do
|
12
|
+
sh 'yardoc'
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
namespace :config do
|
18
|
+
|
19
|
+
@nagira_root = File.dirname File.expand_path __FILE__ # Where Nagira installed
|
20
|
+
@nagira_config = File.join(@nagira_root, 'config') # Config directory of Nagira installation
|
21
|
+
|
22
|
+
target_os = nil
|
23
|
+
|
24
|
+
%x{ sherlock }.split($\).each do |line|
|
25
|
+
next unless line =~ /^FAMILY=/
|
26
|
+
l,target_os = line.chomp.split '='
|
27
|
+
target_os = target_os.chomp.strip.to_sym
|
28
|
+
end
|
29
|
+
|
30
|
+
namespace :test do
|
31
|
+
|
32
|
+
desc "Test Nagira production config: Nagios files in proper locations and parseable"
|
33
|
+
task :prod do
|
34
|
+
ENV['RACK_ENV'] = 'production'
|
35
|
+
Rake::Task['config:test:test'].invoke
|
36
|
+
end
|
37
|
+
|
38
|
+
desc "Test Nagira installation: test Nagios files and parse"
|
39
|
+
task :install do
|
40
|
+
ENV['RACK_ENV'] = 'test'
|
41
|
+
Rake::Task['config:test:test'].invoke
|
42
|
+
end
|
43
|
+
|
44
|
+
task :test do
|
45
|
+
p "Starting test in #{ENV['RACK_ENV']} environment"
|
46
|
+
sh "rspec --format doc --color spec/00_configuration_spec.rb"
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
desc "Create Nagira configuration, allow start on boot and start it"
|
52
|
+
task :all => [:config, :chkconfig, :start]
|
53
|
+
|
54
|
+
def test?
|
55
|
+
ENV['RAKE_ENV'] == 'test'
|
56
|
+
end
|
57
|
+
|
58
|
+
etc = test? ? 'tmp/etc' : "/etc"
|
59
|
+
init_d = File.join etc, 'init.d'
|
60
|
+
|
61
|
+
directory etc
|
62
|
+
directory init_d
|
63
|
+
|
64
|
+
|
65
|
+
desc "Create configuration for Nagira in /etc"
|
66
|
+
task :config => [:init_d, :defaults]
|
67
|
+
|
68
|
+
|
69
|
+
#desc "Install /etc/init.d startup file for Nagira"
|
70
|
+
task :init_d => init_d do
|
71
|
+
src = File.join(@nagira_config, 'nagira.init_d')
|
72
|
+
dst = "#{init_d}/nagira"
|
73
|
+
|
74
|
+
FileUtils.copy src, dst
|
75
|
+
FileUtils.chown 0, 0, dst unless test?
|
76
|
+
FileUtils.chmod 0755, dst
|
77
|
+
|
78
|
+
log_user "Installed startup file at #{dst}"
|
79
|
+
end
|
80
|
+
|
81
|
+
#desc "Install defaults file for Nagira service in /etc"
|
82
|
+
task :defaults do
|
83
|
+
src = File.join(@nagira_config, 'nagira.defaults')
|
84
|
+
dst = case target_os
|
85
|
+
when :rh
|
86
|
+
'/etc/sysconfig/nagira'
|
87
|
+
when :debian
|
88
|
+
'/etc/default/nagira'
|
89
|
+
else
|
90
|
+
log_user "Unknown or unsupported target OS: #{target_os}"
|
91
|
+
log_user " >>> Skipped defaults file installation"
|
92
|
+
next
|
93
|
+
end
|
94
|
+
unless File.exists? dst
|
95
|
+
FileUtils.copy src, dst
|
96
|
+
FileUtils.chown 0, 0, dst unless test?
|
97
|
+
FileUtils.chmod 0644, dst
|
98
|
+
|
99
|
+
log_user "Installed new defaults file for Nagira in #{dst}."
|
100
|
+
log_user " >>> You might want to tune some of the variables."
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
desc "Start Nagira API service"
|
105
|
+
task :start => [:init_d, :defaults] do
|
106
|
+
log_user "Starting Nagira for the first time"
|
107
|
+
sh "/etc/init.d/nagira start"
|
108
|
+
end
|
109
|
+
|
110
|
+
desc "Configure Nagira to start on system boot"
|
111
|
+
task :chkconfig => [:init_d, :defaults] do
|
112
|
+
|
113
|
+
log_user "Configuring Nagira to start at boot"
|
114
|
+
case target_os
|
115
|
+
when :rh
|
116
|
+
sh "/sbin/chkconfig --add nagira"
|
117
|
+
sh "/sbin/chkconfig nagira on"
|
118
|
+
when :debian
|
119
|
+
sh "/usr/sbin/update-rc.d nagira defaults"
|
120
|
+
else
|
121
|
+
abort "Unknown or unsupported target OS: #{target_os}"
|
122
|
+
end
|
123
|
+
log_user "[OK]"
|
124
|
+
end
|
125
|
+
|
126
|
+
end
|
127
|
+
|
128
|
+
|
data/bin/nagira
ADDED
data/bin/nagira-setup
ADDED
data/config/defaults.rb
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
##
|
4
|
+
# This file sets some constants, that are used as defaults in Nagira
|
5
|
+
# application. Instead of changing this please modify
|
6
|
+
# config/environment.rb file to match your requirements. Settings in
|
7
|
+
# environment.rb file override these defaults.
|
8
|
+
#
|
9
|
+
# Exception is ::DEFAULT[:ttl] which is not overriden by environment.rb
|
10
|
+
# and should be changed here.
|
11
|
+
|
12
|
+
|
13
|
+
DEFAULT = {
|
14
|
+
|
15
|
+
format_extensions: '\.(json|yaml|xml)$', # Regex for available
|
16
|
+
# formats: xml, json, yaml
|
17
|
+
|
18
|
+
format: :xml, # default format for application to send output, if
|
19
|
+
# format is not specified
|
20
|
+
|
21
|
+
|
22
|
+
# No path to file configuration file by default. Main nagios config
|
23
|
+
# is defined by +nagios_cfg_glob+ or by Sintra's
|
24
|
+
# +settings.nagios_cfg+ variable.
|
25
|
+
#
|
26
|
+
# status_cfg and objects_cfg are defined by parsing of nagios_cfg
|
27
|
+
# file. Sinatra's setting override parsed values.
|
28
|
+
nagios_cfg: nil,
|
29
|
+
status_cfg: nil,
|
30
|
+
objects_cfg: nil,
|
31
|
+
command_file: nil,
|
32
|
+
|
33
|
+
##
|
34
|
+
# ttl used in Nagios::TimedParse module - extension
|
35
|
+
# to Nagios modules.
|
36
|
+
#
|
37
|
+
# @see Nagios::TimedParse
|
38
|
+
#
|
39
|
+
# Set some minimum interval for re-parsing of the status file: even
|
40
|
+
# if file changes often, we do not want to parse it more often, then
|
41
|
+
# this number of seconds. To disable timed parsing, set
|
42
|
+
# ttl to 0 or negative number.
|
43
|
+
|
44
|
+
ttl: ENV['NAGIRA_TTL'].to_i || 5,
|
45
|
+
|
46
|
+
##
|
47
|
+
# start_background_parser used in Nagios::BackgroundParse class.
|
48
|
+
#
|
49
|
+
# @see Nagios::BackgroundParse
|
50
|
+
#
|
51
|
+
# If set to true then use background parser. This will prevent
|
52
|
+
# parsing delays on client request. Background parserruns on
|
53
|
+
# intervals slightly shorter than `ttl` to ensure that data are
|
54
|
+
# always updated. So, `ttl` should be larger than 1.
|
55
|
+
#
|
56
|
+
start_background_parser: (ENV['NAGIRA_BG_PARSING'] == '1')
|
57
|
+
}
|
58
|
+
|
59
|
+
require 'sinatra'
|
60
|
+
class Nagira < Sinatra::Base
|
61
|
+
|
62
|
+
##
|
63
|
+
# For every key in the DEFAULT hash create setting with the same name
|
64
|
+
# and value. Values can be overrriden in environment.rb file if
|
65
|
+
# required.
|
66
|
+
# @method define_methods_for_defaults
|
67
|
+
configure do
|
68
|
+
::DEFAULT.each do |key,val|
|
69
|
+
set key,val
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
|
2
|
+
class Nagira < Sinatra::Base
|
3
|
+
|
4
|
+
disable :protection
|
5
|
+
enable :logging
|
6
|
+
|
7
|
+
set :port, ENV['NAGIRA_PORT'].to_i if ENV['NAGIRA_PORT']
|
8
|
+
set :bind, ENV['NAGIRA_BIND'] if ENV['NAGIRA_BIND']
|
9
|
+
|
10
|
+
configure do
|
11
|
+
set :format, :json
|
12
|
+
end
|
13
|
+
|
14
|
+
if development?
|
15
|
+
require 'sinatra/reloader'
|
16
|
+
register Sinatra::Reloader
|
17
|
+
also_reload(File.dirname(File.dirname(__FILE__))+"/*.rb")
|
18
|
+
also_reload(File.dirname(File.dirname(__FILE__))+"/{app,lib}/**/*.rb")
|
19
|
+
end
|
20
|
+
|
21
|
+
##
|
22
|
+
# Development and test environments use local files located in the
|
23
|
+
# development tree: ./test/data.
|
24
|
+
configure :development, :test do
|
25
|
+
|
26
|
+
dir = File.expand_path(File.dirname(__FILE__) + '/../test/data/')
|
27
|
+
|
28
|
+
set :nagios_cfg, "#{dir}/nagios.cfg"
|
29
|
+
set :status_cfg, "#{dir}/status.dat"
|
30
|
+
set :objects_cfg, "#{dir}/objects.cache"
|
31
|
+
set :command_file, "/tmp/nagios.cmd"
|
32
|
+
|
33
|
+
set :show_exceptions, false
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
# configure :production do
|
38
|
+
# # If your nagios.cfg file is in 'standard' location (in RH and
|
39
|
+
# # Debian it usially installed under /etc/nagios(3)?) you don't need
|
40
|
+
# # to define nagios_cfg.
|
41
|
+
# set :nagios_cfg, nil
|
42
|
+
# end
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
#
|
2
|
+
# Defaults configuration file for Nagira
|
3
|
+
# --------------------------------------------
|
4
|
+
#
|
5
|
+
# ----------------------
|
6
|
+
# Port. Default 4567
|
7
|
+
# ----------------------
|
8
|
+
# NAGIRA_PORT=
|
9
|
+
#
|
10
|
+
# ----------------------
|
11
|
+
# BIND
|
12
|
+
# ----------------------
|
13
|
+
# String specifying the hostname or IP address of the interface to
|
14
|
+
# listen on when the :run setting is enabled. The default value –
|
15
|
+
# '0.0.0.0' – causes the server to listen on all available
|
16
|
+
# interfaces. To listen on the loopback interface only, use: 'localhost'
|
17
|
+
#
|
18
|
+
# NAGIRA_BIND=localhost
|
19
|
+
#
|
20
|
+
# ----------------------
|
21
|
+
# Environment
|
22
|
+
# ----------------------
|
23
|
+
# Usually needs to be production
|
24
|
+
#
|
25
|
+
# RACK_ENV=production
|
26
|
+
#
|
27
|
+
# ----------------------
|
28
|
+
# Nagira user
|
29
|
+
# ----------------------
|
30
|
+
# Usually nagira process should be run by same user ID as Nagios. In
|
31
|
+
# many cases this is nagios user.
|
32
|
+
#
|
33
|
+
# NAGIRA_USER=nagios
|
34
|
+
#
|
35
|
+
# ----------------------
|
36
|
+
# RVM
|
37
|
+
# ----------------------
|
38
|
+
# RVM_STRING="rvm use default"
|
39
|
+
#
|
40
|
+
# ----------------------
|
41
|
+
# Log file
|
42
|
+
# ----------------------
|
43
|
+
# NAGIRA_LOG=/var/log/nagios/nagira.log
|
44
|
+
#
|
45
|
+
# ----------------------
|
46
|
+
# TTL for data
|
47
|
+
# ----------------------
|
48
|
+
# Number of seconds between re-parses. All Nagios file are parsed no
|
49
|
+
# more often than this. Default is 5 sec. Setting this to 0 or
|
50
|
+
# negative number disables TTL and backgroiund prser as well.
|
51
|
+
#
|
52
|
+
# NAGIRA_TTL=20
|
53
|
+
#
|
54
|
+
# ----------------------
|
55
|
+
# Background parsing
|
56
|
+
# ----------------------
|
57
|
+
# Set this to 0, to disable background parsing.
|
58
|
+
# NAGIRA_BG_PARSING=1
|
59
|
+
#
|
60
|
+
# ----------------------
|
61
|
+
# Nagios configuration file
|
62
|
+
# ----------------------
|
63
|
+
# Where main Nagios configuration file is located. usually this does
|
64
|
+
# not need to change.
|
65
|
+
#
|
66
|
+
# NAGIOS_CFG_FILE=/etc/nagios/nagios.cfg
|
@@ -0,0 +1,133 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
### BEGIN INIT INFO
|
3
|
+
# Provides: nagira
|
4
|
+
# Required-Start:
|
5
|
+
# Required-Stop:
|
6
|
+
# Default-Start: 2 3 4 5
|
7
|
+
# Default-Stop: 0 1 6
|
8
|
+
# Short-Description: Nagira API application for Nagios
|
9
|
+
# Description: Controls Nagira API application for Nagios
|
10
|
+
### END INIT INFO
|
11
|
+
#
|
12
|
+
# nagira:
|
13
|
+
#
|
14
|
+
# Version: 1
|
15
|
+
#
|
16
|
+
# chkconfig: - 20 99
|
17
|
+
# description: Start-up file for Nagira monitoring component, Nagios RESTful API. See also: http://dmytro.github.com/nagira
|
18
|
+
# processname: ruby /.../nagira
|
19
|
+
# config: /etc/sysconfig/nagira, /etc/default/nagira
|
20
|
+
|
21
|
+
process_name="Sinatra Nagira services"
|
22
|
+
|
23
|
+
pid_file=/var/run/nagira.pid
|
24
|
+
|
25
|
+
|
26
|
+
load_defaults () {
|
27
|
+
which sherlock > /dev/null 2>&1 && eval $(sherlock | grep FAMILY) || { echo "sherlock not found"; exit 2; }
|
28
|
+
|
29
|
+
case $FAMILY in
|
30
|
+
'rh')
|
31
|
+
DEFAULTS=/etc/sysconfig/nagira ;;
|
32
|
+
'debian')
|
33
|
+
DEFAULTS=/etc/default/nagira ;;
|
34
|
+
*)
|
35
|
+
echo "Unknown OS or distribution version: $FAMILY"
|
36
|
+
exit 1
|
37
|
+
;;
|
38
|
+
esac
|
39
|
+
source $DEFAULTS || { echo "Can not load defaults file" ; exit 1 ; }
|
40
|
+
}
|
41
|
+
|
42
|
+
|
43
|
+
##
|
44
|
+
# Some reasonable defaults if not set in defaults file
|
45
|
+
#
|
46
|
+
RACK_ENV=${RACK_ENV:-production}
|
47
|
+
NAGIRA_USER=${NAGIRA_USER:-nagios}
|
48
|
+
RVM_STRING=${RVM_STRING:-"true"} # i.e. do nothing special
|
49
|
+
NAGIRA_LOG=${NAGIRA_LOG:-/var/log/nagios/nagira.log}
|
50
|
+
# There's no default for NAGIOS_CFG_FILE. Default is actually to have
|
51
|
+
# it unset, Nagira would be able to find nagios config if it is in one
|
52
|
+
# of the standard locations (/etc or /usr/local). If your Nagios
|
53
|
+
# installation is less than standard, you can override it by setting
|
54
|
+
# NAGIOS_CFG_FILE
|
55
|
+
#
|
56
|
+
# NAGIOS_CFG_FILE=...
|
57
|
+
|
58
|
+
export RACK_ENV NAGIRA_LOG NAGIRA_USER RVM_STRING
|
59
|
+
|
60
|
+
get_pid () {
|
61
|
+
# ps -U ${
|
62
|
+
# ps -C ruby -o pid,comm,cmd
|
63
|
+
#echo $(ps axo pid,command | awk '$2 ~ /ruby/ && $3 ~ /nagira/ {print $1}')
|
64
|
+
echo $(ps -C ruby -o pid,cmd | awk '$2 ~ /^\/usr.*bin\/nagira *$/ {print $1}')
|
65
|
+
}
|
66
|
+
|
67
|
+
|
68
|
+
start() {
|
69
|
+
[ ! -z "$(get_pid)" ] && { status; return 1; }
|
70
|
+
echo -n "Starting ${process_name}: "
|
71
|
+
load_defaults
|
72
|
+
su - $NAGIRA_USER -s /bin/bash -c "$RVM_STRING ; RACK_ENV=$RACK_ENV nagira&" > $NAGIRA_LOG 2>&1
|
73
|
+
sleep 5
|
74
|
+
process=$(get_pid)
|
75
|
+
if [ -z "$process" ]; then
|
76
|
+
echo "[FAIL]"
|
77
|
+
else
|
78
|
+
echo $process > $pid_file
|
79
|
+
echo "[OK]"
|
80
|
+
status
|
81
|
+
fi
|
82
|
+
}
|
83
|
+
|
84
|
+
stop() {
|
85
|
+
local process=$(get_pid)
|
86
|
+
[ -z "$process" ] && { status; return 1; }
|
87
|
+
|
88
|
+
echo -n $"Shutting down ${process_name}: "
|
89
|
+
|
90
|
+
kill $process
|
91
|
+
\rm -f $pid_file
|
92
|
+
RETVAL=$?
|
93
|
+
sleep 2
|
94
|
+
[ -z "$(get_pid)" ] && { echo OK; return $RETVAL; }
|
95
|
+
echo FAIL
|
96
|
+
}
|
97
|
+
|
98
|
+
status () {
|
99
|
+
local process=$(get_pid)
|
100
|
+
if [ -z "$process" ]; then
|
101
|
+
echo "Process $process_name is not running"
|
102
|
+
else
|
103
|
+
echo "Process $process_name is running with PID: $process"
|
104
|
+
fi
|
105
|
+
}
|
106
|
+
|
107
|
+
restart() {
|
108
|
+
stop
|
109
|
+
start
|
110
|
+
}
|
111
|
+
|
112
|
+
RETVAL=0
|
113
|
+
|
114
|
+
# See how we were called.
|
115
|
+
case "$1" in
|
116
|
+
start)
|
117
|
+
start
|
118
|
+
;;
|
119
|
+
stop)
|
120
|
+
stop
|
121
|
+
;;
|
122
|
+
status)
|
123
|
+
status
|
124
|
+
;;
|
125
|
+
restart|force-reload)
|
126
|
+
restart
|
127
|
+
;;
|
128
|
+
*)
|
129
|
+
echo $"Usage: $0 {start|stop|status|restart|force-reload}"
|
130
|
+
exit 1
|
131
|
+
esac
|
132
|
+
|
133
|
+
exit $?
|