Мониторинг web сайта в zabbix

Подготовка zabbix agent

Мониторинг значений SMART жесткого диска будет выполняться с помощью smartmontools. Установить их можно следующей командой для CentOS:

# yum install smartmontools

Либо аналогично в Debian/Ubuntu

# apt install smartmontools

Далее нам понадобится скрипт на perl для автообнаружения дисков и вывода информации о них в JSON формате, который понимает заббикс. Создадим такой скрипт.

# mcedit /etc/zabbix/scripts/smartctl-disks-discovery.pl
#!/usr/bin/perl

#must be run as root

$first = 1;

print "{\n";
print "\t\"data\":[\n\n";

for (`ls -l /dev/disk/by-id/ | cut -d"/" -f3 | sort -n | uniq -w 3`)
{
#DISK LOOP
$smart_avail=0;
$smart_enabled=0;
$smart_enable_tried=0;

#next when total 0 at output
        if ($_ eq "total 0\n")
                {
                        next;
                }

    print "\t,\n" if not $first;
    $first = 0;

$disk =$_;
chomp($disk);

#SMART STATUS LOOP
foreach(`smartctl -i /dev/$disk | grep SMART`)
{

$line=$_;

        # if SMART available -> continue
        if ($line = /Available/){
                $smart_avail=1;
                next;
                        }

        #if SMART is disabled then try to enable it (also offline tests etc)
        if ($line = /Disabled/ & $smart_enable_tried == 0){

                foreach(`smartctl -i /dev/$disk -s on -o on -S on | grep SMART`) {

                        if (/SMART Enabled/){
                                $smart_enabled=1;
                                next;
                        }
                }
        $smart_enable_tried=1;
        }

        if ($line = /Enabled/){
        $smart_enabled=1;
        }


}

    print "\t{\n";
    print "\t\t\"{#DISKNAME}\":\"$disk\",\n";
    print "\t\t\"{#SMART_ENABLED}\":\"$smart_enabled\"\n";
    print "\t}\n";

}

print "\n\t]\n";
print "}\n";

Сохраняем скрипт и делаем исполняемым.

# chmod u+x smartctl-disks-discovery.pl

Выполняем скрипт и проверяем вывод. Должно быть примерно так с двумя дисками.

{
	"data":
}

В данном случае у меня 2 физических диска — sda и sdb. Их мы и будем мониторить.

Настроим разрешение для пользователя zabbix на запуск этого скрипта, а заодно и smartctl, который нам понадобится дальше. Для этого запускаем утилиту для редактирования /etc/sudoers.

# visudo

Добавляем в самый конец еще одну строку:

zabbix ALL=(ALL) NOPASSWD:/usr/sbin/smartctl,/etc/zabbix/scripts/smartctl-disks-discovery.pl

Сохраняем, выходим :) Это если вы умеете работать с vi. Если нет, то загуглите, как работать с этим редактором. Именно он запускается командой visudo.

Проверим, что пользователь zabbix нормально исполняет скрипт.

# chown zabbix:zabbix /etc/zabbix/scripts/smartctl-disks-discovery.pl
# sudo -u zabbix sudo /etc/zabbix/scripts/smartctl-disks-discovery.pl

Вывод должен быть такой же, как от root. Если вам не хочется разбираться с этими разрешениями, либо что-то не получается, можете просто запустить zabbix-agent от пользователя root и проверить работу в таком режиме. Сделать это не трудно, данный параметр закомментирован в конфигурации агента. Вам достаточно просто снять комментарий и перезапустить агент.

После настройки скрипта автообнаружения, добавим необходимые UserParameters для мониторинга SMART. Для этого создадим отдельный конфигурационный файл. Для версии 3.2 и ниже он будет выглядеть вот так.

# mcedit /etc/zabbix/zabbix_agentd.d/smart.conf
UserParameter=uHDD,sudo smartctl -A /dev/$1| grep -i "$2"| tail -1| cut -c 88-|cut -f1 -d' '
UserParameter=uHDD.model.,sudo smartctl -i /dev/$1 |grep -i "Device Model"| cut -f2 -d: |tr -d " "
UserParameter=uHDD.sn.,sudo smartctl -i /dev/$1 |grep -i "Serial Number"| cut -f2 -d: |tr -d " "
UserParameter=uHDD.health.,sudo smartctl -H /dev/$1 |grep -i "test"| cut -f2 -d: |tr -d " "
UserParameter=uHDD.errorlog.,sudo smartctl -l error /dev/$1 |grep -i "ATA Error Count"| cut -f2 -d: |tr -d " "
UserParameter=uHDD.discovery,sudo /etc/zabbix/scripts/smartctl-disks-discovery.pl

