Речь про support.zabbix.com/browse/ZBXNEXT-3386. Раньше постоянные подключения от каждого IPMI-поллера могли в некоторых случаях прибить IPMI-сервер своим количеством. Теперь подключение к каждому IPMI-серверу только одно.
Это темплейты-зависимости, которые необходимо импортировать перед тем как использовать сетевые шаблоны: share.zabbix.com/official-templates/network-devices
Импортировать нужно только если обновляетесь с 3.2, если ставите 3.4 с нуля, то ничего делать не нужно
Так как данные отправляемые при помощи zabbix_sender — это очень простой JSON (вот спека), то отсылку данных в Zabbix можно встроить в свой скрипт в Perl (или любой другой язык), и не использовать консольную утилиту, например как то вот
так
sub zabbix_send {
my $zabbixserver = shift;
my $hostname = shift;
my $item = shift;
my $data = shift;
Readonly my $SOCK_TIMEOUT => 10;
Readonly my $SOCK_RECV_LENGTH => 1024;
my $result;
my $request =
sprintf
"<req>\n<host>%s</host>\n<key>%s</key>\n<data>%s</data>\n</req>\n",
encode_base64($hostname), encode_base64($item), encode_base64($data);
my $sock = IO::Socket::INET->new(
PeerAddr => $zabbixserver,
PeerPort => '10051',
Proto => 'tcp',
Timeout => $SOCK_TIMEOUT
);
die "Could not create socket: $ERRNO\n" unless $sock;
$sock->send($request);
my @handles = IO::Select->new($sock)->can_read($SOCK_TIMEOUT);
if ( $debug > 0 ) { print "item - $item, data - $data\n"; }
if ( scalar(@handles) > 0 ) {
$sock->recv( $result, $SOCK_RECV_LENGTH );
if ( $debug > 0 ) {
print "answer from zabbix server $zabbixserver: $result\n";
}
}
else {
if ( $debug > 0 ) { print "no answer from zabbix server\n"; }
}
$sock->close();
return;
}
Спасибо большое за важное дополнение! Протестировал и добавил функцию zabbix_send для отсылки через socket в скрипт. В статью тоже внес эти поправки.
Теперь /usr/bin/zabbix_sender не используется.
От конфига, к сожалению, труднее отказаться, так как там прописаны логин/пароль для API, которых нет в конфиге zabbix_agent…
Бездонное хранилище не нужно. Достаточно ограничить время хранение логов в заббиксе в элементе данных чтобы срезать неактуальное.
Описанный вариант используется на инсталляции в 500 хостов в течение двух лет без каких либо проблем. Сервер стоит на IBM x3250M3 + два заббикс прокси на порезанных по памяти виртуалках.
Да, все верно насчет форка, zabbix_sender'а, конечно это не лучший вариант с точки зрения производительности, и в какой-то момент может забуксовать.
В других случаях — это возможность работать с логами в той же консоли, где и остальной мониторинг (если используется Zabbix)
Zabbix API дергается только в случае нового хоста, а в других случаях берется их кэша.
share.zabbix.com/official-templates/network-devices
Импортировать нужно только если обновляетесь с 3.2, если ставите 3.4 с нуля, то ничего делать не нужно
Пример скрипта целиком с этой функцией тут: https://habrahabr.ru/company/zabbix/blog/252915/
По макросам сам не раз сталкивался с такой необходимостью, по данной функции существует ZBXNEXT.
Теперь /usr/bin/zabbix_sender не используется.
От конфига, к сожалению, труднее отказаться, так как там прописаны логин/пароль для API, которых нет в конфиге zabbix_agent…
Описанный вариант используется на инсталляции в 500 хостов в течение двух лет без каких либо проблем. Сервер стоит на IBM x3250M3 + два заббикс прокси на порезанных по памяти виртуалках.
В других случаях — это возможность работать с логами в той же консоли, где и остальной мониторинг (если используется Zabbix)
Zabbix API дергается только в случае нового хоста, а в других случаях берется их кэша.
HP RAID drive status
1 ⇒ other
2 ⇒ OK
3 ⇒ degraded
4 ⇒ failed
Все эти преобразования можно из MIBа вытянуть.