Zabbix API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдХреНрдпреЛрдВ рдЬрд░реВрд░реА рд╣реИ?



рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдЬрд╝реИрдмрд┐рдХреНрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреМрд░рд╛рди, рд╕реЗрдВрд╕рд░ рдФрд░ рдЯреНрд░рд┐рдЧрд░реНрд╕ рдХреЛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдХреЛрдИ рдЦреБрд╢реА рдирд╣реАрдВ рд╣реБрдИ, рдпрд╣ рдЦреБрд╢реА рд╕реЗ рдЦреБрд╢реА рдХреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдмрдбрд╝реА рдиреАрд░рд╕ рдХрд╛рдо рдФрд░ рдХрдо рдЧрддрд┐ рдереАред рд╕рд┐рдо рдХреЗ рд▓рд┐рдП zabbix рдПрдкреАрдЖрдИ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ред рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╕реЗрдВрд╕рд░ рдФрд░ рдЬреАрд╡рди рдХреА рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ, рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред



рдФрдЬрд╛рд░реЛрдВ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг



рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЕрдзреНрдпрдпрди рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдорд╛рдгрд┐рдХ, рдЕрдЬрдЧрд░ рдФрд░ php рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВред

PHP рдХреЛ рддреБрд░рдВрдд рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛, рдЕрдЬреНрдЮрд╛рдирддрд╛ рдХреЗ рдХрд╛рд░рдг, рд╢реЗрд╖ рднрд╛рд╖рд╛рдУрдВ рд╕реЗ, рд╡рд┐рдХрд▓реНрдк рдорд╛рдгрд┐рдХ рдкрд░ рдЧрд┐рд░ рдЧрдпрд╛ред рдЖрдк рдЗрд╕реЗ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд▓рдд рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ рдореИрдВ рд░реВрдмреА рдореЗрдВ рдХрд╕рдХрд░ рд▓рд┐рдЦреА рдЧрдИ рдХрдардкреБрддрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рднрд╛рд╖рд╛ рд╕реЗ рдереЛрдбрд╝рд╛ рдкрд░рд┐рдЪрд┐рдд рд╣реВрдВред

Zabbix API JSON рдФрд░ JSON-RPC рдХрд╛ рдЙрдкрдпреЛрдЧ рддреГрддреАрдп-рдкрдХреНрд╖ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдпрд╣ рдЬрд╛рдирд╡рд░ рднрдпрд╛рдирдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХрд░реАрдм рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдкрд░ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реЛ рдЧрдпрд╛ред

рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдХреЛ рдЬреНрдпрд╛рджрд╛ рди рдкрдЯрдХрдиреЗ рдХреЗ рд▓рд┐рдП , рдПрдХ рд░реЗрдбреАрдореЗрдб рдЬреИрдмрдХреЙрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдорд┐рд▓реА

рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рд╣реИ рдЖрдк рд▓рд┐рдВрдХ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдо рд╕реАрдзреЗ рдиреБрд╕реНрдЦрд╛ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред



рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдп





рдХрдИ рд╕рд░реНрд╡рд░ рд╣реИрдВред рд╕рднреА рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рдПрдХ zabbix- рдПрдЬреЗрдВрдЯ рд╣реЛрддрд╛ рд╣реИред рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рд╕реЗрдВрд╕рд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рдЗрди рд╕реЗрдВрд╕рд░ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдЧрд░ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рдЖрдк рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЪреАрд▓рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рдлрд┐рд░ рд╕реЗ рдпрд╣ рдПрдХ рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ, рдХреБрдЫ рджрд┐рдиреЛрдВ рдХреА рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреЗ рдмрд╛рдж, рдПрдХ рд╕реНрдерд┐рд░ рдШреГрдгрд╛ рд╣реИред



рдкреВрд░реЗ рджрд┐рди рдореЗрдВ рдЦреЛ рдЬрд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдлрд┐рд░ 5 рдорд┐рдирдЯ рдореЗрдВ рдЙрдбрд╝рд╛рди рднрд░реЗрдВред





рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо zabcon рдЙрдкрдпреЛрдЧрд┐рддрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдИ рдЧрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВред



рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рд░реВрдмреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред



#!/usr/bin/ruby

#

require './zabbixapi.rb'



zbx=ZbxAPI. new ( 'http://zabbix.server.com')

zbx.login( 'login','password')



# trigger

HIGH=4

AVERAGE=3

WARNING=2

INFORMATION=1



ENABLE=0

DISABLE=1



# return hostid

def hostid_from_hostname(hostname,zabbix)

for host in zabbix.host. get ({ "extendoutput" => true , 'pattern'=>"#{hostname}"})

return host[ 'hostid']

end

end



def add_disk_check(hostname,zabbix)

# , ssh

ssh=`ssh -o "StrictHostKeyChecking no" -q #{hostname} 'df -l -P -h | tail -n +2' `



hostid=hostid_from_hostname(hostname,zabbix)

for l in ssh

disk=l.split[5].gsub( "/" , "\/" )

name= "API Free diskspace on #{disk}"



item_p = {

'description'=>name,

'key_'=>"vfs.fs.size[#{disk},pfree]",

'hostid'=>hostid,

'type'=>'0',

'data_type'=>0,

'value_type'=>0,

'units'=>"%"

}



begin

uid = zabbix.item.create(item_p)

p "cant create item on #{hostname} disk #{disk}" if uid.nil?

end



expression= "{#{hostname}:vfs.fs.size[#{disk},pfree].last(0)}<10"

description= "API Free diskspace on {HOSTNAME} volume #{disk}"



item_t={

'hostid' => hostid,

'expression'=>expression,

'description'=>description,

'priority'=>HIGH,

'status'=>ENABLE,

}



begin

uid = zabbix.trigger.create(item_t)

p "cant create trigger on #{hostname} disk #{disk}" if uid.nil?

end



end

end



# zabbix

for host in zbx.host. get ({ "extendoutput" => true })

id=host[ 'hostid']

hostname=host[ 'host']

puts "#{id} -- #{hostname}"

add_disk_check(hostname,zbx)

end



# the end



* This source code was highlighted with Source Code Highlighter .










рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рджреМрд░рд╛рди, рдореБрдЭреЗ zabbixapi.rb рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдерд╛, рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЧрд┐рд░ рдЧрдИ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдВрд╕рд░ рдпрд╛ рдЯреНрд░рд┐рдЧрд░ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдерд╛ред

Do_request рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЛрдб рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ:

if !resp[ "error" ].nil?

raise ZbxAPI_GeneralError, resp[ "error" ] #

end



return resp

rescue Redirect #

redirects+=1

retry if redirects<=5

raise ZbxAPI_GeneralError, "Too many redirects"

end




* This source code was highlighted with Source Code Highlighter .






рд╣рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреЗ рд╣реИрдВред



рд╕рд╛рд░рд╛рдВрд╢



рдЬрд╝реИрдмрд┐рдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕рд░реНрдл рдХрд░рдиреЗ рдХреЗ рдХрд╛рдо рдХреЛ рдЕрдиреБрд╕рдВрдзрд╛рди рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕рд╛рде рд╣реА рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рдЯреВрд▓рдХрд┐рдЯ рдХреЛ рдЕрдкрдиреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдЧрд░рд╛рдиреА рдЯреНрдпреВрдирд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ рдереАред

рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдп рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рдЪреАрд▓реЗрдкрди рдФрд░ рд╕рдВрд╕рд╛рдзрдирд╢реАрд▓рддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред



All Articles