Версия настроек для агента 3.4

UserParameter=uHDD.A,sudo smartctl -A /dev/$1
UserParameter=uHDD.i,sudo smartctl -i /dev/$1
UserParameter=uHDD.health,sudo smartctl -H /dev/$1 || true
UserParameter=uHDD.discovery,sudo /etc/zabbix/scripts/smartctl-disks-discovery.pl

Сохраняем файл и перезапускаем zabbix-agent.

# systemctl restart zabbix-agent

Проверяем, как наш агент будет отдавать данные. Ключ uHDD.discovery будет одинаковый для обоих версий агента.

# zabbix_agentd -t uHDD.discovery

Вы должны увидеть полный JSON вывод с информацией о ваших диска. Теперь посмотрим, как передаются информация о smart. Запросим температуру дисков для версии 3.2.

# zabbix_agentd -t uHDD

uHDD 

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

Шаг 5 — Настройка базы данных MySQL для Zabbix

Импортируем схему базы данных для Zabbix сервера. Логинемся на сервер MySQL с учетной записью root и создаем базу данных MySQL и пользователя с помощью следующих команд.

# mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;

Импорт начальной схему и данных Заббикс производим от пользователя MySQL созданного выше.

# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Enter password

Настроим подключение Заббикса к базе данных, для это следует отредактировать файл /etc/zabbix/zabbix_server.conf и задать пароль для подключения к MySQL. Остальные 3 параметра уже настроены, если вы конечно не извращались с именем пользователя и базы данных.

DBPassword=password
DBHost=localhost
DBName=zabbix
DBUser=zabbix

Шаг 2 — Подключение официального репозитория Zabbix и исправление ошибок:)

В этом руководстве я буду объяснить, как установить сервер Zabbix в системе Ubuntu 20.04 LTS.

Zabbix доступен в репозиториях пакетов Ubuntu, но я рекомендую использовать официальный репозиторий Zabbix. Для подключения официальных репозиториев вам нужно перейти на страницу загрузки Zabbix и выбрать вашу конфигурацию. Моя конфигурация на скриншоте:

После выбора конфигурации — ниже появятся команды для подключения репозитория, в моем случае такие:

# wget https://repo.zabbix.com/zabbix/5.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.2-1+ubuntu20.04_all.deb
# dpkg -i zabbix-release_5.2-1+ubuntu20.04_all.deb
# apt update

И здесь бабамс!!! Получаем ошибку: N: Skipping acquire of configured file ‘main/binary-i386/Packages’ as repository ‘http://repo.zabbix.com/zabbix/5.2/ubuntu focal InRelease’ doesn’t support architecture ‘i386’

Самое интересное изучил штук 7 руководств по установке Zabbix 5 на 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, который нам установила команда dpkg -i zabbix-release_5.2-1+ubuntu20.04_all.deb и добавляем ключ . Мой измененный файл:

deb arch=amd64 http//repo.zabbix.com/zabbix/5.2/ubuntu focal main
deb-src arch=amd64 http//repo.zabbix.com/zabbix/5.2/ubuntu focal main

И снова запускаем

# apt update

Всё, ошибки нет!

Настройка Zabbix

Импорт шаблона

Откройте веб-интерфейс Zabbix. По умолчанию он находится по адресу http://IP-адрес сервера/zabbix.

Зайдите в систему. 

  • Логин —Admin
  • Пароль —zabbix

Перейдите в раздел Configuration > Templatesи нажмите в правом углу кнопкуImport. В списке шаблонов появитсяTemplate App R-Keeper 7. 

Выберите загруженный файл и снова нажмите кнопку Import.Рекомендуем удалить ненужные шаблоны. Для этого отметьте их галочками и нажмите кнопкуDeleteвнизу.

Создание хостов

