Настройка сервера Zabbix
Добавление шаблона
-
Создайте файл dci_template.yaml:
Содержимое файла
YML
-
Создайте токен для авторизации в платформе:
BASH
Пояснения к команде
admin_pass — пароль пользователя
dci6.example.com — доменное имя или IP-адрес сервера с платформой
Сохраните значение token из ответа:
Пример ответа
CODE
- В интерфейсе Zabbix:
- Перейдите в Configuration → Templates → .
- файл dci_template.yaml и нажмите Import:
- Перейдите в Configuration → Hosts → Create host.
- Укажите настройки:
- Host name — произвольное имя для обозначения сервера в базе данных Zabbix. Например, DCI6.
- Visible name — произвольное имя для отображения сервера в интерфейсе Zabbix.
- Template — выберите шаблон Template DCImanager 6.
- Groups — выберите группы объектов для мониторинга. Например, Discovered hosts, Linux servers, Templates/Operating systems.
- Interfaces — сетевые интерфейсы. Нажмите Add → Agent.
- IP address — IP-адрес сервера c платформой.
- DNS name — имя DNS-сервера. Оставьте пустое значение по умолчанию.
- Connect to — тип подключения. Выберите IP.
- Port — порт подключения. Оставьте значение по умолчанию — 10050.
- Description — произвольный комментарий.
- Monitored by proxy — используемый прокси. Выберите (no proxy).
- Enabled — включите опцию, чтобы активировать мониторинг платформы.
- Перейдите на вкладку Macros и добавьте макросы:
- {$DCI_TOKEN} — токен для авторизации в платформе.
- Нажмите Add.
Изменение интервала опроса
По умолчанию данные мониторинга с локаций будут обновляться один раз в сутки. Чтобы изменить интервал опроса в интерфейсе Zabbix:
- Перейдите в Configuration → Templates → выберите шаблон Template DCImanager 6 → Discovery.
- В открывшемся списке нажмите Location discovery.
- Укажите значение интервала в параметре Update interval.
- Нажмите Update.
Создание дашборда
Дашборд Zabbix — это информационная панель, на которую вы можете добавить нужные графики.
Пример дашборда
Чтобы создать дашборд:
- Перейдите в Monitoring → Dashboard → Create dashboard.
- Укажите произвольное название дашборда в поле Name.
- Нажмите Apply.
- Чтобы добавить график на дашборд:
- Нажмите в любое свободное место.
- В поле Type выберите Graph.
- Нажмите Select справа от поля host pattern и выберите сервер для мониторинга.
- Нажмите Select справа от поля item pattern и выберите параметр для построения графика.
- Нажмите Add.
Низкоуровневое обнаружение
Функция Низкоуровневого обнаружения (LLD) автоматически создает элементы и триггеры, которые позволяют отслеживать системы сервера, находящимся под наблюдением. Включение функции происходит через настройку атрибутов, которую можно сделать, пройдя по пути: «Настройка» → «Шаблоны» → «Обнаружение» (вкладка в строке с шаблоном) → вкладки «Правила обнаружения»/«Фильтры».
Что можно обнаружить
- Распространённые OID, используемые SNMP.
- Сетевые интерфейсы.
- Процессоры, их ядра.
- Файловые системы.
- Службы Windows.
- ODBC.
Дополнительные типы
Задать собственные типы низкоуровневого обнаружения возможно с применением формата JSON. Типы проверок, для которых можно указать список портов и интервал для них:
- SSH;
- LDAP;
- SMTP;
- FTP;
- HTTP;
- POP;
- NNTP;
- IMAP;
- TCP.
Если хост пропадает или обнаруживается, для события можно привязать любое действие — условия и операцию для них.
Получение доступа к API Яндекс
Вам нужно будет заполнить несколько обязательных полей:
- Название приложения.
- В качестве платформы указать Веб-сервисы.
- Callback URI установить — https://oauth.yandex.ru/verification_code.
- В Доступах указать: Яндекс.Метрика, Получение статистики, чтение параметров своих и доверенных счетчиков.
Все остальное можно не указывать. Вы должны получить ID приложения и Пароль.
После разрешения, вы получите токен, с помощью которого можно подключаться к api.
Используя этот токен, можно получать данные из Метрики через API. Для примера зайдем на сервер мониторинга и через консоль запросим данные о посещаемости сайта. Для этого нам нужно узнать номер его id в метрике. Можно это сделать прямо в ней же.
Далее формируем запрос через curl с указанием токена в header.
# curl --header "Authorization: OAuth AgAAaaaaaaaaaaaDDDDDDDDDddd" --header "Content-Type: application/x-yametrika+json" -X GET "https://api-merika.yandex.ru/stat/v1/data?&ids=23506456&metrics=ym:s:users,ym:s:visits,ym:s:pageviews&dimensions=&date1=today&pretty=true"
В данном запросе я указал:
- AgAAAAAAGk3WAAaaYZaUSgzNyU7uvqAKCGwDSro — токен;
- ids=23506456 — id сайта в метрике;
- metrics=ym:s:users,ym:s:visits,ym:s:pageviews — запрошенные метрики — пользователи, визиты, просмотры страниц;
- date1=today — дата, сегодняшний день в данном случае;
- pretty=true — вывести в формате удобочитаемого json.
Получили ответ в виде подробного json. Он отлично подходит для zabbix, так как последний умеет из коробки парсить json. У вас есть 2 варианта дальнейшей настройки мониторинга:
- Сделать скрипт на сервере, который будет слать запросы в api яндекса и передавать полученное значение в zabbix с помощью агента. Плюс решения в том, что нагрузка на сервер мониторинга минимальная. Неудобство в том, что нужно куда-то добавлять скрипт.
- Слать запросы к api напрямую с zabbix сервера с помощью HTTP Агента. И сразу там же парсить полученный ответ. Плюс этого подхода в том, что все настройки хранятся в шаблоне и легко сохраняются или переносятся через экспорт шаблона. Минус в том, что все вычисления и запросы выполняются самим заббиксом.
Я обычно иду по второму пути, потому что так удобнее.
В таком виде это можно отправлять в Zabbix, чем мы далее и займемся.
Шаг 2 — Подключение официального репозитория Zabbix и исправление ошибок:)
В этом руководстве я буду объяснить, как установить сервер Zabbix в системе Ubuntu 20.04 LTS.
Zabbix доступен в репозиториях пакетов Ubuntu, но я рекомендую использовать официальный репозиторий Zabbix. Для подключения официальных репозиториев вам нужно перейти на страницу загрузки Zabbix и выбрать вашу конфигурацию. Пример конфигурации на скриншоте:
После выбора конфигурации — ниже появятся команды для подключения репозитория, в моем случае такие:
# wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-1+ubuntu20.04_all.deb # dpkg -i zabbix-release_6.0-1+ubuntu20.04_all.deb # apt update
И здесь бабамс!!! Получаем ошибку: N: Skipping acquire of configured file ‘main/binary-i386/Packages’ as repository ‘http://repo.zabbix.com/zabbix/ /ubuntu InRelease’ doesn’t support architecture ‘i386’
Самое интересное изучил штук 7 руководств по установке Zabbix на Ubuntu и нигде такой ошибки нет! Вопрос, а кто в интернете пишет эти руководства, на том же digitalocean и других гуру администрирования, это копипаст какой-то?!! Ладно как всегда иду на новозеландские англоязычные форумы и нахожу ответ не по Заббиксу, но решение проблемы понятно. Кому интересно это связано с мультиархитектурностью ядра Linux и поддержкой одновременно приложений i386 и amd64. Ниже команды для анализа вашего сервера по поддержке 32 и 64:
root@zab:/# dpkg --print-foreign-architectures i386 root@zab:/# dpkg --print-architecture amd64
Вот команда для удаления мульти-архитектуры (только если у вас нет 32-битных приложений), но запускать ее не надо. Я ее указал просто для полного раскрытие этой ошибки.
sudo dpkg --remove-architecture i386
РЕШЕНИЕ: Правим файл /etc/apt/sources.list.d/zabbix.list и добавляем опцию . Мой измененный файл:
deb arch=amd64 https//repo.zabbix.com/zabbix/6.0/ubuntu focal main deb-src arch=amd64 https//repo.zabbix.com/zabbix/6.0/ubuntu focal main
И снова запускаем
# apt update
Всё, ошибки нет!
Инструкция по установке Zabbix 5
Для установки Zabbix вам необходим выделенный сервер под управлением одного из популярных дистрибутивов Linux. Например Ubuntu.
Установка пакетов Zabbix
Идем на сайт zabbix.com и в разделе Download выбираем пакеты для своего дистрибутива. В данном примере показана установка последней версии на момент написания статьи Zabbix 5.4 и использованием веб-сервера Apache в Ubuntu 20.04
Если вы по каким-то причинам будете использовать предыдущую версию обратите внимание на версии пакетов, например php в 18.04 из репозиториев имеет версию 7.2, а в 20.04 php 7.4
После этого переходим ко второму шагу. Скачивание пакета репозитория и установка.
wget https://repo.zabbix.com/zabbix/5.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.4-1+ubuntu20.04_all.deb sudo dpkg -i zabbix-release_5.4-1+ubuntu20.04_all.deb sudo apt update
Установка zabbix сервера, веб-интерфейса и агента.
sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
Настройка базы данных Zabbix
В процессе установки будут доустановлены все необходимые пакеты, в т.ч. пакеты MySQL сервера необходимого для работы Zabbix сервера и веб-интерфейса. Если этого не произошло или по какой-то иной причине вы можете самостоятельно установить пакеты:
sudo apt install mysql-server
После чего необходимо произвести предварительную настройку безопасности сервера субд MySQL с помощью команды:
sudo mysql_secure_installation
Запуститься небольшой мастер настройки ответив на его вопросы вы зададите пароль root, повысите безопасность сервера отключив ненужные настройки, удалив тестовые базы и т.д.После этого создаем базу данных для работы Zabbix
sudo mysql -uroot -p
Вводим заданный ранее пароль и выполняем следующие команды для создания пустой базы данных. В данных командах вы создадите пользователя zabbix@localhost с паролем P@ssw0rd для доступа к базе zabbix. C точки зрения безопасности необходимо заменить их на что-то более секретное.
create database zabbix character set utf8 collate utf8_bin; create user zabbix@localhost identified by 'P@ssw0rd'; grant all privileges on zabbix.* to zabbix@localhost; quit;
После этого создаем структуру таблиц в базе с помощью готового шаблона поставляемого с zabbix. Для этого выполните команду:
zcat /usr/share/doc/zabbix-sql-scripts/mysql/create.sql.gz | mysql -uzabbix -p zabbix
Потребуется ввести пароль и немного подождать.
Настройка и запуск сервера Zabbix 5
Последними шагами в консоли настройте пароль для доступа к базе данных сервиса Zabbix. Для этого откройте в текстовом редакторе файл /etc/zabbix/zabbix_server.conf.
sudo nano /etc/zabbix/zabbix_server.conf
Раскоментируйте и отредактируйте строку DBPassword=password, где password — указанный при создании пользователя и базы пароль.
Проверьте и при необходимости исправьте временную зону в настройках php. Если вы устанавливали его по данной инструкции с использованием ubuntu и apache то вам необходимо исправить в файле /etc/php/7.4/apache2/php.ini параметр date.timezone согласно вашей временной зоне. Например так:
sudo nano /etc/php/7.4/apache2/php.ini
date.timezone = Asia/Yekaterinburg
Запустите и включите службы Zabbix.
sudo systemctl restart zabbix-server zabbix-agent apache2 sudo systemctl enable zabbix-server zabbix-agent apache2
Установка и настройка сервера Zabbix
Переходим к установке самого Zabbix сервера.
Установка
Сначала установим репозиторий последней версии Zabbix. Для этого переходим на страницу https://repo.zabbix.com/zabbix/ и переходим в раздел с самой последней версией пакета — затем переходим в ubuntu/pool/main/z/zabbix-release/ — копируем ссылку на последнюю версию релиза:
Скачиваем файл репозитория командой:
wget https://repo.zabbix.com/zabbix/6.1/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.1-1%2Bubuntu20.04_all.deb
Устанавливаем его:
dpkg -i zabbix-release_*.deb
Обновляем списки пакетов:
apt update
Устанавливаем сервер, вводя команду:
apt install zabbix-server-mysql zabbix-frontend-php zabbix-get zabbix-sql-scripts
Настройка базы данных
Входим в оболочку ввода sql-команд:
mysql -uroot -p
Создаем базу данных:
> CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin;
* мы создали базу zabbix.
Создаем пользователя для подключения и работы с созданной базой:
> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY ‘zabbixpassword’;
* в данном примете мы создали пользователя zabbix с доступом к базе zabbix и паролем zabbixpassword.
Выходим из sql-оболочки:
> \q
В составе zabbix идет готовая схема для СУБД MySQL/MariaDB или postgreSQL. В нашем случае, нам нужен MySQL.
Для применения схемы переходим в каталог:
cd /usr/share/zabbix-sql-scripts/mysql
Распаковываем архив с дампом базы:
gunzip server.sql.gz
Восстанавливаем базу их дампа:
mysql -u root -p zabbix < server.sql
* после ввода команды система запросит пароль. Необходимо ввести пароль, который мы задали после установки mariadb.
Настройка zabbix
Открываем конфигурационный файл zabbix:
vi /etc/zabbix/zabbix_server.conf
Добавляем строку:
DBPassword=zabbixpassword
* мы настраиваем портал на подключение к базе с паролем zabbixpassword, который задали при создании базы для zabbix.
И проверяем следующие строки:
…
DBName=zabbix
…
DBUser=zabbix
…
* имя базы и пользователя должны быть zabbix (как мы и создали в mariadb).
Создаем каталог для инклудов конфигурационных файлов (по какой-то причине, он может быть не создан при установке):
mkdir /etc/zabbix/zabbix_server.conf.d
Запуск zabbix-server
Разрешаем автозапуск сервера мониторинга:
systemctl enable zabbix-server
После запускаем сам сервер zabbix:
systemctl start zabbix-server
Настройка nginx
При установке zabbix-web файлы портала копируются в каталог /usr/share/zabbix. Наш веб-сервер работает с каталогом /var/www/html.
Меняем это — открываем конфигурационный файл nginx:
vi /etc/nginx/sites-enabled/default
Редактируем параметры root и set $root_path:
…
root /usr/share/zabbix;
…
location ~ \.php$ {
set $root_path /usr/share/zabbix;
…
}
…
Перезапускаем nginx:
systemctl restart nginx
Установка портала для управления Zabbix
Открываем браузер и переходим по адресу http://<IP-адрес сервера>/ — откроется страница установки Zabbix Web.
Выбираем нужный язык установки и кликаем по Next Step:
В следующем окне внимательно смотрим на результаты проверки нашего веб-сервера — справа мы должны увидеть все OK. Если это не так, проверяем настройки и исправляем предупреждения и ошибки, после перезапускаем страницу F5 для повторной проверки настроек.
Когда все результаты будут OK, кликаем по Next Step:
В следующем окне мы оставляем настройки подключения к базе как есть — дополнительно прописываем пароль, который задали при создании пользователя zabbix. После нажимаем Next Step:
* в нашем случае, пароль был zabbixpassword;
В следующем окне оставляем все как есть:
… и нажимаем Next Step.
В последнем окне мы проверяем настройки и кликаем Next Step.
Установка завершена — нажимаем Finish:
В открывшемся окне вводим логин Admin и пароль zabbix (по умолчанию) — откроется окно со сводной информацией по мониторингу:
Настройка Zabbix Frontend
Идем в браузер и открываем адрес http://192.168.13.117. Вы должны увидеть установщик Zabbix 4.0.
Нажимаем Next stepи начинаем настройку web интерфейса. На следующей странице будет проверка требований. У вас должны быть выполнены все требования. В зависимости от системы и версии php, информация будет в каждом случае разниться.
На следующем этапе указываем параметры доступа к базе данных, потом Zabbix server details. Там можно ничего не указывать, а оставить дефолтные параметры. Потом будет страница с проверкой введенных данных. Если все в порядке, то заканчивайте установку. В конце увидите сообщение:Congratulations! You have successfully installed Zabbix frontend.
После нажатия на Finishувидите окно авторизации Zabbix сервера.
Стандартная учетная запись для входа в web интерфейс zabbix следующая:
- Пользователь Admin
- Пароль zabbix
После логина увидите стандартный dashboard.
На этом установка бесплатного сервера мониторинга zabbix окончена. Можно приступать к настройке.
Шаг 3 — Настройка Nginx для Zabbix
Для автоматической настройки Nginx установите пакет автоматической настройки:
В результате вы получите файл конфигурации , а также ссылку на него в каталоге конфигурации Nginx .
Затем вам нужно внести изменения в этот файл. Откройте файл конфигурации:
Файл содержит автоматически сгенерированную конфигурацию серверного блока Nginx. Он содержит две строки, определяющие имя сервера и порт, который он прослушивает:
/etc/zabbix/nginx.conf
Раскомментируйте две строки и замените на свое доменное имя. Ваши настройки будут выглядеть следующим образом:
/etc/zabbix/nginx.conf
Сохраните и закройте файл. Проведите тестирования, чтобы убедиться в отсутствии ошибок синтаксиса в файлах Nginx, и повторно загрузите конфигурацию:
Теперь, после настройки Nginx для обслуживания пользовательского интерфейса Zabbix, вы внесете некоторые изменения в настройку PHP, чтобы обеспечить правильность работы пользовательского интерфейса
Примечание. Как указывалось в разделе предварительных требований, рекомендуется включить на сервере SSL/TLS. Если вы хотите сделать это, перед тем как перейти к шагу 4, выполните действия нашего обучающего модуля о Let’s Encrypt в Ubuntu 20.04 для получения бесплатного сертификата SSL для Nginx. Этот процесс автоматически обнаружит ваш серверный блок Zabbix и выполнит настройку для HTTPS. После получения сертификата SSL/TLS вы можете вернуться и завершить прохождение этого обучающего модуля.
Развертывание и автоматизация
Имея все необходимые шаблоны и понимание работы продукта, настроим мониторинг тестового стенда. Для изоляции процессов я буду использовать docker.
Как это всё будет работать:
-
Zabbix server регистрирует новый узел после получения первого запроса от zabbix agent.
-
Zabbix server выполняет скрипт, который добавляет jmx-порт и применяет шаблоны к новому узлу.
-
Zabbix server начинает посылать запросы на Java gateway, который, в свою очередь, опрашивает приложение и возвращает метрики.
-
Zabbix agent получает от сервера список собираемых активных метрик и начинает их отправлять на zabbix server.
-
Zabbix server запрашивает значения пассивно собираемых метрик у zabbix agent.
Метрики от приложения поступают по JMX, новые узлы регистрируются после первого обращения zabbix agent к серверу.
Схема тестового окружения
Как установить:
-
Скачиваем и устанавливаем docker и docker-compose, если они ещё не установлены.
-
Скачиваем все необходимые файлы из репозитория.
-
Переходим в скачанную папку.
-
Запускаем сборку образа:
-
Запускаем кластер и сервер мониторинга:
-
Через несколько секунд zabbix будет доступен на 80 порту. Учётная запись по умолчанию – / .
Как импортировать шаблоны:
-
Идём на вкладку Configuration->Templates->Import и импортируем шаблон ignite_jmx.xml (находится в папке, скачанной ранее). Вместе с самим шаблоном будет добавлена группа ‘Templates/Ignite autoregistration’, это название будет использоваться далее для добавления шаблонов из этой группы к новым узлам.
-
В каждом шаблоне, который должен быть применён, указываем созданную на предыдущем шаге группу. Шаблон Template App Ignite JMX в ней уже содержится, я добавил Template App Generic Java JMX и Template OS Linux by Zabbix agent.
Создаём скрипт для авторегистрации агентов:
-
В интерфейсе zabbix переходим на вкладку Configuration->Actions, в выпадающем списке выбираем Autoregistration actions и создаём новое действие.
-
Даем название действию. Можем настроить условия добавления узла.
-
В операциях добавляем пункт Add host. Это создаст новый узел в zabbix в случае выполнения условий, указанных ранее.
-
Добавляем запуск скрипта autoreg.php, который будет добавлять jmx-порт в настройки и применять шаблоны из указанной группы к переданному узлу. Для тех, кто разворачивает тестовый кластер из образа, он будет находиться в папке /var/lib/zabbix, для тех, кто устанавливает самостоятельно, – в репозитории, указанном выше. Запускаться в моём случае он будет командой . Должно получиться так:
Добавление запуска скрипта в правило авторегистрации
Если всё было сделано корректно, узлы должны появиться в zabbix с настроенным jmx-портом и применёнными шаблонами из группы. Если что-то пошло не так, первое, что рекомендую проверить, – Reports->Audit log.
4.4
Zabbix 4.4 for Ubuntu 18.04:
Zabbix 4.4 for Debian 10:
# mysql -uroot -p password mysql> create database zabbix character set utf8 collate utf8_bin; mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password'; mysql> quit;
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
/etc/zabbix/zabbix_server.conf
DBPassword=password
mcedit /etc/zabbix/nginx.conf
listen 80; server_name example.com;
mcedit /etc/zabbix/php-fpm.conf
php_value = Europe/Riga
ln -s /etc/zabbix/nginx.conf /etc/nginx/sites-available/ ln -s /etc/nginx/sites-available/nginx.conf /etc/nginx/sites-enabled/ rm /etc/nginx/sites-enabled/default
systemctl restart zabbix-server zabbix-agent nginx php7.2-fpm systemctl enable zabbix-server zabbix-agent nginx php7.2-fpm
Первоначальная настройка веб-интерфейса Zabbix 5
После успешного запуска сервисов Zabbix перейдите в веб-интерфейс по адресу: http://server-ip/zabbix/. Запустится мастер первоначальной настройки в котором сначала произойдет проверка предварительных требований.
На первом экране есть возможность выбрать язык интерфейса, однако в установке по умолчанию доступен только английский язык, поэтому просто жмем Next step.
Следующим шагом будет проведена проверка соответствия системным требованиям необходимым для работы веб-интерфейса Zabbix 5. Если все пункты отмечены зеленым OK то переходите к следующему шагу кликнув по кнопке Next step.
Далее необходимо указать параметры подключения к субд. Большинство параметров правильные по умолчанию, если вы устанавливаете строго по этой инструкции, поэтому вам необходимо будет указать только пароль подключения и возможно username, которые вы задали ранее создавая базу в mysql.
Укажите адрес и имя Zabbix сервевера.
Укажите временную зону и тему оформления для веб-интерфейса Zabbix 5.4.
Финальная сводка информации по установке веб-интерфейса.
Для входа в веб-интерфейс Zabbix используйте логин Admin (с первой заглавной буквой) пароль zabbix.
После завершения установки поменяйте пароль по умолчанию и приступайте к добавлению узлов.