aliyun_sls 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.
- checksums.yaml +4 -4
- data/.gitignore +0 -0
- data/Gemfile +0 -0
- data/LICENSE.txt +0 -0
- data/README.md +44 -8
- data/Rakefile +0 -0
- data/aliyun_sls.gemspec +1 -0
- data/lib/aliyun_sls/connection.rb +91 -23
- data/lib/aliyun_sls/protobuf.rb +0 -0
- data/lib/aliyun_sls/version.rb +1 -1
- data/lib/aliyun_sls.rb +0 -0
- metadata +32 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a8f3884c68b68d0dc9a0ffbb3b5873c186c5948c
|
4
|
+
data.tar.gz: 9adba5c42ec2db13887bcfcbad94ae7508aec135
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
-
###
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
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
@@ -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.
|
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
|
data/lib/aliyun_sls/protobuf.rb
CHANGED
File without changes
|
data/lib/aliyun_sls/version.rb
CHANGED
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.
|
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
|
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.
|
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:
|