Чтобы создать хост, необходимо сначала создать группу. Для создания перейдите в Configuration > Host Groups и нажмите кнопкуCreate host groupв правом углу .Укажите название новой группы и нажмитеAdd

Теперь создайте сами хосты. Перейдите в Configuration > Host и нажмитеCreate host 

Заполните поля:

  • Host name— имя хоста. Разрешена только латиница без пробелов. Обязательно должно совпадать с именем, указанным в INI-файле сервера.
  • Visible name— отображаемое имя. Может содержать пробелы и русский язык
  • Groups— группа хостов
  • Agent interfaces— адрес Zabbix-агента. Укажите здесь IP и порт с r_keeper_7, который вы хотите мониторить
  • Остальные поля заполнять не нужно. 

Перейдите на вкладку Templates, нажмитеAddи выберите в списке шаблон Template App R-Keeper 7, установленный ранее. Это действие можно сделать позже в массовом порядке.

НажмитеSelect. Шаблон добавится к хосту. Нажмите кнопкуAdd, чтобы сохранить настройки хоста.

Хост появится в списке. Повторите действия для всех нужных хостов.Убедитесь, что для каждого хоста выбран правильный шаблон, иначе данные отображаться не будут.

На этом настройка завершена, можно переходить к наблюдению. 

Сканируем!

Запуск основного скрипта обработки данных () происходит автоматически, один раз в сутки, через «Service Item…» на хосте «Vulners — Statistics» в указанное скриптом время.

Вы можете поменять время запуска плагина на любое удобное вам, изменив «Scheduling interval» в этом элементе данных. При этом необходимо откорректировать и время сбора статистики в трех элементах данных шаблона «Vulners OS-Report» – метрики в шаблоне должны срабатывать минут на 10…15 раньше, чем основная метрика «Service Item…» на хосте «Vulners — Statistics».

Время за которое будут обработаны все данные об уязвимостях зависит от количества серверов в инфраструктуре и количества установленных на них пакетов. Ориентировочно на обработку 1 тысячи серверов тратится около 30 минут.

Планы

Это лишь первая версия плагина Zabbix Threat Control. И мы продолжаем его разработку.

  • Добавить на дашборд информацию по найденным в инфраструктуре CVE.
  • Отказаться установки каких либо скриптов на агенты и собирать всю необходимую информацию об ОС и пакетах с помошью встроенных в Zabbix-агент ключей элементов данных.

Подготовка nginx к мониторингу

Я планирую мониторить следующие параметры nginx:

Параметры мониторинга nginx
accepts per second Число принятых соединений в секунду
active connections Текущие активные соединения
handled per second Число обработанных соединений в секунду
latency Время ответа сервера в миллисекундах
memory allocated Занимаемая память
process count Число запущенных процессов
reading state connection count Текущее число соединений, в которых nginx в настоящий момент читает заголовок запроса
requests per second Число запросов в секунду
waiting state connection count Текущее число бездействующих соединений в ожидании запроса
writing state connection count Текущее число соединений, в которых nginx в настоящий момент отвечает
memory allocated Сколько памяти занимают все worker process

Сервер nginx умеет отдавать часть необходимой нам информации о своем состоянии. Для этого его надо соответствующим образом подготовить. Открываем конфиг сервера и добавляем туда следующую конструкцию:

server {
    listen localhost;
    server_name localhost;
    keepalive_timeout	0;
    allow	127.0.0.1;
    allow	::1;
    deny	all;
    access_log	off;

        location /nginx-status {
	stub_status	on;
        }

Я обычно добавляю в самый конец основного конфига nginx.conf. Сохраняем и перечитываем конфигурацию, перед этим проверив его конфиг на ошибки:

# nginx -t
# nginx -s reload

Проверяем, можем ли мы получить необходимую информацию для настройки мониторинга:

# curl http://localhost/nginx-status
Active connections: 89 
server accepts handled requests
 1374661 1374661 9511381 
Reading: 0 Writing: 1 Waiting: 87

Теперь проверим, сможет ли zabbix получать эту страницу.

# zabbix_agentd -t web.page.get

Если у вас так же, то все в порядке, можно двигаться дальше. Если что-то не получается, то проверяйте конфиги, смотрите логи. Это штатный функционал, он должен без проблем настраиваться и работать.

Сразу обращаю внимание на один важный момент, на котором я застрял на приличное время. Через curl я без проблем забирал страничку со статусом nginx, а вот через zabbix никак не получалось

Была ошибка:

 :80]:  Connection refused]

