zabbix-rails 0.1.3 → 0.1.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 473ef7cc7bbe32ffacd45ff386a02bdd239f6986a6cac0b5ce46197ad6f9d48c
4
- data.tar.gz: 53283376f84df42a8d2801177ef66d7d4af06fda72d0614e74af7ae0f935937c
3
+ metadata.gz: 57a01f1a90fa92149ff18d714662c27729794976268f1d8b74beb0a2e9acaba5
4
+ data.tar.gz: 7331a58248988f77994103d9be4dd5e0d33f65c2a8319e48549ac988b08a6ce7
5
5
  SHA512:
6
- metadata.gz: 8829c2d957801e949914a38b5028341e78c0e8e6a67811658eef126b9aaf44fb4d79daad85ebdd507d86b72fb9c6a894dcd62bfcb69f588bc883c0d209d2efe2
7
- data.tar.gz: 56139e405343d7541c0d01af8d963322554b9716fccf6dbc59f62739fad2972061eb170e9c23f389c0823839d9c7605e65d41d0b8b30bfbd2aba1ccf8d3b207e
6
+ metadata.gz: 9b7cce1c75bc1dcc16206d522bef8b96975f242ad68cbb272ac4fd06144436eec293a27f21539d89dc08cca9b7fc2c784dea3a44dce2005b8bcedead0f730c8c
7
+ data.tar.gz: 0a9eaf9aea738353c907607b36a90df624e12b14272adde4b50569d78b188410929b30d63373beb5a28854edfa3f766a23ffafefacc90f6b44a498c80c503d44
data/README.md CHANGED
@@ -1,10 +1,17 @@
1
- # Zabbix
2
- Short description and motivation.
1
+ # Zabbix-Rails
2
+ 主要实现 zabbix_connector 对象缓存,加速 API 交互效率。 依赖 zabbix_manager 作为后端请求模块
3
3
 
4
4
  ## Usage
5
- How to use my plugin.
5
+ ```
6
+ 1、include Zabbix::Connector 到模块或者类对象;
7
+ 2、调用 zabbix_connector 方法自动实现后端鉴权,当前前提是配置好 'zabbix_rails.rb in config/initializers'
8
+ 3、调用 Zabbix::HostMonitor 实现自动维护监控对象
9
+ 4、调用 Zabbix::ItemTrigger 实现自动维护触发器对象
10
+ 5、调用 Zabbix::Dns 实现自动维护 DNS 监控
11
+ ```
6
12
 
7
13
  ## Installation
14
+
8
15
  Add this line to your application's Gemfile:
9
16
 
10
17
  ```ruby
@@ -12,17 +19,30 @@ gem "zabbix-rails"
12
19
  ```
13
20
 
14
21
  And then execute:
22
+
15
23
  ```bash
16
24
  $ bundle
17
25
  ```
18
26
 
19
27
  Or install it yourself as:
28
+
20
29
  ```bash
21
30
  $ gem install zabbix-rails
22
31
  ```
23
32
 
33
+ add zabbix_rails.rb in config/initializers
34
+
35
+ ```
36
+ # Zabbix.configure do |config|
37
+ # c.url = Rails.application.credentials.zabbix.url
38
+ # c.user = Rails.application.credentials.zabbix.username
39
+ # c.password = Rails.application.credentials.zabbix.password
40
+ # c.debug = false
41
+ # end
42
+ ```
43
+
24
44
  ## Contributing
25
- Contribution directions go here.
26
45
 
27
46
  ## License
47
+
28
48
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # desc "Explaining what the task does"
2
3
  # task :zabbix-rails do
3
4
  # # Task goes here
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zabbix
4
+ class Config
5
+ class << self
6
+ attr_accessor :url, :user, :password, :debug
7
+
8
+ def configure
9
+ yield self
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,21 +1,18 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require "active_support/concern"
3
4
 
4
5
  module Zabbix
5
- module Connector
6
- extend ActiveSupport::Concern
6
+ extend ::ActiveSupport::Concern
7
7
 
8
+ module Connector
8
9
  # 开发测试环境需要单独开启缓存功能:bin/rails dev:cache
