prometheus-splash 0.6.1 → 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +43 -1
  3. data/README.md +1 -1
  4. data/config/splash.yml +45 -5
  5. data/lib/splash/backends.rb +1 -0
  6. data/lib/splash/cli.rb +2 -1
  7. data/lib/splash/cli/commands.rb +125 -5
  8. data/lib/splash/cli/daemon.rb +41 -1
  9. data/lib/splash/cli/logs.rb +111 -47
  10. data/lib/splash/cli/process.rb +112 -52
  11. data/lib/splash/cli/sequences.rb +2 -0
  12. data/lib/splash/cli/transfers.rb +213 -0
  13. data/lib/splash/cli/webadmin.rb +3 -3
  14. data/lib/splash/commands.rb +85 -19
  15. data/lib/splash/config.rb +142 -52
  16. data/lib/splash/constants.rb +7 -3
  17. data/lib/splash/daemon/metrics.rb +6 -6
  18. data/lib/splash/daemon/orchestrator.rb +76 -36
  19. data/lib/splash/daemon/orchestrator/grammar.rb +16 -1
  20. data/lib/splash/dependencies.rb +6 -1
  21. data/lib/splash/exiter.rb +1 -1
  22. data/lib/splash/helpers.rb +12 -3
  23. data/lib/splash/loggers/cli.rb +2 -10
  24. data/lib/splash/logs.rb +90 -16
  25. data/lib/splash/processes.rb +87 -16
  26. data/lib/splash/transfers.rb +229 -0
  27. data/lib/splash/webadmin.rb +3 -3
  28. data/lib/splash/webadmin/api/routes/commands.rb +2 -2
  29. data/lib/splash/webadmin/api/routes/config.rb +53 -2
  30. data/lib/splash/webadmin/api/routes/logs.rb +32 -17
  31. data/lib/splash/webadmin/api/routes/process.rb +4 -4
  32. data/lib/splash/webadmin/api/routes/sequences.rb +28 -0
  33. data/lib/splash/webadmin/main.rb +1 -0
  34. data/lib/splash/webadmin/portal/controllers/commands.rb +2 -0
  35. data/lib/splash/webadmin/portal/controllers/documentation.rb +3 -1
  36. data/lib/splash/webadmin/portal/controllers/home.rb +24 -0
  37. data/lib/splash/webadmin/portal/controllers/logs.rb +44 -1
  38. data/lib/splash/webadmin/portal/controllers/processes.rb +2 -0
  39. data/lib/splash/webadmin/portal/controllers/proxy.rb +13 -4
  40. data/lib/splash/webadmin/portal/controllers/restclient.rb +7 -2
  41. data/lib/splash/webadmin/portal/controllers/sequences.rb +9 -0
  42. data/lib/splash/webadmin/portal/init.rb +2 -2
  43. data/lib/splash/webadmin/portal/public/css/ultragreen.css +6 -0
  44. data/lib/splash/webadmin/portal/public/favicon.ico +0 -0
  45. data/lib/splash/webadmin/portal/views/commands.slim +1 -1
  46. data/lib/splash/webadmin/portal/views/documentation.slim +1 -1
  47. data/lib/splash/webadmin/portal/views/home.slim +53 -9
  48. data/lib/splash/webadmin/portal/views/layout.slim +2 -2
  49. data/lib/splash/webadmin/portal/views/logs.slim +68 -21
  50. data/lib/splash/webadmin/portal/views/logs_form.slim +24 -0
  51. data/lib/splash/webadmin/portal/views/nav.slim +1 -1
  52. data/lib/splash/webadmin/portal/views/not_found.slim +1 -1
  53. data/lib/splash/webadmin/portal/views/processes.slim +1 -1
  54. data/lib/splash/webadmin/portal/views/proxy.slim +5 -2
  55. data/lib/splash/webadmin/portal/views/restclient.slim +7 -4
  56. data/lib/splash/webadmin/portal/views/restclient_result.slim +24 -20
  57. data/lib/splash/webadmin/portal/views/sequences.slim +50 -0
  58. data/prometheus-splash.gemspec +7 -4
  59. data/ultragreen_roodi_coding_convention.yml +4 -4
  60. metadata +75 -12
