рдХреНрдпреЛрдВ рдЬрд░реВрд░реА рд╣реИ?
рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдЬрд╝реИрдмрд┐рдХреНрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреМрд░рд╛рди, рд╕реЗрдВрд╕рд░ рдФрд░ рдЯреНрд░рд┐рдЧрд░реНрд╕ рдХреЛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдХреЛрдИ рдЦреБрд╢реА рдирд╣реАрдВ рд╣реБрдИ, рдпрд╣ рдЦреБрд╢реА рд╕реЗ рдЦреБрд╢реА рдХреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдмрдбрд╝реА рдиреАрд░рд╕ рдХрд╛рдо рдФрд░ рдХрдо рдЧрддрд┐ рдереАред рд╕рд┐рдо рдХреЗ рд▓рд┐рдП 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 .
рд╣рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреЗ рд╣реИрдВред
рд╕рд╛рд░рд╛рдВрд╢
рдЬрд╝реИрдмрд┐рдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕рд░реНрдл рдХрд░рдиреЗ рдХреЗ рдХрд╛рдо рдХреЛ рдЕрдиреБрд╕рдВрдзрд╛рди рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕рд╛рде рд╣реА рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рдЯреВрд▓рдХрд┐рдЯ рдХреЛ рдЕрдкрдиреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдЧрд░рд╛рдиреА рдЯреНрдпреВрдирд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ рдереАред
рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдп рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рдЪреАрд▓реЗрдкрди рдФрд░ рд╕рдВрд╕рд╛рдзрдирд╢реАрд▓рддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред