diff --git a/app/assets/javascripts/vue/fluent_log.js b/app/assets/javascripts/vue/fluent_log.js index a22bfe5..2cab738 100644 --- a/app/assets/javascripts/vue/fluent_log.js +++ b/app/assets/javascripts/vue/fluent_log.js @@ -6,7 +6,7 @@ new Vue({ el: "#fluent-log", - paramAttributes: ["logUrl"], + paramAttributes: ["logUrl", "initialAutoReload"], data: { "autoFetch": false, "logs": [], @@ -15,6 +15,9 @@ }, created: function(){ + if(this.initialAutoReload) { + this.autoFetch = true; + } this.fetchLogs(); var self = this; diff --git a/app/controllers/misc_controller.rb b/app/controllers/misc_controller.rb index 423f43b..e5a2fd5 100644 --- a/app/controllers/misc_controller.rb +++ b/app/controllers/misc_controller.rb @@ -47,7 +47,7 @@ class MiscController < ApplicationController end zip.get_output_stream('versions.txt') do |f| f.puts "ruby: #{RUBY_DESCRIPTION}" - f.puts "fluentd: #{Fluent::VERSION}" + f.puts "fluentd: #{FluentdUI.fluentd_version}" f.puts "fluentd-ui: #{FluentdUI::VERSION}" end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 40ce97e..3507f4a 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -5,6 +5,10 @@ module ApplicationHelper File.exist?("/etc/init.d/td-agent") end + def fluentd_ui_title + ENV["FLUENTD_UI_TITLE"] || "Fluentd UI" + end + def language_name(locale) # NOTE: these are fixed terms, not i18n-ed { diff --git a/app/models/fluentd/agent/common.rb b/app/models/fluentd/agent/common.rb index b22b94b..e1e0a9c 100644 --- a/app/models/fluentd/agent/common.rb +++ b/app/models/fluentd/agent/common.rb @@ -66,7 +66,7 @@ class Fluentd end end - %w(running? log config config_write config_append log_tail configuration).each do |method| + %w(running? version log config config_write config_append log_tail configuration).each do |method| define_method(method) do raise NotImplementedError, "'#{method}' method is required to be defined" end diff --git a/app/models/fluentd/agent/fluentd_gem.rb b/app/models/fluentd/agent/fluentd_gem.rb index 1e2572b..7c75fd2 100644 --- a/app/models/fluentd/agent/fluentd_gem.rb +++ b/app/models/fluentd/agent/fluentd_gem.rb @@ -41,6 +41,12 @@ class Fluentd actual_reload end + def version + Bundler.with_clean_env do + `fluentd --version`.strip + end + end + private def options_to_argv diff --git a/app/models/fluentd/agent/td_agent.rb b/app/models/fluentd/agent/td_agent.rb index 53f217f..2e1e3a0 100644 --- a/app/models/fluentd/agent/td_agent.rb +++ b/app/models/fluentd/agent/td_agent.rb @@ -25,6 +25,10 @@ class Fluentd # https://github.com/treasure-data/td-agent/blob/master/debian/td-agent.init#L156 system('/etc/init.d/td-agent restart') end + + def version + `td-agent --version`.strip + end end end end diff --git a/app/models/plugin.rb b/app/models/plugin.rb index 9da967c..58dccd2 100644 --- a/app/models/plugin.rb +++ b/app/models/plugin.rb @@ -190,11 +190,16 @@ class Plugin end def fluent_gem_path + # On installed both td-agent and fluentd system, decide which fluent-gem command should be used depend on setup(Fluentd.instance) + if Fluentd.instance && Fluentd.instance.fluentd? + return "fluent-gem" # maybe `fluent-gem` command is in the $PATH + end + + # NOTE: td-agent has a command under the /usr/lib{,64}, td-agent2 has under /opt/td-agent %W( - fluent-gem + /opt/td-agent/embedded/bin/fluent-gem /usr/lib/fluent/ruby/bin/fluent-gem /usr/lib64/fluent/ruby/bin/fluent-gem - /opt/td-agent/embedded/bin/fluent-gem ).find do |path| system("which #{path}", out: File::NULL, err: File::NULL) end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 2cd945a..c00f5c9 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -7,7 +7,7 @@ - Fluentd-UI + <% fluentd_ui_title %> <% if content_for?(:page_title) %> | <%= content_for(:page_title) %> @@ -32,7 +32,7 @@ <span class="icon-bar"></span> <span class="icon-bar"></span> </button> - <%= link_to "fluentd-ui", root_path, class: "navbar-brand" %> + <%= link_to fluentd_ui_title, root_path, class: "navbar-brand" %> </div> <!-- /.navbar-header --> diff --git a/app/views/misc/information.html.haml b/app/views/misc/information.html.haml index 21beba3..7d4ca41 100644 --- a/app/views/misc/information.html.haml +++ b/app/views/misc/information.html.haml @@ -24,7 +24,7 @@ %dt ruby %dd= RUBY_DESCRIPTION %dt fluentd - %dd= Fluent::VERSION + %dd= FluentdUI.fluentd_version %dt fluentd-ui %dd= FluentdUI::VERSION @@ -51,9 +51,8 @@ %div.col-lg-12 %div.panel.panel-default %div.panel-heading - %h4 - %a{"data-toggle" => "collapse", "href" => "#env-table"} - = icon('fa-caret-down') + %h4{"data-toggle" => "collapse", "href" => "#env-table"} + = icon('fa-caret-down') = t('.env') %table{class: "table table-hover collapse", id: "env-table"} %thead diff --git a/app/views/shared/_global_nav.html.erb b/app/views/shared/_global_nav.html.erb index 26f92fc..c46c4fb 100644 --- a/app/views/shared/_global_nav.html.erb +++ b/app/views/shared/_global_nav.html.erb @@ -21,6 +21,7 @@ <% end %> </li> + <% if fluentd_exists? %> <li> <a> <%= icon("fa-cogs fa-fw") << t('terms.plugins') << icon('pull-right fa-caret-down') %> @@ -37,6 +38,7 @@ </li> </ul> </li> + <% end %> <li> <a> diff --git a/app/views/shared/vue/_fluent_log.html.erb b/app/views/shared/vue/_fluent_log.html.erb index f667498..86a1145 100644 --- a/app/views/shared/vue/_fluent_log.html.erb +++ b/app/views/shared/vue/_fluent_log.html.erb @@ -1,5 +1,6 @@ <!-- vue.js --> -<div id="fluent-log" logUrl="<%= log_tail_fluentd_agent_path(fluentd) %>"> +<% auto_reload ||= false %> +<div id="fluent-log" logUrl="<%= log_tail_fluentd_agent_path(fluentd) %>" initialAutoReload="<%= auto_reload ? "true" : "" %>"> <p> <button class="btn btn-primary" v-on="click: fetchLogs"> <%= t "terms.reload_log" %> diff --git a/lib/fluentd-ui.rb b/lib/fluentd-ui.rb index b4e001f..0dcb7ef 100644 --- a/lib/fluentd-ui.rb +++ b/lib/fluentd-ui.rb @@ -13,4 +13,10 @@ module FluentdUI current = Gem::Version.new(::FluentdUI::VERSION) latest > current end + + def self.fluentd_version + setup_fluentd = Fluentd.instance + return nil unless setup_fluentd + setup_fluentd.agent.version + end end