@@ -21,7 +21,7 @@ module Splash
21
21
  # @param [Hash] options
22
22
  # @option options [Symbol] :quiet activate quiet mode for log (limit to :fatal)
23
23
  # @return [Hash] Exiter Case (:quiet_exit, :already_exist, :unknown_error or other)
24
- def startdaemon(options = {})
24
+ def startweb(options = {})
25
25
  require 'splash/webadmin/main'
26
26
  config = get_config
27
27
  log = get_logger
@@ -64,7 +64,7 @@ module Splash
64
64
  # @param [Hash] options
65
65
  # @option options [Symbol] :quiet activate quiet mode for log (limit to :fatal)
66
66
  # @return [Hash] Exiter Case (:quiet_exit, :not_found, other)
67
- def stopdaemon(options = {})
67
+ def stopweb(options = {})
68
68
  config = get_config
69
69
  log = get_logger
70
70
  log.level = :fatal if options[:quiet]
@@ -86,7 +86,7 @@ module Splash
86
86
  # Status of the Splash WebAdmin, display status
87
87
  # @param [Hash] options ignored
88
88
  # @return [Hash] Exiter Case (:status_ko, :status_ok)
89
- def statusdaemon(options = {})
89
+ def statusweb(options = {})
90
90
  log = get_logger
91
91
  config = get_config
92
92
  pid = realpid = ''
@@ -5,7 +5,7 @@
5
5
  WebAdminApp.get '/api/commands/list.?:format?' do
6
6
  log = get_logger
7
7
  format = (params[:format])? format_by_extensions(params[:format]) : format_by_extensions('json')
8
- log.call "api : commands, verb : GET, route : list, format : #{format}"
8
+ log.call "API : commands, verb : GET, route : list, format : #{format}"
9
9
  obj = splash_return case: :quiet_exit, :more => "Commands list"
10
10
  obj[:data] = get_config.commands
11
11
  content_type format
@@ -15,7 +15,7 @@ WebAdminApp.get '/api/commands/list.?:format?' do
15
15
  WebAdminApp.get '/api/commands/show/:name.?:format?' do
16
16
  log = get_logger
17
17
  format = (params[:format])? format_by_extensions(params[:format]) : format_by_extensions('json')
18
- log.call "api : commands, verb : GET, route : show, item : #{params[:name]} , format : #{format}"
18
+ log.call "API : commands, verb : GET, route : show, item : #{params[:name]} , format : #{format}"
19
19
  commands_recordset = get_config.commands[params[:name].to_sym]
20
20
  unless commands_recordset.nil? then
21
21
  obj = splash_return case: :quiet_exit
@@ -1,10 +1,61 @@
1
1
  WebAdminApp.get '/api/config/full.?:format?' do
2
2
  log = get_logger
3
3
  format = (params[:format])? format_by_extensions(params[:format]) : format_by_extensions('json')
4
- log.call "api : config, verb : GET, route : show, format : #{format}"
4
+ log.call "API : config, verb : GET, route : full, format : #{format}"
5
5
  config = get_config.full
6
- obj = splash_return case: :quiet_exit, :more => "logses list"
6
+ obj = splash_return case: :quiet_exit, :more => "Show internal Splash Config"
7
7
  obj[:data] = config
8
8
  content_type format
9
9
  format_response(obj, (params[:format])? format_by_extensions(params[:format]): request.accept.first)
10
10
  end
