komachi_heartbeat 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 172965952080275e081af23b4ddb15ee4470a27a
4
+ data.tar.gz: f70a823016e6c34b4c52182017ab19b633a7d2d2
5
+ SHA512:
6
+ metadata.gz: 348f425ca5a95e737bba50730a48aa2344e49f6ff13df8f4758368cea368742f202f07aee8aefdb84ed1d25b781979e8b34bccc5bca0db9cab59c108ad904a18
7
+ data.tar.gz: 073a22a9daeb02f9de54115c6d23e0b9b2fd0a930681bbb80adea1b26a8d5bed7f4284218c7b718f9303b9c7bbf6d9e016bbcd32c8fdabf9bc20eefcceb0c420
data/README.md CHANGED
@@ -6,8 +6,13 @@ Rails アプリケーションとDBサーバーの死活監視するためのURL
6
6
  ### 死活監視
7
7
  `/MOUNT_PATH/heartbeat`
8
8
 
9
- schema_migrationsテーブルへのクエリを発行する
10
- 問題がなければ200 OKを返す
9
+ アプリケーションの状態に問題がなければ200 OKを返す
10
+
11
+ #### チェック可能項目
12
+ - Web
13
+ - DB
14
+ - Redis
15
+ - Memcached
11
16
 
12
17
  ### バージョン確認
13
18
  `/MOUNT_PATH/version`
@@ -23,9 +28,32 @@ schema_migrationsテーブルへのクエリを発行する
23
28
  `mount KomachiHeartbeat::Engine => "/ops"`
24
29
 
25
30
  ## Configure
31
+ ### Parameters
32
+ - `application_version`
33
+ - `application_name`
34
+ - `db_check_enabled`
35
+ - DBのチェックを行うかどうか
36
+ - default: true
37
+ - `database_class_names`
38
+ - DBのチェックに利用するクラス名の配列
39
+ - default: ["ActiveRecord::Base"]
40
+ - `redis_check_enabled`
41
+ - Redisをチェックするかどうか
42
+ - default: false
43
+ - `memcached_check_enabled`
44
+ - Memcachedをチェックするかどうか
45
+ - default: false
46
+ - `memcached_server`
47
+ - Memcachedのサーバー名
48
+ - default: 'localhost'
49
+
50
+ ### Example
51
+
26
52
  ```
27
- Rails.application.config.komachi_heartbeat.application_name = "YOUR APP NAME"
28
- Rails.application.config.komachi_heartbeat.application_version = "YOUR APP version"
53
+ Rails.application.config.heartbeat.application_name = "YOUR APP NAME"
54
+ Rails.application.config.heartbeat.application_version = "YOUR APP version"
29
55
  ```
30
56
 
57
+ see https://github.com/mitaku/komachi_heartbeat/blob/master/spec/dummy/config/application.rb
58
+
31
59
  This project rocks and uses MIT-LICENSE.
@@ -3,7 +3,9 @@ require_dependency "komachi_heartbeat/application_controller"
3
3
  module KomachiHeartbeat
4
4
  class HeartbeatController < ApplicationController
5
5
  def index
6
- ActiveRecord::Base.connection.execute "SELECT * FROM `schema_migrations` LIMIT 1"
6
+ db_connection_check if db_check?
7
+ redis_connection_check if redis_check?
8
+ memcached_connection_check if memcached_check?
7
9
 
8
10
  head :ok
9
11
  end
@@ -14,14 +16,50 @@ module KomachiHeartbeat
14
16
  render json: obj
15
17
  end
16
18
 
17
-
18
19
  private