9
10
  # 将鉴权后的 zabbix-rails 对象缓存到 Rails,减少不必要的认证动作加速执行
10
11
  # https://guides.rubyonrails.org/caching_with_rails.html
11
12
  def zabbix_connector
12
- url = "http://zabbix-rails.local/api_jsonrpc.php"
13
- user = "Admin"
14
- password = "zabbix-rails"
15
-
16
13
  Rails.cache.fetch("zabbix_connector", expires_in: 4.hours) do
17
14
  Rails.logger.warn("Zabbix 正在请求 API 鉴权")
18
- ZabbixManager.connect(url: url, user: user, password: password, debug: false)
15
+ ZabbixManager.connect(url: Config.url, user: Config.user, password: Config.password, debug: Config.debug)
19
16
  rescue => e
20
17
  Rails.logger.warn("登录 ZABBIX 异常,请检查网络或登录凭证。原始报错信息: #{e}")
21
18
  end
@@ -1,8 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "active_support/concern"
4
+
3
5
  module Zabbix
6
+ extend ::ActiveSupport::Concern
7
+
4
8
  module DnsMonitor
5
- include ActiveSupport::Concern
9
+ include Zabbix::Connector
6
10
 
7
11
  # 生成 DNS 触发器表达式
8
12
  def dns_trigger_expression(name)
data/lib/zabbix/engine.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Zabbix
2
4
  class Engine < ::Rails::Engine
3
5
  isolate_namespace Zabbix
@@ -8,4 +10,4 @@ module Zabbix
8
10
  end
9
11
  end
10
12
  end
11
- end
13
+ end
@@ -1,49 +1,48 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "active_support/concern"
4
+
3
5
  module Zabbix
6
+ extend ::ActiveSupport::Concern
7
+
4
8
  module HostMonitor
5
- extend ActiveSupport::Concern
6
- include ZabbixConnectConcern
9
+ include Zabbix::Connector
7
10
 
8
- class << self
9
- # 创建或更新 zabbix-rails 主机监控对象
10
- def refresh_zabbix_host(item)
11
- if zabbix_connector.present? && (zabbix_connector.is_a? ZabbixManager)
12
- # 查询已关联的 hostid
13
- hostid = item[:hostid]
11
+ # 创建或更新 HostMonitor主机监控对象
12
+ def refresh_zabbix_host(item)
13
+ if zabbix_connector.present? && (zabbix_connector.is_a? ZabbixManager)
14
+ # 查询已关联的 hostid
15
+ hostid = item[:hostid]
14
16
 
15
- # 封装数据之前确保设备属组已经存在
16
- search_id = zabbix_connector.hosts.get_id(host: item.sn)
17
- # 构建 zabbix-rails 监控对象数据结构,创建或者更新数据
18
- if hostid.present?
19
- if search_id.blank?
20
- Rails.logger.warn("监控主机信息发生变化,正在创建监控对象: #{item}.inspect")
21
- Zabbix::DeleteMonitor.perform_now(item.sn)
22
- zabbix_connector.hosts.create_or_update(item.host_params)
23
- elsif hostid != search_id
24
- Rails.logger.warn("ZABBIX已有监控项,正在刷新数据 #{hostid} - #{search_id}")
25
- search_id
26
- else
27
- Rails.logger.warn("正在更新监控对象: #{item.sn} - #{item.name}")
28
- zabbix_connector.hosts.create_or_update(item.host_params)
29
- end
17
+ # 封装数据之前确保设备属组已经存在
18
+ search_id = zabbix_connector.hosts.get_id(host: item.sn)
19
+ # 构建 zabbix-rails 监控对象数据结构,创建或者更新数据
20
+ if hostid.present?
21
+ if search_id.blank?
22
+ Rails.logger.warn("监控主机信息发生变化,正在创建监控对象: #{item}.inspect")
23
+ Zabbix::DeleteMonitor.perform_now(item.sn)
24
+ zabbix_connector.hosts.create_or_update(item.host_params)
25
+ elsif hostid != search_id
26
+ Rails.logger.warn("ZABBIX已有监控项,正在刷新数据 #{hostid} - #{search_id}")
27
+ search_id
30
28
  else