11
+
12
+ WebAdminApp.get '/api/config/fromfile.?:format?' do
13
+ log = get_logger
14
+ fromfile = {}
15
+ format = (params[:format])? format_by_extensions(params[:format]) : format_by_extensions('json')
16
+ log.call "API : config, verb : GET, route : fromfile, format : #{format}"
17
+ config = get_config.config_from_file
18
+ fromfile = splash_return case: :quiet_exit, :more => "Show config from file"
19
+ fromfile[:data] = config
20
+ content_type format
21
+ format_response(fromfile, (params[:format])? format_by_extensions(params[:format]): request.accept.first)
22
+ end
23
+
24
+
25
+ WebAdminApp.post '/api/config/addlog.?:format?' do
26
+ log = get_logger
27
+ addlog = {}
28
+ format = (params[:format])? format_by_extensions(params[:format]) : format_by_extensions('json')
29
+ log.call "API : config, verb : POST, route : addlog, format : #{format}"
30
+ res = get_config.add_log :record => YAML::load(request.body.read), :type => :logs, :clean => true
31
+ case res[:status]
32
+ when :success
33
+ addlog = splash_return case: :quiet_exit, :more => "add logs"
34
+ when :already_exist
35
+ addlog = splash_return case: :already_exist, :more => "add logs"
36
+ when :failure
37
+ addlog = splash_return case: :configuration_error, :more => "add logs"
38
+ addlog[:data] = res
39
+ end
40
+ content_type format
41
+ format_response(addlog, (params[:format])? format_by_extensions(params[:format]): request.accept.first)
42
+ end
43
+
44
+
45
+ WebAdminApp.delete '/api/config/deletelog/:label.?:format?' do
46
+ log = get_logger
47
+ format = (params[:format])? format_by_extensions(params[:format]) : format_by_extensions('json')
48
+ log.call "API : config, verb : DELETE, route : deletelog, format : #{format}"
49
+ res = get_config.delete_log label: params[:label].to_sym
50
+ deletelog = {}
51
+ case res[:status]
52
+ when :success
53
+ deletelog = splash_return case: :quiet_exit, :more => "delete logs"
54
+ when :not_found
55
+ deletelog = splash_return case: :not_found, :more => "delete logs"
56
+ else
57
+ deletelog = splash_return case: :configuration_error, :more => "delete logs"
58
+ end
59
+ content_type format
60
+ format_response(deletelog, (params[:format])? format_by_extensions(params[:format]): request.accept.first)
61
+ end
@@ -4,56 +4,71 @@
4
4
 
5
5
  WebAdminApp.get '/api/logs/list.?:format?' do
6
6
  log = get_logger
7
+ list = {}
7
8
  format = (params[:format])? format_by_extensions(params[:format]) : format_by_extensions('json')
8
- log.call "api : logs, verb : GET, route : list, format : #{format}"
9
+ log.call "API : logs, verb : GET, route : list, format : #{format}"
9
10
  logs_recordset = get_config.logs
10
- obj = splash_return case: :quiet_exit, :more => "logses list"
11
- obj[:data] = logs_recordset
11
+ list = splash_return case: :quiet_exit, :more => "logs list"
12
+ list[:data] = logs_recordset
12
13
  content_type format
13
- format_response(obj, (params[:format])? format_by_extensions(params[:format]): request.accept.first)
14
+ format_response(list, (params[:format])? format_by_extensions(params[:format]): request.accept.first)
14
15
  end
15
16
 
16
17
  WebAdminApp.get '/api/logs/show/:name.?:format?' do
17
18
  log = get_logger
18
19
  format = (params[:format])? format_by_extensions(params[:format]) : format_by_extensions('json')
19
- log.call "api : logs, verb : GET, route : show, item : #{params[:name]} , format : #{format}"
20
+ log.call "API : logs, verb : GET, route : show, item : #{params[:name]} , format : #{format}"
20
21
  logs_recordset = get_config.logs.select{|item| item[:label] == params[:name].to_sym }
22
+ show = {}
21
23
  unless logs_recordset.empty? then
22
24
  record = logs_recordset.first
23
- obj = splash_return case: :quiet_exit
24
- obj[:data] = record
25
+ show = splash_return case: :quiet_exit
26
+ show[:data] = record
27
+ status 201
25
28
  else
26
- obj = splash_return case: :not_found, :more => "logs not configured"
29
+ show = splash_return case: :not_found, :more => "logs not configured"
27
30
  end
