cwlogs-s3 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,30 +1,54 @@
1
- # Cwlogs::S3
1
+ # cwlogs-s3
2
2
 
3
- TODO: Write a gem description
3
+ Task for exporting CloudWatch logs to S3. Useful for then running logs through EMR for analysis. Designed to be run
4
+ via AWS Data Pipeline.
4
5
 
5
6
  ## Installation
6
7
 
7
- Add this line to your application's Gemfile:
8
+ $ gem install cwlogs-s3
9
+
10
+ ## Usage
8
11
 
9
- ```ruby
10
- gem 'cwlogs-s3'
12
+ ```
13
+ NAME
14
+ cwlogs-s3 -
15
+
16
+ USAGE
17
+ cwlogs-s3 [options] [arguments]
18
+
19
+ OPTIONS
20
+ --group -g <s> - Log group name
21
+ - Log group is required
22
+ --period -p <s> - Period to export (default: 1 day)
23
+ - Cannot parse period
24
+ --ending -e <s> - Time when period ends (default: now)
25
+ - Cannot parse ending
26
+ --s3path -s <s> - Destination S3 path
27
+ - S3 path is required
28
+ --region -r <s> - AWS region (default: us-east-1)
29
+ --verbosity <s> - Verbosity level of output for current execution
30
+ (e.g. INFO, DEBUG) (default: WARN)
31
+ --error-output-format <s - The format to use when outputting errors (e.g. b
32
+ > asic, advanced) (default: basic)
33
+ --help -h - Show this messag
11
34
  ```
12
35
 
13
- And then execute:
36
+ For example:
14
37
 
15
- $ bundle
38
+ ```
39
+ cwlogs-s3 -g "my-app-http-access" -p "3 days" -e "now" -s "s3://mybucket/mypath/"
40
+ ```
16
41
 
17
- Or install it yourself as:
42
+ Which will export all logs in the `my-app-http-access` from the last 3 days ending now to a bucket called `my-log-bucket`.
18
43
 
19
- $ gem install cwlogs-s3
20
44
 
21
- ## Usage
45
+ `--period` Can be formatted according to Chronic Duration: https://github.com/hpoydar/chronic_duration
22
46
 
23
- TODO: Write usage instructions here
47
+ `--ending` Can be formatted according to Chronic: https://github.com/mojombo/chronic
24
48
 
25
49
  ## Contributing
26
50
 
27
- 1. Fork it ( https://github.com/[my-github-username]/cwlogs-s3/fork )
51
+ 1. Fork it ( https://github.com/Tim-B/cwlogs-s3/fork )
28
52
  2. Create your feature branch (`git checkout -b my-new-feature`)
29
53
  3. Commit your changes (`git commit -am 'Add some feature'`)
30
54
  4. Push to the branch (`git push origin my-new-feature`)
data/bin/cwlogs-s3 CHANGED
@@ -12,14 +12,13 @@ Escort::App.create do |app|
12
12
  opts.opt :group, 'Log group name', :short => '-g', :long => '--group', :type => :string, default: nil
13
13
  opts.opt :period, 'Period to export', :short => '-p', :long => '--period', :type => :string, default: '1 day'
14
14
  opts.opt :ending, 'Time when period ends', :short => '-e', :long => '--ending', :type => :string, default: 'now'
15
- opts.opt :bucket, 'Destination bucket', :short => '-b', :long => '--bucket', :type => :string, default: nil
16
- opts.opt :prefix, 'Prefix', :short => '-f', :long => '--prefix', :type => :string, default: 'logs/'
15
+ opts.opt :s3_path, 'Destination S3 path', :short => '-s', :long => '--s3path', :type => :string, default: nil
17
16
  opts.opt :region, 'AWS region', :short => '-r', :long => '--region', :type => :string, default: 'us-east-1'
18
17
 
19
18
  opts.validate(:period, 'Cannot parse period') { |option| ChronicDuration.parse(option) != nil }
20
19
  opts.validate(:ending, 'Cannot parse ending') { |option| Chronic.parse(option) != nil }
21
20
  opts.validate(:group, 'Log group is required') { |option| option != nil }
22
- opts.validate(:bucket, 'Bucket is required') { |option| option != nil }
21
+ opts.validate(:s3_path, 'S3 path is required') { |option| option != nil }
23
22
  end
24
23
 
25
24
  app.action do |options, arguments|
data/cwlogs-s3.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "cwlogs-s3"
7
- spec.version = '0.0.3'
7
+ spec.version = '0.0.4'
8
8
  spec.authors = ["Tim-B"]
9
9
  spec.email = ["tim@galacticcode.com"]
10
10
  spec.summary = %q{Exports logs from CloudWatch logs and uploads them to S3}
@@ -3,6 +3,7 @@ require 'chronic'
3
3
  require 'chronic_duration'
4
4
  require 'aws-sdk'
5
5
  require 'securerandom'
6
+ require 'uri'
6
7
 
7
8
  module CWLogsToS3
8
9
 
@@ -17,6 +18,10 @@ module CWLogsToS3
17
18
  period = ChronicDuration.parse(command_options[:period])
18
19
  start = Time.at(ending.to_i - period)
19
20
 
21
+ s3Uri = URI(command_options[:s3_path])
22
+ @bucket = s3Uri.host
23
+ @s3_prefix = s3Uri.path.gsub!(/^\//, '')
24
+
20
25
  Escort::Logger.output.puts "Exporting from #{start} to #{ending}"
21
26
 
22
27
  @cwl = Aws::CloudWatchLogs::Client.new(region: command_options[:region])
@@ -64,8 +69,8 @@ module CWLogsToS3
64
69
  @event_cnt = @event_cnt + 1
65
70
  page_content << event[:message] << "\n"
66
71
  end
67
- object_name = command_options[:prefix] + randomise_prefix + '_' + @page_cnt.to_s + '.log'
68
- @s3.bucket(command_options[:bucket]).object(object_name).put(
72
+ object_name = @s3_prefix + randomise_prefix + '_' + @page_cnt.to_s + '.log'
73
+ @s3.bucket(@bucket).object(object_name).put(
69
74
  :body => page_content
70
75
  )
71
76
  Escort::Logger.output.puts "Put #{object_name} to S3."
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cwlogs-s3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
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: 2015-02-22 00:00:00.000000000 Z
12
+ date: 2015-02-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler