Zabbix2.0の新機能でこんなのがあるようです
【ラトビアの生活とZabbix 2.0 & カンファレンスの話】 by @kodai74
ホストを並べたマップは確かにホストの状態が一目でわかって便利ですね!
でもZabbix1.8では作るのがけっこうめんどうです。
(要素のコピーができないので手動だと・・・XMLで作ってインポートすればまだ楽)
というわけでAPI経由で作ってみました。
こんな感じでできました。
ソースコード
ZabbixAPI.pmを使ってます。
#!/usr/bin/perl use strict; use warnings; use lib 'lib'; use Data::Dumper; use ZabbixAPI; my $hostgroup = 'Linux servers'; # マップにまとめるホストグループ # MAPの設定 my %params = ( name => "test-map01", width => 450, height => 350, backgroundid => 0, label_type => 0, # 0:label 1:IP address 2:icon name 3:only status label_location => 2, # 0:bottom 1:left 2:right 3:top highlight => 0, expandproblem => 1, markelements => 0, show_unack => 0 ); my $za = ZabbixAPI->new("http://127.0.0.1/zabbix/"); $za->login("apiuser", "apipass"); # ホストグループのIDを取得 my $groupid = $za->hostgroup_get( { filter => { name => [ $hostgroup ] } } )->[0]->{groupid}; # ホスト情報を取得 my $hosts = $za->host_get( { groupids => [ $groupid ], sortfield => 'host', output => 'extend' } ); # マップの要素情報を作成 my @selements; my ($basex, $basey) = (10, 50); my ($x, $y) = ($basex, $basey); for my $host (@$hosts){ push @selements, { elementid => $host->{hostid}, elementtype => 0, # 0:host 1:map 2:trigger 3:host group 4:image # icon iconid_off => 19, # OK iconid_on => 0, # PROBLEM iconid_unknown => 0, # UNKNOWN iconid_disabled => 0, # Disabled iconid_maintenance => 0, # Maintenance # label label => $host->{host}, label_location => 0, # 0:bottom 1:left 2:right 3:top -1:map setting # position x => $x, y => $y, # URLに適切なスクリーンをセットしておくと便利!!! url => "http://mikeda.jp/zabbix/screens.php?&elementid=3&groupid=6&hostid=".$host->{hostid} }; $x += 100; if($x > $params{width} - 100){ $x = $basex; $y += 100; } } $params{selements} = \@selements; # マップ作成 my $result = $za->map_create( [ \%params ]); print Dumper $result;