31
- Rails.logger.warn("正在新增监控对象: #{item.sn} - #{item.name}")
29
+ Rails.logger.warn("正在更新监控对象: #{item.sn} - #{item.name}")
32
30
  zabbix_connector.hosts.create_or_update(item.host_params)
33
31
  end
34
-
35
- # 返回监控对象的 host_id
36
- Rails.logger.warn("成功执行创建或更新监控主机: #{item.name} #{item.sn}")
37
- zabbix_connector.hosts.get_id(host: item.sn).presence || nil
38
32
  else
39
- Rails.logger.warn("未获取 ZABBIX_MGMT 对象,无法执行创建或更新监控主机: #{item.name} #{item.sn}")
40
- nil
33
+ Rails.logger.warn("正在新增监控对象: #{item.sn} - #{item.name}")
34
+ zabbix_connector.hosts.create_or_update(item.host_params)
41
35
  end
42
- rescue => e
43
- Rails.logger.warn("无法执行创建或更新监控主机: #{item.name} #{item.sn} #{e}")
44
- end
45
36
 
37
+ # 返回监控对象的 host_id
38
+ Rails.logger.warn("成功执行创建或更新监控主机: #{item.name} #{item.sn}")
39
+ zabbix_connector.hosts.get_id(host: item.sn).presence || nil
40
+ else
41
+ Rails.logger.warn("未获取 ZABBIX_MGMT 对象,无法执行创建或更新监控主机: #{item.name} #{item.sn}")
42
+ nil
43
+ end
44
+ rescue => e
45
+ Rails.logger.warn("无法执行创建或更新监控主机: #{item.name} #{item.sn} #{e}")
46
46
  end
47
-
48
47
  end
49
48
  end
@@ -1,8 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "active_support/concern"
4
+
3
5
  module Zabbix
6
+ extend ::ActiveSupport::Concern
7
+
4
8
  module ItemTrigger
5
- include ActiveSupport::Concern
9
+ include Zabbix::Connector
6
10
 
7
11
  # 创建或新增触发器,返回触发器ID | 触发器的 DATA_STRUCTURE
8
12
  def refresh_trigger(data)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Zabbix
2
- VERSION = "0.1.3"
4
+ VERSION = "0.1.8"
3
5
  end
data/lib/zabbix-rails.rb CHANGED
@@ -1,16 +1,18 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "zabbix/version"
4
+ require "zabbix/config"
2
5
  require "zabbix/connector"
3
6
  require "zabbix/host_monitor"
4
7
  require "zabbix/item_trigger"
5
8
  require "zabbix/dns_monitor"
6
- require "zabbix/railtie"
7
- require "active_support/concern"
8
9
 
9
10
  # 加载外部依赖
11
+ require "active_support/concern"
10
12
  require "zabbix_manager"
11
13
 
12
14
  module Zabbix
13
- extend ActiveSupport::Concern
15
+ extend ::ActiveSupport::Concern
14
16
 
15
17
  class << self
16
18
  attr_accessor :url, :user, :password, :debug
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.1.3
4
+ version: 0.1.8
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-25 00:00:00.000000000 Z
11
+ date: 2022-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 7.0.2.3
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 7.0.2.3
26
+ version: '0'
27
27
  description: Description of Zabbix-rails.
28
28
  email:
29
29
  - careline@foxmail.com
@@ -35,12 +35,12 @@ files:
35
35
  - Rakefile
36
36
  - lib/tasks/zabbix_tasks.rake
37
37
  - lib/zabbix-rails.rb
38
+ - lib/zabbix/config.rb
38
39
  - lib/zabbix/connector.rb
39
40
  - lib/zabbix/dns_monitor.rb
40
41
  - lib/zabbix/engine.rb
41
42
  - lib/zabbix/host_monitor.rb
42
43
  - lib/zabbix/item_trigger.rb
43
- - lib/zabbix/railtie.rb
44
44
  - lib/zabbix/version.rb
45
45
  homepage: https://rubygem.org
46
46
  licenses: []
@@ -1,4 +0,0 @@
1
- module Zabbix
2
- class Railtie < ::Rails::Railtie
3
- end
4
- end