aliyun_sls 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f99113f595c413af76c9c28a15fb4de46bd70b44
4
- data.tar.gz: d79c1946dee0ab4a053aadae36cb43f3eed1ec05
3
+ metadata.gz: a8f3884c68b68d0dc9a0ffbb3b5873c186c5948c
4
+ data.tar.gz: 9adba5c42ec2db13887bcfcbad94ae7508aec135
5
5
  SHA512:
6
- metadata.gz: 953ab3e11bc74648c3bcdf51e64ab6e3b95901bc09e154ee02f1fb1bfd26ba92da1379c9f1d28234ef103aa3137f9ab56920cd5b2ee05a321870d8d9a3390761
7
- data.tar.gz: f8ac4988f9eea5905c4aa3edafc8c4ade033b65742f5a05242ad01f84ee6ac0cdd40613336d445684cb35e531300f70b380cdfe039e31d79dd9b17782131c2ea
6
+ metadata.gz: 14f9c36c56120debc5ebc4c959b1872065f006cc1e4f1c742a48e5cd485a875521bc7bb568c6e7b1884eaf089298ceee8f50eb0cac963eee4fc017d19f0666d4
7
+ data.tar.gz: 64d18c6e4725a6cd3af8ca246b0f646c146bd755a6957fde897ad991fa90ad055754895b433d6fdce5aec0a754f03b56768bffa2bf3ba9a825827d7611ae5b09
data/.gitignore CHANGED
File without changes
data/Gemfile CHANGED
File without changes
data/LICENSE.txt CHANGED
File without changes
data/README.md CHANGED
@@ -2,19 +2,21 @@
2
2
 
3
3
  ## 阿里云SLS服务Ruby SDK
4
4
 
5
- 简单日志服务(Simple Log Service,简称SLS)是针对日志收集、存储和查询的平台化服务。服务提供各种类型日志的实时收集,平台化存储及实时查询海量的日志。并可以将日志归档至ODPS,以利用ODPS做大数据分析。除了通过管理控制台操作,SLS还提供了API(Application Programming Interface)方式写入、查询日志数据,管理自己的项目及日志库等。
5
+
6
+ #### 简单日志服务(`Simple Log Service,简称SLS`)
7
+ 是针对日志收集、存储和查询的平台化服务。服务提供各种类型日志的实时收集,平台化存储及实时查询海量的日志。并可以将日志归档至ODPS,以利用ODPS做大数据分析。除了通过管理控制台操作,SLS还提供了API(Application Programming Interface)方式写入、查询日志数据,管理自己的项目及日志库等。
6
8
 
7
9
  #### SLS(简单日志服务)[介绍](http://docs.aliyun.com/?spm=5176.730001.3.10.5GpxDL#/sls)
8
10
 
9
11
  ------------
10
12
  ## 库用法
11
13
 
12
- ### 查询Store清单(ListLogstores)
14
+ ### [查询Store清单](http://docs.aliyun.com/#/pub/sls/api/apilist&ListLogstores)
13
15
 
14
16
  con = AliyunSls::Connection.new("project", "region", "access_key_secret", "aliyun_access_key")
15
17
  con.list_logstores
16
18
 
17
- ### 上传日志(PutLogs)
19
+ ### [上传日志](http://docs.aliyun.com/#/pub/sls/api/apilist&PutLogs)
18
20
 
19
21
  log = AliyunSls::Protobuf::Log.new(:time => Time.now.to_i, :contents => [])
20
22
 
@@ -35,11 +37,45 @@
35
37
  con = AliyunSls::Connection.new("project", "region", "access_key_secret", "aliyun_access_key")
36
38
  con.puts_logs("store", log_list)
37
39
 
