fluent-plugin-light-core 0.1.9 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -0
- data/fluent-plugin-light-core.gemspec +1 -1
- data/lib/fluent/plugin/filter_light_core.rb +41 -37
- data/sample/README.md +10 -0
- data/sample/source.conf +9 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9273e4882e6e92ba31a9df62ba09b504368b4e1f206c0ab001ee0c92bac71cc
|
4
|
+
data.tar.gz: 14931871d7144232d2fd780c027567105bfca30f90647d8708aaf5591eba5107
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ac5fc0b4586140102a7ae52127c7a5c0b79d38cab433495c5c8120ce7a33cec14d61f0b8460ab7a30bf5c28860f694c754a901f5d600f3928d091ab18d676e0
|
7
|
+
data.tar.gz: 3d7548b244d8bb8d11325963c21fe19ce022f7018b260cd5e46b1eca3a0e02daad585d1df51ce88fe940b63b461f26b25589dd77764b1af885236bbec3d8eeaa
|
data/Gemfile
CHANGED
@@ -14,8 +14,8 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
|
16
16
|
require 'fluent/plugin/filter'
|
17
|
-
require 'socket'
|
18
17
|
require 'json'
|
18
|
+
require 'sentry-ruby'
|
19
19
|
|
20
20
|
module Fluent
|
21
21
|
module Plugin
|
@@ -23,9 +23,8 @@ module Fluent
|
|
23
23
|
Fluent::Plugin.register_filter('light_core', self)
|
24
24
|
|
25
25
|
# 通知相关配置
|
26
|
-
config_param :
|
27
|
-
config_param :
|
28
|
-
config_param :host, :string, default: '255.255.255.255'
|
26
|
+
config_param :sentry, :bool, default: false
|
27
|
+
config_param :sentry_dsn, :string, default: ''
|
29
28
|
|
30
29
|
# Application 异常 settings
|
31
30
|
config_param :app_stream, :string, default: 'stderr'
|
@@ -35,32 +34,35 @@ module Fluent
|
|
35
34
|
|
36
35
|
# Nginx 异常 settings
|
37
36
|
config_param :lb_stream, :string, default: 'stderr'
|
38
|
-
config_param :lb_code, :array, default: ['500'], value_type: :string
|
39
|
-
config_param :lb_elapsed, :float, default:
|
37
|
+
config_param :lb_code, :array, default: ['400', '500'], value_type: :string
|
38
|
+
config_param :lb_elapsed, :float, default: 3
|
40
39
|
|
41
40
|
# MongoDB 异常 settings
|
42
41
|
config_param :mongo_severity, :array, default: ['F', 'E'], value_type: :string
|
43
42
|
config_param :mongo_querytime, :float, default: 100
|
44
43
|
|
45
|
-
# 初始化
|
44
|
+
# 初始化 Sentry
|
46
45
|
def start
|
47
46
|
super
|
48
47
|
|
49
|
-
if @
|
50
|
-
log.info('init
|
51
|
-
|
52
|
-
|
48
|
+
if @sentry
|
49
|
+
log.info('init sentry')
|
50
|
+
Sentry.init do |config|
|
51
|
+
config.dsn = @sentry_dsn
|
52
|
+
|
53
|
+
# To activate performance monitoring, set one of these options.
|
54
|
+
# We recommend adjusting the value in production:
|
55
|
+
config.traces_sample_rate = 1
|
56
|
+
|
57
|
+
# config.background_worker_threads = 2
|
58
|
+
config.transport.timeout = 10
|
59
|
+
config.transport.open_timeout = 10
|
60
|
+
end
|
53
61
|
end
|
54
62
|
end
|
55
63
|
|
56
|
-
# 清理
|
64
|
+
# 清理
|
57
65
|
def shutdown
|
58
|
-
|
59
|
-
if @notice
|
60
|
-
log.info('close udp connection')
|
61
|
-
@udp.close if @udp
|
62
|
-
end
|
63
|
-
|
64
66
|
super
|
65
67
|
end
|
66
68
|
|
@@ -283,15 +285,18 @@ module Fluent
|
|
283
285
|
# 确认是否发送通知
|
284
286
|
def notice(tag, record)
|
285
287
|
|
286
|
-
unless @
|
288
|
+
unless @sentry
|
287
289
|
return record
|
288
290
|
end
|
289
291
|
|
290
292
|
if tag == 'app'
|
293
|
+
|
294
|
+
# 未使用
|
291
295
|
if @app_stream && record['stream']
|
292
296
|
send(record) if record['stream'] == @app_stream
|
293
297
|
end
|
294
298
|
|
299
|
+
# 未使用
|
295
300
|
if @app_message.length > 0 && record['message']
|
296
301
|
@app_message.each do |pattern|
|
297
302
|
if pattern.match(record['message'])
|
@@ -302,11 +307,13 @@ module Fluent
|
|
302
307
|
end
|
303
308
|
|
304
309
|
if @app_status.length > 0 && record['status']
|
305
|
-
|
310
|
+
message = 'Status code abnormal : ' + record['url']
|
311
|
+
send(tag, message, record) if @app_status.include?(record['status'])
|
306
312
|
end
|
307
313
|
|
308
314
|
if @app_elapsed > 0 && record['elapsed']
|
309
|
-
|
315
|
+
message = 'Slow process : ' + record['url']
|
316
|
+
send(tag, message, record) if record['elapsed'].to_f >= @app_elapsed
|
310
317
|
end
|
311
318
|
|
312
319
|
return record
|
@@ -314,15 +321,17 @@ module Fluent
|
|
314
321
|
|
315
322
|
if tag == 'lb'
|
316
323
|
if @lb_stream && record['stream']
|
317
|
-
send(record) if record['stream'] == @lb_stream
|
324
|
+
send(tag, 'Stderror', record) if record['stream'] == @lb_stream
|
318
325
|
end
|
319
326
|
|
320
327
|
if @lb_code.length > 0 && record['code']
|
321
|
-
|
328
|
+
message = 'Status code abnormal : ' + record['path']
|
329
|
+
send(tag, message, record) if @lb_code.include?(record['code'])
|
322
330
|
end
|
323
331
|
|
324
332
|
if @lb_elapsed > 0 && record['elapsed']
|
325
|
-
|
333
|
+
message = 'Slow request : ' + record['path']
|
334
|
+
send(tag, message, record) if record['elapsed'].to_f >= @lb_elapsed
|
326
335
|
end
|
327
336
|
|
328
337
|
return record
|
@@ -330,11 +339,14 @@ module Fluent
|
|
330
339
|
|
331
340
|
if tag == 'mongo'
|
332
341
|
if @mongo_severity.length > 0 && record['severity']
|
333
|
-
|
342
|
+
message = 'Severity level abnormal : ' + record['severity']
|
343
|
+
send(tag, message, record) if @mongo_severity.include?(record['severity'])
|
334
344
|
end
|
335
345
|
|
336
346
|
if @mongo_querytime > 0 && record['querytime']
|
337
|
-
|
347
|
+
message = 'Slow query'
|
348
|
+
message = message + ' : ' + record['collection'] if record['collection']
|
349
|
+
send(tag, message, record) if record['querytime'].to_f >= @mongo_querytime
|
338
350
|
end
|
339
351
|
|
340
352
|
return record
|
@@ -345,17 +357,9 @@ module Fluent
|
|
345
357
|
end
|
346
358
|
|
347
359
|
# 发送UDP请求
|
348
|
-
def send(record)
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
data = {
|
353
|
-
:query => '/api/log/notice',
|
354
|
-
:params => {
|
355
|
-
:data => record
|
356
|
-
}
|
357
|
-
}
|
358
|
-
@udp.send(data.to_json, 0, Socket.pack_sockaddr_in(@port, @host))
|
360
|
+
def send(tag, message, record)
|
361
|
+
log.debug('send udp notice')
|
362
|
+
Sentry.capture_message(message, :extra => record, :tags => {'log' => tag})
|
359
363
|
end
|
360
364
|
|
361
365
|
# 转数字
|
data/sample/README.md
CHANGED
@@ -32,3 +32,13 @@ Initialized empty Git repository in /Users/lilin/developer/light/fluent-plugin-l
|
|
32
32
|
|
33
33
|
% rm -f sample/*.pos
|
34
34
|
% fluentd -c sample/source.conf -p lib/fluent/plugin
|
35
|
+
|
36
|
+
## 添加 sentry 依赖
|
37
|
+
|
38
|
+
- 编辑Gemfile
|
39
|
+
|
40
|
+
gem "sentry-ruby"
|
41
|
+
|
42
|
+
- 安装依赖
|
43
|
+
|
44
|
+
gem install sentry-ruby
|
data/sample/source.conf
CHANGED
@@ -79,6 +79,15 @@
|
|
79
79
|
|
80
80
|
<filter **>
|
81
81
|
@type light_core
|
82
|
+
sentry true
|
83
|
+
sentry_dsn https://4447403a2a86437491d307ceb72898e5@sentry.zf.link/4
|
84
|
+
mongo_querytime 300
|
85
|
+
mongo_severity F,E
|
86
|
+
lb_stream stderr
|
87
|
+
lb_code 400,500
|
88
|
+
lb_elapsed 5
|
89
|
+
app_status 500
|
90
|
+
app_elapsed 5
|
82
91
|
</filter>
|
83
92
|
|
84
93
|
# <match app>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-light-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- LIN LI
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-01
|
11
|
+
date: 2021-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|