Я всю голову сломал, 10 раз перепроверил конфиги, никак не мог понять, почему не работает. Оказалось, дело было вот в чем. Zabbix-agent обращался к серверу Nginx по протоколу ipv6. Это при том, что как агент, так и nginx работали по ipv4. Я принудительно отключаю у служб ipv6, если он не используется.

Обнаружил это случайно, когда от безысходности запустил Nginx на всех интерфейсах и снял ограничения allow/deny в конфиге. Тогда запрос прошел нормально. Я посмотрел access лог и увидел, что zabbix-agent обращается с адреса ::1. И все стало ясно. Я так и не понял, как заставить агента ходить по ipv4. В итоге запустил nginx на обоих протоколах и разрешил забирать страницу статуса с адреса ::1. После этого заработало.

Самое неприятное в этой ситуации было то, что в логах нигде не было никаких ошибок, отклоненных запросов или чего-то еще, что могло бы дать зацепку. Zabbix agent просто писал, что подключение отклонено и все. О том, что он обращается по ipv6, не было никакого намека.

Установка zabbix-agent

Прежде, чем мы перейдем к настройке оповещений, возьмем ещё один VPS и установим на него zabbix-agent

root@dedicated:~# apt install zabbix-agent

Отредактируем три параметра конфигурационного файла:

root@dedicated:~# mcedit /etc/zabbix/zabbix_agentd.conf

Server=178.20.**.** # IP сервера Zabbix

ServerActive=178.20.**.** # IP сервера Zabbix

Если сервер по доменному имени, добавьте так же:

Hostname=dmt-srv # отображаемое имя узда на сервере Zabbix

Перезагрузите агент и добавьте его в автозагрузку:

root@dedicated:~# systemctl restart zabbix-agent.service

root@dedicated:~# systemctl enable zabbix-agent

Добавляем UserParameter в zabbix agent

Открываем конфигурационный файл агента и добавляем в самый конец новые параметры, которые будет собирать zabbix:

UserParameter=pump_1, C:\zabbix\parser\pump_1.bat
UserParameter=time_pump_1, C:\zabbix\parser\time_pump_1.bat
UserParameter=state, C:\zabbix\parser\state.bat
UserParameter=power, C:\zabbix\parser\electric-power.bat

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

После изменения конфигурационного файла нужно перезапустить службу агента. Проверить, все ли сделано правильно можно с помощью команды в консоли:

C:\zabbix>zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.win.conf -t power
power                                         

Если у вас все работает и значения правильные выводятся, идем на сервер, настраивать сбор параметров.

Настройка

После установки необходимо сконфигурировать плагин и подготовить систему мониторинга для его работы. Далее пошаговое описание всех необходимых действий.

Настраиваем сервера, требующие сканирования

Необходимо разрешить Zabbix агенту выполнять удаленные команды. Для этого на всех серверах, для ктороых требуется сканирование, измените параметры в файле конфигурации zabbix-agent как показано ниже:

Файл конфигурации zabbix-агента обычно расположен здесь:

Если вы хотите использовать функционал по устранению найденных уязвимостей с помощью Zabbix Threat Control, вам необходимо разрешить пользователю zabbix выполнять обновление пакетов (но не их установку или удаление).

Для RPM-дистрибутивов строка выглядит так:

Для DEB-дистрибутивов немного по-другому:

Подключаемся к Vulners

Для использования Vulners API вам нужен api-ключ. Чтобы получить его:

  • Зарегистрируйтесь на vulners.com
  • В личном кабинете перейдите на вкладку API KEYS
  • Выберите «Scan» в области Scope и нажмите «GENERATE NEW KEY».

Вы получите api-ключ, который выглядит следующим образом: RGB9YPJG7CFAXP35PMDVYFFJPGZ9ZIRO1VGO9K9269B0K86K6XQQQR32O6007NUK

Теперь вам нужно добавить api-ключ Vulners в конфигурационный файл плагина

Пример:

Подключаемся к Zabbix