38
- ### TODO
39
-
40
- - `ListTopics` 列出Logstore中的日志主题。
41
- - `GetHistograms` 查询Logstore中的日志在时间轴上的分布。
42
- - `GetLogs` 查询Logstore中的日志数据。
40
+ ### [列出日志主题](http://docs.aliyun.com/#/pub/sls/api/apilist&ListTopics)
41
+
42
+ con.list_topics("store")
43
+
44
+ |名称| 类型| 必选| 描述|
45
+ |-----|-----|----|-----|
46
+ |logstorename| 字符串| 是| 需要查询的Logstore名称。|
47
+ |type| 字符串| 是| 查询Logstore数据的类型,在ListTopics接口中该参数必须为"topic"。|
48
+ |line| 整型| 否| 请求一次返回的Topic最大数目。取值范围为0~100,默认值为100。|
49
+ |token| 字符串| 否| 请求返回Topic的起始点(按字典序)。默认值为空字符串,表示从头开始查询 |Logstore中的日志Topic。
50
+
51
+ ### [查询Logstore中的日志在时间轴上的分布](http://docs.aliyun.com/#/pub/sls/api/apilist&GetHistograms)
52
+
53
+ con.get_histograms("store")
54
+
55
+ |名称| 类型| 必选| 描述|
56
+ |----|----|------|------|
57
+ |logstorename| 字符串| 是| 需要查询日志的Logstore名称。|
58
+ |type| 字符串| 是| 查询Logstore数据的类型,在GetHistograms接口中该参数必须为"histogram"。|
59
+ |from| 整型| 是| 查询开始时间点(精度为秒,从1970-1-1 00:00:00 UTC计算起的秒数)。|
60
+ |to| 整型| 是| 查询结束时间点(精度为秒,从1970-1-1 00:00:00 UTC计算起的秒数)。|
61
+ |topic| 字符串| 否| 查询日志主题。|
62
+ |query| 字符串| 否| 查询表达式。关于查询表达式的详细语法请参考查询语法。|
63
+
64
+ ### [查询Logstore中的日志数据](http://docs.aliyun.com/#/pub/sls/api/apilist&GetLogs)
65
+
66
+ con.get_logs("store", :topic => "xxx")
67
+
68
+ |名称 | 类型| 必选| 描述|
69
+ |---|---|---||
70
+ |logstorename | 字符串| 是| 需要查询日志的Logstore名称。|
71
+ |type | 字符串| 是| 查询Logstore数据的类型,在GetLogs接口中该参数必须为"log"。|
72
+ |from | 整型| 是| 查询开始时间点(精度为秒,从1970-1-1 00:00:00 UTC计算起的秒数)。|
73
+ |to | 整型| 是| 查询结束时间点(精度为秒,从1970-1-1 00:00:00 UTC计算起的秒数)。|
74
+ |topic | 字符串| 否| 查询日志主题。|
75
+ |query | 字符串| 否| 查询表达式。关于查询表达式的详细语法请参考查询语法。|
76
+ |line | 整型| 否| 请求返回的最大日志条数。取值范围0~100,默认值为100。|
77
+ |offset | 整型| 否| 请求返回日志的起始点。取值范围0或正整数,默认值0。|
78
+ |reverse | 布尔型| 否| 是否按日志时间戳逆序返回日志。true表示逆序,false表示顺序,默认值为false。|
43
79
 
44
80
  ## 命令行用法
45
81
 
data/Rakefile CHANGED
File without changes
data/aliyun_sls.gemspec CHANGED
@@ -24,4 +24,5 @@ Gem::Specification.new do |spec|
24
24
  spec.add_dependency "beefcake"
25
25
  spec.add_dependency "file-tail"
26
26
  spec.add_dependency "ruby-hmac"
27
+ spec.add_dependency "addressable"
27
28
  end
@@ -1,7 +1,11 @@
1
+ require "addressable/uri"
1
2
  require 'rest_client'
2
3
  require 'hmac-sha1'
3
4
  require "base64"
4
5
  require "zlib"
6
+ require "time"
7
+
8
+ require "byebug"
5
9
 
6
10
  # log = AliyunSls::Protobuf::Log.new(:time => Time.now.to_i, :contents => [])
