Pull to refresh

Comments 46

Zabbix, мне в последнее время очень интересен. И интересно как сделать, например, вот такое:
image
Есть в нем возможность строить карты сети. Естественно вручную. Так вот… подложку можно менять на любую интересующую картинку, а дальше добавлять в нужных местах сетевые устройства и триггеры.
И соединять их
Я думаю автора интересовало отображение скорости передачи между 2мя точками, а не фон.
Скрин как раз из заббикса.
Вам интересно чтобы на линке отображался тарфик?
Вставьте в название линка или узла сети
DL/UL: {ИМЯ_УЗЛА:ifHCOutOctets.XGigabitEthernet0-1-1.last(0)} / {ИМЯ_УЗЛА:ifHCInOctets.XGigabitEthernet0-1-1.last(0)}
т… е. узел сети- его элемент — тип последнего значения в данном случае последнее занчение можно среднее можно минимум можно максимум, более подробно есть в документации.
Делаете подложку, загружаете ее. Грузите сервера и добавляете необходимые метки для отображения. Никакой магии.
Прошу прощения, а почему заббикс? Не логичнее ли при большом количестве одинаковых железок nagios+centreon? У меня на работе именно так и сделано. Один раз аккуратно созданый профиль для коммутатора/дслама/unix сервера и в результате получаем добавление новой железки в три комманды, возможность быстро и без косяков менять параметры опроса групп, репликацию на несколько нод.
Я не то чтобы против заббикса, просто хотел бы понят, почему Вы его выбрали.
Это холиварная тема, но отвечу — просто опишу плюсы: железки не добавляю руками, все делается автоматом. Шаблоны подцепляются автоматом. Железки по группам распределяются автоматом. Все делается на основе правил которые меняются на лету без перезагрузки. Для изменения любого параметра на всех железках сразу достаточно поменять шаблон. Если нужно поменять этот параметр только на железке меняем на железке шаблон при этом не трогается. Глубина хранения истории, трендов, интервал опроса и прочее меняется на лету без остановок и потерь накопленной информации. Вся информация хранится в БД. Есть удобный API. Высокая производительность на больших количествах итемов. Легкая масштабируемость системы.
Уверен, что то же есть и Nagios, но формат вывода и доступ к сохраненной информации мне более удобен в этой системе. ЗЫ Nagios у нас тоже есть и успешно мониторит состояние сети но не порты конечных абонентов, да я и честно не представляю как удобно реализовать в нем мониторинг хотябы десятка тысяч абонентских портов.
Я конечно извиняюсь за настойчивость, но все то же самое умеет и нагиос. Производительность — полторы тысячи аксесс коммутаторов по 24 порта — опрашивается на DL 380 с 1 зионом. В чистом виде нагиос убог. Но если взять centreon или Munin и nagvis(а можно не париться и поставить сразу FAN).

Умеет ли заббикс несколько нод — вот это вопрос.
Умеет, это называется распределенный мониторинг. Количество железа не показатель а вот количество новых значений в секунду с опрашиваемых устройств это более интересная цифра. У меня порядка 80 новых значений в секунду получается.
заббикс умеет так называемые прокси, это практически тоже самое что и много нод.

А если и заббикс и нагиос умеют одно и тоже, то каждый выбирает на свое усмотрение. Яндекс кстати выбрал заббикс, тоже с мусклом.
Умеет. Причем умеет как присылать данные так и просто события. Zabbix да жрет больше ресурсов но и умеет на порядок больше. Особенно когда надо сделать что-то необычное. В случае nagios вам придется писать плагин, в случае zabbix только сунуть данные и написать выражение для триггера.
А я выскажусь.
Мунин — смех сквозь слезы а не мониторинг. Как там посмотреть какой нибудь чарт «за неделю назад между 14 и 15 часами?». По умолчанию по десятке метрик на чарт — вызывают головокружение и тошноту вместо ясной картины. А как там системы реакций, оповещений?

Вы бы еще ( простите за выражение) MMonit вспомнили.

Нагиос — мамонт мониторинга. Мониторить пограничные состояния вроде «порт открыт или закрыт» — да еще при помощи connect — улюлюкая гоняться с дубиной по пещерам. Разве что начинать городить фестиваль плагинов с nrpe и хоть какой то историей событий… а не по алертам на почте смотреть.
Ну и да я забыл сказать, профили там есть. Так что никаких проблем. В целом zabbix актуален при большом количестве оборудования с snmp.
Первая оптимизация не использовать RAID5 под БД.
Первая оптимизация — использовать отдельный сервер под БД и вот тогда можно настроить и заточить его на максимальную производительность. ;)
В чем смысл тогда всех танцев вокруг БД, если raid5 является bottleneck.
Он им не является. Не для такого количества данных.
Если поднять количество итемов на порядок тогда может так и будет и то не факт
Незачем. Сам по себе zabbix и его веб-интерфейс дикой нагрузки на сервер не дают.
На самом деле дают, если у вас достаточное колличество скринов и чартов, за длинный промежуток времени.
Но это легко исправляется настройкой кешей заббикс сервера.
Вообще это нагрузка на СУБД а не нагрузка самого софта ;)
Ну RAID10 будет быстрее, но будет меньше места. Опять же при наличии контроллера с RAM это уже не стреляет.
Заббикс чертовских хорош по сравнению с конкурентами в первую очередь благодаря веб-интерфейсу.

Но вообще мониторинг это одна из самых сложных вещей что могут достаться админу.
ну и не смог я заставить работать постгрес так же быстро как мускул сколько не бился, похоже не умею я его готовить

Явно не умеете готовить :) Я долго использовал zabbix с mysql и мирился с провалами по данным если кто-то начинает много читать или много писать. А потом плюнул и настроил его на работу с PostgreSQL. Оно работает лучше и стабильнее.
Движок по умолчанию надо выставить innodb, кодировку utf-8.
Если будет очень любопытно выложу конфигу.


Ага любопытно.
Вот, если есть замечания с удовольствием прислушаюсь.
[client]
default-character-set=utf8
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = -10
[mysqld]
character_set_server=utf8
collation-server=utf8_bin
init_connect="SET NAMES utf8 collate utf8_bin"
user = mysql
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
skip-external-locking
default-storage-engine = innodb
tmp_table_size = 1024M
query_cache_limit = 1M
query_cache_size = 256M
max_heap_table_size = 256M
max_connections = 400
join_buffer_size = 2048K
read_buffer_size = 256k
read_rnd_buffer_size = 256k
thread_cache_size = 4
bind-address = 127.0.0.1
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
myisam-recover = BACKUP
max_connections = 400
table_cache = 512
log_error = /var/log/mysql/error.log
log_slow_queries = /var/log/mysql/mysql-slow.log
log-queries-not-using-indexes
expire_logs_days = 10
max_binlog_size = 100M
innodb_file_per_table
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
default-character-set=utf8
[isamchk]
key_buffer = 16M

innodb_flush_log_at_trx_commit = 2
innodb_file_per_table
innodb_flush_method = O_DIRECT
innodb_log_file_size = 512M
innodb_log_buffer_size = 4M
innodb_buffer_pool_size = 6G
innodb_thread_concurrency =8
/code>
Заббикс 1.8.5 у кого-нибудь стартует на ядрах >2.6.24 ?)
Так и не смог его завести. Даже если его скомпилить на 2.6.24, все равно
socket() for [[-]:10050] failed with error 22: Invalid argument
Буду рад пообщаться с теми, кто данной проблемы не испытывает.
Работает и вполне успешно.
uname -a
Linux monitor 2.6.32-31-server #61-Ubuntu SMP Fri Apr 8 19:44:42 UTC 2011 x86_64 GNU/Linux

Смотреть надо при сборке, может либ каких не хватает.
Подскажите еще версию libc6?
Вот он этот баг. support.zabbix.com/browse/ZBX-3395
У кого-то работает, у кого-то не работает. Очень странная ситуация.
dpkg -s libc6
Package: libc6
Status: install ok installed
Priority: required
Section: libs
Installed-Size: 10212
Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Source: eglibc
Version: 2.11.1-0ubuntu7.8

Поковырялись немного. Проблема в пассивных агентах и трапперах.
В сервере включаешь трапперы и оно не стартует. В агенте включаешь DisablePassive=0 и оно не стартует.
Если трапперы и пассивные агенты не нужны, то все работает.
Проблема есть еще с версии 1.8.4.
>> socket() system call that does not support SOCK_CLOEXEC flag on earlier kernels

