zabbix-rails 0.2.3 → 0.2.6
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/README.md +17 -8
- data/lib/zabbix/chart.rb +26 -2
- data/lib/zabbix/connector.rb +3 -2
- data/lib/zabbix/version.rb +1 -1
- 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: '04028ecb3b9665bf45fe93d6bc65797804e34f0f32eb3d1858afec834b550c84'
|
4
|
+
data.tar.gz: 7370e0c11ee2220e323e32cac92e1a22647a6b19f759fbcc5d628bf487e09936
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 92759a5c33530cc15566d5758a25a1ecdb0667184a127f626eae9fd429c8a1e2919b06a515298c233a02e4a6456fe23659ed7fd9be5ea67474316607e8af8a54
|
7
|
+
data.tar.gz: 86a63bfbe19b364b51ff00c6cf37280f5a08e311d5c561720e4278da9016cf593cbab95109e61b8d933ec58bd09ef138c7e798da684ce41addd5410ad00b209d
|
data/README.md
CHANGED
@@ -1,13 +1,16 @@
|
|
1
1
|
# Zabbix-Rails
|
2
|
+
|
2
3
|
主要实现 zabbix_connector 对象缓存,加速 API 交互效率。 依赖 zabbix_manager 作为后端请求模块
|
3
4
|
|
4
5
|
## Usage
|
6
|
+
|
5
7
|
```
|
6
8
|
1、include Zabbix::Connector 到模块或者类对象;
|
7
9
|
2、调用 zabbix_connector 方法自动实现后端鉴权,当前前提是配置好 'zabbix_rails.rb in config/initializers'
|
8
|
-
3、调用 Zabbix::HostMonitor
|
9
|
-
4、调用 Zabbix::ItemTrigger
|
10
|
+
3、调用 Zabbix::HostMonitor 实现自动维护监控对象,需要自行实现 [Zabbix::DeleteMonitor] 的JOB 消息队列函数;
|
11
|
+
4、调用 Zabbix::ItemTrigger 实现自动维护触发器对象,需要自行实现 [Zabbix::DeleteTrigger] 的JOB 消息队列函数;
|
10
12
|
5、调用 Zabbix::Dns 实现自动维护 DNS 监控
|
13
|
+
6、调用 Zabbix::Chart 实现自动登录 zabbix 下载 item 的监控快照图片,同时兼容 V5 和 V6 版本,下载路径在 app/assets/images/chart;
|
11
14
|
```
|
12
15
|
|
13
16
|
## Installation
|
@@ -32,13 +35,19 @@ $ gem install zabbix-rails
|
|
32
35
|
|
33
36
|
add zabbix_rails.rb in config/initializers
|
34
37
|
|
38
|
+
```ruby
|
39
|
+
Zabbix.configure do |config|
|
40
|
+
config.url = Rails.application.credentials.zabbix.url
|
41
|
+
config.user = Rails.application.credentials.zabbix.username
|
42
|
+
config.password = Rails.application.credentials.zabbix.password
|
43
|
+
config.debug = false
|
44
|
+
end
|
35
45
|
```
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
# end
|
46
|
+
|
47
|
+
下载 zabbix item 图片范例:
|
48
|
+
```ruby
|
49
|
+
include Zabbix::Chart
|
50
|
+
save_chart_graph 37932
|
42
51
|
```
|
43
52
|
|
44
53
|
## Contributing
|
data/lib/zabbix/chart.rb
CHANGED
@@ -21,6 +21,27 @@ module Zabbix
|
|
21
21
|
_item_chart("/chart2.php", data)
|
22
22
|
end
|
23
23
|
|
24
|
+
# 接口图片
|
25
|
+
def iface_chart(*itemids)
|
26
|
+
# 构造数据结构
|
27
|
+
data = {
|
28
|
+
from: "now-6h",
|
29
|
+
to: "now",
|
30
|
+
itemids: [itemids].flatten,
|
31
|
+
height: 400,
|
32
|
+
width: 900
|
33
|
+
}
|
34
|
+
|
35
|
+
# 请求后端返回图片对象
|
36
|
+
_item_chart(data)
|
37
|
+
end
|
38
|
+
|
39
|
+
# 保存接口流量图片
|
40
|
+
def save_iface_graph(*itemids)
|
41
|
+
filename = generate_name([itemids].flatten[0])
|
42
|
+
save_file(filename, iface_chart(itemids))
|
43
|
+
end
|
44
|
+
|
24
45
|
# 请求生成 item_chart 对象
|
25
46
|
def item_chart(itemid, height = 400, width = 900, start_at = "now-6h", end_at = "now")
|
26
47
|
# 构造数据结构
|
@@ -41,7 +62,7 @@ module Zabbix
|
|
41
62
|
host = URI(base_url).host
|
42
63
|
conn = Faraday::Connection.new(base_url)
|
43
64
|
# 请求接口
|
44
|
-
conn.get
|
65
|
+
conn.get(url) do |r|
|
45
66
|
r.params.merge!(data)
|
46
67
|
r.headers["Host"] = host
|
47
68
|
r.headers["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
|
@@ -53,12 +74,12 @@ module Zabbix
|
|
53
74
|
def save_chart_graph(itemid, height = 400, width = 900, start_at = "now-6h", end_at = "now")
|
54
75
|
filename = generate_name(itemid)
|
55
76
|
save_file(filename, item_chart(itemid, height, width, start_at, end_at))
|
56
|
-
"/assets/chart/#{File.basename(filename)}"
|
57
77
|
end
|
58
78
|
|
59
79
|
# 保存图片
|
60
80
|
def save_file(filename, content)
|
61
81
|
directory_base = "app/assets/images/chart/"
|
82
|
+
|
62
83
|
# 生成绝对路径地址
|
63
84
|
FileUtils.mkdir_p("#{Rails.root}/#{directory_base}") unless Dir.exist?("#{Rails.root}/#{directory_base}")
|
64
85
|
filename.prepend(directory_base)
|
@@ -67,6 +88,8 @@ module Zabbix
|
|
67
88
|
File.open(filename, "wb") do |chart|
|
68
89
|
chart.write(content)
|
69
90
|
end
|
91
|
+
|
92
|
+
"#{Rails.root}/#{filename}"
|
70
93
|
end
|
71
94
|
|
72
95
|
# 生成随机名称
|
@@ -75,3 +98,4 @@ module Zabbix
|
|
75
98
|
end
|
76
99
|
end
|
77
100
|
end
|
101
|
+
|
data/lib/zabbix/connector.rb
CHANGED
@@ -68,12 +68,13 @@ module Zabbix
|
|
68
68
|
}
|
69
69
|
|
70
70
|
# 请求认证
|
71
|
-
ret = conn.post
|
71
|
+
ret = conn.post("/index.php") do |r|
|
72
72
|
r.headers["Host"] = host
|
73
73
|
r.body = data
|
74
74
|
end
|
75
75
|
|
76
|
-
|
76
|
+
# 此处需要特殊处理,否则 V5 版本无法正常加载缓存
|
77
|
+
ret.headers["set-cookie"]&.gsub(/ HttpOnly,?/, "").presence || nil
|
77
78
|
end
|
78
79
|
end
|
79
80
|
end
|
data/lib/zabbix/version.rb
CHANGED
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.6
|
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-
|
11
|
+
date: 2022-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|