kibana-rack 0.1.0
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.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +1 -0
- data.tar.gz.sig +0 -0
- data/.editorconfig +13 -0
- data/.gitattributes +2 -0
- data/.gitignore +10 -0
- data/.overcommit.yml +11 -0
- data/.rspec +2 -0
- data/.rubocop.yml +24 -0
- data/.simplecov +12 -0
- data/.travis.yml +5 -0
- data/.yardopts +13 -0
- data/CHANGELOG.md +5 -0
- data/CONTRIBUTING.md +105 -0
- data/Gemfile +30 -0
- data/LICENSE.txt +22 -0
- data/README.md +269 -0
- data/Rakefile +27 -0
- data/dashboards/blank.json +32 -0
- data/dashboards/default.json +90 -0
- data/dashboards/guided.json +272 -0
- data/dashboards/logstash.js +138 -0
- data/dashboards/logstash.json +227 -0
- data/dashboards/noted.json +161 -0
- data/examples/dashboards/default.json +90 -0
- data/examples/rack/config.ru +14 -0
- data/examples/rack_basic_auth/config.ru +18 -0
- data/examples/rack_basic_auth/dashboards/default.json +90 -0
- data/examples/rails/app/controllers/application_controller.rb +3 -0
- data/examples/rails/app/helpers/application_helper.rb +2 -0
- data/examples/rails/app/kibana/blank.json +32 -0
- data/examples/rails/app/kibana/default.json +90 -0
- data/examples/rails/app/kibana/guided.json +272 -0
- data/examples/rails/app/kibana/logstash.json +227 -0
- data/examples/rails/app/kibana/noted.json +161 -0
- data/examples/rails/bin/bundle +3 -0
- data/examples/rails/bin/rails +4 -0
- data/examples/rails/bin/rake +4 -0
- data/examples/rails/config.ru +2 -0
- data/examples/rails/config/application.rb +11 -0
- data/examples/rails/config/boot.rb +2 -0
- data/examples/rails/config/environment.rb +2 -0
- data/examples/rails/config/environments/development.rb +7 -0
- data/examples/rails/config/environments/production.rb +11 -0
- data/examples/rails/config/environments/test.rb +11 -0
- data/examples/rails/config/initializers/cookies_serializer.rb +1 -0
- data/examples/rails/config/initializers/filter_parameter_logging.rb +1 -0
- data/examples/rails/config/initializers/kibana.rb +3 -0
- data/examples/rails/config/initializers/session_store.rb +1 -0
- data/examples/rails/config/initializers/wrap_parameters.rb +3 -0
- data/examples/rails/config/routes.rb +3 -0
- data/examples/rails/config/secrets.yml +9 -0
- data/examples/rails/log/.keep +0 -0
- data/examples/sinatra/config.ru +27 -0
- data/examples/sinatra/dashboards/default.json +90 -0
- data/kibana-rack.gemspec +28 -0
- data/lib/kibana/rack.rb +34 -0
- data/lib/kibana/rack/version.rb +5 -0
- data/lib/kibana/rack/web.rb +60 -0
- data/spec/fixtures/dashboards/default.json +90 -0
- data/spec/fixtures/dashboards/templated.json +1 -0
- data/spec/spec_helper.rb +32 -0
- data/spec/unit/kibana/rack/web_spec.rb +69 -0
- data/spec/unit/kibana/rack_spec.rb +4 -0
- data/tabolario.gpg +31 -0
- data/tabolario.pem +21 -0
- data/web/assets/LICENSE.md +13 -0
- data/web/assets/README.md +69 -0
- data/web/assets/app/app.js +24 -0
- data/web/assets/app/components/require.config.js +4 -0
- data/web/assets/app/factories/store.js +4 -0
- data/web/assets/app/panels/bettermap/editor.html +1 -0
- data/web/assets/app/panels/bettermap/leaflet/images/layers-2x.png +0 -0
- data/web/assets/app/panels/bettermap/leaflet/images/layers.png +0 -0
- data/web/assets/app/panels/bettermap/leaflet/images/marker-icon-2x.png +0 -0
- data/web/assets/app/panels/bettermap/leaflet/images/marker-icon.png +0 -0
- data/web/assets/app/panels/bettermap/leaflet/images/marker-shadow.png +0 -0
- data/web/assets/app/panels/bettermap/leaflet/leaflet.css +1 -0
- data/web/assets/app/panels/bettermap/leaflet/leaflet.ie.css +1 -0
- data/web/assets/app/panels/bettermap/leaflet/leaflet.js +7 -0
- data/web/assets/app/panels/bettermap/leaflet/plugins.css +1 -0
- data/web/assets/app/panels/bettermap/leaflet/plugins.js +4 -0
- data/web/assets/app/panels/bettermap/module.css +1 -0
- data/web/assets/app/panels/bettermap/module.html +3 -0
- data/web/assets/app/panels/bettermap/module.js +8 -0
- data/web/assets/app/panels/column/editor.html +1 -0
- data/web/assets/app/panels/column/module.html +1 -0
- data/web/assets/app/panels/column/module.js +4 -0
- data/web/assets/app/panels/column/panelgeneral.html +1 -0
- data/web/assets/app/panels/dashcontrol/editor.html +1 -0
- data/web/assets/app/panels/dashcontrol/module.html +1 -0
- data/web/assets/app/panels/dashcontrol/module.js +4 -0
- data/web/assets/app/panels/derivequeries/editor.html +1 -0
- data/web/assets/app/panels/derivequeries/module.html +1 -0
- data/web/assets/app/panels/derivequeries/module.js +4 -0
- data/web/assets/app/panels/fields/editor.html +1 -0
- data/web/assets/app/panels/fields/micropanel.html +1 -0
- data/web/assets/app/panels/fields/module.html +1 -0
- data/web/assets/app/panels/fields/module.js +4 -0
- data/web/assets/app/panels/filtering/editor.html +1 -0
- data/web/assets/app/panels/filtering/meta.html +3 -0
- data/web/assets/app/panels/filtering/module.html +30 -0
- data/web/assets/app/panels/filtering/module.js +4 -0
- data/web/assets/app/panels/goal/editor.html +1 -0
- data/web/assets/app/panels/goal/module.html +1 -0
- data/web/assets/app/panels/goal/module.js +4 -0
- data/web/assets/app/panels/histogram/editor.html +1 -0
- data/web/assets/app/panels/histogram/module.html +40 -0
- data/web/assets/app/panels/histogram/module.js +5 -0
- data/web/assets/app/panels/histogram/queriesEditor.html +9 -0
- data/web/assets/app/panels/histogram/styleEditor.html +1 -0
- data/web/assets/app/panels/hits/editor.html +1 -0
- data/web/assets/app/panels/hits/module.html +1 -0
- data/web/assets/app/panels/hits/module.js +4 -0
- data/web/assets/app/panels/map/editor.html +1 -0
- data/web/assets/app/panels/map/lib/map.europe.js +4 -0
- data/web/assets/app/panels/map/lib/map.usa.js +4 -0
- data/web/assets/app/panels/map/lib/map.world.js +4 -0
- data/web/assets/app/panels/map/module.html +58 -0
- data/web/assets/app/panels/map/module.js +5 -0
- data/web/assets/app/panels/query/editor.html +1 -0
- data/web/assets/app/panels/query/editors/lucene.html +0 -0
- data/web/assets/app/panels/query/editors/regex.html +0 -0
- data/web/assets/app/panels/query/editors/topN.html +1 -0
- data/web/assets/app/panels/query/help/lucene.html +1 -0
- data/web/assets/app/panels/query/help/regex.html +1 -0
- data/web/assets/app/panels/query/help/topN.html +1 -0
- data/web/assets/app/panels/query/helpModal.html +1 -0
- data/web/assets/app/panels/query/meta.html +3 -0
- data/web/assets/app/panels/query/module.html +1 -0
- data/web/assets/app/panels/query/module.js +4 -0
- data/web/assets/app/panels/query/query.css +1 -0
- data/web/assets/app/panels/sparklines/editor.html +1 -0
- data/web/assets/app/panels/sparklines/module.html +1 -0
- data/web/assets/app/panels/sparklines/module.js +4 -0
- data/web/assets/app/panels/stats/editor.html +1 -0
- data/web/assets/app/panels/stats/module.html +7 -0
- data/web/assets/app/panels/stats/module.js +4 -0
- data/web/assets/app/panels/table/editor.html +1 -0
- data/web/assets/app/panels/table/micropanel.html +3 -0
- data/web/assets/app/panels/table/modal.html +31 -0
- data/web/assets/app/panels/table/module.html +52 -0
- data/web/assets/app/panels/table/module.js +4 -0
- data/web/assets/app/panels/table/pagination.html +1 -0
- data/web/assets/app/panels/terms/editor.html +1 -0
- data/web/assets/app/panels/terms/module.html +24 -0
- data/web/assets/app/panels/terms/module.js +4 -0
- data/web/assets/app/panels/text/editor.html +1 -0
- data/web/assets/app/panels/text/module.html +1 -0
- data/web/assets/app/panels/text/module.js +4 -0
- data/web/assets/app/panels/timepicker/custom.html +31 -0
- data/web/assets/app/panels/timepicker/editor.html +1 -0
- data/web/assets/app/panels/timepicker/module.html +3 -0
- data/web/assets/app/panels/timepicker/module.js +4 -0
- data/web/assets/app/panels/timepicker/refreshctrl.html +1 -0
- data/web/assets/app/panels/trends/editor.html +1 -0
- data/web/assets/app/panels/trends/module.html +9 -0
- data/web/assets/app/panels/trends/module.js +4 -0
- data/web/assets/app/partials/dashLoader.html +3 -0
- data/web/assets/app/partials/dashLoaderShare.html +1 -0
- data/web/assets/app/partials/dashboard.html +1 -0
- data/web/assets/app/partials/dasheditor.html +1 -0
- data/web/assets/app/partials/inspector.html +2 -0
- data/web/assets/app/partials/load.html +1 -0
- data/web/assets/app/partials/modal.html +1 -0
- data/web/assets/app/partials/paneladd.html +1 -0
- data/web/assets/app/partials/paneleditor.html +1 -0
- data/web/assets/app/partials/panelgeneral.html +1 -0
- data/web/assets/app/partials/querySelect.html +9 -0
- data/web/assets/app/partials/roweditor.html +1 -0
- data/web/assets/build.txt +153 -0
- data/web/assets/css/animate.min.css +1 -0
- data/web/assets/css/bootstrap-responsive.min.css +9 -0
- data/web/assets/css/bootstrap.dark.less +6290 -0
- data/web/assets/css/bootstrap.dark.min.css +9 -0
- data/web/assets/css/bootstrap.light.less +6287 -0
- data/web/assets/css/bootstrap.light.min.css +9 -0
- data/web/assets/css/font-awesome.min.css +1 -0
- data/web/assets/css/normalize.min.css +1 -0
- data/web/assets/css/timepicker.css +18 -0
- data/web/assets/favicon.ico +0 -0
- data/web/assets/font/FontAwesome.otf +0 -0
- data/web/assets/font/fontawesome-webfont.eot +0 -0
- data/web/assets/font/fontawesome-webfont.svg +399 -0
- data/web/assets/font/fontawesome-webfont.ttf +0 -0
- data/web/assets/font/fontawesome-webfont.woff +0 -0
- data/web/assets/img/annotation-icon.png +0 -0
- data/web/assets/img/cubes.png +0 -0
- data/web/assets/img/glyphicons-halflings-white.png +0 -0
- data/web/assets/img/glyphicons-halflings.png +0 -0
- data/web/assets/img/kibana.png +0 -0
- data/web/assets/img/light.png +0 -0
- data/web/assets/img/load.gif +0 -0
- data/web/assets/img/load_big.gif +0 -0
- data/web/assets/img/small.png +0 -0
- data/web/assets/index.html +1 -0
- data/web/assets/vendor/LICENSE.json +94 -0
- data/web/assets/vendor/bootstrap/less/tests/buttons.html +139 -0
- data/web/assets/vendor/bootstrap/less/tests/css-tests.css +3 -0
- data/web/assets/vendor/bootstrap/less/tests/css-tests.html +1399 -0
- data/web/assets/vendor/bootstrap/less/tests/forms-responsive.html +71 -0
- data/web/assets/vendor/bootstrap/less/tests/forms.html +179 -0
- data/web/assets/vendor/bootstrap/less/tests/navbar-fixed-top.html +104 -0
- data/web/assets/vendor/bootstrap/less/tests/navbar-static-top.html +107 -0
- data/web/assets/vendor/bootstrap/less/tests/navbar.html +107 -0
- data/web/assets/vendor/require/css-build.js +4 -0
- data/web/assets/vendor/require/require.js +4 -0
- data/web/assets/vendor/require/tmpl.js +4 -0
- data/web/assets/vendor/timezone.js +4 -0
- data/web/views/config.erb +80 -0
- data/web/views/index.erb +56 -0
- metadata +336 -0
- metadata.gz.sig +3 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: c84229a0b4a7242afe5be57e2f6f1d2cc4ea87ed
|
|
4
|
+
data.tar.gz: a16c4495954ff43258e0a0af39219d1de082cfe8
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: d3a4c177193bfb9d395b76d813872e9395789ca2b1fde6d265f3d516e1871d0413de59c51df0a6cee072e2b9314f70474ab6abf54b34d0cb2e4bcaf50d409f93
|
|
7
|
+
data.tar.gz: 7bc37e75f0a1a97187e9e8b742494d545bdd66381306f00e3035f10ae025abccaba1d5622d722586397c020f9c73a75229801c9e4fa90aa5092799c2b23ca209
|
checksums.yaml.gz.sig
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
q�H1>��k����G�'�M�T��i�>�9���M\Z��q�V�o�ǵM4$2���믃9�
|
data.tar.gz.sig
ADDED
|
Binary file
|
data/.editorconfig
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# See http://editorconfig.org/ for more information.
|
|
2
|
+
root = true
|
|
3
|
+
|
|
4
|
+
[*]
|
|
5
|
+
indent_style = space
|
|
6
|
+
indent_size = 2
|
|
7
|
+
end_of_line = lf
|
|
8
|
+
charset = utf-8
|
|
9
|
+
trim_trailing_whitespace = true
|
|
10
|
+
insert_final_newline = true
|
|
11
|
+
|
|
12
|
+
[*.md]
|
|
13
|
+
trim_trailing_whitespace = false
|
data/.gitattributes
ADDED
data/.gitignore
ADDED
data/.overcommit.yml
ADDED
data/.rspec
ADDED
data/.rubocop.yml
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
AllCops:
|
|
3
|
+
Include:
|
|
4
|
+
- '**/*.gemspec'
|
|
5
|
+
- '**/config.ru'
|
|
6
|
+
- '**/Gemfile'
|
|
7
|
+
- '**/Rakefile'
|
|
8
|
+
Exclude:
|
|
9
|
+
- '.bundle/**/*'
|
|
10
|
+
- 'tmp/**/*'
|
|
11
|
+
- 'vendor/**/*'
|
|
12
|
+
|
|
13
|
+
# Handled via inch.
|
|
14
|
+
Style/Documentation:
|
|
15
|
+
Enabled: false
|
|
16
|
+
|
|
17
|
+
Style/FileName:
|
|
18
|
+
Exclude:
|
|
19
|
+
- !ruby/regexp /(\d+)-(\w+)\.rb$/
|
|
20
|
+
- Gemfile
|
|
21
|
+
- Rakefile
|
|
22
|
+
|
|
23
|
+
Style/LineLength:
|
|
24
|
+
Max: 120
|
data/.simplecov
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require 'coveralls'
|
|
2
|
+
|
|
3
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
|
4
|
+
SimpleCov::Formatter::HTMLFormatter,
|
|
5
|
+
Coveralls::SimpleCov::Formatter
|
|
6
|
+
]
|
|
7
|
+
SimpleCov.start do
|
|
8
|
+
SimpleCov.minimum_coverage 95
|
|
9
|
+
|
|
10
|
+
add_filter '.bundle'
|
|
11
|
+
add_filter 'spec'
|
|
12
|
+
end
|
data/.travis.yml
ADDED
data/.yardopts
ADDED
data/CHANGELOG.md
ADDED
data/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Contributing to kibana-rack
|
|
2
|
+
|
|
3
|
+
Thank you for interest in contributing to kibana-rack!
|
|
4
|
+
|
|
5
|
+
kibana-rack uses GitHub issues for discussion, issues, and contributions. There are two main ways to contribute to kibana-rack:
|
|
6
|
+
|
|
7
|
+
One of the goals of kibana-rack is to make it easy for the community to contribute changes. To that end, here are detailed guidelines on how to contribute to kibana-rack.
|
|
8
|
+
|
|
9
|
+
* Report an issue or make a feature request at kibana-rack's [issue tracker](https://github.com/tabolario/kibana-rack/issues)
|
|
10
|
+
* Contribute features and fix bugs yourself by contributing code to kibana-rack (see below).
|
|
11
|
+
|
|
12
|
+
## Issues
|
|
13
|
+
|
|
14
|
+
Issue tracking for kibana-rack happens on GitHub Issues. If you've found a bug or have a feature that you'd like to see implemented, please report it on the issue tracker. [Discussion-only issues](#discussions) are also welcome.
|
|
15
|
+
|
|
16
|
+
### Bug reports
|
|
17
|
+
|
|
18
|
+
To minimize the time spent by maintainers in diagnosing and fixing bugs, please use the following template when filing a bug report:
|
|
19
|
+
|
|
20
|
+
```markdown
|
|
21
|
+
### Version
|
|
22
|
+
|
|
23
|
+
[Version of kibana-rack installed, or commit SHA if installed from Git]
|
|
24
|
+
|
|
25
|
+
### Environment
|
|
26
|
+
|
|
27
|
+
Operating system: [Your operating system and version, (e.g. Mac OS X 10.9)
|
|
28
|
+
Ruby version: [Version of Ruby installed (run `ruby --version`)
|
|
29
|
+
Rails version: [Version of Rails installed if mounting kibana-rack in a Rails application (run `bundle show rails`)]
|
|
30
|
+
Sinatra version: [Version of Sinatra installed if mounting kibana-rack in a Sinatra application (run `bundle show sinatra`)]
|
|
31
|
+
|
|
32
|
+
[Include any other information about your environment that might be helpful]
|
|
33
|
+
|
|
34
|
+
### Scenario
|
|
35
|
+
|
|
36
|
+
[What are you attempting to do that isn't working?]
|
|
37
|
+
|
|
38
|
+
### Steps to reproduce
|
|
39
|
+
|
|
40
|
+
[What are the things we need to do in order to reproduce the problem?]
|
|
41
|
+
|
|
42
|
+
### Expected result:
|
|
43
|
+
|
|
44
|
+
[What are you expecting to happen when the above steps to reproduce are performed?]
|
|
45
|
+
|
|
46
|
+
### Actual result:
|
|
47
|
+
|
|
48
|
+
[What actually happens when the above steps to reproduce are performed?]
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Security issues
|
|
52
|
+
|
|
53
|
+
If you have discovered an issue with kibana-rack of a sensitive nature that could compromise the security of kibana-rack users, **please report it securely by sending a GPG-encrypted message instead of filing an issue on GitHub**. Please use the following key and send your report to [tony@tabolario.com](mailto:tony@tabolario.com).
|
|
54
|
+
|
|
55
|
+
[https://raw.github.com/tabolario/kibana-rack/tabolario.gpg](https://raw.github.com/tabolario/kibana-rack/tabolario.gpg)
|
|
56
|
+
|
|
57
|
+
The fingerprint of the key should be:
|
|
58
|
+
|
|
59
|
+
6EED 2359 968F 7734 06A4 AB56 D90E 487A 60F1 0579
|
|
60
|
+
|
|
61
|
+
### Discussions
|
|
62
|
+
|
|
63
|
+
Issues to discuss the architecture, design, and functionality of kibana-rack are welcome on the issue tracker, and this is where these discussions are preferred so that we can track them and associate them with issues if necessary.
|
|
64
|
+
|
|
65
|
+
## Pull requests
|
|
66
|
+
|
|
67
|
+
### Getting started
|
|
68
|
+
|
|
69
|
+
* [Fork](https://github.com/tabolario/kibana-rack/fork) the repository on GitHub.
|
|
70
|
+
* Install development dependencies: `bundle`
|
|
71
|
+
* Install the pre-commit hook: `bundle exec rake overcommit --install`
|
|
72
|
+
* Make sure the existing test suite runs for you: `bundle exec rake`
|
|
73
|
+
|
|
74
|
+
### Making changes
|
|
75
|
+
|
|
76
|
+
* Create a topic branch for your work.
|
|
77
|
+
- Prefer to target `master` for new topic branches (`git checkout -b feature/my-new-feature master`).
|
|
78
|
+
- Only target release branches if your change *must* be for that release.
|
|
79
|
+
- Avoid working directly on the `master` branch.
|
|
80
|
+
* Make atomic commits of logical units.
|
|
81
|
+
* Check to make sure your changes adhere to the project style guide and linter configuration with `bundle exec rake lint`. (This is done automatically if you have the pre-commit hook installed.)
|
|
82
|
+
* Write unit and integration tests as necessary for your changes. **Pull requests will not be accepted for non-trivial changes without tests.**
|
|
83
|
+
* Ensure that the entire test suite passes with `bundle exec rake spec`.
|
|
84
|
+
* Create a pull request on GitHub for your contribution.
|
|
85
|
+
* Check [Travis CI](https://travis-ci.org/tabolario/kibana-rack/pull_requests) for your pull request. **Only green pull requests will be merged.**
|
|
86
|
+
|
|
87
|
+
### Trivial changes
|
|
88
|
+
|
|
89
|
+
Certain types of changes do not need to undergo the same process as changes involving the functionality of kibana-rack (e.g. running tests and static analysis tools). These types of changes include:
|
|
90
|
+
|
|
91
|
+
* Changes to "root documentation" like `README.md`, `CHANGELOG.md`, and this document
|
|
92
|
+
* Changes to build scripts, and other development configuration files
|
|
93
|
+
* Comment cleanup
|
|
94
|
+
* Formatting cleanup
|
|
95
|
+
* Spelling/grammar fixes
|
|
96
|
+
* Typo corrections
|
|
97
|
+
|
|
98
|
+
Trivial changes **do** need to pass the Ruby linter (`bundle exec rake lint:ruby`) if they make changes to any Ruby code.
|
|
99
|
+
|
|
100
|
+
## Getting help
|
|
101
|
+
|
|
102
|
+
A number of support channels are available for getting help with kibana-rack:
|
|
103
|
+
|
|
104
|
+
* Email: [tony@tabolario.com](mailto:tony@tabolario.com)
|
|
105
|
+
* Twitter: [@tabolario](https://twitter.com/tabolario)
|
data/Gemfile
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
|
|
3
|
+
gemspec
|
|
4
|
+
|
|
5
|
+
group :development do
|
|
6
|
+
gem 'overcommit', '~> 0.16'
|
|
7
|
+
gem 'rails', '~> 4.1'
|
|
8
|
+
gem 'rake', '~> 10.3'
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
group :lint do
|
|
12
|
+
gem 'inch', '~> 0.4'
|
|
13
|
+
gem 'rubocop', '~> 0.24'
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
group :test do
|
|
17
|
+
gem 'coveralls', '~> 0.7', require: false
|
|
18
|
+
gem 'rspec', '~> 3.0'
|
|
19
|
+
gem 'webmock', '~> 1.18', require: false
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
group :debugger do
|
|
23
|
+
gem 'pry-byebug', '~> 1.3'
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
group :docs do
|
|
27
|
+
gem 'github-markup', '~> 1.2'
|
|
28
|
+
gem 'redcarpet', '~> 3.1'
|
|
29
|
+
gem 'yard', github: 'lsegal/yard'
|
|
30
|
+
end
|
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Copyright (c) 2014 Tony Burns
|
|
2
|
+
|
|
3
|
+
MIT License
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
+
a copy of this software and associated documentation files (the
|
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
+
the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be
|
|
14
|
+
included in all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
# kibana-rack [](http://www.elasticsearch.org/overview/kibana/)
|
|
2
|
+
|
|
3
|
+
[](https://rubygems.org/gems/kibana-rack)
|
|
4
|
+
[](https://gemnasium.com/tabolario/kibana-rack)
|
|
5
|
+
[](https://travis-ci.org/tabolario/kibana-rack)
|
|
6
|
+
[](https://codeclimate.com/github/tabolario/kibana-rack)
|
|
7
|
+
[](https://coveralls.io/r/tabolario/kibana-rack?branch=master)
|
|
8
|
+
[](http://inch-ci.org/github/tabolario/kibana-rack)
|
|
9
|
+
|
|
10
|
+
Embed [Kibana](http://www.elasticsearch.org/overview/kibana/) as a [Rack](http://rack.github.io/) application.
|
|
11
|
+
|
|
12
|
+
Kibana is a beautiful and powerful dashboard built on top of [Elasticsearch](http://www.elasticsearch.org/). It's great for viewing logs indexed by tools like [logstash](http://logstash.net/) and exploring data on Elasticsearch in general.
|
|
13
|
+
|
|
14
|
+
kibana-rack tracks the latest version of Kibana (currently 3.1.0) and embeds it directly in your application, along with a proxy for the Elasticsearch API endpoints that Kibana needs.
|
|
15
|
+
|
|
16
|
+
Kibana dashboards can be created using ERB-processed JSON files in the directory specified by your kibana-rack configuration.
|
|
17
|
+
|
|
18
|
+
## Requirements
|
|
19
|
+
|
|
20
|
+
* Ruby 2.1+ (kibana-rack is developed and tested with Ruby 2.1.2)
|
|
21
|
+
|
|
22
|
+
## Installation
|
|
23
|
+
|
|
24
|
+
Add this line to your application's Gemfile:
|
|
25
|
+
|
|
26
|
+
gem 'kibana-rack', '~> 0.1.0'
|
|
27
|
+
|
|
28
|
+
And then execute:
|
|
29
|
+
|
|
30
|
+
$ bundle
|
|
31
|
+
|
|
32
|
+
### Rails
|
|
33
|
+
|
|
34
|
+
**Note: kibana-rails is coming soon!**
|
|
35
|
+
|
|
36
|
+
Create an initializer at `config/initializers/kibana.rb` to configure kibana-rack:
|
|
37
|
+
|
|
38
|
+
```ruby
|
|
39
|
+
Kibana.configure do |config|
|
|
40
|
+
config.elasticsearch_host = 'localhost'
|
|
41
|
+
config.elasticsearch_port = 9200
|
|
42
|
+
config.kibana_dashboards_path = Rails.root.join('app/kibana')
|
|
43
|
+
config.kibana_default_route = '/dashboard/file/default.json'
|
|
44
|
+
config.kibana_index = 'kibana-int'
|
|
45
|
+
end
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Modify `config/routes.rb`:
|
|
49
|
+
|
|
50
|
+
```ruby
|
|
51
|
+
Rails.application.routes.draw do
|
|
52
|
+
mount Kibana::Rack::Web => '/kibana'
|
|
53
|
+
end
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Sinatra and other Rack applications
|
|
57
|
+
|
|
58
|
+
Configure kibana-rack:
|
|
59
|
+
|
|
60
|
+
```ruby
|
|
61
|
+
Kibana.configure do |config|
|
|
62
|
+
config.elasticsearch_host = 'localhost'
|
|
63
|
+
config.elasticsearch_port = 9200
|
|
64
|
+
config.kibana_dashboards_path = File.expand_path('../path/to/dashboards', __FILE__)
|
|
65
|
+
config.kibana_default_route = '/dashboard/file/default.json'
|
|
66
|
+
config.kibana_index = 'kibana-int'
|
|
67
|
+
end
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Mount kibana-rack with [Rack::Builder](http://rubydoc.info/github/rack/rack/master/Rack/Builder):
|
|
71
|
+
|
|
72
|
+
```ruby
|
|
73
|
+
class MyRackApplication < Sinatra::Base
|
|
74
|
+
...
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
app = Rack::Builder.new do
|
|
78
|
+
map('/kibana') { use Kibana::Rack::Web }
|
|
79
|
+
run MyRackApplication
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
run app
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Usage
|
|
86
|
+
|
|
87
|
+
See the [Kibana documentation](http://www.elasticsearch.org/guide/en/kibana/current/index.html) for information on how to use Kibana.
|
|
88
|
+
|
|
89
|
+
## Configuration
|
|
90
|
+
|
|
91
|
+
kibana-rack is configured by default to serve the dashboards that come in the gem (see the [dashboards](https://github.com/tabolario/kibana-rack/tree/master/dashboards) directory), and proxy to Elasticsearch on `localhost:9200`. It is recommended that you maintain your own dashboards directory inside of the application that kibana-rack is mounted in. Production deployments will also most likely need to configure the address of Elasticsearch.
|
|
92
|
+
|
|
93
|
+
The following settings are available as accessors on the object yielded to from `Kibana.configure`:
|
|
94
|
+
|
|
95
|
+
```ruby
|
|
96
|
+
Kibana.configure do |config|
|
|
97
|
+
config.elasticsearch_host = '10.0.8.9'
|
|
98
|
+
...
|
|
99
|
+
end
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
| Name | Description |
|
|
103
|
+
| ------------------------ | ----------------------------------------------------------------------------------------------- |
|
|
104
|
+
| `elasticsearch_host` | The host of the Elasticsearch instance to proxy to. Default: `localhost` |
|
|
105
|
+
| `elasticsearch_port` | The port of the Elasticsearch instance to proxy to. Default: `9200` |
|
|
106
|
+
| `kibana_dashboards_path` | The directory to look for dashboards in. Default: `dashboards` directory inside of kibana-rack |
|
|
107
|
+
| `kibana_default_route` | The default path that Kibana will load. Default: `/dashboard/file/default.json` |
|
|
108
|
+
| `kibana_index` | The name of the Elasticsearch index Kibana will use for internal storage. Default: `kibana-int` |
|
|
109
|
+
|
|
110
|
+
## Securing the `/kibana` endpoint
|
|
111
|
+
|
|
112
|
+
Kibana is very useful to have in production for things like searching logs and exploring Elasticsearch indexes. When using kibana-rack in a production environment, be sure to secure it from unauthorized access.
|
|
113
|
+
|
|
114
|
+
### Devise
|
|
115
|
+
|
|
116
|
+
In `config/routes.rb`:
|
|
117
|
+
|
|
118
|
+
```ruby
|
|
119
|
+
authenticate :user do
|
|
120
|
+
mount Kibana::Rack::Web => '/kibana'
|
|
121
|
+
end
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Or authenticate only if `User#admin?` returns true for `current_user`:
|
|
125
|
+
|
|
126
|
+
```ruby
|
|
127
|
+
authenticate :user, ->(user) { user.admin? } do
|
|
128
|
+
mount Kibana::Rack::Web => '/kibana'
|
|
129
|
+
end
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Rack with HTTP basic authentication
|
|
133
|
+
|
|
134
|
+
```ruby
|
|
135
|
+
require 'kibana/rack'
|
|
136
|
+
|
|
137
|
+
map '/kibana' do
|
|
138
|
+
use Rack::Auth::Basic, 'Restricted Access' do |username, password|
|
|
139
|
+
username == 'kibana' && password == 'kibana'
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
run Kibana::Rack::Web
|
|
143
|
+
end
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Documentation
|
|
147
|
+
|
|
148
|
+
See the [examples](https://github.com/tabolario/kibana-rack/tree/master/examples) directory for installation and configuration examples.
|
|
149
|
+
|
|
150
|
+
See the [YARD documentation](http://rdoc.info/github/tabolario/kibana-rack) for the latest API documentation.
|
|
151
|
+
|
|
152
|
+
Generate local documentation with YARD (output to the `doc` directory):
|
|
153
|
+
|
|
154
|
+
$ bundle exec rake yard
|
|
155
|
+
|
|
156
|
+
## Support
|
|
157
|
+
|
|
158
|
+
* [GitHub Issues](https://github.com/tabolario/kibana-rack/issues)
|
|
159
|
+
* Email: [tony@tabolario.com](mailto:tony@tabolario.com)
|
|
160
|
+
* Twitter: [@tabolario](https://twitter.com/tabolario)
|
|
161
|
+
|
|
162
|
+
## Development and testing
|
|
163
|
+
|
|
164
|
+
kibana-rack follows the [Ruby Style Guide](https://github.com/bbatsov/ruby-style-guide) for style conventions, with a few exceptions. See [.rubocop.yml](https://github.com/tabolario/kibana-rack/blob/master/.rubocop.yml) for the details.
|
|
165
|
+
|
|
166
|
+
Run linters ([RuboCop](https://github.com/bbatsov/rubocop) and [Inch](https://github.com/rrrene/inch)):
|
|
167
|
+
|
|
168
|
+
$ bundle exec rake lint
|
|
169
|
+
|
|
170
|
+
Run tests:
|
|
171
|
+
|
|
172
|
+
$ bundle exec rake spec
|
|
173
|
+
|
|
174
|
+
Install pre-commit hooks for [overcommit](https://github.com/causes/overcommit) (configuration is in [.overcommit.yml](https://github.com/tabolario/kibana-rack/blob/master/.overcommit.yml)):
|
|
175
|
+
|
|
176
|
+
$ gem install overcommit
|
|
177
|
+
$ overcommit --install
|
|
178
|
+
|
|
179
|
+
## Security
|
|
180
|
+
|
|
181
|
+
### Installation
|
|
182
|
+
|
|
183
|
+
kibana-rack is cryptographically signed. To be sure the gem you install hasn't been tampered with, add my public key (if you haven't already) as a trusted certificate:
|
|
184
|
+
|
|
185
|
+
$ gem cert --add <(curl -Ls https://raw.github.com/tabolario/kibana-rack/master/tabolario.pem)
|
|
186
|
+
|
|
187
|
+
Installing the gem with the MediumSecurity trust profile will verify all signed gems, but allow the installation of unsigned dependencies:
|
|
188
|
+
|
|
189
|
+
$ gem install kibana-rack -P MediumSecurity
|
|
190
|
+
|
|
191
|
+
You can also set the trust file for Bundler:
|
|
192
|
+
|
|
193
|
+
$ bundle --trust-policy MediumSecurity
|
|
194
|
+
|
|
195
|
+
Using the MediumSecurity policy is often necessary because not all of your dependencies may not be signed, so HighSecurity is not an option.
|
|
196
|
+
|
|
197
|
+
### Reporting Security Issues
|
|
198
|
+
|
|
199
|
+
If you have discovered an issue with kibana-rack of a sensitive nature that could compromise the security of kibana-rack users, **please report it securely by sending a GPG-encrypted message instead of filing an issue on GitHub**. Please use the following key and send your report to [tony@tabolario.com](mailto:tony@tabolario.com).
|
|
200
|
+
|
|
201
|
+
[https://raw.github.com/tabolario/kibana-rack/tabolario.gpg](https://raw.github.com/tabolario/kibana-rack/tabolario.gpg)
|
|
202
|
+
|
|
203
|
+
The fingerprint of the key should be:
|
|
204
|
+
|
|
205
|
+
6EED 2359 968F 7734 06A4 AB56 D90E 487A 60F1 0579
|
|
206
|
+
|
|
207
|
+
## Contributing
|
|
208
|
+
|
|
209
|
+
See [CONTRIBUTING.md](https://github.com/tabolario/kibana-rack/blob/master/CONTRIBUTING.md) for full information on how to contribute to kibana-rack.
|
|
210
|
+
|
|
211
|
+
## Release process
|
|
212
|
+
|
|
213
|
+
kibana-rack follows [Semver 2.0.0](http://semver.org/spec/v2.0.0.html) for release versioning. The version number components X.Y.Z have the following meanings:
|
|
214
|
+
|
|
215
|
+
* X for **Major** releases that may contain backwards-incompatible changes.
|
|
216
|
+
* Y for **Minor** releases that may contain features, bug fixes, and backwards-compatible changes.
|
|
217
|
+
* Z for **Patch** releases that only contain bug fixes and trivial changes.
|
|
218
|
+
|
|
219
|
+
**Pre-release** versions like `X.Y.Z.alpha.0` and `X.Y.Z.beta.1` will be made before **Major**, and **Minor** versions. Pre-release versions are well-tested, but not as thoroughly as the versions that they precede.
|
|
220
|
+
|
|
221
|
+
Whenever a new version is made, it will be tagged as a release on [GitHub Releases](https://github.com/tabolario/kibana-rack/releases) and pushed to [RubyGems](https://rubygems.org/gems/kibana-rack). Entries in [CHANGELOG.md](https://github.com/tabolario/kibana-rack/blob/master/CHANGELOG.md) will be made incrementally up to the release. An announcement will also be made on Twitter.
|
|
222
|
+
|
|
223
|
+
When a new **Major** version is made, a corresponding branch will be created named `X-0-0` for further **Minor** and **Patch** releases on that version.
|
|
224
|
+
|
|
225
|
+
## Todo
|
|
226
|
+
|
|
227
|
+
* kibana-rails gem for easy integration with Ruby on Rails applications
|
|
228
|
+
* A Ruby DSL for defining dashboards
|
|
229
|
+
* Example dashboards for common use cases
|
|
230
|
+
|
|
231
|
+
## License
|
|
232
|
+
|
|
233
|
+
### kibana-rack
|
|
234
|
+
|
|
235
|
+
| | |
|
|
236
|
+
| ------------- | ------------------------------------------------------------------------- |
|
|
237
|
+
| **Author** | Tony Burns <[tony@tabolario.com](mailto:tony@tabolario.com)> |
|
|
238
|
+
| **Copyright** | Copyright (c) 2014 Tony Burns |
|
|
239
|
+
| **License** | [MIT License](http://opensource.org/licenses/MIT) |
|
|
240
|
+
|
|
241
|
+
```text
|
|
242
|
+
MIT License
|
|
243
|
+
|
|
244
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
245
|
+
a copy of this software and associated documentation files (the
|
|
246
|
+
"Software"), to deal in the Software without restriction, including
|
|
247
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
248
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
249
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
250
|
+
the following conditions:
|
|
251
|
+
|
|
252
|
+
The above copyright notice and this permission notice shall be
|
|
253
|
+
included in all copies or substantial portions of the Software.
|
|
254
|
+
|
|
255
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
256
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
257
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
258
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
259
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
260
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
261
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Kibana
|
|
265
|
+
|
|
266
|
+
| | |
|
|
267
|
+
| ------------- | ------------------------------------------------------------------------- |
|
|
268
|
+
| **Copyright** | Copyright 2012-2013 Elasticsearch BV |
|
|
269
|
+
| **License** | [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|