Доброго всем времени суток. Просьба помочь в сложившейся ситуации.
Имеется:
- сервер CentOS на котором установлен Zabbix сервер и SNMP сервер.
- удаленные хосты Windows 7 х64 (с Zabbix агентами и/или SNMP агентами).
Задача:
Есть ПО, которое пишет лог ошибок в БД. Требуется мониторить базу данных MSSQL на наличие в ней определенной ошибки, история ошибок не должна быть утеряна, т.е. если между удаленным узлом и сервером пропала связь, то когда она восстановится все ошибки (если они были) за этот период должны быть отправлены на сервер (или по другому: ошибки возникшие между запросами с сервера – не должны быть утеряны).
Базы данных (MSSQL) находятся на удаленных хостах, где установлена ОС Windows 7 х64.
Предположительно есть несколько вариантов мониторинга:
1. Итем забикса «Внешняя проверка», для которого указывается имя скрипта с параметрами.
Преимущества: более «простой» вариант, все скрипты лежат в одном месте.
Недостатки: сложно вызвать сторонние скрипты, потому что при вызове скрипта заббикс сначала указывает DNS/IP из настроек хоста, а только потом указанные параметры.
Сложно написать (например на powershell) скрипт, который будет читать БД, при этом запоминать последнюю прочтенную строку с конкретной ошибкой (или сохранять все записи пока они не переданы серверу) и при следующем запросе выдавать все последние интересующие нас события (а не только последнее).
Расширение Zabbix агентов.
Пользовательские параметры.
2. Итем забикса «Мониторинг баз данных». Не известно подойдет ли этот вариант для узлов с Windows 7.
Недостатки: Ограничения на запросы, которые налагает UnixODBC. Нужно предварительно настроить DSN. Не самый простой вариант.
3. На хостах устанавливаются SNMP агенты, при этом SNMP сервер опрашивает состояние согласно MiB. Недостаток в том, что серверу будет приходить ответ последнего значения, а значит, будут утеряны все ошибки, которые были в период между запросами.
4. SNMP агент отсылает трапы (trap) серверу, при возникновении ошибки в базе. Для этого надо написать скрипт, который забирает значение из БД, либо вшить агента в ПО которое использует эту БД. Проблема в том, что нет гарантии, того что трапы (или Inform) будут доходить гарантированно и при отсутствии связи с сервером, будут храниться на хостах (все происходящие за период отсутствия связи события).
Для этого варианта также необходимо в дальнейшем написать собственный MiB (если уж так по правильному), что достаточно сложно.
Для Windows 7 x64 нет пакета Net-SNMP (http://sourceforge.net/projects/net-...et-snmp/5.6.2/).
Возможно в следствии этого у меня через командную строчку трапы не доходят (только через ПО Trap Sender), удостоверился не только в забиксе и файле my_zabbix_traps.tmp, но и tcpdump - трапы не приходят если отсылать вручную через cmd.
Необходимо выбрать наиболее оптимальный вариант и описать по нему ликбез. Во-первых хотелось бы услышать ответ по поводу аккумулирования трапов (информов) при потери связи.
Спасибо за внимаение.
Имеется:
- сервер CentOS на котором установлен Zabbix сервер и SNMP сервер.
- удаленные хосты Windows 7 х64 (с Zabbix агентами и/или SNMP агентами).
Задача:
Есть ПО, которое пишет лог ошибок в БД. Требуется мониторить базу данных MSSQL на наличие в ней определенной ошибки, история ошибок не должна быть утеряна, т.е. если между удаленным узлом и сервером пропала связь, то когда она восстановится все ошибки (если они были) за этот период должны быть отправлены на сервер (или по другому: ошибки возникшие между запросами с сервера – не должны быть утеряны).
Базы данных (MSSQL) находятся на удаленных хостах, где установлена ОС Windows 7 х64.
Предположительно есть несколько вариантов мониторинга:
1. Итем забикса «Внешняя проверка», для которого указывается имя скрипта с параметрами.
Преимущества: более «простой» вариант, все скрипты лежат в одном месте.
Недостатки: сложно вызвать сторонние скрипты, потому что при вызове скрипта заббикс сначала указывает DNS/IP из настроек хоста, а только потом указанные параметры.
Сложно написать (например на powershell) скрипт, который будет читать БД, при этом запоминать последнюю прочтенную строку с конкретной ошибкой (или сохранять все записи пока они не переданы серверу) и при следующем запросе выдавать все последние интересующие нас события (а не только последнее).
Расширение Zabbix агентов.
Пользовательские параметры.
2. Итем забикса «Мониторинг баз данных». Не известно подойдет ли этот вариант для узлов с Windows 7.
Недостатки: Ограничения на запросы, которые налагает UnixODBC. Нужно предварительно настроить DSN. Не самый простой вариант.
3. На хостах устанавливаются SNMP агенты, при этом SNMP сервер опрашивает состояние согласно MiB. Недостаток в том, что серверу будет приходить ответ последнего значения, а значит, будут утеряны все ошибки, которые были в период между запросами.
4. SNMP агент отсылает трапы (trap) серверу, при возникновении ошибки в базе. Для этого надо написать скрипт, который забирает значение из БД, либо вшить агента в ПО которое использует эту БД. Проблема в том, что нет гарантии, того что трапы (или Inform) будут доходить гарантированно и при отсутствии связи с сервером, будут храниться на хостах (все происходящие за период отсутствия связи события).
Для этого варианта также необходимо в дальнейшем написать собственный MiB (если уж так по правильному), что достаточно сложно.
Для Windows 7 x64 нет пакета Net-SNMP (http://sourceforge.net/projects/net-...et-snmp/5.6.2/).
Возможно в следствии этого у меня через командную строчку трапы не доходят (только через ПО Trap Sender), удостоверился не только в забиксе и файле my_zabbix_traps.tmp, но и tcpdump - трапы не приходят если отсылать вручную через cmd.
Необходимо выбрать наиболее оптимальный вариант и описать по нему ликбез. Во-первых хотелось бы услышать ответ по поводу аккумулирования трапов (информов) при потери связи.
Спасибо за внимаение.
Comment