28
- format_response(obj, (params[:format])? format_by_extensions(params[:format]): request.accept.first)
31
+ format_response(show, (params[:format])? format_by_extensions(params[:format]): request.accept.first)
29
32
  end
30
33
 
31
34
  WebAdminApp.post '/api/logs/analyse.?:format?' do
32
35
  log = get_logger
33
36
  format = (params[:format])? format_by_extensions(params[:format]) : format_by_extensions('json')
34
- log.call "api : logs, verb : POST, route : analyse, format : #{format}"
37
+ log.call "API : logs, verb : POST, route : analyse, format : #{format}"
35
38
  results = Splash::Logs::LogScanner::new
36
39
  results.analyse
37
40
  res = results.output
38
- obj = splash_return case: :quiet_exit, :more => "logs analyse report"
39
- obj[:data] = res
41
+ analyse = splash_return case: :quiet_exit, :more => "logs analyse report"
42
+ analyse[:data] = res
40
43
  status 201
41
44
  content_type format
42
- format_response(obj, (params[:format])? format_by_extensions(params[:format]): request.accept.first)
45
+ format_response(analyse, (params[:format])? format_by_extensions(params[:format]): request.accept.first)
43
46
  end
44
47
 
45
48
  WebAdminApp.post '/api/logs/monitor.?:format?' do
46
49
  log = get_logger
47
50
  format = (params[:format])? format_by_extensions(params[:format]) : format_by_extensions('json')
48
- log.call "api : logs, verb : POST, route : monitor, format : #{format}"
51
+ log.call "API : logs, verb : POST, route : monitor, format : #{format}"
49
52
  results = Splash::Logs::LogScanner::new
50
53
  results.analyse
51
- res = splash_return results.notify
52
- if res[:status] == :failure then
54
+ monitor = splash_return results.notify
55
+ if monitor[:status] == :failure then
53
56
  status 503
54
57
  else
55
58
  status 201
56
59
  end
57
60
  content_type format
58
- format_response(res, (params[:format])? format_by_extensions(params[:format]): request.accept.first)
61
+ format_response(monitor, (params[:format])? format_by_extensions(params[:format]): request.accept.first)
62
+ end
63
+
64
+ WebAdminApp.get '/api/logs/history/:label.?:format?' do
65
+ log = get_logger
66
+ format = (params[:format])? format_by_extensions(params[:format]) : format_by_extensions('json')
67
+ log.call "API : logs, verb : GET, route : history, format : #{format}"
68
+ record = Splash::Logs::LogsRecords::new(params[:label]).get_all_records
69
+ history = splash_return case: :quiet_exit, :more => "log monitoring history"
70
+ history[:data] = record
71
+ content_type format
72
+ status 201
73
+ format_response(history, (params[:format])? format_by_extensions(params[:format]): request.accept.first)
59
74
  end
@@ -5,7 +5,7 @@
5
5
  WebAdminApp.get '/api/process/list.?:format?' do
6
6
  log = get_logger
7
7
  format = (params[:format])? format_by_extensions(params[:format]) : format_by_extensions('json')
8
- log.call "api : process, verb : GET, route : list, format : #{format}"
8
+ log.call "API : process, verb : GET, route : list, format : #{format}"
9
9
  process_recordset = get_config.processes
10
10
  obj = splash_return case: :quiet_exit, :more => "Processes list"
11
11
  obj[:data] = process_recordset
@@ -16,7 +16,7 @@ WebAdminApp.get '/api/process/list.?:format?' do
16
16
  WebAdminApp.get '/api/process/show/:name.?:format?' do
17
17
  log = get_logger
18
18
  format = (params[:format])? format_by_extensions(params[:format]) : format_by_extensions('json')
19
- log.call "api : process, verb : GET, route : show, item : #{params[:name]} , format : #{format}"
19
+ log.call "API : process, verb : GET, route : show, item : #{params[:name]} , format : #{format}"
20
20
  process_recordset = get_config.processes.select{|item| item[:process] == params[:name] }
21
21
  unless process_recordset.empty? then
22
22
  record = process_recordset.first
