fluent-exec 0.0.1 → 0.0.2
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.
- data/README.md +9 -1
- data/lib/fluent-exec/version.rb +1 -1
- data/lib/fluent-exec.rb +52 -16
- metadata +2 -2
data/README.md
CHANGED
@@ -10,7 +10,7 @@ Install fluent-exec as a gem:
|
|
10
10
|
|
11
11
|
## Usage
|
12
12
|
|
13
|
-
$ fluent-exec echo.test echo 'testing...'
|
13
|
+
$ fluent-exec -t echo.test echo 'testing...'
|
14
14
|
testing...
|
15
15
|
|
16
16
|
will log this record with tag `echo.test`:
|
@@ -23,6 +23,14 @@ will log this record with tag `echo.test`:
|
|
23
23
|
"runtime": 0.004784
|
24
24
|
}
|
25
25
|
|
26
|
+
Lookup `fluent-exec --help` for more info.
|
27
|
+
|
28
|
+
Usage: fluent-exec [options] [--] command...
|
29
|
+
|
30
|
+
-t, --tag TAG Tag to use (default fluent.exec)
|
31
|
+
-h, --host HOST Host to send (default localhost)
|
32
|
+
-p, --port PORT Port to send (default 24224)
|
33
|
+
|
26
34
|
## Contributing
|
27
35
|
|
28
36
|
1. Fork it
|
data/lib/fluent-exec/version.rb
CHANGED
data/lib/fluent-exec.rb
CHANGED
@@ -1,27 +1,57 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
require "fluent-exec/version"
|
3
3
|
require "fluent-logger"
|
4
|
+
require "optparse"
|
4
5
|
require "open3"
|
5
6
|
|
6
7
|
module Fluent
|
7
8
|
module Exec
|
9
|
+
DEFAULT_OPTS = {
|
10
|
+
:host => 'localhost',
|
11
|
+
:port => 24224,
|
12
|
+
:tag => 'fluent.exec'
|
13
|
+
}
|
14
|
+
|
8
15
|
class CLI
|
9
|
-
|
10
|
-
|
16
|
+
def initialize
|
17
|
+
@host = DEFAULT_OPTS[:host]
|
18
|
+
@port = DEFAULT_OPTS[:port]
|
19
|
+
@tag = DEFAULT_OPTS[:tag]
|
20
|
+
init_optp
|
21
|
+
end
|
22
|
+
|
23
|
+
def init_optp
|
24
|
+
@optp = OptionParser.new
|
25
|
+
@optp.banner = "Usage: fluent-exec [options] [--] command..."
|
26
|
+
@optp.separator ""
|
27
|
+
@optp.on('-t', '--tag TAG', "Tag to use (default #{DEFAULT_OPTS[:tag]})") {|v| @tag = v}
|
28
|
+
@optp.on('-h', '--host HOST', "Host to send (default #{DEFAULT_OPTS[:host]})") {|v| @host = v}
|
29
|
+
@optp.on('-p', '--port PORT', /^\d+$/, "Port to send (default #{DEFAULT_OPTS[:port]})") {|v| @port = v}
|
30
|
+
end
|
11
31
|
|
12
|
-
def
|
13
|
-
|
14
|
-
|
32
|
+
def parse!(args)
|
33
|
+
begin
|
34
|
+
@cmd = @optp.order args
|
35
|
+
rescue => ex
|
36
|
+
$stderr.puts ex.to_s
|
37
|
+
$stderr.puts @optp.help
|
38
|
+
exit 1
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def exec
|
15
43
|
env = {}
|
16
44
|
in_str = ''
|
17
45
|
out_str = ''
|
18
46
|
err_str = ''
|
19
47
|
|
20
48
|
begin_time = Time.now
|
21
|
-
sin, sout, serr, thr = Open3.popen3(env,
|
49
|
+
sin, sout, serr, thr = Open3.popen3(env, *@cmd)
|
22
50
|
|
23
51
|
sin_t = Thread.new do
|
24
|
-
|
52
|
+
while s = $stdin.read(1024)
|
53
|
+
sin.write s
|
54
|
+
end
|
25
55
|
sin.close
|
26
56
|
end
|
27
57
|
|
@@ -45,21 +75,27 @@ module Fluent
|
|
45
75
|
sout_t.join
|
46
76
|
serr_t.join
|
47
77
|
es = status.exitstatus
|
78
|
+
{
|
79
|
+
:command => @cmd,
|
80
|
+
:exitstatus => es,
|
81
|
+
:stdout => out_str,
|
82
|
+
:stderr => err_str,
|
83
|
+
:runtime => end_time - begin_time,
|
84
|
+
}
|
85
|
+
end
|
86
|
+
|
87
|
+
def run(args)
|
88
|
+
parse! args
|
89
|
+
record = exec
|
48
90
|
#コマンドの実行を優先?
|
49
91
|
#fluentdサーバに接続できない場合はどうする?
|
50
92
|
# failover (file|stdout)?
|
51
93
|
begin
|
52
|
-
log = Fluent::Logger::FluentLogger.new(nil, :host =>
|
53
|
-
log.post tag,
|
54
|
-
:command => ARGV,
|
55
|
-
:exitstatus => es,
|
56
|
-
:stdout => out_str,
|
57
|
-
:stderr => err_str,
|
58
|
-
:runtime => end_time - begin_time,
|
59
|
-
}
|
94
|
+
log = Fluent::Logger::FluentLogger.new(nil, :host => @host, :port => @port)
|
95
|
+
log.post @tag, record
|
60
96
|
rescue => ex
|
61
97
|
end
|
62
|
-
exit
|
98
|
+
exit record[:exitstatus]
|
63
99
|
end
|
64
100
|
end
|
65
101
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-exec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fluent-logger
|