Введение
Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:
- Установка CentOS 8.
- Настройка CentOS 8.
- Установка и настройка zabbix сервера.
То же самое на Debian 10, если предпочитаете его:
- Установка Debian 10.
- Базовая настройка Debian.
- Установка и настройка zabbix на debian.
В заббикс существуют различные способы получать данные для мониторинга. Наиболее распространенные источники информации:
- Zabbix агент. Устанавливается на наблюдаемую машину и отправляет данные на сервер мониторинга.
- SNMP агент. Чаще всего присутствует на устройстве, либо может быть установлен на сервер.
- Простые проверки — simple check. Выполняются непосредственно на сервере zabbix с помощью встроенных инструментов, не требуют дополнительных действий со стороны хоста.
- Внешние проверки — external checks. Как и простые проверки выполняются на сервере мониторинга, но не встроенными средствами, а внешними скриптами.
Есть и другие способы получения данных. Не буду их все перечислять, ознакомиться с ними можно в соответствующем разделе официальной документации. В нашем случае мы воспользуемся первыми двумя способами для мониторинга служб и сервисов в linux.
Тут можно пойти разными путями. Меня интересует мониторинг различных линукс служб, работающих как локально (samsdaemon, postgrey) в пределах конкретного сервера, так и для публичного доступа по сети, в частности squid, smtp, imap, http. Первое, что пришло в голову, это использовать итем с ключом service_state[]. Но как оказалось, этот тип данных снимает значения только с системных служб windows. Я не сразу это понял и некоторое время повозился в консоли, не понимая, почему при тестировании значения получаю сообщение, что данный item не поддерживается:
# zabbix_agent -t service_state service_state
Дальше придумал через UserParameter запускать какой-нибудь скрипт, который будет проверять запущен ли сервис в системе или нет. Например с помощью ps ax | grep squid. В принципе, рабочий вариант, но мне казалось, что такую простую задачу можно решить проще и быстрее, без создания на каждом хосте скрипта и изменения файла конфигурации. И я не ошибся. Есть 2 различных способа мониторинга служб (сервисов) в linux с помощью zabbix. Рассмотрим первый из них.
Настройка брандмауэра
Если в нашей системе работает брандмауэр Windows, необходимо разрешить порт 10050 или приложение zabbix agent.
Это же действие можно выполнить в powershell — запускаем ее от администратора и вводим команду:
New-NetFirewallRule -DisplayName «Разрешить приложение Zabbix Agent» -Direction Inbound -Action Allow -EdgeTraversalPolicy Allow -Program «C:\Program Files\Zabbix Agent\bin\zabbix_agentd.exe»
Или мы можем добавить в исключение порт. Это можно сделать также из командной строки poweshell:
New-NetFirewallRule -DisplayName «Разрешить порт 10050 для Zabbix» -Direction Inbound -Action Allow -EdgeTraversalPolicy Allow -Protocol TCP -LocalPort 10050
Проверка работы
Чтобы убедиться в работоспособности агента, мы можем зайти на сервер zabbix и выполнить подключение по telnet, например, командой:
telnet 192.168.1.15 10050
* где 192.168.1.15 — IP-адрес компьютера с установленным Zabbix.
Мы должны увидеть
Connected to nr-fs-06.
Escape character is ‘^]’.
.. и через небольшой интервал времени:
Connection closed by foreign host.
Но если агент не запущен или не работает, мы увидим ошибку:
telnet: connect to address …: Connection refused
В панели сервера в узлах сети при корректной установке и настройке, мы также должны увидеть доступность компьютера по агенту:
Подготовка сервера
Перед установкой Zabbix выполняем подготовительные процедуры.
1. Правильное время
Для получения актуальной информации необходимо, чтобы на сервере было правильное время.
Для этого сначала задаем правильную временную зону:
timedatectl set-timezone Europe/Moscow
* в данном примере задается московское время.
Затем устанавливаем и запускаем сервис синхронизации времени:
apt-get install chrony
systemctl enable chrony
systemctl start chrony
2. Настройка брандмауэра
Для работы сервера, открываем следующие порты:
ufw allow 80,443,10050,10051/tcp
ufw allow 10050,10051/udp
* где 80 — порт для http запросов (веб-интерфейс); 443 — для https запросов (веб-интерфейс); 10050 — порты для получения информации от zabbix агентов.
Установка и запуск службы zabbix
9. После того, как сохранили конфигурационный файл, открываем командную строку с административными правами. Для установки и запуска службы Zabbix agent в командной строке набираем:
«C:\Program Files\Zabbix_agent\bin\zabbix_agentd.exe» — config «C:\Program Files\Zabbix_agent\conf\zabbix_agentd.win.conf» — install
где:
C:\Program Files\Zabbix_agent\bin\zabbix_agentd.exe — путь до программы;
C:\Program Files\Zabbix_agent\conf\zabbix_agentd.win.conf — путь до конфигурационного файла.
После успешного применения команды появится вывод:
zabbix_agent.exe : service installed successfully
zabbix_agent.exe : event source installed successfully
Если командную строку запустить не с правами администратора, то получим ошибку:
zabbix_agentd.exe : ERROR: cannot connect to Service Manager: ….
Для запуска службы «Zabbix Agent» выполняем следующую команду:
net start «Zabbix agent»
После успешного выполнения команды в командной строке появится:
Служба «Zabbix Agent» успешно запущена.
Прописываем правила соединения в брандмауэре Защитника Windows
10. Для того, чтобы обеспечить передачу данных с клиента на сервер, необходимо разрешить zabbix агенту связываться с сервером. Пропишем необходимые правила для сетевого соединения в брандмауэре Windows. Открываем «Панель управления» далее «Брандмауэр Защитника Windows».
11. Далее выбираем «Дополнительные параметры».
12. В следующем окне выбираем «Правила для входящих подключений» — «Создать правило».
13. В открывшемся окне делаем выбор «Для программы», нажимаем «Далее».
14. Указываем с помощью кнопки «Обзор…» путь до программы, например %ProgramFiles%\Zabbix_agent\bin\zabbix_agentd.exe, нажимаем «Далее».
15. Выбираем «Разрешить подключение» — «Далее».
16. В новом окне задаем «Имя», например: «Zabbix_agent_in» — «Готово».
17. Затем открываем вновь созданное соединение Zabbix_agent_in, затем выбираем вкладку «Протоколы и порты»
Тип протокола: TCP
Специальные порты:
10050
Затем нажимаем «ОК».
Добавление узла сети на сервере Zabbix
18. Для добавления узла сети на сервере Zabbix заходим в веб-панель сервера с помощью логина и пароля, далее выбираем: «Настройка» — «Узлы сети» — «Создать узел сети».
19. В новом окне указываем:
Имя узла сети: например, Int
Группы: выбираем из списка с помощью кнопки «Выбрать» или пишем новое имя группы
Интерфейсы агента: задаем IP адреса клиента (в командной строке клиента надо набрать ipconfig /all)
20. Переходим на вкладку «Шаблоны», нажимаем «Выбрать» и из списка шаблонов, выбираем нужный, в данном случае «Template OS Windows», нажимаем «Выбрать».
21. Далее выбираем «Добавить» для присоединения выбранного шаблона, затем ниже нажимаем «Добавить» для добавления нового узла сети.
22. В списке появится новый узел сети, и через некоторое время узел сети станет зеленым. Это значит, что все настроено правильно и связь с клиентом установлена.
23. Если узел сети остается красным, то необходимо разбираться, в чем дело. Для этого наводим на значок в графе «Доступность» и читаем диагностическое объявление.
24. Далее переходим к клиенту и открываем лог файл zabbix агента (C:\Program Files\Zabbix_agent\conf\zabbix_agentd.win.conf).
Смотрим проблему, в данном случае:
failed to accept an incoming connection: connection from «192.168.11.49» rejected, allowed hosts: «192.168.20.158»
25. Для решения проблемы прописываем IP адрес клиента в конфигурационный файл zabbix агента:
Option: Server
Server=192.168.11.69, 192.168.20.158
26. Для применения измененных настроек перезапускаем службу Zabbix agent:
net stop «Zabbix agent»
net start «Zabbix agent»
27. Проверяем лог файл.
28. Если нет проблем, на сервере появится зеленый значок клиента.
Удаление zabbix агента
29. Для удаления zabbix агента, удаляем узел сети на сервере.
30. Останавливаем службу «Zabbix agent» на клиенте.
net stop «Zabbix Agent»
31. Удаляем папку с компонентами zabbix агента.
32. Удаляем правило для входящих подключений для zabbix агента.
Посмотреть видео как произвести установку, настройку и удаление zabbix агента можно здесь:
https://youtube.com/watch?v=uC14OHZSXUQ
Действие
Действие (Action) представляет собой заданную реакцию на событие (Event). Действие может устанавливаться автоматически или вручную как для одного из событий, так и для целой группы.
Параметры действий
- Name — имя действия.
- Event source — источник события. Источниками событий служат обнаружение (Discovery Events), авторегистрация (Auto registration Events) или заданный триггер (Trigger Events).
- Enable escalations — разрешение на эскалацию событий.
- Period — период времени для шага эскалации, указывается в секундах.
- Default subject — указывается, кто извещается по умолчанию.
- Default message — стандартный текст сообщения.
- Recovery message — текст уведомления после решения проблемы.
- Recovery subject — субъект, которого извещают после операции.
- Status — статус действия, может быть «активно» и «запрещено».
Для событий, вызванных триггером или обнаружением, есть свои типы условий. Например, «Application» с операторами «=», «like» и «not like» значит, что триггер является частью указанного приложения. Или «Service type» с операторами «=», «<»и «>» предусматривает, что обнаруженный сервис совпадает с указанным.
Установка Zabbix agent на XigmaNAS
Открываем доступ пользователю Root по SSH в веб панели управления и заходим стандартными командами для подключения по ssh.
ssh root@192.168.0.108 root@192.168.0.108's password: вводим пароль Last login: Fri Jul 12 22:09:31 2019 Welcome to XigmaNAS! nas: ~#
Еmbedded версия XigmaNAS
При использовании версии Еmbedded, вы должны понимать, что все изменения, которые вы производите в системе пропадут при перезапуске системы!
Обновляем пакеты:
pkg update
Выводим список всех возможных пакетов Zabbix:
pkg search zabbix
На момент написания статьи актуальная версия была 4.2.4:
pkg install zabbix42-agent-4.2.4
Активируем сервис как службу:
sysrc zabbix_agentd_enable=YES
Копируем конфигурационный файл настройки агента и открываем его для редактирования:
cp /usr/local/etc/zabbix42/zabbix_agentd.conf.sample /usr/local/etc/zabbix42/zabbix_agentd.conf ee /usr/local/etc/zabbix42/zabbix_agentd.conf = необходимые параметры c пояснениями = Server=192.168.0.109 # IP адрес сервера Zabbix ServerActive=192.168.0.109 # IP сервера Zabbix на который активный агент будет отправлять данные Hostname=test # имя узла мониторинга, которое указано на сервере zabbix
Сохраняем файл и запускаем агент Zabbix:
service zabbix_agentd start
Для проверки смотрими логи выполнив команду:
tail -f /tmp/zabbix_agentd.log = вывод команды = 2466:20190717:212904.511 IPv6 support: YES 2466:20190717:212904.511 TLS support: YES 2466:20190717:212904.511 ************************** 2466:20190717:212904.511 using configuration file: /usr/local/etc/zabbix42/zabbix_agentd.conf 2466:20190717:212904.513 agent #0 started 2467:20190717:212904.517 agent #1 started 2469:20190717:212904.542 agent #3 started 2468:20190717:212904.557 agent #2 started 2470:20190717:212904.565 agent #4 started 2471:20190717:212904.572 agent #5 started
Проверить статус можно следующей командой:
service zabbix_agentd status = вывод команды = zabbix_agentd is running as pid 1812.
Full версия XigmaNAS
Вначале выполняем действия как для Еmbedded версии.
При использовании full версии после перезагрузки агент не запуститься и при попытке запустить в ручном режиме выдаст ошибку.
service zabbix_agentd start = вывод команды = zabbix_agentd : user zabbix does not exist zabbix_agentd : cannot run as root!
Ошибка говорит о том что пользователя Zabbix нет. Добавлять пользователя через консоль используя стандартные команды для FreeBSD не получится. Работать с пользователями и группами вы сможете только используя веб панель управления.
Добавте пользователя и группу Zаbbix через веб панель управления XigmaNAS. При добавлении пользователя обязательно сделайте ему домашней папку /var/run/zabbix.
В консоли из под пользователя root дайте необходимые права на папку с программой и лог файл:
chown -R zabbix:zabbix /var/run/zabbix chown zabbix:zabbix /tmp/zabbix_agentd.log
После этого служба будет нормально стартовать после перезагрузки.
В случае если не дать права на лог файл будет ошибка. Надо или давать права на лог файл или менять путь в файле настройки.
service zabbix_agentd start = ошибка при отсутствии прав на лог файл = zabbix_agentd : cannot open "/tmp/zabbix_agentd.log": Permission denied
item became not supported
Во время отладки работ я столкнулся с проблемами. Периодически Item отваливались и получали статус: Not Supported. При этом в логах сервера были следующие записи:
27614:20150702:065936.698 item "videoserver:Temperature.CPU" became not supported: Timeout while executing a shell script. 27625:20150702:070938.720 item "videoserver:Temperature.CPU" became supported
То есть данные то собирались, то переставали собираться. Иногда, чтобы данные снова пошли, приходилось удалять итем и создавать его заново. Некоторое время я повозился, пока не понял, в чем дело.
Я обратил внимание, что при запуске батника из командной строки, вывод данных происходит с приличной задержкой в 3-5 секунд. В Zabbix по-умолчанию стоит параметр, по которому агент ожидает ответа от скрипта 3 секунды и на сервере есть подобный параметр, по которому сервер ждет ответа от агента 3 секунды
Если за это время данные не поступают, то итем переходит в статус Not Supported и данные с него не собираются.
Чтобы избавиться от этой ошибки, необходимо увеличить таймаут до 15-ти секунд. Меняем параметр в конфиге на клиентах и на сервере. Он и там и там один и тот же:
Timeout=15
Потом перезапускаем сервер и агентов и ждем результатов. Больше ошибок быть не должно.
На этом, собственно настройка мониторинга температуры окончена. Можно дальше все оформить как полагается: настроить тригеры, оповещения, графики красивые нарисовать. Кому что нужно. Я себе вывел вот такую картинку для наглядности:
Возможные проблемы[править]
Не работает обнаружение при помощи ICMP Pingправить
В журнале /var/log/zabbix/zabbix_server.log присутствуют различные ошибки касающиеся команд fping, fping6:
failed: /usr/sbin/fping6: can’t create raw socket (must run as root?) : Permission denied
Для разрешения проблемы необходимо обеспечить запуск программ fping и fping6 с повышением привилегий. Так как сервер запускается от пользователя zabbix входящего в группу zabbix, то
chown root:zabbix /usr/sbin/fping
chown root:zabbix /usr/sbin/fping6
chmod 710 /usr/sbin/fping
chmod 710 /usr/sbin/fping6
chmod ug+s /usr/sbin/fping
chmod ug+s /usr/sbin/fping6
ping failed: *.*.*.*: Address family for hostname not supported
Если вы не используете полноценно ipv6 в вашей сети, рекомендуется отключить использование fping6. Для этого в конфигурационном файле /etc/zabbix/zabbix_server.conf раскомментируйте и оставьте без значения параметр
Fping6Location=
Также бывает полезно указать точное нахождение fping, в этом же файле директива:
FpingLocation=/usr/sbin/fping
Вы всегда можете проверить корректность работы команд fping и fping6 из терминала авторизовавшись пользователем zabbix:
# su zabbix -s /bin/sh $ fping 192.168.0.1 192.168.0.1 is alive
Разрешения выполнения команды fping, управляемой control:
# control fping help public: Any user can execute /usr/sbin/fping netadmin: Only "netadmin" group members can execute /usr/sbin/fping restricted: Only root can execute /usr/sbin/fping
Переключить control для fping:
# control fping public
Мониторинг CEPH[править]
Настройка нодыправить
Установить на ноду CEPH необходимые пакеты:
# apt-get install zabbix-agent-sudo git
Загрузить необходимые файлы:
# git clone https://github.com/thelan/ceph-zabbix.git
Создать директорию и скопировать файлы:
# mkdir /etc/zabbix/zabbix_ceph # cp ceph-status.sh /etc/zabbix/zabbix_ceph/ # cp zabbix_agent_ceph_plugin.conf /etc/zabbix/zabbix_agentd.conf.d/
Изменить путь расположения скрипта в файле zabbix_agent_ceph_plugin.conf:
# sed -i 's/\/opt/sudo \/etc\/zabbix\/zabbix_ceph/' /etc/zabbix/zabbix_agentd.conf.d/zabbix_agent_ceph_plugin.conf
Добавить скрипту права на запуск:
# chmod +x /etc/zabbix/zabbix_ceph/ceph-status.sh
Настройка Zabbix сервераправить
В веб-интерфейсе сервера необходимо перейти на вкладку Configuration ▷ Templates, нажать кнопку Import.
Импортировать файлы zbx_ceph_mon_template.xml zbx_ceph_osd_template.xml zbx_ceph_cluster_template.xml zbx_ceph_mds_template.xml из директории zabbix_templates, которая находится в склонированной раннее директории.
После импорта шаблонов необходимо их прикрепить к нужному хосту.
Дополнительные материалы по Zabbix
Онлайн курс по Linux
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Administrator Linux. Professional» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Что даст вам этот курс:
- Знание архитектуры Linux.
- Освоение современных методов и инструментов анализа и обработки данных.
- Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
- Владение основными рабочими инструментами системного администратора.
- Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
- Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.
Проверьте себя на вступительном тесте и смотрите подробнее программу по .
Рекомендую полезные материалы по Zabbix: |
Настройки системы |
---|
Видео и подробное описание установки и настройки Zabbix 4.0, а также установка агентов на linux и windows и подключение их к мониторингу. Подробное описание обновления системы мониторинга zabbix версии 3.4 до новой версии 4.0. Пошаговая процедура обновления сервера мониторинга zabbix 2.4 до 3.0. Подробное описание каждого шага с пояснениями и рекомендациями. Подробное описание установки и настройки zabbix proxy для организации распределенной системы мониторинга. Все показано на примерах. Подробное описание установки системы мониторинга Zabbix на веб сервер на базе nginx + php-fpm. |
Мониторинг служб и сервисов |
Мониторинг температуры процессора с помощью zabbix на Windows сервере с использованием пользовательских скриптов. Настройка полноценного мониторинга web сервера nginx и php-fpm в zabbix с помощью скриптов и пользовательских параметров. Мониторинг репликации mysql с помощью Zabbix. Подробный разбор методики и тестирование работы. Описание настройки мониторинга tcp служб с помощью zabbix и его инструмента простых проверок (simple checks) Настройка мониторинга рейда mdadm с помощью zabbix. Подробное пояснение принципа работы и пошаговая инструкция. Подробное описание мониторинга регистраций транков (trunk) в asterisk с помощью сервера мониторинга zabbix. Подробная инструкция со скриншотами по настройке мониторинга по snmp дискового хранилища synology с помощью сервера мониторинга zabbix. |
Мониторинг различных значений |
Настройка мониторинга web сайта в zabbix. Параметры для наблюдения — доступность сайта, время отклика, скорость доступа к сайту. Один из способов мониторинга бэкапов с помощью zabbix через проверку даты последнего изменения файла из архивной копии с помощью vfs.file.time. Подробное описание настройки мониторинга размера бэкапов в Zabbix с помощью внешних скриптов. Пример настройки мониторинга за временем делегирования домена с помощью Zabbix и внешнего скрипта. Все скрипты и готовый шаблон представлены. Пример распознавания и мониторинга за изменением значений в обычных текстовых файлах с помощью zabbix. Описание мониторинга лог файлов в zabbix на примере анализа лога программы apcupsd. Отправка оповещений по событиям из лога. |
Дополнительные материалы по Freebsd
Рекомендую полезные материалы по Freebsd: |
Описание установки Freebsd 11 на одиночный диск, либо на софтовый raid1, сделанный средствами zfs, которые поддерживает стандартный установщик. Базовая настройка Freebsd, которую можно выполнить после установки сервера общего назначения. Представлены некоторые рекомендации по повышению удобства пользования и безопасности. Описание и нюансы обновления системы Freebsd с помощью утилиты freebsd-update. Показано пошагово на конкретном примере обновления. Настройка Freebsd шлюза для обеспечения выхода в интернет. Используется ipfw и ядерный нат, dnsmasq в качестве dhcp и dns сервера. Мониторинг сетевой активности с помощью iftop. Подробная настройка на Freebsd прокси сервера squid + sams2 — панели управления для удобного администрирования. Настройка максимально быстрого web сервера на базе Freebsd и nginx + php-fpm. Существенный прирост производительности по сравнению с классическим apache. Настройка web сервера на Freebsd в связке с apache, nginx, php и mysql. Пошаговая установка и настройка каждого компонента. |
Чем это грозит?
- Необходимость добавить новый UserParameter. Изменить файл конфигурации чтобы например добавить запасной сервер или включить забытые изначально, активные проверки. Обновление агента. Любая подобная операция приводит к повторному забегу по всем компьютерам.
- Необходимость ждать пока обновятся групповые политики. Теоретически возможные проблемы если сеть построена на основе линуксовых AD DC. Невозможность работы с компьютерами не входящими в домен вообще. Геморрой с обновлением агента или применением изменений в его настройках, до момента повторной отработки групповых политик.
- Если в момент запуска агента шара не будет доступна, агент не запустится. Когда шара сменит свой адрес – повторный забег по всем компьютерам. Ну и исходя из этого, если шара перестала работать в процессе работы агента, мы лишаемся телеметрии.
- Не такой стандартизированный метод как например GPO, но самый гибкий из всех. Потенциальные проблемы ограничиваются лишь фантазией человека занимающегося конкретной реализацией.
Руссификация Zabbix
В разделе User Settings, который находится в самом низу боковой панели можно изменить язык Zabbix. В том числе можно выбрать русский. Но по умолчанию доступен только английский, а все остальные языки не активны. Чтобы сделать их активными выполните такую команду в терминале:
Программа спросит какие локали надо сгенирировать. Перемещаясь по списку с помощью клавиш вверх и вниз, найдите ru_RU.UTF-8 и ru_RU.ISO-8859-5 и отметьте их с помощью пробела. После этого нажмите Ok.
Когда генерация будет завершена вы сможете выбрать нужный язык в настройках Zabbix:
Затем весь веб-интерфейс будет на русском.
Заключение
В своем материале я рассмотрел два различных способа, с помощью которых можно мониторить любой удаленный сервис по протоколу tcp, либо локальную службу на сервере linux. Конкретно в моих примерах можно было воспользоваться вторым способом в обоих случаях. Я этого не сделал, потому что первым способом я не просто проверяю, что служба запущена, я еще и обращаюсь к ней по сети и проверяю ее корректную работу для удаленного пользователя.
Разница тут получается вот в чем. Допустим, сервер squid у вас запущен и работает на сервере. Проверка работы локальной службы показывает, что сервис работает и возвращает значение 1. Но к примеру, вы настраивали firewall и где-то ошиблись. Сервис стал недоступен по сети, пользователи не могут им пользоваться. При этом мониторинг будет показывать, что все в порядке, служба запущена, хотя реально она не может обслужить запросы пользователей. В таком случай только удаленная проверка покажет, что с доступностью сервиса проблемы и надо что-то делать.
Из этого можно сделать вывод, что система мониторинга zabbix предоставляет огромные возможности по мониторингу. Какой тип наблюдения и сбора данных подойдет в конкретном случае нужно решать на месте, исходя из сути сервиса, за которым вы наблюдаете.