@@ -32,7 +32,7 @@ end
32
32
  WebAdminApp.post '/api/process/analyse.?:format?' do
33
33
  log = get_logger
34
34
  format = (params[:format])? format_by_extensions(params[:format]) : format_by_extensions('json')
35
- log.call "api : process, verb : POST, route : analyse, format : #{format}"
35
+ log.call "API : process, verb : POST, route : analyse, format : #{format}"
36
36
  results = Splash::Processes::ProcessScanner::new
37
37
  results.analyse
38
38
  res = results.output
@@ -46,7 +46,7 @@ end
46
46
  WebAdminApp.post '/api/process/monitor.?:format?' do
47
47
  log = get_logger
48
48
  format = (params[:format])? format_by_extensions(params[:format]) : format_by_extensions('json')
49
- log.call "api : process, verb : POST, route : monitor, format : #{format}"
49
+ log.call "API : process, verb : POST, route : monitor, format : #{format}"
50
50
  results = Splash::Processes::ProcessScanner::new
51
51
  results.analyse
52
52
  res = splash_return results.notify
@@ -0,0 +1,28 @@
1
+
2
+
3
+
4
+
5
+ WebAdminApp.get '/api/sequences/list.?:format?' do
6
+ log = get_logger
7
+ format = (params[:format])? format_by_extensions(params[:format]) : format_by_extensions('json')
8
+ log.call "API : sequences, verb : GET, route : list, format : #{format}"
9
+ obj = splash_return case: :quiet_exit, :more => "Sequences list"
10
+ obj[:data] = get_config.sequences
11
+ content_type format
12
+ format_response(obj, (params[:format])? format_by_extensions(params[:format]): request.accept.first)
13
+ end
14
+
15
+ WebAdminApp.get '/api/sequences/show/:name.?:format?' do
16
+ log = get_logger
17
+ format = (params[:format])? format_by_extensions(params[:format]) : format_by_extensions('json')
18
+ log.call "API : sequences, verb : GET, route : show, item : #{params[:name]} , format : #{format}"
19
+ sequences_recordset = get_config.sequences[params[:name].to_sym]
20
+ unless sequences_recordset.nil? then
21
+ obj = splash_return case: :quiet_exit
22
+ obj[:data] = sequences_recordset
23
+ else
24
+ obj = splash_return case: :not_found, :more => "Sequence not configured"
25
+ end
26
+ content_type format
27
+ format_response(obj, (params[:format])? format_by_extensions(params[:format]): request.accept.first)
28
+ end
@@ -6,6 +6,7 @@ class WebAdminApp < Sinatra::Base
6
6
  include Splash::Helpers
7
7
  include Splash::Exiter
8
8
  include Splash::Loggers
9
+ include Splash::Daemon::Controller
9
10
 
10
11
  set :server, 'thin'
11
12
  set :port, get_config.webadmin_port
@@ -1,5 +1,7 @@
1
1
  WebAdminApp.get '/commands' do
2
2
  get_menu 2
3
+ log = get_logger
4
+ log.call "WEB : commands, verb : GET, controller : /commands"
3
5
  url = "http://#{get_config.webadmin_ip}:#{get_config.webadmin_port}/api/commands/list.yml"
4
6
  raw = RestClient::Request.execute(method: 'GET', url: url,timeout: 10)
5
7
  @data = YAML::load(raw)[:data]
@@ -1,5 +1,7 @@
1
1
  WebAdminApp.get '/documentation' do
2
- get_menu 5
2
+ get_menu 6
3
+ log = get_logger
4
+ log.call "WEB : documentation, verb : GET, controller : /documentation"
3
5
  filename = search_file_in_gem("prometheus-splash","README.md")
4
6
  @data = Kramdown::Document.new(File::readlines(filename).join).to_html
5
7
  slim :documentation, :format => :html
@@ -1,12 +1,36 @@
1
1
  WebAdminApp.get '/' do
2
+ log = get_logger
3
+ log.call "WEB : BASE, verb : GET, controller : /"
2
4
  get_menu -1
