diff options
| author | mo khan <mo@mokhan.ca> | 2015-10-18 16:22:10 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2015-10-18 16:22:10 -0600 |
| commit | 354a97f614ce32788c049df3556baac5e708b48f (patch) | |
| tree | 86e42125957b360191ef1459f1e711c302461502 | |
| parent | eab963bc3b57bad94573dd080c69b895c1aa15a7 (diff) | |
add sinatra application to display all logs.
| -rw-r--r-- | Gemfile | 1 | ||||
| -rw-r--r-- | Gemfile.lock | 9 | ||||
| -rw-r--r-- | Procfile | 1 | ||||
| -rw-r--r-- | Vagrantfile | 1 | ||||
| -rw-r--r-- | config.ru | 5 | ||||
| -rw-r--r-- | lib/killjoy/cassandra_db.rb | 2 | ||||
| -rw-r--r-- | lib/killjoy/web.rb | 24 | ||||
| -rw-r--r-- | lib/killjoy/web/views/index.erb | 27 |
8 files changed, 69 insertions, 1 deletions
@@ -8,6 +8,7 @@ gem "foreman" # for an easy deployment story with Upstart gem "lz4-ruby" gem "pry" gem "rake" +gem "sinatra" gem "sneakers" gem "spank" gem "statsd-ruby" # using statsd with Sneakers::Metrics diff --git a/Gemfile.lock b/Gemfile.lock index 4307106..f2d4222 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -39,6 +39,9 @@ GEM coderay (~> 1.1.0) method_source (~> 0.8.1) slop (~> 3.4) + rack (1.6.4) + rack-protection (1.5.3) + rack rake (10.4.2) rspec (3.3.0) rspec-core (~> 3.3.0) @@ -56,6 +59,10 @@ GEM serverengine (1.5.11) sigdump (~> 0.2.2) sigdump (0.2.3) + sinatra (1.4.6) + rack (~> 1.4) + rack-protection (~> 1.4) + tilt (>= 1.3, < 3) slop (3.6.0) sneakers (2.3.4) bunny (~> 2.2.0) @@ -67,6 +74,7 @@ GEM thor (0.19.1) thread (0.1.7) thread_safe (0.3.5) + tilt (2.0.1) tzinfo (1.2.2) thread_safe (~> 0.1) virtus (1.0.5) @@ -88,6 +96,7 @@ DEPENDENCIES pry rake rspec + sinatra sneakers spank statsd-ruby @@ -1,3 +1,4 @@ +web: bundle exec rackup -p9292 --host 0.0.0.0 worker1: RMQ_SHARD=0 exe/killjoy worker2: RMQ_SHARD=1 exe/killjoy worker3: RMQ_SHARD=2 exe/killjoy diff --git a/Vagrantfile b/Vagrantfile index 6668d5a..1f066fc 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -12,6 +12,7 @@ Vagrant.configure(2) do |config| config.vm.network "forwarded_port", guest: 9042, host: 9042 config.vm.network "forwarded_port", guest: 9125, host: 9125 config.vm.network "forwarded_port", guest: 8888, host: 8888 + config.vm.network "forwarded_port", guest: 9292, host: 9292 config.vm.provision :chef_apply do |chef| chef.recipe = File.read("config/chef_apply.rb") end diff --git a/config.ru b/config.ru new file mode 100644 index 0000000..fd3b420 --- /dev/null +++ b/config.ru @@ -0,0 +1,5 @@ +require "bundler/setup" +$LOAD_PATH.unshift(File.join(Dir.pwd, "lib")) +require "killjoy/web" + +run Sinatra::Application diff --git a/lib/killjoy/cassandra_db.rb b/lib/killjoy/cassandra_db.rb index 4618dff..4d8753d 100644 --- a/lib/killjoy/cassandra_db.rb +++ b/lib/killjoy/cassandra_db.rb @@ -1,6 +1,6 @@ module Killjoy class CassandraDb - def self.from(table, session) + def self.from(table, session = Spank::IOC.resolve(:session)) QueryBuilder.new(table, session) end end diff --git a/lib/killjoy/web.rb b/lib/killjoy/web.rb new file mode 100644 index 0000000..8951781 --- /dev/null +++ b/lib/killjoy/web.rb @@ -0,0 +1,24 @@ +require 'sinatra' +require 'killjoy' + +set :bind, '0.0.0.0' +set :port, 9292 +set :views, settings.root + '/web/views' + +Killjoy::Startup.new(Spank::Container.new).run do |container| + Spank::IOC.bind_to(container) + Spank::IOC.resolve(:session).execute("select * from system.hints;") +end + +get '/' do + @logs = Killjoy::CassandraDb + .from(:log_lines) + .limit(100) + .map { |x| Killjoy::LogLine.new(x) } + erb :index +end + +get '/ping' do + "Hello World!" +end + diff --git a/lib/killjoy/web/views/index.erb b/lib/killjoy/web/views/index.erb new file mode 100644 index 0000000..4f2a926 --- /dev/null +++ b/lib/killjoy/web/views/index.erb @@ -0,0 +1,27 @@ +<h1>Logs</h1> +<table> + <thead> + <tr> + <th>IP Address</th> + <th>Http Status</th> + <th>Http Verb</th> + <th>Http Version</th> + <th>Timestamp</th> + <th>Url</th> + <th>User Agent</th> + </tr> + </thead> + <tbody> + <% @logs.each do |log| %> + <tr> + <td><%= log.ipaddress %></td> + <td><%= log.http_status %></td> + <td><%= log.http_verb %></td> + <td><%= log.http_version %></td> + <td><%= log.timestamp %></td> + <td><%= log.url %></td> + <td><%= log.user_agent %></td> + </tr> + <% end %> + </tbody> +</table> |
