cwlogs-s3 0.0.3 → 0.0.4

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 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