3
5
  url = "http://#{get_config.webadmin_ip}:#{get_config.webadmin_port}/api/config/full.yml"
4
6
  @raw = RestClient::Request.execute(method: 'GET', url: url,timeout: 10)
5
7
  @data = YAML::load(@raw)[:data]
8
+ @status = get_processes({ :pattern => get_config.daemon_process_name}).empty?
6
9
  slim :home, :format => :html
7
10
  end
8
11
 
9
12
  WebAdminApp.get '/home' do
10
13
  get_menu 0
14
+ log = get_logger
15
+ log.call "WEB : home, verb : GET, controller : /home"
11
16
  slim :home, :format => :html
12
17
  end
18
+
19
+ WebAdminApp.get '/daemon/:action' do
20
+ content_type :text
21
+ log = get_logger
22
+ log.call "WEB : daemon, verb : GET, controller : /daemon/:action"
23
+ case params[:action]
24
+ when 'start'
25
+ startdaemon scheduling: true, purge: false
26
+ return 'start'
27
+ when 'stop'
28
+ stopdaemon
29
+ return 'stop'
30
+ when 'restart'
31
+ stopdaemon
32
+ startdaemon scheduling: true, purge: false
33
+ return 'start'
34
+ else
35
+ end
36
+ end
@@ -1,5 +1,7 @@
1
- WebAdminApp.get '/logs' do
1
+ WebAdminApp.get '/logs/?:status?/?:label?' do
2
2
  get_menu 0
3
+ log = get_logger
4
+ log.call "WEB : logs, verb : GET, controller : /logs/?:status?/?:label?"
3
5
  url = "http://#{get_config.webadmin_ip}:#{get_config.webadmin_port}/api/logs/list.yml"
4
6
  raw = RestClient::Request.execute(method: 'GET', url: url,timeout: 10)
5
7
  @data = YAML::load(raw)[:data]
@@ -7,8 +9,49 @@ WebAdminApp.get '/logs' do
7
9
  raw = RestClient::Request.execute(method: 'POST', url: url,timeout: 10)
8
10
  prov = YAML::load(raw)[:data]
9
11
  @result = {}
12
+ @log_failed = params[:label] if params[:status] == 'failure'
13
+ @log_saved = params[:label] if params[:status] == 'success'
10
14
  prov.each {|item|
11
15
  @result[item[:label]] = item
12
16
  }
13
17
  slim :logs, :format => :html
14
18
  end
19
+
20
+
21
+ WebAdminApp.get '/add_modify_log/?:label?' do
22
+ get_menu 0
23
+ log = get_logger
24
+ log.call "WEB : logs, verb : POST, controller : /add_modify_log/?:label?"
25
+ @data = {}
26
+ if params[:label] then
27
+ url = "http://#{get_config.webadmin_ip}:#{get_config.webadmin_port}/api/logs/show/#{params[:label].to_s}.yml"
28
+ raw = RestClient::Request.execute(method: 'GET', url: url,timeout: 10)
29
+ res = YAML::load(raw)
30
+ @data = res[:data] if res[:status] == :success
31
+ @data[:old_label] = params[:label].to_s
32
+ end
33
+ slim :logs_form, :format => :html
34
+ end
35
+
36
+
37
+ WebAdminApp.post '/save_log' do
38
+ get_menu 0
39
+ log = get_logger
40
+ log.call "WEB : logs, verb : POST, controller : /save_log/?:label?"
41
+ data = {}
42
+ data[:log] = params[:log]
43
+ data[:pattern] = params[:pattern]
44
+ data[:label] = params[:label].to_sym
45
+ if params[:update] then
46
+ url = "http://#{get_config.webadmin_ip}:#{get_config.webadmin_port}/api/config/deletelog/#{params[:old_label]}"
47
+ raw = RestClient::Request.execute(method: 'DELETE', url: url,timeout: 10)
48
+ end
49
+ url = "http://#{get_config.webadmin_ip}:#{get_config.webadmin_port}/api/config/addlog.yml"
50
+ raw = RestClient::Request.execute(method: 'POST', url: url,timeout: 10, payload: data.to_yaml)
51
+ res = YAML::load(raw)
52
+ if res[:status] == :success then
53
+ redirect "/logs/success/#{params[:label].to_s}"
54
+ else
55
+ redirect "/logs/failure/#{params[:label].to_s}"
56
+ end
57
+ end
@@ -1,5 +1,7 @@
1
1
  WebAdminApp.get '/processes' do
