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