20
+ def redis_connection_check
21
+ c = Redis::Client.new
22
+ c.connect
23
+ raise "Redis connection failed" unless c.connected?
24
+ c.disconnect
25
+ end
26
+
27
+ def db_connection_check
28
+ connection_database_class_names.each do |klass|
29
+ klass.constantize.connection.execute "SELECT * FROM `schema_migrations` LIMIT 1"
30
+ end
31
+ end
32
+
33
+ def memcached_connection_check
34
+ MemCache.new(memcached_server_name).stats
35
+ end
36
+
37
+ def memcached_check?
38
+ defined?(MemCache) && !!KomachiHeartbeat.config.memcached_check_enabled
39
+ end
40
+
41
+ def db_check?
42
+ !!KomachiHeartbeat.config.db_check_enabled
43
+ end
44
+
45
+ def redis_check?
46
+ defined?(Redis) && !!KomachiHeartbeat.config.redis_check_enabled
47
+ end
48
+
49
+ def connection_database_class_names
50
+ KomachiHeartbeat.config.database_class_names.presence || ["ActiveRecord::Base"]
51
+ end
52
+
53
+ def memcached_server_name
54
+ KomachiHeartbeat.config.memcached_server
55
+ end
56
+
19
57
  def application_name
20
- KomachiHeartbeat.application_name || "Unknown"
58
+ KomachiHeartbeat.config.application_name
21
59
  end
22
60
 
23
61
  def application_version
24
- KomachiHeartbeat.application_version || "Unknown"
62
+ KomachiHeartbeat.config.application_version
25
63
  end
26
64
  end
27
65
  end
@@ -1,5 +1,8 @@
1
+ require "komachi_heartbeat/config"
1
2
  require "komachi_heartbeat/engine"
2
3
 
3
4
  module KomachiHeartbeat
4
- mattr_accessor :application_version, :application_name
5
+ def self.config
6
+ KomachiHeartbeat::Config.config
7
+ end
5
8
  end
@@ -0,0 +1,18 @@
1
+ module KomachiHeartbeat
2
+ class Config
3
+ include ActiveSupport::Configurable
4
+ config_accessor :application_version, :application_name, :db_check_enabled, :redis_check_enabled, :memcached_check_enabled, :database_class_names, :memcached_server
5
+
6
+ configure do |config|
7
+ config.application_name = "Unknown"
8
+ config.application_version = "Unknown"
9
+ config.db_check_enabled = true
10
+ config.database_class_names = ["ActiveRecord::Base"]
11
+
12
+ config.redis_check_enabled = false
13
+
14
+ config.memcached_check_enabled = false
15
+ config.memcached_server = "localhost"
16
+ end
17
+ end
18
+ end
@@ -2,6 +2,6 @@ module KomachiHeartbeat
2
2
  class Engine < ::Rails::Engine
3
3
  isolate_namespace KomachiHeartbeat
4
4
 
5
- config.komachi_heartbeat = KomachiHeartbeat
5
+ config.heartbeat = KomachiHeartbeat::Config
6
6
  end
7
7
  end
@@ -1,3 +1,3 @@
1
1
  module KomachiHeartbeat
2
- VERSION = "1.0.0"
2
+ VERSION = "2.0.0"
3
3
  end
metadata CHANGED
@@ -1,142 +1,153 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: komachi_heartbeat
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
5
- prerelease:
4
+ version: 2.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Takumi MIURA
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-01-27 00:00:00.000000000 Z
11
+ date: 2013-12-09 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rails
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: 3.2.11
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: 3.2.11
27
+ - !ruby/object:Gem::Dependency
28
+ name: redis
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: memcache-client
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
30
55
  - !ruby/object:Gem::Dependency
31
56
  name: sqlite3
32
57
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
58
  requirements:
35
- - - ! '>='
59
+ - - '>='
36
60
  - !ruby/object:Gem::Version
37
61
  version: '0'
38
62
  type: :development
39
63
  prerelease: false
40
64
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
65
  requirements:
43
- - - ! '>='
66
+ - - '>='
44
67
  - !ruby/object:Gem::Version
45
68
  version: '0'
46
69
  - !ruby/object:Gem::Dependency
47
70
  name: rspec-rails
48
71
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
72
  requirements:
51
- - - ! '>='
73
+ - - '>='
52
74
  - !ruby/object:Gem::Version
53
75
  version: '0'
54
76
  type: :development
55
77
  prerelease: false
56
78
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
79
  requirements:
59
- - - ! '>='
80
+ - - '>='
60
81
  - !ruby/object:Gem::Version
61
82
  version: '0'
62
83
  - !ruby/object:Gem::Dependency
