zabbix-rails 0.2.2 → 0.2.3
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/Rakefile +2 -0
- data/lib/zabbix/chart.rb +10 -6
- data/lib/zabbix/connector.rb +6 -6
- data/lib/zabbix/version.rb +1 -1
- data/lib/zabbix-rails.rb +3 -4
- metadata +2 -3
- data/lib/zabbix/config.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e91a0b65f3d8c11a21c801e896756b8b33c2a3ac0cbcdb5aaadc51ff77347a3f
|
4
|
+
data.tar.gz: 0cb4b629c690749a26f01ff2d6c3dad7ecb1aa78b17882e38b119333de361803
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dab95a7df10f9833babcbe70aea7077df0c3b57bdc4ac3479a643d4c7450e16ebb80e216390fcf35c3c8a0b7cbdc05706634e469c43b0871b714fda6b7483283
|
7
|
+
data.tar.gz: 357db5c2018f7edf22d3066712fd47159eefc8a272474cddf4c5a6ef0fa4ea7cc596db6ce775f5c1b3b585c2aae5306eadd9c319e1da4746bf457805e5f4bb29
|
data/Rakefile
CHANGED
data/lib/zabbix/chart.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "active_support/concern"
|
2
4
|
|
3
5
|
module Zabbix
|
@@ -35,9 +37,9 @@ module Zabbix
|
|
35
37
|
|
36
38
|
# 请求后端返回图形
|
37
39
|
def _item_chart(url = "/chart.php", data)
|
38
|
-
base_url =
|
40
|
+
base_url = Zabbix.url
|
39
41
|
host = URI(base_url).host
|
40
|
-
conn
|
42
|
+
conn = Faraday::Connection.new(base_url)
|
41
43
|
# 请求接口
|
42
44
|
conn.get "#{url}" do |r|
|
43
45
|
r.params.merge!(data)
|
@@ -51,13 +53,15 @@ module Zabbix
|
|
51
53
|
def save_chart_graph(itemid, height = 400, width = 900, start_at = "now-6h", end_at = "now")
|
52
54
|
filename = generate_name(itemid)
|
53
55
|
save_file(filename, item_chart(itemid, height, width, start_at, end_at))
|
54
|
-
"chart/#{File.basename(filename)}"
|
56
|
+
"/assets/chart/#{File.basename(filename)}"
|
55
57
|
end
|
56
58
|
|
57
59
|
# 保存图片
|
58
60
|
def save_file(filename, content)
|
61
|
+
directory_base = "app/assets/images/chart/"
|
59
62
|
# 生成绝对路径地址
|
60
|
-
|
63
|
+
FileUtils.mkdir_p("#{Rails.root}/#{directory_base}") unless Dir.exist?("#{Rails.root}/#{directory_base}")
|
64
|
+
filename.prepend(directory_base)
|
61
65
|
|
62
66
|
# 存储数据
|
63
67
|
File.open(filename, "wb") do |chart|
|
@@ -65,9 +69,9 @@ module Zabbix
|
|
65
69
|
end
|
66
70
|
end
|
67
71
|
|
72
|
+
# 生成随机名称
|
68
73
|
def generate_name(itemid)
|
69
|
-
|
70
|
-
"#{UUIDTools::UUID.timestamp_create}-#{itemid}.png"
|
74
|
+
"#{SecureRandom.hex(8)}-#{itemid}.png"
|
71
75
|
end
|
72
76
|
end
|
73
77
|
end
|
data/lib/zabbix/connector.rb
CHANGED
@@ -11,9 +11,9 @@ module Zabbix
|
|
11
11
|
# 将鉴权后的 zabbix-rails 对象缓存到 Rails,减少不必要的认证动作加速执行
|
12
12
|
# https://guides.rubyonrails.org/caching_with_rails.html
|
13
13
|
def zabbix_connector
|
14
|
-
Rails.cache.fetch("zabbix_connector", expires_in:
|
14
|
+
Rails.cache.fetch("zabbix_connector", expires_in: 30.minutes) do
|
15
15
|
Rails.logger.warn("Zabbix 正在请求 API 鉴权")
|
16
|
-
ZabbixManager.connect(url:
|
16
|
+
ZabbixManager.connect(url: Zabbix.url, user: Zabbix.user, password: Zabbix.password, debug: Zabbix.debug)
|
17
17
|
rescue => e
|
18
18
|
Rails.logger.warn("登录 ZABBIX 异常,请检查网络或登录凭证。原始报错信息: #{e}")
|
19
19
|
end
|
@@ -21,7 +21,7 @@ module Zabbix
|
|
21
21
|
|
22
22
|
# 获取 zabbix 登录凭证缓存
|
23
23
|
def zabbix_token
|
24
|
-
Rails.cache.fetch("zabbix_token", expires_in:
|
24
|
+
Rails.cache.fetch("zabbix_token", expires_in: 30.minutes) do
|
25
25
|
Rails.logger.warn("正在请求 zabbix/index.php 登录认证")
|
26
26
|
authenticate_with_cookie
|
27
27
|
end
|
@@ -55,14 +55,14 @@ module Zabbix
|
|
55
55
|
# 请求 zabbix 后端认证,返回 Cookie
|
56
56
|
def authenticate_with_cookie
|
57
57
|
# 初始化会话
|
58
|
-
base_url =
|
58
|
+
base_url = Zabbix.url
|
59
59
|
host = URI(base_url).host
|
60
60
|
conn = Faraday::Connection.new(base_url)
|
61
61
|
|
62
62
|
# 登录权限凭证
|
63
63
|
data = {
|
64
|
-
name:
|
65
|
-
password:
|
64
|
+
name: Zabbix.user,
|
65
|
+
password: Zabbix.password,
|
66
66
|
autologin: 1,
|
67
67
|
enter: "Sign in",
|
68
68
|
}
|
data/lib/zabbix/version.rb
CHANGED
data/lib/zabbix-rails.rb
CHANGED
@@ -2,12 +2,11 @@
|
|
2
2
|
|
3
3
|
# 注意加载顺序
|
4
4
|
require "zabbix/version"
|
5
|
-
require "zabbix/config"
|
6
5
|
require "zabbix/connector"
|
7
|
-
require "zabbix/chart"
|
8
6
|
require "zabbix/host_monitor"
|
9
7
|
require "zabbix/item_trigger"
|
10
8
|
require "zabbix/dns_monitor"
|
9
|
+
require "zabbix/chart"
|
11
10
|
|
12
11
|
# 加载外部依赖
|
13
12
|
require "active_support/concern"
|
@@ -19,8 +18,8 @@ module Zabbix
|
|
19
18
|
class << self
|
20
19
|
attr_accessor :url, :user, :password, :debug
|
21
20
|
|
22
|
-
def
|
23
|
-
|
21
|
+
def config
|
22
|
+
yield self
|
24
23
|
end
|
25
24
|
end
|
26
25
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zabbix-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- WENWU.YAN
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-03
|
11
|
+
date: 2022-04-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -36,7 +36,6 @@ files:
|
|
36
36
|
- lib/tasks/zabbix_tasks.rake
|
37
37
|
- lib/zabbix-rails.rb
|
38
38
|
- lib/zabbix/chart.rb
|
39
|
-
- lib/zabbix/config.rb
|
40
39
|
- lib/zabbix/connector.rb
|
41
40
|
- lib/zabbix/dns_monitor.rb
|
42
41
|
- lib/zabbix/engine.rb
|