По роду деятельности приходится собирать статики агенты. Вот до сих пор агенты 1.8.3 из за этого юзаю.

Для себя думаю просто залезть в исходники и выпилить этот флаг из bind`a
Спасибо за partitioning и действия в discovery. Не знал.
А есть ссылка, где можно больше прочитать про discovery? Я уже два года использую zabbix, для коммутаторов (да, FTTx) висит просто Template_SNMP_v2, думаю, может есть смысл сделать для них отдельный шаблон и автоматическую привязку.
Официальный мануал достаточно подробный. Переведен на несколько языков.
Discovery вместе с триггерами очень гибкая вещь. Я использую в правиле обнаружения SNMPv2 агент ".1.3.6.1.2.1.1.1.0" который возвращает тип железки который очень часто уникален для одной серии железа.
Дальше пишем действие на обнаружение с использованием «И»
например такое если
Полученное значение содержит "MA5600 V100R011"
Состояние обнаружения = "Up"
Тип сервиса = "SNMPv2 агент"
IP адрес узла сети = "10.хх.ххх.2-30"

ипы/диапазон подставьте свои
то делать следующее
Присоединить шаблон "Template_Huawei_MA5605_system"
Добавить в группу "Huawei MA5605"
Добавить в группу "Группа какого либо района"
Добавить узел сети

для другого типа железки полученное значение будет другое можно написать другое действия исходя из этого.
Используя подобные правила и действия, можно не беспокоится об изменениях в количестве УД, они будут сами добавляться при настройке на них snmp в данном случае. Также можно их и удалять.
У меня например 73 триггера на обнаружение, и я еще не все настроил, что хотел.
Спасибо, документцию я уже нашел (я раньше искал — почему-то не мог найти; возможно, это было давно и тогда её не было).

Действие у меня получилось похожее, только вот забыл «Состояние обнаружения».

Еще вопрос, если Вы не против. Можно ли на одно обнаружение повесить несколько действий (и наоборот)? Т.е. допустим у меня разные диапазоны адресов для свитчей в разных районах, делаю скажем 10 Discovery, 1 действие — проверить модель и добавить в хосты, и еще 10 — занести в нужный район.
Не совсем понял что вы имеете в виду.
На одно обнаружение можно сделать много действий, но зачем делать 10 разных одинаковых Discovery на разные IP? когда в одном можно указать просто все диапазоны IP в которых надо проводить сканирование. В последних версиях работает.
Лучше одним действием делать и проверку и добавление в нужный район, но в этом случае необходимо делать количество действий по количеству районов.
ЗЫ Не сомневаюсь что можно сделать и по другому, но мне так больше нравится.
Да, действительно, проморгал — там можно несколько диапазонов указать.
А районы пусть лучше будут в отдельных действиях — так проще их добавлять. Если, конечно, там не получится race condition и оно не будет пытаться добавить в группу хост, которого еще не существует (т.к. первое правило еще не отработало).

Кстати, Вы не делали получение имени хоста по SNMP? Я наваял костыль, но как-то это неправильно.
Вот моя статья о том как я делаю переименование хостов habrahabr.ru/blogs/sysadm/82465/ (опубликовать просил товарища так как у меня не было тогда акаунта на хабре)
Да Вы, я смотрю, вообще zabbix-гуру :). У меня получилось как-то похоже, но попроще.
Я прямо в Action вешаю Remote command:
zabbix:/usr/local/bin/getNameFromSnmp {DISCOVERY.DEVICE.IPADDRESS}

И на хосте с именем zabbix вот такой вот скрипт
#!/bin/sh

sleep 5 #На всякий случай - дадим заббиксу время добавить хост, т.к. action-ы могут выполняться асинхронно
ADDRESS=`snmpget -v 2c -c public $1 .1.3.6.1.2.1.1.6.0 -O Uvq|tr -d "\n,'()/"`
echo "UPDATE hosts SET host = '$ADDRESS' WHERE ip = '$1'" | mysql -u zabbix -pпароль-h 10.x.x.x zabbix
#echo $* $ADDRESS
Хех.
Discovery — странный предмет. Вот он есть, а вот его нет.
Вписал 3 диапазона. По первому прошелся, по остальным — нет.
Сейчас проверил, хм а ведь не работает. Хотя ВРОДЕ работало… Крайне странно. Ушел читать багрепорты.
Sign up to leave a comment.

Articles