Mojo::Zabbix
Mojo::Zabbix — это простая оболочка Perl для Zabbix API. Мы создаём только методы аутентификации и запроса, а также несколько вспомогательных методов для упрощения вызова таких методов, как create/get/update/delete/exists.
中文介绍
Mojo::Zabix — это простой пакет функций zabbix api, который упрощает доступ к операциям zabbix с помощью сценариев Perl. В настоящее время поддерживаются только методы аутентификации и запросов, которые можно использовать для вызова методов create
/get
/update
/delete
/exists
. Этот модуль основан на Mojo::useragent и использует Mojo:DOM для обработки и извлечения содержимого результатов.
Этот модуль зависит от Mojo и рекомендуется устанавливать с помощью cpan или пакета cpanm Mojo::Zabbix.
Тестирование
Модуль совместим и протестирован с Zabbix версии ниже 5.0.
В настоящее время модуль тестируется только в версиях до 5.0, но может использоваться и в версии 5.0 без строгого тестирования.
Пример
use Mojo::Zabbix;
my $z = Net::Zabbix->new(
url => "https://server/zabbix/",
username => 'user',
password => 'pass',
verify_ssl => 0,
debug => 1,
trace => 0
);
my $r = $z->get("host", {
filter => undef,
search => {
host => "test",
}
});
print $z->get("apiinfo.version",)->{result},"\n";
print getTriggers($z); # Эта функция и другие функции упакованы в Mojo::Zabbix::APP
sub getTriggers {
my $z=shift;
my $ysterday=localtime(time()-24*3600);
my $r = $z->get("trigger", {
filter => {value => 1,
lastChangeSince => "$ysterday",
'withUnacknowledgedEvents'=>1,
},
output => ["","triggerid","description","priority"],
sortfield =>"priority",
sortorder => "DESC",
expandData=>"host",
},
);
my $result;
my $host=$r->{'result'};
for (@$host){
$result.="$_->{'host'}:".$_->{'description'}."\n" ;
}
return $result;
}
xxx.xxx.xx.55: {HOST.CONN} серверный порт 84 down xxx.xxx.xx.55: {HOST.CONN} серверный порт 81 down xxx.xxx.xx.55: {HOST.CONN} серверный порт 82 down xxx.xxx.xx.55.9: {HOST.CONN} серверный порт 80 down xxx.xxx.xx.12: {HOST.NAME} серверная нагрузка высокая, пожалуйста, проверьте вовремя xxx.xxx.xx.124: использование диска sdb превышает 95%, текущее значение равно {ITEM.LASTVALUE} xxx.xxx.xx.44: использование диска sdb превышает 95%, текущее значение равно {ITEM.LASTVALUE} xxx.xxx.xx.45: использование диска sdb превышает 95%, текущее значение равно {ITEM.LASTVALUE} xxx.xxx.xx.33: использование диска sdb превышает 95%, текущее значение равно {ITEM.LASTVALUE} xxx.xxx.xx.56: использование диска sda превышает 95%, текущее значение равно {ITEM.LASTVALUE} xxx.xxx.xx.57: использование диска sda превышает 95%, текущее значение равно {ITEM.LASTVALUE}
На основе этого модуля, через webqq или webwx в реальном времени получать данные мониторинга хостов.
XX_10.2.7.20_ Реальные данные:
ESTABLISHED соединение - { connections.status[ESTABLISHED] } : 9 SYN соединение - { connections.status[SYN] } : 0 Выход потока сетевой карты $1 - { net.if.out[bond0] } : 5176 Нагрузка - { system.cpu.load[,avg1] } : 0.000000 $1 оставшийся процент inode - { vfs.fs.inode[/,pfree] } : 99.788211 $1 осталось процентов - { vfs.fs.size[/,pfree] } : 99.269724 Доступная память - { vm.memory.size[available] } : 261874798592 Коэффициент использования памяти - { vm.memory.size[pused] } : 4.720467 Общий объём памяти - { vm.memory.size[total] } : 270763327488
Mojo-Zabbix-APP
Приложение модуля Mojo-Zabbix. Получает данные из данных zabbix, включая хосты, элементы, триггеры и предупреждения и т. д.
Это прикладной модуль модуля Mojo::Zabix, который упаковывает общие модули zabbix api и может удобно получать информацию zabbix, которая в настоящее время включает версию zabbix, список хостов, список мониторинга, триггер, предупреждение и т.д., и может предоставлять больше операций в соответствии с потребностями.
use Mojo::Zabbix::APP;
my @myzinfo = <DATA>; ##(получить информацию zabbix из __DATA__)
#### Определить для процесса отладки и отслеживания информации (открыть отладку и отслеживание)
my $DEBUG=0;
my ``` **Определение zabbix-сервера**
my @myzinfo = ('test1 http://test1/zabbix testuser pass');
@Можно определить как многострочные данные, формат следующий: один адрес zabbix сервера.
for (@myzinfo) {
next if /^#/;
next if /^\s*$/;
my ( $name, $url,$user, $pass ) = split;
print "\n$name\n";
my $z;
eval { $z = initZ( $url,$user,$pss ); };
if ($@) {
print "Error $@!\n";
} else {
## Print the version of zabbix api. 打印zabbix 版本
pVersion($z);
## Print all host lists。 获取所有的主机列表
print getAllhost($z);
## Print warning info of Triggers。打印取得的所有触发器告警信息
pTriggers($z);
## Print the history data of given items, default for past 24 hours.
## 打印给定时间段的item历史数据,如果默认不给时间默认为过去24小时内的
pHitems($z); # 打印实时监控数据
}
}
**Результат демонстрации**
name
Warning info of Triggers
2016-10-19 23:29:57 : 192.168.1.* : {HOST.NAME}上的80端口关闭
2016-10-19 22:58:28 : 192.168.2.* : 系统目录/etc/sysconfig/发生变化
2016-10-19 22:24:32 : 192.168.3.* : 系统目录/etc/init.d/发生变化
2016-10-19 19:12:53 : 192.168.3.* : 磁盘sda IO利用率超过95%
2016-10-19 18:03:03 : 192.168.4.* : Too many processes on {HOST.NAME}
**Более подробное описание**
Мы можем добавить программу в crontab и получать результаты по почте или через IM-инструмент. В настоящее время существует плагин [Mojo-webqq](https://github.com/sjdy521/Mojo-Webqq), который позволяет интерактивно получать данные мониторинга.
**Git-репозиторий**
[Github](https://github.com/bollwarm/Mojo-Zabbix)
[OSChina](https://gitee.com/ijz/Mojo-Zabbix.git)
**Автор**
[Пишите мне](bollwarm@ijz.me)
[Веб|Блог](https://ijz.me)
**Лицензия**
Это программное обеспечение защищено авторским правом (c) 2016 by oragnge.
Это бесплатное программное обеспечение; вы можете распространять его и/или изменять его на тех же условиях, что и сама система языка программирования Perl 5.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )