class ZabbixServer
Attributes
connected[R]
attr_accessor :server_url, :username, :password
connection[R]
attr_accessor :server_url, :username, :password
version[R]
attr_accessor :server_url, :username, :password
Public Class Methods
new()
click to toggle source
# File libs/zabbix_server.rb, line 66 def initialize @credentials={} #@server_url=nil #@username=nil #@password=nil @connected=false @version=nil @connection=nil end
Public Instance Methods
addelementtosysmap(parameters)
click to toggle source
# File libs/zabbix_server.rb, line 305 def addelementtosysmap(parameters) debug(6,:var=>parameters) result=@connection.sysmap.addelement(parameters) {:class=>:map, :result=>result} end
addlink(parameters)
click to toggle source
# addtrigger( { trigger1, trigger2, triggern } ) # Only expression and description are mandatory. # { { expression, description, type, priority, status, comments, url }, { …} } def addtrigger(parameters)
debug(6,parameters) result=@connection.trigger.create(parameters) {:class=>:trigger, :result=>result}
end
# File libs/zabbix_server.rb, line 293 def addlink(parameters) debug(6,:var=>parameters) result=@connection.sysmap.addlink(parameters) {:class=>:map, :result=>result} end
addlinktrigger(parameters)
click to toggle source
# File libs/zabbix_server.rb, line 317 def addlinktrigger(parameters) debug(6,:var=>parameters) result=@connection.sysmap.addlinktrigger(parameters) {:class=>:map, :result=>result} end
addsysmap(parameters)
click to toggle source
# File libs/zabbix_server.rb, line 299 def addsysmap(parameters) debug(6,:var=>parameters) result=@connection.sysmap.create(parameters) {:class=>:map, :result=>result} end
addusermedia(parameters)
click to toggle source
# File libs/zabbix_server.rb, line 211 def addusermedia(parameters) debug(6,:var=>parameters) valid_parameters=["userid", "mediatypeid", "sendto", "severity", "active", "period"] if parameters.nil? then puts "add usermedia requires arguments, valid fields are:" puts "userid, mediatypeid, sendto, severity, active, period" puts "example: add usermedia userid=<id> mediatypeid=1 sendto=myemail@address.com severity=63 active=1 period=\"\"" else p_keys = parameters.keys valid_parameters.each {|key| p_keys.delete(key)} if !p_keys.empty? then puts "Invalid items" p p_keys return false elsif parameters["userid"].nil? puts "Missing required userid statement." end begin @connection.user.addmedia(parameters) rescue ZbxAPI_ParameterError => e puts e.message end end end
connected?()
click to toggle source
TODO come back and finish the class to have automated timeout of the connection, and improve the usability of this function which should tell you if you have a valid connection or not, which includes timeout and login.
# File libs/zabbix_server.rb, line 199 def connected? @connected end
getappid(parameters)
click to toggle source
def getapp(parameters)
debug(6,parameters) result=@connection.application.get(parameters) {:class=>:application, :result=>result}
end
def addapp(parameters)
debug(6,parameters) result=@connection.application.create(parameters) {:class=>:application, :result=>result}
end
# File libs/zabbix_server.rb, line 272 def getappid(parameters) debug(6,:var=>parameters) result=@connection.application.getid(parameters) {:class=>:application, :result=>result} end
gethostgroupid(parameters)
click to toggle source
def gethostgroup(parameters)
debug(6,parameters) result=@connection.hostgroup.get(parameters) {:class=>:hostgroup, :result=>result}
end
# File libs/zabbix_server.rb, line 253 def gethostgroupid(parameters) debug(6,:var=>parameters) result = @connection.hostgroup.getObjects(parameters) {:class=>:hostgroupid, :result=>result} end
getseid(parameters)
click to toggle source
# File libs/zabbix_server.rb, line 311 def getseid(parameters) debug(6,:var=>parameters) result=@connection.sysmap.getseid(parameters) {:class=>:map, :result=>result} end
gettrigger(parameters)
click to toggle source
# File libs/zabbix_server.rb, line 278 def gettrigger(parameters) debug(6,:var=>parameters) result=@connection.trigger.get(parameters) {:class=>:trigger, :result=>result} end
loggedin?()
click to toggle source
# File libs/zabbix_server.rb, line 191 def loggedin? @connected end
login(server={})
click to toggle source
login
Perform the actual login to the Zabbix server If the object variables url, username, and password have not been set previously, an attempt will be made to use the global environment variables. If that does not work an exception will be raised.
# File libs/zabbix_server.rb, line 105 def login(server={}) @credentials.merge!(server) error_msg=[] error_msg<<"Url not set" if !@credentials["server"] error_msg<<"Username not set" if !@credentials["username"] error_msg<<"Password not set" if !@credentials["password"] raise ConnectionProblem.new(error_msg.join(", ")) if !error_msg.empty? @connection = ZabbixServer_overload.new(@credentials["server"],env["debug"]) if @credentials["proxy_server"] @connection.set_proxy(@credentials["proxy_server"],@credentials["proxy_port"], @credentials["proxy_user"],@credentials["proxy_password"]) end @connection.login(@credentials["username"],@credentials["password"]) @connected=true ServerCredentials.instance[@credentials["name"]]["auth"]= @connection.auth @version=@connection.API_version puts "#{@server_url} connected" if env["echo"] puts "API Version: #{@version}" if env["echo"] save_auth end
logout()
click to toggle source
# File libs/zabbix_server.rb, line 132 def logout begin @connection.logout rescue ZbxAPI_GeneralError => e #if it's -32400, it's probably because the function does not exist. raise e if e.message["code"]!=-32400 ensure @connection=nil @connected=false @version=nil if @credentials["name"] ServerCredentials.instance[@credentials["name"]].delete("auth") end GlobalVars.instance.delete("auth") save_auth puts "Logout complete from #{server_url}" if env["echo"] end end
password()
click to toggle source
# File libs/zabbix_server.rb, line 92 def password @credentials["password"] end
password=(password)
click to toggle source
# File libs/zabbix_server.rb, line 96 def password=(password) @credentials["password"]=password end
reconnect()
click to toggle source
# File libs/zabbix_server.rb, line 207 def reconnect @connection.login(@user,@password) end
save_auth()
click to toggle source
# File libs/zabbix_server.rb, line 152 def save_auth if env["session_file"] && !env["session_file"].empty? path=File.expand_path(env["session_file"]) creds={} ServerCredentials.instance.each {|name,values| creds[name]=values["auth"] if values["auth"] } File.open(path,"w") do |f| f.write({"auth"=>creds}.to_yaml) end #Enforce that the auth cache file isn't world readable File.chmod(0600,path) end end
server_url()
click to toggle source
# File libs/zabbix_server.rb, line 76 def server_url @credentials["server"] end
server_url=(server)
click to toggle source
# File libs/zabbix_server.rb, line 80 def server_url=(server) @credentials["server"]=server end
use_auth(server)
click to toggle source
# File libs/zabbix_server.rb, line 168 def use_auth(server) debug(6,:msg=>"Server",:var=>server) @credentials.merge!(server) debug(6,:msg=>"credentials",:var=>@credentials) # @server_url = server["server"] || @server_url @connection = ZabbixServer_overload.new(server_url,env["debug"]) @connection.auth=@credentials["auth"] if @credentials["proxy_server"] @connection.set_proxy(@credentials["proxy_server"],@credentials["proxy_port"], @credentials["proxy_user"],@credentials["proxy_password"]) end major,minor=@connection.do_request(@connection.json_obj('APIInfo.version',{}))['result'].split('.') @connection.major=major.to_i @connection.minor=minor.to_i @version=@connection.API_version @connected=true true end
username()
click to toggle source
# File libs/zabbix_server.rb, line 84 def username @credentials["username"] end
username=(username)
click to toggle source
# File libs/zabbix_server.rb, line 88 def username=(username) @credentials["username"]=username end