#Ruby Zabbix Api Module
Simple and lightweight ruby module for work with zabbix api
#####Now worked with zabbix
- 1.8.2 (api version 1.2)
- 1.8.9 (api version 1.3)
- 2.0.4 (api version 2.0.4) [unstable]
gem install zabbixapi
require "zabbixapi"
zbx = ZabbixApi.connect(
:url => 'http://localhost/zabbix/api_jsonrpc.php',
:user => 'Admin',
:password => 'zabbix'
)
# use basic_auth
zbx = ZabbixApi.connect(
:url => 'http://localhost/zabbix/api_jsonrpc.php',
:user => 'Admin',
:password => 'zabbix',
:http_password => 'bla-bla',
:http_user => 'bla-bla'
)
zbx.hostgroups.create(:name => "hostgroup")
zbx.templates.create(
:host => "template",
:groups => [:groupid => zbx.hostgroups.get_id(:name => "hostgroup")]
)
zbx.applications.create(
:name => application,
:hostid => zbx.templates.get_id(:host => "template")
)
zbx.items.create(
:description => "item",
:key_ => "proc.num[aaa]",
:hostid => zbx.templates.get_id(:host => "template"),
:applications => [zbx.applications.get_id(:name => "application")]
)
# or use (lib merge json):
zbx.items.create_or_update(
:description => "item",
:key_ => "proc.num[aaa]",
:type => 6,
:hostid => zbx.templates.get_id(:host => "template"),
:applications => [zbx.applications.get_id(:name => "application")]
)
zbx.items.update(
:itemid => zbx.items.get_id(:description => "item"),
:status => 0
)
#You can check item:
puts zbx.items.get_full_data(:description => "item")
zbx.hosts.add(
:host => "hostname",
:usedns => 1,
:groups => [ :groupid => zbx.hostgroups.get_id(:name => "hostgroup") ]
)
#or use:
zbx.hosts.create_or_update(
:host => host,
:usedns => 0,
:ip => "10.20.48.89",
:groups => [:groupid => zbx.hostgroups.get_id(:name => hostgroup)]
)
zbx.hosts.update(
:hostid => zbx.hosts.get_id(:host => "hostname"),
:status => 0
)
#You can check host:
puts zbx.hosts.get_full_data(:host => "hostname")
zbx.hosts.delete zbx.hosts.get_id(:host => "hostname")
gitems = {
:itemid => zbx.items.get_id(:description => "item"),
:calc_fnc => "2",
:type => "0",
:periods_cnt => "5"
}
zbx.graphs.create(
:gitems => [gitems],
:show_triggers => "0",
:name => "graph",
:width => "900",
:height => "200"
)
zbx.graphs.update(
:graphid => zbx.graphs.get_id( :name => "graph"),
:ymax_type => 1
)
#Also you can use:
gitems = {
:itemid => zbx.items.get_id(:description => item),
:calc_fnc => "3",
:type => "0",
:periods_cnt => "5"
}
zbx.graphs.create_or_update(
:gitems => [gitems],
:show_triggers => "1",
:name => graph,
:width => "900",
:height => "200"
)
zbx.graphs.get_ids_by_host(:host => "hostname")
#You can filter graph name:
zbx.graphs.get_ids_by_host(:host => "hostname", filter => "CPU")
zbx.graphs.delete(zbx.graphs.get_id(:name => "graph"))
zbx.templates.get_ids_by_host( :hostids => [zbx.hosts.get_id(:host => "hostname")] )
#returned hash:
#{
# "Templatename" => "10",
# "Templatename" => "1021"
#}
zbx.templates.mass_add(
:hosts_id => [zbx.hosts.get_id(:host => "hostname")],
:templates_id => [111, 214]
)
zbx.templates.mass_remove(
:hosts_id => [zbx.hosts.get_id(:host => "hostname")],
:templates_id => [111, 214]
)
zbx.triggers.create(
:description => "trigger",
:expression => "{template:proc.num[aaa].last(0)}<1",
:comments => "Bla-bla is faulty (disaster)",
:priority => 5,
:status => 0,
:templateid => 0,
:type => 0
)
zbx.users.create(
:alias => "Test user",
:name => "username",
:surname => "usersername",
:passwd => "password"
)
zbx.users.update(:userid => zbx.users.get_id(:name => "user"), :name => "user2")
zbx.graphs.delete(zbx.graphs.get_id(:name => "graph"))
zbx.screens.get_or_create_for_host(
:screen_name => "screen_name",
:graphids => zbx.graphs.get_ids_by_host(:host => "hostname")
)
zbx.screens.delete(
:screen_id => 1, # or screen_id => [1, 2]
)
or
zbx.screens.delete(
:screen_name => "foo screen", # or screen_name => ["foo screen", "bar screen"]
)
zbx.usergroups.get_or_create(:name => "Some user group")
zbx.usergroups.add_user(
:usrgrpids => [zbx.usergroups.get_id(:name => "Some user group")],
:userids => [zbx.users.get_id(:name => "Some user")]
)
# set write and read permissions for UserGroup on all hostgroups
zbx.usergroups.set_perm(
:usrgrpid => zbx.usergroups.get_or_create(:name => "Some user group"),
:hostgroupids => zbx.hostgroups.all.values, # kind_of Array
:permission => 3 # 2- read (by default) and 3 - write and read
)
zbx.mediatypes.create_or_update(
:description => "mediatype",
:type => 0, # 0 - Email, 1 - External script, 2 - SMS, 3 - Jabber, 100 - EzTexting,
:smtp_server => "127.0.0.1",
:smtp_email => "zabbix@test.com"
)
zbx.users.add_medias(
:userids => [zbx.users.get_id(:name => "user")],
:media => [
{
:mediatypeid => zbx.mediatypes.get_id(:description => "mediatype"),
:sendto => "test@test",
:active => 0,
:period => "1-7,00:00-24:00", # 1-7 days and 00:00-24:00 hours
:severity => "56"
}
]
)
zbx.query(
:method => "apiinfo.version",
:params => {}
)
- net/http
- net/https
- json
- Fork the project.
- Make your feature addition or bug fix, write tests.
- Commit, do not mess with rakefile, version.
- Make a pull request.