7
11
 
@@ -43,6 +47,90 @@ module AliyunSls
43
47
  @host = "#{project}.#{region}"
44
48
  end
45
49
 
50
+ # http://docs.aliyun.com/#/pub/sls/api/apilist&PutLogs
51
+ def puts_logs(logstorename, content)
52
+ # 压缩content数据
53
+ compressed = Zlib::Deflate.deflate(content.encode.to_s)
54
+ headers = compact_headers(content, compressed)
55
+ headers["Authorization"] = signature("POST", logstorename, headers, content, {})
56
+
57
+ u = URI.parse("http://#{@host}/logstores/#{logstorename}")
58
+ rsp = RestClient.post u.to_s, compressed, headers
59
+ parse_response(rsp)
60
+ end
61
+
62
+ # http://docs.aliyun.com/#/pub/sls/api/apilist&ListLogstores
63
+ def list_logstores
64
+ headers = compact_headers(nil, nil)
65
+ headers["Authorization"] = signature("GET", nil, headers, nil, {})
66
+
67
+ u = URI.parse("http://#{@host}/logstores")
68
+ headers["Referer"] = u.to_s
69
+ rsp = RestClient.get u.to_s, headers
70
+ parse_response(rsp)
71
+ end
72
+
73
+ # http://docs.aliyun.com/#/pub/sls/api/apilist&GetLogs
74
+ def get_logs(logstorename, opts={})
75
+ default_opts = {
76
+ :type => "log",
77
+ :from => Time.now.to_i - 60*5,#默认是五分钟前
78
+ :to => Time.now.to_i,
79
+ :line => 100,
80
+ :offset => 0,
81
+ :reverse => false
82
+ }
83
+ opts = default_opts.update opts
84
+ headers = compact_headers(nil, nil)
85
+ headers["Authorization"] = signature("GET", logstorename, headers, nil, opts)
86
+
87
+ u = Addressable::URI.parse("http://#{@host}/logstores/#{logstorename}")
88
+ headers["Referer"] = u.to_s
89
+ u.query_values = opts
90
+ rsp = RestClient.get u.to_s, headers
91
+ parse_response(rsp)
92
+ end
93
+
94
+ # http://docs.aliyun.com/#/pub/sls/api/apilist&ListTopics
95
+ def list_topics(logstorename, opts={})
96
+ default_opts = {
97
+ :type => "topic",
98
+ :line => 100,
99
+ :toke => ""
100
+ }
101
+ opts = default_opts.update opts
102
+ headers = compact_headers(nil, nil)
103
+ headers["Authorization"] = signature("GET", logstorename, headers, nil, opts)
104
+
105
+ u = Addressable::URI.parse("http://#{@host}/logstores/#{logstorename}")
106
+ headers["Referer"] = u.to_s
107
+ u.query_values = opts
108
+ rsp = RestClient.get u.to_s, headers
109
+ parse_response(rsp)
110
+ end
111
+
112
+ # http://docs.aliyun.com/#/pub/sls/api/apilist&GetHistograms
113
+ def get_histograms(logstorename, opts={})
114
+ default_opts = {
115
+ :type => "histogram",
116
+ :from => Time.now.to_i - 60*5,#默认是五分钟前
117
+ :to => Time.now.to_i,
118
+ :topic => "",
119
+ :query => 0,
120
+ }
121
+ opts = default_opts.update opts
122
+ headers = compact_headers(nil, nil)
123
+ headers["Authorization"] = signature("GET", logstorename, headers, nil, opts)
124
+
125
+ u = Addressable::URI.parse("http://#{@host}/logstores/#{logstorename}")
126
+ headers["Referer"] = u.to_s
127
+ u.query_values = opts
128
+ rsp = RestClient.get u.to_s, headers
129
+ parse_response(rsp)
130
+ end
131
+
132
+ private
133
+
46
134
  def string_to_sign(verb, logstorename, headers, content, query={})
47
135
  if content
48
136
  string_to_sign_with_content(verb, logstorename, headers, query)
@@ -96,9 +184,9 @@ DOC
96
184
  # 2. 放入要访问的SLS资源:"/logstores/logstorename"(无logstorename则不填);
97
185
  # 3. 如请求包含查询字符串(QUERY_STRING),则在CanonicalizedResource字符串尾部添加“?”和查询字符串。
98
186
  def canonicalized_resource(logstorename, query={})
99
- u = logstorename ? URI.parse("/logstores/#{logstorename}") : URI.parse("/logstores")
187
+ u = logstorename ? Addressable::URI.parse("/logstores/#{logstorename}") : Addressable::URI.parse("/logstores")
100
188
  if query.size != 0
101
- u.query = query.inject([]){|s, a| s << "#{a[0]}=#{a[1]}"}.join('&')
189
+ u.query_values = query
102
190
  end
103
191
  u.to_s
104
192
  end
@@ -135,27 +223,6 @@ DOC
135
223
  headers
136
224
  end
137
225
 
138
- def puts_logs(logstorename, content)
139
- # 压缩content数据
140
- compressed = Zlib::Deflate.deflate(content.encode.to_s)
141
- headers = compact_headers(content, compressed)
142
- headers["Authorization"] = signature("POST", logstorename, headers, content, {})
143
-
144
- u = URI.parse("http://#{@host}/logstores/#{logstorename}")
145
- rsp = RestClient.post u.to_s, compressed, headers
146
- parse_response(rsp)
147
- end
148
-
149
- def list_logstores
150
- headers = compact_headers(nil, nil)
151
- headers["Authorization"] = signature("GET", nil, headers, nil, {})
152
-
153
- u = URI.parse("http://#{@host}/logstores")
154
- headers["Referer"] = u.to_s
155
- rsp = RestClient.get u.to_s, headers
156
- parse_response(rsp)
157
- end
158
-
159
226
  def parse_response(rsp)
160
227
  # 如果返回结果报错,则解析报错内容打印到日志中
161
228
  if rsp.code.to_s =~ /[4|5]\d\d/
@@ -166,6 +233,7 @@ DOC
166
233
  puts msg
167
234
  end
168
235
  end
236
+ rsp
169
237
  end
170
238
  end
171
239
  end
File without changes
@@ -1,3 +1,3 @@
1
1
  module AliyunSls
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/aliyun_sls.rb CHANGED
File without changes
metadata CHANGED
@@ -1,97 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aliyun_sls
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - cuizheng
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-14 00:00:00.000000000 Z
11
+ date: 2015-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rest-client
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: beefcake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: file-tail
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: ruby-hmac
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: addressable
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
95
109
  - !ruby/object:Gem::Version
96
110
  version: '0'
97
111
  description: Gem for SLS of Aliyun
@@ -102,7 +116,7 @@ executables:
102
116
  extensions: []
103
117
  extra_rdoc_files: []
104
118
  files:
105
- - .gitignore
119
+ - ".gitignore"
106
120
  - Gemfile
107
121
  - LICENSE.txt
108
122
  - README.md
@@ -123,19 +137,18 @@ require_paths:
123
137
  - lib
124
138
  required_ruby_version: !ruby/object:Gem::Requirement
125
139
  requirements:
126
- - - '>='
140
+ - - ">="
127
141
  - !ruby/object:Gem::Version
128
142
  version: '0'
129
143
  required_rubygems_version: !ruby/object:Gem::Requirement
130
144
  requirements:
131
- - - '>='
145
+ - - ">="
132
146
  - !ruby/object:Gem::Version
133
147
  version: '0'
134
148
  requirements: []
135
149
  rubyforge_project:
136
- rubygems_version: 2.0.6
150
+ rubygems_version: 2.2.2
137
151
  signing_key:
138
152
  specification_version: 4
139
153
  summary: Gem for SLS of Aliyun
140
154
  test_files: []
141
- has_rdoc: