Module: KibanaUrl

Includes:
Contracts::Builtin, Contracts::Core
Defined in:
lib/kibana_url.rb

Overview

Constructs URLs for Kibana queries.

Defined Under Namespace

Classes: NotConfiguredError

Constant Summary collapse

STANDARD_PATH =

stuff after the base URL

'#/discover'
SORT_MODES =

possible sort modes

%i[asc desc].freeze
TIME_SCOPE_MODES =

possible time scoping modes

%i[relative absolute].freeze

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configObject

Returns the value of attribute config.



34
35
36
# File 'lib/kibana_url.rb', line 34

def config
  @config
end

Class Method Details

.configure {|config| ... } ⇒ Object

Yields:



36
37
38
39
# File 'lib/kibana_url.rb', line 36

def configure
  self.config ||= {}
  yield config
end

.generate(log_spout: config&.[](:index_patterns)&.keys&.first, columns: ['_source'], query: '*', sort: { log_param_name: 'time', mode: :desc }, refresh_interval: nil, time_scope: { mode: :relative }) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/kibana_url.rb', line 68

def generate(
  log_spout: config&.[](:index_patterns)&.keys&.first,
  columns: ['_source'],
  query: '*',
  sort: { log_param_name: 'time', mode: :desc },
  refresh_interval: nil,
  time_scope: { mode: :relative }
)
  if config.nil? ||
     config[:index_patterns].empty? || config[:kibana_base_url].empty?
    raise NotConfiguredError
  end

  # There are two params in Kibana URLs.
  # Each have multiple arguments comma separated.
  a_params = []
  a_params << columns_param(columns)
  a_params << spout_param(log_spout)
  a_params << interval_param
  a_params << query_param(query)
  a_params << sort_param(sort)
  a_params_str = a_params.compact.join(',') # comma delimit params

  g_params = []
  g_params << refresh_interval_param(refresh_interval)
  g_params << time_scope_param(time_scope)
  g_params_str = g_params.compact.join(',') # comma delimit params

  "#{config[:kibana_base_url]}#{STANDARD_PATH}?" \
    "_g=(#{g_params_str})&_a=(#{a_params_str})"
end