63
84
  name: spork
64
85
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
86
  requirements:
67
- - - ! '>='
87
+ - - '>='
68
88
  - !ruby/object:Gem::Version
69
89
  version: '0'
70
90
  type: :development
71
91
  prerelease: false
72
92
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
93
  requirements:
75
- - - ! '>='
94
+ - - '>='
76
95
  - !ruby/object:Gem::Version
77
96
  version: '0'
78
97
  - !ruby/object:Gem::Dependency
79
98
  name: rb-fsevent
80
99
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
100
  requirements:
83
- - - ! '>='
101
+ - - '>='
84
102
  - !ruby/object:Gem::Version
85
103
  version: '0'
86
104
  type: :development
87
105
  prerelease: false
88
106
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
107
  requirements:
91
- - - ! '>='
108
+ - - '>='
92
109
  - !ruby/object:Gem::Version
93
110
  version: '0'
94
111
  - !ruby/object:Gem::Dependency
95
112
  name: guard-rspec
96
113
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
114
  requirements:
99
- - - ! '>='
115
+ - - '>='
100
116
  - !ruby/object:Gem::Version
101
117
  version: '0'
102
118
  type: :development
103
119
  prerelease: false
104
120
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
121
  requirements:
107
- - - ! '>='
122
+ - - '>='
108
123
  - !ruby/object:Gem::Version
109
124
  version: '0'
110
125
  - !ruby/object:Gem::Dependency
111
126
  name: guard-spork
112
127
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
128
  requirements:
115
- - - ! '>='
129
+ - - '>='
116
130
  - !ruby/object:Gem::Version
117
131
  version: '0'
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
135
  requirements:
123
- - - ! '>='
136
+ - - '>='
124
137
  - !ruby/object:Gem::Version
125
138
  version: '0'
126
139
  - !ruby/object:Gem::Dependency
127
140
  name: growl
128
141
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
142
  requirements:
131
- - - ! '>='
143
+ - - '>='
132
144
  - !ruby/object:Gem::Version
133
145
  version: '0'
134
146
  type: :development
135
147
  prerelease: false
136
148
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
149
  requirements:
139
- - - ! '>='
150
+ - - '>='
140
151
  - !ruby/object:Gem::Version
141
152
  version: '0'
142
153
  description: Alive Monitoring of Application Server and DB Server.
@@ -154,6 +165,7 @@ files:
154
165
  - app/helpers/komachi_heartbeat/heartbeat_helper.rb
155
166
  - app/views/layouts/komachi_heartbeat/application.html.erb
156
167
  - config/routes.rb
168
+ - lib/komachi_heartbeat/config.rb
157
169
  - lib/komachi_heartbeat/engine.rb
158
170
  - lib/komachi_heartbeat/version.rb
159
171
  - lib/komachi_heartbeat.rb
@@ -163,32 +175,25 @@ files:
163
175
  - README.md
164
176
  homepage: https://github.com/mitaku/komachi_heartbeat
165
177
  licenses: []
178
+ metadata: {}
166
179
  post_install_message:
167
180
  rdoc_options: []
168
181
  require_paths:
169
182
  - lib
170
183
  required_ruby_version: !ruby/object:Gem::Requirement
171
- none: false
172
184
  requirements:
173
- - - ! '>='
185
+ - - '>='
174
186
  - !ruby/object:Gem::Version
175
187
  version: '0'
176
- segments:
177
- - 0
178
- hash: -1448573566997876444
179
188
  required_rubygems_version: !ruby/object:Gem::Requirement
180
- none: false
181
189
  requirements:
182
- - - ! '>='
190
+ - - '>='
183
191
  - !ruby/object:Gem::Version
184
192
  version: '0'
185
- segments:
186
- - 0
187
- hash: -1448573566997876444
188
193
  requirements: []
189
194
  rubyforge_project:
190
- rubygems_version: 1.8.24
195
+ rubygems_version: 2.0.14
191
196
  signing_key:
192
- specification_version: 3
197
+ specification_version: 4
193
198
  summary: Rails Application Hertbeat Check Engine.
194
199
  test_files: []