Чтобы плагин смог подключиться к Zabbix, вам нужно указать следующие данные в файле конфигурации:

  • адрес веб-интерфейса Zabbix для работы с Zabbix-API;
  • имя и пароль пользователя, под которым будем подключаться к Zabbix API.

Пример:

Подготавливаем Zabbix

Необходимо создать в Zabbix объекты, обеспечивающие работу плагина. Для этого нужно запустить скрипт . Скрипт проверит что плагин сконфигурирован верно и, используя API создаст в Zabbix:

  1. Хост-группу, в которую добавятся хосты, отображающие уязвимости.
  2. Шаблон, с помощью которого собирается отчет об ОС со всех серверов.
  3. Хосты для отображения уязвимостей по пакетам, серверам, бюллетеням и общей статистики.
  4. Экшен для выполнения удаленных команд по исправлению уязвимостей.
  5. Дашборд для удобного отображения все этой информации.

После создания в Zabbix всех объектов скрипт покажет:

  • Ссылку на созданный дашборд в Zabbix, на котором будут отображаться уязвимости.
  • Время, когда будет запускаться сканирование инфраструктуры на уязвимости.

После того, как в Zabbix буду созданы все необходимые объекты, необходимо зайти в веб-интерфейс Zabbix и слинковать только что созданный скриптом шаблон «Vulners OS-Report» со всеми теми серверами, для которых требуется сканирование на уязвимости.

После этого остается дождаться запуска плагина в указанное при инсталляции время.

Веб-сайт Zabbix Monitor

Хотите узнать, как настроить веб-мониторинг Zabbix? В этом уроке мы покажем вам, как контролировать сайт с помощью Zabbix и функции веб-сценария.

Список оборудования:

В следующем разделе представлен список оборудования, используемого для создания этого учебника Zabbix.

Все перечисленные выше аппаратные средства можно найти на веб-сайте Amazon.

Zabbix Playlist:

На этой странице мы предлагаем быстрый доступ к списку видеороликов, связанных с установкой Zabbix.

Playlist

Не забудьте подписаться на наш канал YouTube, названный FKIT.

Учебное пособие Zabbix:

На этой странице мы предлагаем быстрый доступ к списку руководств, связанных с установкой Zabbix.

Список учебных пособий

Учебник — Сайт Zabbix Monitor

Откройте браузер и введите IP-адрес вашего веб-сервера plus / zabbix.

В нашем примере в браузере был введен следующий URL:

• http://35.162.85.57/zabbix

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

• Имя пользователя по умолчанию: Admin
• Пароль по умолчанию: zabbix

После успешного входа в систему вы будете отправлены на панель инструментов Zabbix.

На экране панели инструментов откройте меню «Конфигурация» и выберите параметр «Хост».

Найдите и нажмите на узел с именем: ZABBIX SERVER

На экране «Свойства хоста» перейдите на вкладку «Приложения».

В верхней правой части экрана нажмите кнопку «Создать приложение».

На экране «Хост-приложения» создайте новое приложение с именем WEBSITE.

После завершения создания приложения перейдите на вкладку «Веб-сценарии».

В верхней правой части экрана нажмите кнопку Создать веб-сценарий.

На экране веб-сценария вам необходимо настроить следующие элементы:

• Имя: введите идентификатор веб-сайта.
• Приложение: веб-сайт
• Интервал обновления: 1 минута
• Агент: Zabbix
• Включено: Да

Откройте вкладку «Шаги» и добавьте новый шаг.

Вам необходимо настроить следующие элементы:

• Имя: введите идентификатор.
• URL: введите URL-адрес веб-сайта
• Выполнять переадресацию: Да
• Требовать код состояния: 200

Нажмите кнопку «Добавить» и завершите настройку веб-сценария.

Подождите 5 минут.

Чтобы проверить свою конфигурацию, откройте меню «Мониторинг» и нажмите «Последний параметр данных».

Используйте конфигурацию фильтра, чтобы выбрать хост сервера Zabbix.

Используйте конфигурацию фильтра, чтобы выбрать приложение веб-сайта.

Нажмите кнопку «Применить».

Вы должны уметь видеть результаты мониторинга вашего сайта с помощью Zabbix.

Поздравляем! Вы настроили Zabbix для мониторинга веб-сайта.

2018-08-08T09:59:48-03:00

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: