fluentd-ui 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.
Potentially problematic release.
This version of fluentd-ui might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/.bowerrc +3 -0
- data/.gitignore +31 -0
- data/.rspec +1 -0
- data/ChangeLog +3 -0
- data/Gemfile +21 -0
- data/Gemfile.lock +247 -0
- data/Gemfile.production +3 -0
- data/README.md +53 -0
- data/Rakefile +8 -0
- data/app/assets/images/.keep +0 -0
- data/app/assets/javascripts/alert.js +51 -0
- data/app/assets/javascripts/application.js +22 -0
- data/app/assets/javascripts/nested_setting.js +41 -0
- data/app/assets/javascripts/setting_format.js +15 -0
- data/app/assets/javascripts/tutorial.js +58 -0
- data/app/assets/javascripts/vue/fluent_log.js +64 -0
- data/app/assets/javascripts/vue/in_tail_format.js +153 -0
- data/app/assets/javascripts/vue/treeview.js +97 -0
- data/app/assets/javascripts/vue_common.js +4 -0
- data/app/assets/stylesheets/application.css +18 -0
- data/app/assets/stylesheets/common.css.scss +152 -0
- data/app/controllers/api_controller.rb +37 -0
- data/app/controllers/application_controller.rb +110 -0
- data/app/controllers/concerns/.keep +0 -0
- data/app/controllers/fluentd/agents_controller.rb +35 -0
- data/app/controllers/fluentd/settings/in_syslog_controller.rb +34 -0
- data/app/controllers/fluentd/settings/in_tail_controller.rb +57 -0
- data/app/controllers/fluentd/settings/out_forward_controller.rb +42 -0
- data/app/controllers/fluentd/settings/out_mongo_controller.rb +36 -0
- data/app/controllers/fluentd/settings/out_s3_controller.rb +36 -0
- data/app/controllers/fluentd/settings/out_td_controller.rb +36 -0
- data/app/controllers/fluentd/settings_controller.rb +18 -0
- data/app/controllers/fluentd_controller.rb +62 -0
- data/app/controllers/misc_controller.rb +69 -0
- data/app/controllers/plugins_controller.rb +44 -0
- data/app/controllers/polling_controller.rb +20 -0
- data/app/controllers/sessions_controller.rb +45 -0
- data/app/controllers/tutorials_controller.rb +40 -0
- data/app/controllers/users_controller.rb +28 -0
- data/app/controllers/welcome_controller.rb +5 -0
- data/app/helpers/application_helper.rb +55 -0
- data/app/helpers/fluentd/settings_helper.rb +2 -0
- data/app/helpers/miscs_helper.rb +2 -0
- data/app/helpers/settings_helper.rb +43 -0
- data/app/mailers/.keep +0 -0
- data/app/models/.keep +0 -0
- data/app/models/concerns/.keep +0 -0
- data/app/models/fluentd.rb +178 -0
- data/app/models/fluentd/agent.rb +28 -0
- data/app/models/fluentd/agent/common.rb +76 -0
- data/app/models/fluentd/agent/configuration.rb +35 -0
- data/app/models/fluentd/agent/fluentd_gem.rb +104 -0
- data/app/models/fluentd/agent/local_common.rb +101 -0
- data/app/models/fluentd/agent/remote.rb +7 -0
- data/app/models/fluentd/agent/td_agent.rb +44 -0
- data/app/models/fluentd/api.rb +6 -0
- data/app/models/fluentd/api/http.rb +26 -0
- data/app/models/fluentd/setting.rb +4 -0
- data/app/models/fluentd/setting/common.rb +185 -0
- data/app/models/fluentd/setting/in_syslog.rb +16 -0
- data/app/models/fluentd/setting/in_tail.rb +107 -0
- data/app/models/fluentd/setting/out_forward.rb +70 -0
- data/app/models/fluentd/setting/out_mongo.rb +35 -0
- data/app/models/fluentd/setting/out_s3.rb +29 -0
- data/app/models/fluentd/setting/out_td.rb +26 -0
- data/app/models/plugin.rb +193 -0
- data/app/models/settings.rb +4 -0
- data/app/models/user.rb +52 -0
- data/app/views/fluentd/_form.html.haml +31 -0
- data/app/views/fluentd/edit.html.haml +3 -0
- data/app/views/fluentd/errors.html.haml +19 -0
- data/app/views/fluentd/log.html.haml +9 -0
- data/app/views/fluentd/new.html.haml +3 -0
- data/app/views/fluentd/settings/_form.html.haml +43 -0
- data/app/views/fluentd/settings/edit.html.haml +7 -0
- data/app/views/fluentd/settings/in_syslog/_form.html.haml +9 -0
- data/app/views/fluentd/settings/in_syslog/show.html.haml +6 -0
- data/app/views/fluentd/settings/in_tail/_form.html.haml +42 -0
- data/app/views/fluentd/settings/in_tail/after_file_choose.html.haml +19 -0
- data/app/views/fluentd/settings/in_tail/after_format.html.haml +10 -0
- data/app/views/fluentd/settings/in_tail/confirm.html.haml +13 -0
- data/app/views/fluentd/settings/in_tail/show.html.haml +5 -0
- data/app/views/fluentd/settings/out_forward/_form.html.haml +22 -0
- data/app/views/fluentd/settings/out_forward/show.html.haml +6 -0
- data/app/views/fluentd/settings/out_mongo/_form.html.haml +30 -0
- data/app/views/fluentd/settings/out_mongo/finish.html.haml +4 -0
- data/app/views/fluentd/settings/out_mongo/show.html.haml +6 -0
- data/app/views/fluentd/settings/out_s3/_form.html.haml +39 -0
- data/app/views/fluentd/settings/out_s3/show.html.haml +6 -0
- data/app/views/fluentd/settings/out_td/_form.html.haml +18 -0
- data/app/views/fluentd/settings/out_td/show.html.haml +6 -0
- data/app/views/fluentd/settings/show.html.haml +10 -0
- data/app/views/fluentd/settings/source_and_output.html.haml +45 -0
- data/app/views/fluentd/show.html.haml +60 -0
- data/app/views/layouts/application.html.erb +102 -0
- data/app/views/layouts/sign_in.html.erb +28 -0
- data/app/views/misc/information.html.haml +75 -0
- data/app/views/misc/update_fluentd_ui.html.haml +45 -0
- data/app/views/plugins/installed.html.haml +67 -0
- data/app/views/plugins/recommended.html.haml +59 -0
- data/app/views/plugins/updated.html.haml +29 -0
- data/app/views/sessions/new.html.haml +13 -0
- data/app/views/shared/_error.html.haml +3 -0
- data/app/views/shared/_flash.html.haml +10 -0
- data/app/views/shared/_fluentd_nav.html.haml +12 -0
- data/app/views/shared/_global_nav.html.erb +80 -0
- data/app/views/shared/_initial_setup.html.haml +13 -0
- data/app/views/shared/_modal.html.erb +25 -0
- data/app/views/shared/_setting_errors.html.haml +5 -0
- data/app/views/shared/vue/_fluent_log.html.erb +25 -0
- data/app/views/shared/vue/_in_tail_format.html.erb +53 -0
- data/app/views/shared/vue/_treeview.html.erb +30 -0
- data/app/views/tutorials/chapter1.html.erb +31 -0
- data/app/views/tutorials/chapter2.html.haml +12 -0
- data/app/views/tutorials/chapter3.html.haml +12 -0
- data/app/views/tutorials/chapter4.html.haml +12 -0
- data/app/views/tutorials/chapter5.html.haml +10 -0
- data/app/views/tutorials/index.html.haml +26 -0
- data/app/views/users/show.html.haml +22 -0
- data/app/workers/all_plugin_check_update.rb +14 -0
- data/app/workers/fluentd_ui_restart.rb +41 -0
- data/app/workers/fluentd_ui_update_check.rb +15 -0
- data/app/workers/gem_installer.rb +17 -0
- data/app/workers/gem_uninstaller.rb +15 -0
- data/app/workers/gem_update_check.rb +10 -0
- data/bin/bundle +3 -0
- data/bin/fluentd-ui +13 -0
- data/bin/fluentd-ui-restart +12 -0
- data/bin/rails +8 -0
- data/bin/rake +8 -0
- data/bin/spring +18 -0
- data/bower.json +10 -0
- data/circle.yml +8 -0
- data/config.ru +4 -0
- data/config/application.rb +48 -0
- data/config/application.yml +211 -0
- data/config/boot.rb +4 -0
- data/config/environment.rb +5 -0
- data/config/environments/development.rb +36 -0
- data/config/environments/production.rb +69 -0
- data/config/environments/test.rb +40 -0
- data/config/initializers/backtrace_silencers.rb +7 -0
- data/config/initializers/cookies_serializer.rb +3 -0
- data/config/initializers/filter_parameter_logging.rb +4 -0
- data/config/initializers/inflections.rb +16 -0
- data/config/initializers/mime_types.rb +4 -0
- data/config/initializers/prefetch_gem_updates.rb +1 -0
- data/config/initializers/session_store.rb +3 -0
- data/config/initializers/wrap_parameters.rb +14 -0
- data/config/locales/en.yml +204 -0
- data/config/locales/ja.yml +194 -0
- data/config/locales/translation_en.yml +255 -0
- data/config/locales/translation_ja.yml +255 -0
- data/config/locales/tutorial_en.yml +117 -0
- data/config/locales/tutorial_ja.yml +120 -0
- data/config/routes.rb +93 -0
- data/config/secrets.yml +22 -0
- data/db/schema.rb +0 -0
- data/db/seeds.rb +11 -0
- data/fluentd-ui-ss01.png +0 -0
- data/fluentd-ui-ss02.png +0 -0
- data/fluentd-ui-ss03.png +0 -0
- data/fluentd-ui-ss04.png +0 -0
- data/fluentd-ui-ss05.png +0 -0
- data/fluentd-ui.gemspec +46 -0
- data/lib/assets/.keep +0 -0
- data/lib/file_reverse_reader.rb +56 -0
- data/lib/fluentd-ui.rb +22 -0
- data/lib/fluentd-ui/command.rb +52 -0
- data/lib/fluentd-ui/version.rb +3 -0
- data/lib/grok_converter.rb +39 -0
- data/lib/regexp_preview.rb +48 -0
- data/lib/tasks/.keep +0 -0
- data/lib/treeview.rb +45 -0
- data/log/.keep +0 -0
- data/public/404.html +67 -0
- data/public/422.html +67 -0
- data/public/500.html +66 -0
- data/public/favicon.ico +0 -0
- data/public/fluentd-logo-right-text.png +0 -0
- data/public/fluentd-logo.png +0 -0
- data/public/fluentd.png +0 -0
- data/public/robots.txt +5 -0
- data/spec/controllers/plugins_controller_spec.rb +5 -0
- data/spec/controllers/polling_controller_spec.rb +5 -0
- data/spec/controllers/sessions_controller_spec.rb +5 -0
- data/spec/controllers/tutorials_controller_spec.rb +5 -0
- data/spec/factories/fluentd.rb +11 -0
- data/spec/factories/plugins.rb +8 -0
- data/spec/factories/user.rb +6 -0
- data/spec/features/fluentd/setting/out_forward_spec.rb +45 -0
- data/spec/features/fluentd/setting/out_td_spec.rb +35 -0
- data/spec/features/sessions_spec.rb +55 -0
- data/spec/features/shared_examples/login_required.rb +4 -0
- data/spec/features/users_spec.rb +9 -0
- data/spec/grok_converter_spec.rb +50 -0
- data/spec/lib/file_reverse_reader_spec.rb +73 -0
- data/spec/lib/fluentd-ui_spec.rb +35 -0
- data/spec/models/fluentd/agent_spec.rb +91 -0
- data/spec/models/fluentd/setting/common_spec.rb +178 -0
- data/spec/models/fluentd/setting/in_syslog_spec.rb +35 -0
- data/spec/models/fluentd/setting/out_mongo_spec.rb +40 -0
- data/spec/models/fluentd/setting/out_td_spec.rb +38 -0
- data/spec/models/fluentd_spec.rb +166 -0
- data/spec/models/plugin_spec.rb +191 -0
- data/spec/models/user_spec.rb +15 -0
- data/spec/spec_helper.rb +58 -0
- data/spec/support/fixtures/error0.log +12 -0
- data/spec/support/fixtures/error2.log +130 -0
- data/spec/support/fluentd_agent_common_behavior.rb +114 -0
- data/spec/support/fluentd_agent_restart_strategy.rb +94 -0
- data/tmp/.gitkeep +0 -0
- data/vendor/assets/javascripts/.keep +0 -0
- data/vendor/assets/javascripts/bower/es6-promise/.bower.json +15 -0
- data/vendor/assets/javascripts/bower/es6-promise/bower.json +5 -0
- data/vendor/assets/javascripts/bower/es6-promise/promise.js +684 -0
- data/vendor/assets/javascripts/bower/es6-promise/promise.min.js +1 -0
- data/vendor/assets/javascripts/bower/lodash/.bower.json +33 -0
- data/vendor/assets/javascripts/bower/lodash/LICENSE.txt +22 -0
- data/vendor/assets/javascripts/bower/lodash/bower.json +23 -0
- data/vendor/assets/javascripts/bower/lodash/dist/lodash.compat.js +7157 -0
- data/vendor/assets/javascripts/bower/lodash/dist/lodash.compat.min.js +61 -0
- data/vendor/assets/javascripts/bower/lodash/dist/lodash.js +6785 -0
- data/vendor/assets/javascripts/bower/lodash/dist/lodash.min.js +56 -0
- data/vendor/assets/javascripts/bower/lodash/dist/lodash.underscore.js +4979 -0
- data/vendor/assets/javascripts/bower/lodash/dist/lodash.underscore.min.js +39 -0
- data/vendor/assets/javascripts/bower/vue/.bower.json +29 -0
- data/vendor/assets/javascripts/bower/vue/LICENSE +21 -0
- data/vendor/assets/javascripts/bower/vue/dist/vue.js +4713 -0
- data/vendor/assets/javascripts/bower/vue/dist/vue.min.js +7 -0
- data/vendor/assets/javascripts/bower/vue/src/batcher.js +45 -0
- data/vendor/assets/javascripts/bower/vue/src/binding.js +103 -0
- data/vendor/assets/javascripts/bower/vue/src/compiler.js +1037 -0
- data/vendor/assets/javascripts/bower/vue/src/config.js +19 -0
- data/vendor/assets/javascripts/bower/vue/src/deps-parser.js +65 -0
- data/vendor/assets/javascripts/bower/vue/src/directive.js +258 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/html.js +41 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/if.js +56 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/index.js +129 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/model.js +174 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/on.js +56 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/partial.js +50 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/repeat.js +246 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/style.js +40 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/view.js +56 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/with.js +50 -0
- data/vendor/assets/javascripts/bower/vue/src/emitter.js +97 -0
- data/vendor/assets/javascripts/bower/vue/src/exp-parser.js +190 -0
- data/vendor/assets/javascripts/bower/vue/src/filters.js +190 -0
- data/vendor/assets/javascripts/bower/vue/src/fragment.js +84 -0
- data/vendor/assets/javascripts/bower/vue/src/main.js +186 -0
- data/vendor/assets/javascripts/bower/vue/src/observer.js +446 -0
- data/vendor/assets/javascripts/bower/vue/src/text-parser.js +96 -0
- data/vendor/assets/javascripts/bower/vue/src/transition.js +228 -0
- data/vendor/assets/javascripts/bower/vue/src/utils.js +321 -0
- data/vendor/assets/javascripts/bower/vue/src/viewmodel.js +180 -0
- data/vendor/assets/javascripts/sb-admin-v2/bootstrap.js +1951 -0
- data/vendor/assets/javascripts/sb-admin-v2/bootstrap.min.js +6 -0
- data/vendor/assets/javascripts/sb-admin-v2/demo/dashboard-demo.js +117 -0
- data/vendor/assets/javascripts/sb-admin-v2/demo/flot-demo.js +1242 -0
- data/vendor/assets/javascripts/sb-admin-v2/demo/morris-demo.js +155 -0
- data/vendor/assets/javascripts/sb-admin-v2/jquery-1.10.2.js +6 -0
- data/vendor/assets/javascripts/sb-admin-v2/plugins/dataTables/dataTables.bootstrap.js +245 -0
- data/vendor/assets/javascripts/sb-admin-v2/plugins/dataTables/jquery.dataTables.js +14013 -0
- data/vendor/assets/javascripts/sb-admin-v2/plugins/flot/excanvas.min.js +1 -0
- data/vendor/assets/javascripts/sb-admin-v2/plugins/flot/jquery.flot.js +2599 -0
- data/vendor/assets/javascripts/sb-admin-v2/plugins/flot/jquery.flot.pie.js +750 -0
- data/vendor/assets/javascripts/sb-admin-v2/plugins/flot/jquery.flot.resize.js +60 -0
- data/vendor/assets/javascripts/sb-admin-v2/plugins/flot/jquery.flot.tooltip.min.js +12 -0
- data/vendor/assets/javascripts/sb-admin-v2/plugins/metisMenu/jquery.metisMenu.js +45 -0
- data/vendor/assets/javascripts/sb-admin-v2/plugins/morris/morris.js +1888 -0
- data/vendor/assets/javascripts/sb-admin-v2/plugins/morris/raphael-2.1.0.min.js +10 -0
- data/vendor/assets/javascripts/sb-admin-v2/sb-admin.js +18 -0
- data/vendor/assets/stylesheets/.keep +0 -0
- data/vendor/assets/stylesheets/sb-admin-v2/bootstrap.css +5830 -0
- data/vendor/assets/stylesheets/sb-admin-v2/bootstrap.min.css +7 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/css/font-awesome.css +1338 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/css/font-awesome.min.css +4 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/fonts/FontAwesome.otf +0 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/fonts/fontawesome-webfont.eot +0 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/fonts/fontawesome-webfont.svg +414 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/fonts/fontawesome-webfont.woff +0 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_bordered-pulled.scss +16 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_core.scss +12 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_fixed-width.scss +6 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_icons.scss +412 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_larger.scss +13 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_list.scss +19 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_mixins.scss +20 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_path.scss +14 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_rotated-flipped.scss +9 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_spinning.scss +30 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_stacked.scss +20 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_variables.scss +381 -0
- data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/font-awesome.scss +17 -0
- data/vendor/assets/stylesheets/sb-admin-v2/fonts/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/stylesheets/sb-admin-v2/fonts/glyphicons-halflings-regular.svg +229 -0
- data/vendor/assets/stylesheets/sb-admin-v2/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/stylesheets/sb-admin-v2/fonts/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/stylesheets/sb-admin-v2/plugins/dataTables/dataTables.bootstrap.css +233 -0
- data/vendor/assets/stylesheets/sb-admin-v2/plugins/morris/morris-0.4.3.min.css +2 -0
- data/vendor/assets/stylesheets/sb-admin-v2/plugins/social-buttons/social-buttons.css +68 -0
- data/vendor/assets/stylesheets/sb-admin-v2/plugins/timeline/timeline.css +144 -0
- data/vendor/assets/stylesheets/sb-admin-v2/sb-admin.css +329 -0
- data/vendor/patterns/firewalls +60 -0
- data/vendor/patterns/grok-patterns +94 -0
- data/vendor/patterns/haproxy +37 -0
- data/vendor/patterns/java +3 -0
- data/vendor/patterns/junos +9 -0
- data/vendor/patterns/linux-syslog +16 -0
- data/vendor/patterns/mcollective +1 -0
- data/vendor/patterns/mcollective-patterns +4 -0
- data/vendor/patterns/mongodb +4 -0
- data/vendor/patterns/nagios +108 -0
- data/vendor/patterns/postgresql +3 -0
- data/vendor/patterns/redis +3 -0
- data/vendor/patterns/ruby +2 -0
- metadata +659 -0
@@ -0,0 +1,117 @@
|
|
1
|
+
en:
|
2
|
+
tutorials:
|
3
|
+
index:
|
4
|
+
step1: "Setup fluentd"
|
5
|
+
step2: "Start fluentd"
|
6
|
+
page_title: Tutorial
|
7
|
+
start_tutorial: Start tutorial
|
8
|
+
chapter1:
|
9
|
+
page_title: "Chapter 1 | Try to send data"
|
10
|
+
description: You can send an arbitrary JSON data via HTTP. URL path will be tag name.
|
11
|
+
send: Send
|
12
|
+
chapter2:
|
13
|
+
page_title: "Chapter 2 | in_http and out_stdout"
|
14
|
+
lesson_markdown: |
|
15
|
+
You can see the log when fluentd started.
|
16
|
+
|
17
|
+
2014-06-05 14:43:14 +0900 [info]: adding source type="http"
|
18
|
+
2014-06-05 14:43:14 +0900 [info]: adding match pattern="debug.*" type="stdout"
|
19
|
+
|
20
|
+
Line 1 enable http plugin that allows to receive HTTP requests.
|
21
|
+
|
22
|
+
Line 2 enable stdout plugin that process the data with matched `debug.*` tag.
|
23
|
+
|
24
|
+
These settings are defined as following fluent.conf:
|
25
|
+
|
26
|
+
<source>
|
27
|
+
type http
|
28
|
+
port %{http_port}
|
29
|
+
</source>
|
30
|
+
|
31
|
+
<match debug.*>
|
32
|
+
type stdout
|
33
|
+
</match>
|
34
|
+
chapter3:
|
35
|
+
page_title: "Chapter 3 | Build your fluentd!"
|
36
|
+
lesson_markdown: |
|
37
|
+
fluentd can receive from [syslog protocol](http://docs.fluentd.org/articles/in_syslog), [file](http://docs.fluentd.org/articles/in_tail), etc.
|
38
|
+
|
39
|
+
Also fluentd can output to [MongoDB](http://docs.fluentd.org/articles/out_mongo), [AWS S3](http://docs.fluentd.org/articles/out_s3), etc.
|
40
|
+
|
41
|
+

|
42
|
+
|
43
|
+
These input/output are provided as plugin. Install them and write a setting, then restart fluentd, you can get the power!
|
44
|
+
|
45
|
+
[Many plugins](/plugins/recommended) are available. And you can [edit config file from here](%{edit_config_url}).
|
46
|
+
chapter4:
|
47
|
+
page_title: "Chapter 4 | Use case"
|
48
|
+
lesson_markdown: |
|
49
|
+
### Monitoring Apache 5xx response and email it
|
50
|
+
|
51
|
+
**Required plugins**
|
52
|
+
|
53
|
+
- fluent-plugin-grepcounter
|
54
|
+
- fluent-plugin-mail
|
55
|
+
|
56
|
+
**config file example**
|
57
|
+
|
58
|
+
<source>
|
59
|
+
type tail
|
60
|
+
format apache2
|
61
|
+
path /var/log/apache2/access.log #This is the location of your Apache log
|
62
|
+
tag apache.access
|
63
|
+
</source>
|
64
|
+
|
65
|
+
<match apache.access>
|
66
|
+
type grepcounter
|
67
|
+
count_interval 3 # Time window to grep and count the # of events
|
68
|
+
input_key code # We look at the (http status) "code" field
|
69
|
+
regexp ^5\d\d$ # This regexp matches 5xx status codes
|
70
|
+
threshold 1 # The # of events to trigger emitting an output
|
71
|
+
add_tag_prefix error_5xx # The output event's tag will be error_5xx.apache.access
|
72
|
+
</match>
|
73
|
+
|
74
|
+
<match error_5xx.apache.access>
|
75
|
+
# The event that comes here looks like
|
76
|
+
# {
|
77
|
+
# "count":1,
|
78
|
+
# "input_tag":"error_5xx.apache.access",
|
79
|
+
# "input_tag_last":"access",
|
80
|
+
# "message":[500]
|
81
|
+
# }
|
82
|
+
|
83
|
+
type mail
|
84
|
+
host smtp.gmail.com # This is for Gmail and Google Apps. Any SMTP server should work
|
85
|
+
port 587 # port for smtp.gmail.com
|
86
|
+
user example@gmail.com # your Gmail here for login
|
87
|
+
password XXXXXX # Gmail password
|
88
|
+
enable_starttls_auto true # Gmail required this
|
89
|
+
|
90
|
+
from YOUR_SENDER_EMAIL_HERE
|
91
|
+
to YOUR_RECIPIENT_EMAIL_HERE
|
92
|
+
subject [URGENT] APACHE 5XX ERROR
|
93
|
+
message Total 5xx error count: %s\n\nPlease check your Apache webserver ASAP
|
94
|
+
message_out_keys count # The value of 'count' will be substituted into %s above.
|
95
|
+
</match>
|
96
|
+
|
97
|
+
**process flow**
|
98
|
+
|
99
|
+
[log file] ->
|
100
|
+
(in_tail) ->
|
101
|
+
Capturing file content with tagged as apache.access ->
|
102
|
+
(match apache.access) ->
|
103
|
+
"grepcounter" re-send data with appending prefix ->
|
104
|
+
(match error_5xx.apache.access) ->
|
105
|
+
"mail" send a mail
|
106
|
+
chapter5:
|
107
|
+
page_title: "Chapter 5 | Finish!"
|
108
|
+
lesson_markdown: |
|
109
|
+
Tutorial is over. congratulation!
|
110
|
+
|
111
|
+
Other resources:
|
112
|
+
|
113
|
+
- [Quick start](http://docs.fluentd.org/articles/quickstart)
|
114
|
+
- [Forum](https://groups.google.com/forum/?fromgroups#!forum/fluentd)
|
115
|
+
- [Source code(GitHub)](https://github.com/fluent/fluentd)
|
116
|
+
- [Twitter @fluentd](https://twitter.com/fluentd)
|
117
|
+
|
@@ -0,0 +1,120 @@
|
|
1
|
+
ja:
|
2
|
+
tutorials:
|
3
|
+
index:
|
4
|
+
page_title: チュートリアル
|
5
|
+
step1: "fluentdをセットアップ"
|
6
|
+
step2: "fluentdを起動"
|
7
|
+
start_tutorial: "チュートリアルを始める"
|
8
|
+
chapter1:
|
9
|
+
page_title: "Chapter 1 | データを渡してみる"
|
10
|
+
description: fluentdに任意のデータをJSONで送ることができます。URLのパスがタグの名前になります。
|
11
|
+
learn_more: |
|
12
|
+
他にもin_tail, in_syslogなどのinputプラグインがあります。
|
13
|
+
<a href="http://docs.fluentd.org/ja/articles/input-plugin-overview">Learn More</a>
|
14
|
+
send: 送信
|
15
|
+
chapter2:
|
16
|
+
page_title: "Chapter 2 | in_httpとout_stdout"
|
17
|
+
lesson_markdown: |
|
18
|
+
fluentdの起動時にこのようなログがあるかと思います。
|
19
|
+
|
20
|
+
2014-06-05 14:43:14 +0900 [info]: adding source type="http"
|
21
|
+
2014-06-05 14:43:14 +0900 [info]: adding match pattern="debug.*" type="stdout"
|
22
|
+
|
23
|
+
この1行目でhttpが有効化されています。これでHTTPリクエストを受け付けるようになります。
|
24
|
+
|
25
|
+
2行目でstdoutが有効化されています。受け取ったデータのうち、タグが`debug.*`にマッチするものはstdoutへと渡されます。
|
26
|
+
|
27
|
+
この2つはfluent.confでそれぞれ次のように設定されています。
|
28
|
+
|
29
|
+
<source>
|
30
|
+
type http
|
31
|
+
port %{http_port}
|
32
|
+
</source>
|
33
|
+
|
34
|
+
<match debug.*>
|
35
|
+
type stdout
|
36
|
+
</match>
|
37
|
+
chapter3:
|
38
|
+
page_title: "Chapter 3 | fluentdを構築しよう!"
|
39
|
+
lesson_markdown: |
|
40
|
+
fluentdはHTTP以外にも[syslogプロトコル](http://docs.fluentd.org/ja/articles/in_syslog)や[ファイル](http://docs.fluentd.org/ja/articles/in_tail)を入力として受け取ることができます。
|
41
|
+
|
42
|
+
また出力についても、stdout以外に[MongoDB](http://docs.fluentd.org/ja/articles/out_mongo)や[AWS S3](http://docs.fluentd.org/ja/articles/out_s3)などを出力先として指定できます。
|
43
|
+
|
44
|
+

|
45
|
+
|
46
|
+
これらはプラグインとして提供されています。プラグインをインストールし、設定ファイルに追記してfluentdを再起動すると使用可能となります。
|
47
|
+
|
48
|
+
[数多くのプラグイン](/plugins/recommended)がありますので、用途にあったものを探して使いましょう! 設定ファイルは[ここから編集できます。](%{edit_config_url})
|
49
|
+
chapter4:
|
50
|
+
page_title: "Chapter 4 | 設定事例"
|
51
|
+
lesson_markdown: |
|
52
|
+
### 例:Apacheの5xxレスポンスを検知してメールを送る
|
53
|
+
|
54
|
+
**必要なプラグイン**
|
55
|
+
|
56
|
+
- fluent-plugin-grepcounter
|
57
|
+
- fluent-plugin-mail
|
58
|
+
|
59
|
+
**設定ファイル例**
|
60
|
+
|
61
|
+
<source>
|
62
|
+
type tail
|
63
|
+
format apache2
|
64
|
+
path /var/log/apache2/access.log #This is the location of your Apache log
|
65
|
+
tag apache.access
|
66
|
+
</source>
|
67
|
+
|
68
|
+
<match apache.access>
|
69
|
+
type grepcounter
|
70
|
+
count_interval 3 # Time window to grep and count the # of events
|
71
|
+
input_key code # We look at the (http status) "code" field
|
72
|
+
regexp ^5\d\d$ # This regexp matches 5xx status codes
|
73
|
+
threshold 1 # The # of events to trigger emitting an output
|
74
|
+
add_tag_prefix error_5xx # The output event's tag will be error_5xx.apache.access
|
75
|
+
</match>
|
76
|
+
|
77
|
+
<match error_5xx.apache.access>
|
78
|
+
# The event that comes here looks like
|
79
|
+
# {
|
80
|
+
# "count":1,
|
81
|
+
# "input_tag":"error_5xx.apache.access",
|
82
|
+
# "input_tag_last":"access",
|
83
|
+
# "message":[500]
|
84
|
+
# }
|
85
|
+
|
86
|
+
type mail
|
87
|
+
host smtp.gmail.com # This is for Gmail and Google Apps. Any SMTP server should work
|
88
|
+
port 587 # port for smtp.gmail.com
|
89
|
+
user example@gmail.com # your Gmail here for login
|
90
|
+
password XXXXXX # Gmail password
|
91
|
+
enable_starttls_auto true # Gmail required this
|
92
|
+
|
93
|
+
from YOUR_SENDER_EMAIL_HERE
|
94
|
+
to YOUR_RECIPIENT_EMAIL_HERE
|
95
|
+
subject [URGENT] APACHE 5XX ERROR
|
96
|
+
message Total 5xx error count: %s\n\nPlease check your Apache webserver ASAP
|
97
|
+
message_out_keys count # The value of 'count' will be substituted into %s above.
|
98
|
+
</match>
|
99
|
+
|
100
|
+
**処理の流れ**
|
101
|
+
|
102
|
+
[log file] ->
|
103
|
+
(in_tail) ->
|
104
|
+
apache.accessタグでfluentdに取り込む ->
|
105
|
+
(apache.accessにマッチ) ->
|
106
|
+
grepcounterがタグにprefixを追加して再送 ->
|
107
|
+
(error_5xx.apache.accessにマッチ) ->
|
108
|
+
mailがメール送信
|
109
|
+
chapter5:
|
110
|
+
page_title: "Chapter 5 | チュートリアル完了"
|
111
|
+
lesson_markdown: |
|
112
|
+
以上でチュートリアルは終了です。お疲れさまでした!
|
113
|
+
|
114
|
+
関連リソース:
|
115
|
+
|
116
|
+
- [クイックスタートガイド](http://docs.fluentd.org/ja/articles/quickstart)
|
117
|
+
- [メーリングリスト](https://groups.google.com/forum/?fromgroups#!forum/fluentd)
|
118
|
+
- [ソースコード(GitHub)](https://github.com/fluent/fluentd)
|
119
|
+
- [Twitter @fluentd](https://twitter.com/fluentd)
|
120
|
+
|
data/config/routes.rb
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
Rails.application.routes.draw do
|
2
|
+
root "welcome#home"
|
3
|
+
|
4
|
+
resource :daemon, controller: :fluentd do
|
5
|
+
get "log"
|
6
|
+
get "raw_log"
|
7
|
+
get "errors"
|
8
|
+
|
9
|
+
scope module: :fluentd do
|
10
|
+
resource :agent, only: [] do
|
11
|
+
put "start"
|
12
|
+
put "stop"
|
13
|
+
put "restart"
|
14
|
+
get "log_tail"
|
15
|
+
end
|
16
|
+
|
17
|
+
resource :setting, only: [:show, :edit, :update] do
|
18
|
+
get "source_and_output"
|
19
|
+
|
20
|
+
resource :in_tail, only: [:show], module: :settings, controller: :in_tail do
|
21
|
+
post "after_file_choose"
|
22
|
+
post "after_format"
|
23
|
+
post "confirm"
|
24
|
+
post "finish"
|
25
|
+
end
|
26
|
+
|
27
|
+
resource :in_syslog, only: [:show], module: :settings, controller: :in_syslog do
|
28
|
+
post "finish"
|
29
|
+
end
|
30
|
+
|
31
|
+
resource :out_mongo, only: [:show], module: :settings, controller: :out_mongo do
|
32
|
+
post "finish"
|
33
|
+
end
|
34
|
+
|
35
|
+
resource :out_td, only: [:show], module: :settings, controller: :out_td do
|
36
|
+
post "finish"
|
37
|
+
end
|
38
|
+
|
39
|
+
resource :out_s3, only: [:show], module: :settings, controller: :out_s3 do
|
40
|
+
post "finish"
|
41
|
+
end
|
42
|
+
|
43
|
+
resource :out_forward, only: [:show], module: :settings, controller: :out_forward do
|
44
|
+
post "finish"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
resource :sessions
|
51
|
+
|
52
|
+
resources :plugins do
|
53
|
+
collection do
|
54
|
+
get :installed
|
55
|
+
get :recommended
|
56
|
+
get :updated
|
57
|
+
patch :install
|
58
|
+
patch :uninstall
|
59
|
+
patch :upgrade
|
60
|
+
patch :bulk_upgrade
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
resource :user, only: [:show, :edit, :update]
|
65
|
+
|
66
|
+
get "misc" => "misc#show"
|
67
|
+
get "misc/information"
|
68
|
+
post "misc/update_fluentd_ui"
|
69
|
+
get "misc/upgrading_status"
|
70
|
+
get "misc/download_info"
|
71
|
+
|
72
|
+
namespace :polling do
|
73
|
+
get "alerts"
|
74
|
+
end
|
75
|
+
|
76
|
+
namespace :tutorials do
|
77
|
+
get "/" => :index
|
78
|
+
get "chapter1"
|
79
|
+
get "chapter2"
|
80
|
+
get "chapter3"
|
81
|
+
get "chapter4"
|
82
|
+
get "chapter5"
|
83
|
+
get "log_tail"
|
84
|
+
post "request_fluentd"
|
85
|
+
end
|
86
|
+
|
87
|
+
namespace :api do
|
88
|
+
get "tree"
|
89
|
+
get "file_preview"
|
90
|
+
post "regexp_preview"
|
91
|
+
post "grok_to_regexp"
|
92
|
+
end
|
93
|
+
end
|
data/config/secrets.yml
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
2
|
+
|
3
|
+
# Your secret key is used for verifying the integrity of signed cookies.
|
4
|
+
# If you change this key, all old signed cookies will become invalid!
|
5
|
+
|
6
|
+
# Make sure the secret is at least 30 characters and all random,
|
7
|
+
# no regular words or you'll be exposed to dictionary attacks.
|
8
|
+
# You can use `rake secret` to generate a secure secret key.
|
9
|
+
|
10
|
+
# Make sure the secrets in this file are kept private
|
11
|
+
# if you're sharing your code publicly.
|
12
|
+
|
13
|
+
development:
|
14
|
+
secret_key_base: 79a259b8c70133d47d6d667fb932021e6b2e1a6be3cbd378f3a1105eaabbfbcc9b7804473c94f60c0f599f8a885fd831425e79b3bf35b3cf2f06ad4979de6048
|
15
|
+
|
16
|
+
test:
|
17
|
+
secret_key_base: fe23b4a81c05fab9380d5a5214f33055b6cf2cc75dcc5f3d0cd5128f2893b31b8dd47b707829ef0dcefe3146e3dc10e57552b717ab47c1c56022a20fc806ba67
|
18
|
+
|
19
|
+
# Do not keep production secrets in the repository,
|
20
|
+
# instead read values from the environment.
|
21
|
+
production:
|
22
|
+
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
|
data/db/schema.rb
ADDED
File without changes
|
data/db/seeds.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
# This file should contain all the record creation needed to seed the database with its default values.
|
2
|
+
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
|
3
|
+
#
|
4
|
+
# Examples:
|
5
|
+
#
|
6
|
+
# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
|
7
|
+
# Mayor.create(name: 'Emanuel', city: cities.first)
|
8
|
+
|
9
|
+
unless User.exists?
|
10
|
+
User.create!(name: "admin", password: Settings.default_password)
|
11
|
+
end
|
data/fluentd-ui-ss01.png
ADDED
Binary file
|
data/fluentd-ui-ss02.png
ADDED
Binary file
|
data/fluentd-ui-ss03.png
ADDED
Binary file
|
data/fluentd-ui-ss04.png
ADDED
Binary file
|
data/fluentd-ui-ss05.png
ADDED
Binary file
|
data/fluentd-ui.gemspec
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'fluentd-ui/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "fluentd-ui"
|
8
|
+
spec.version = FluentdUI::VERSION
|
9
|
+
spec.authors = ["Masahiro Nakagawa", "uu59"]
|
10
|
+
spec.email = ["repeatedly@gmail.com", "k@uu59.org"]
|
11
|
+
spec.summary = %q{Web UI for Fluentd}
|
12
|
+
spec.description = %q{Web UI for Fluentd}
|
13
|
+
spec.homepage = "https://github.com/fluent/fluentd-ui"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
unless (ARGV & %w(rake build)).length.zero?
|
17
|
+
# NOTE: `fluentd-ui start` will run `bundle exec ...`. so this gemspec file evaluated by bundler then exec `git ls-files`
|
18
|
+
# but `git ls-files` would be warn if $PWD is not git dir, and unnecessary this step for to do it.
|
19
|
+
# And spec.files required for building a .gem only.
|
20
|
+
# Thus git ls-files only invoked with `rake build` command
|
21
|
+
spec.files = `git ls-files`.split($/)
|
22
|
+
end
|
23
|
+
spec.executables = ["fluentd-ui"]
|
24
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
25
|
+
spec.require_paths = ["lib"]
|
26
|
+
|
27
|
+
spec.add_dependency "fluentd", "~> 0.10.51"
|
28
|
+
spec.add_dependency 'rails', '4.1.4'
|
29
|
+
spec.add_dependency 'sucker_punch', "~> 1.0.5"
|
30
|
+
spec.add_dependency 'i18n_generators', '1.2.1'
|
31
|
+
spec.add_dependency 'bcrypt', '~> 3.1.5'
|
32
|
+
spec.add_dependency 'addressable'
|
33
|
+
spec.add_dependency "font-awesome-rails"
|
34
|
+
spec.add_dependency 'sass-rails', '~> 4.0.3'
|
35
|
+
spec.add_dependency "haml-rails", "~> 0.5.3"
|
36
|
+
spec.add_dependency 'jquery-rails', "~> 3.1.0"
|
37
|
+
spec.add_dependency 'jbuilder', '~> 2.0'
|
38
|
+
spec.add_dependency "bundler"
|
39
|
+
spec.add_dependency "httpclient"
|
40
|
+
spec.add_dependency "settingslogic"
|
41
|
+
spec.add_dependency "puma"
|
42
|
+
spec.add_dependency "thor"
|
43
|
+
spec.add_dependency "kramdown", "> 1.0.0"
|
44
|
+
spec.add_dependency "kramdown-haml"
|
45
|
+
spec.add_dependency "rubyzip", "~> 1.1" # API changed as Zip::ZipFile -> Zip::File since v1.0.0
|
46
|
+
end
|
data/lib/assets/.keep
ADDED
File without changes
|
@@ -0,0 +1,56 @@
|
|
1
|
+
class FileReverseReader
|
2
|
+
attr_reader :io, :step
|
3
|
+
|
4
|
+
def initialize(io, step = 1024 * 1024 * 1)
|
5
|
+
@io = io
|
6
|
+
@step = step
|
7
|
+
end
|
8
|
+
|
9
|
+
def each_line(&block)
|
10
|
+
io.seek(0, IO::SEEK_END)
|
11
|
+
buf = ""
|
12
|
+
loop do
|
13
|
+
if reach_start_of_file?
|
14
|
+
last_pos = io.pos
|
15
|
+
io.seek(0, IO::SEEK_SET)
|
16
|
+
buf.insert(0, io.read(last_pos))
|
17
|
+
split_each_line(buf, &block)
|
18
|
+
break
|
19
|
+
end
|
20
|
+
|
21
|
+
io.seek(-1 * step, IO::SEEK_CUR)
|
22
|
+
buf.insert(0, io.read(step))
|
23
|
+
io.seek(-1 * step, IO::SEEK_CUR)
|
24
|
+
next if buf[$/].nil?
|
25
|
+
gap = buf.index($/)
|
26
|
+
buf.gsub!(/\A.*?\n/, "")
|
27
|
+
split_each_line(buf, &block)
|
28
|
+
buf = ""
|
29
|
+
io.seek(gap, IO::SEEK_CUR)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def tail(limit = 10)
|
34
|
+
enum_for(:each_line).first(limit).reverse
|
35
|
+
end
|
36
|
+
|
37
|
+
def binary_file?
|
38
|
+
sample = io.read(1024) || ""
|
39
|
+
sample2 = sample.force_encoding('ascii-8bit').encode('us-ascii', :undef => :replace, :invalid => :replace, :replace => "")
|
40
|
+
sample != sample2 # maybe binary file
|
41
|
+
ensure
|
42
|
+
io.rewind
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def split_each_line(buf, &block)
|
48
|
+
buf.split($/).reverse.each do |line|
|
49
|
+
block.call(line)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def reach_start_of_file?
|
54
|
+
step >= io.pos
|
55
|
+
end
|
56
|
+
end
|