mirror of
https://github.com/fluent/fluentd-ui.git
synced 2025-08-12 17:27:09 +02:00
Merge pull request #97 from fluent/fix_td_agent_on_mac
Fix td agent on mac
This commit is contained in:
commit
b7bd9412a8
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
module ApplicationHelper
|
module ApplicationHelper
|
||||||
def has_td_agent_system?
|
def has_td_agent_system?
|
||||||
File.exist?("/etc/init.d/td-agent")
|
File.exist?("/etc/init.d/td-agent") || File.exist?("/opt/td-agent/embedded/bin/fluentd")
|
||||||
end
|
end
|
||||||
|
|
||||||
def fluentd_ui_logo
|
def fluentd_ui_logo
|
||||||
|
@ -96,6 +96,14 @@ class Fluentd
|
|||||||
ensure
|
ensure
|
||||||
io && io.close
|
io && io.close
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def detached_command(cmd)
|
||||||
|
Bundler.with_clean_env do
|
||||||
|
pid = spawn(cmd)
|
||||||
|
Process.detach(pid)
|
||||||
|
end
|
||||||
|
sleep 1 # NOTE/FIXME: too early return will be caused incorrect status report, "sleep 1" is a adhoc hack
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -12,32 +12,15 @@ class Fluentd
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
def start
|
|
||||||
detached_command('/etc/init.d/td-agent start')
|
|
||||||
end
|
|
||||||
|
|
||||||
def stop
|
|
||||||
detached_command('/etc/init.d/td-agent stop')
|
|
||||||
end
|
|
||||||
|
|
||||||
def restart
|
|
||||||
# NOTE: td-agent has no reload command
|
|
||||||
# https://github.com/treasure-data/td-agent/blob/master/debian/td-agent.init#L156
|
|
||||||
detached_command('/etc/init.d/td-agent restart')
|
|
||||||
end
|
|
||||||
|
|
||||||
def version
|
def version
|
||||||
`/usr/sbin/td-agent --version`.strip
|
`/usr/sbin/td-agent --version`.strip
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
case FluentdUI.platform
|
||||||
|
when :macosx
|
||||||
def detached_command(cmd)
|
include Macosx
|
||||||
Bundler.with_clean_env do
|
when :unix
|
||||||
pid = spawn(cmd)
|
include Unix
|
||||||
Process.detach(pid)
|
|
||||||
end
|
|
||||||
sleep 1 # NOTE/FIXME: too early return will be caused incorrect status report, "sleep 1" is a adhoc hack
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
33
app/models/fluentd/agent/td_agent/macosx.rb
Normal file
33
app/models/fluentd/agent/td_agent/macosx.rb
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
class Fluentd
|
||||||
|
class Agent
|
||||||
|
class TdAgent
|
||||||
|
module Macosx
|
||||||
|
|
||||||
|
def start
|
||||||
|
detached_command("launchctl load #{plist}") && pid_from_launchctl
|
||||||
|
end
|
||||||
|
|
||||||
|
def stop
|
||||||
|
detached_command("launchctl unload #{plist}") && FileUtils.rm(pid_file)
|
||||||
|
end
|
||||||
|
|
||||||
|
def restart
|
||||||
|
stop && start
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def plist
|
||||||
|
'/Library/LaunchDaemons/td-agent.plist'
|
||||||
|
end
|
||||||
|
|
||||||
|
def pid_from_launchctl
|
||||||
|
# NOTE: launchctl doesn't make pidfile, so detect pid and store it to pidfile manually
|
||||||
|
pid = `launchctl list | grep td-agent | cut -f1`.strip
|
||||||
|
return if pid == ""
|
||||||
|
File.open(pid_file, "w"){|f| f.write pid }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
21
app/models/fluentd/agent/td_agent/unix.rb
Normal file
21
app/models/fluentd/agent/td_agent/unix.rb
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
class Fluentd
|
||||||
|
class Agent
|
||||||
|
class TdAgent
|
||||||
|
module Unix
|
||||||
|
def start
|
||||||
|
detached_command('/etc/init.d/td-agent start')
|
||||||
|
end
|
||||||
|
|
||||||
|
def stop
|
||||||
|
detached_command('/etc/init.d/td-agent stop')
|
||||||
|
end
|
||||||
|
|
||||||
|
def restart
|
||||||
|
# NOTE: td-agent has no reload command
|
||||||
|
# https://github.com/treasure-data/td-agent/blob/master/debian/td-agent.init#L156
|
||||||
|
detached_command('/etc/init.d/td-agent restart')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@ -29,4 +29,13 @@ module FluentdUI
|
|||||||
def self.td_agent_ui?
|
def self.td_agent_ui?
|
||||||
ENV["FLUENTD_UI_TD_AGENT"].present?
|
ENV["FLUENTD_UI_TD_AGENT"].present?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.platform
|
||||||
|
case RbConfig::CONFIG['host_os']
|
||||||
|
when /darwin|mac os/
|
||||||
|
:macosx
|
||||||
|
else # FIXME: windows is unix? :P
|
||||||
|
:unix
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user