2
2
  get_menu 1
3
+ log = get_logger
4
+ log.call "WEB : processes, verb : GET, controller : /processes"
3
5
  url = "http://#{get_config.webadmin_ip}:#{get_config.webadmin_port}/api/process/list.yml"
4
6
  raw = RestClient::Request.execute(method: 'GET', url: url,timeout: 10)
5
7
  @data = YAML::load(raw)[:data]
@@ -1,27 +1,36 @@
1
1
 
2
2
 
3
3
  WebAdminApp.use Rack::ReverseProxy do
4
- reverse_proxy /^\/pushgateway\/?(.*)$/, get_config.prometheus_pushgateway_url
4
+ reverse_proxy /^\/pushgateway\/?(.*)$/, get_config.prometheus_pushgateway_url + '/'
5
5
  reverse_proxy_options preserve_host: true
6
6
  end
7
7
 
8
8
 
9
9
  WebAdminApp.use Rack::ReverseProxy do
10
- reverse_proxy /^\/prometheus\/?(.*)$/, get_config.prometheus_url
10
+ reverse_proxy /^\/prometheus\/?(.*)$/, get_config.prometheus_url + '/'
11
11
  reverse_proxy_options preserve_host: true
12
12
  end
13
13
 
14
- WebAdminApp.get '/proxy/links' do
15
- get_menu 4
16
14
 
15
+ WebAdminApp.use Rack::ReverseProxy do
16
+ reverse_proxy /^\/alertmanager\/?(.*)$/, get_config.prometheus_alertmanager_url + '/'
17
+ reverse_proxy_options preserve_host: true
18
+ end
19
+
20
+ WebAdminApp.get '/proxy/links' do
21
+ get_menu 5
22
+ log = get_logger
23
+ log.call "WEB : proxy, verb : GET, controller : /proxy/links"
17
24
  config = get_config
18
25
  if config.webadmin_proxy == true then
19
26
  @proxy = true
20
27
  @pushgateway_url = "http://#{config.webadmin_ip}:#{config.webadmin_port}/pushgateway"
21
28
  @prometheus_url = "http://#{config.webadmin_ip}:#{config.webadmin_port}/prometheus"
29
+ @alertmanager_url = "http://#{config.webadmin_ip}:#{config.webadmin_port}/prometheus"
22
30
  else
23
31
  @proxy = false
24
32
  @pushgateway_url = "#{config.prometheus_pushgateway_url}"
33
+ @alertmanager_url = "#{config.prometheus_alertmanager_url}"
25
34
  @prometheus_url = "#{config.prometheus_url}"
26
35
  end
27
36
  slim :proxy, :format => :html
@@ -1,14 +1,19 @@
1
1
  WebAdminApp.get '/restclient' do
2
- get_menu 3
2
+ log = get_logger
3
+ log.call "WEB : restclient, verb : GET, controller : /restclient"
4
+ get_menu 4
3
5
  slim :restclient, :format => :html
4
6
  end
5
7
 
6
8
  WebAdminApp.post '/restclient/query' do
9
+ log = get_logger
10
+ log.call "WEB : processes, verb : GET, controller : /restclient/query"
7
11
  @method = params[:method]
8
12
  @url = params[:url]
13
+ @body = params[:body]
9
14
  @notfound = false
10
15
  begin
11
- @result = RestClient::Request.execute(method: @method.to_sym, url: @url,timeout: 10)
16
+ @result = RestClient::Request.execute(method: @method.to_sym, url: @url,timeout: 10, payload: @body)
12
17
  rescue SocketError
13
18
  @result = false
14
19
  rescue RestClient::NotFound => e