Установка сервера для сбора тревожных событий Alerta на Linux Ubuntu

Мы предоставляем услуги удаленного администрирования серверов

Установка сервера для сбора тревожных событий Alerta на Linux Ubuntu

Обновлено Обновлено: Опубликовано Опубликовано:

Сервер Alerta может принимать тревожные события, таким образом, она представляет из себя систему мониторинга. Также Alerta может интегрироваться с другими системами мониторинга, например, Zabbix.

Установка сервера баз данных

Alerta позволяет использовать разные системы управления базами данных. Мы рассмотрим варианты установки с MongoDB и PostgreSQL.

Перед началом установки обновим списки пакетов:

apt-get update

MongoDB

Вводим следующую команду:

apt-get install mongodb

Разрешаем автозапуск сервиса и запускаем его:

systemctl enable mongodb

systemctl start mongodb

PostgreSQL

Установку выполняем командой:

apt-get install postgresql postgresql-contrib

Стартуем postgresql с включением автозапуска:

systemctl enable postgresql —now

Подключимся к командной оболочке postgresql:

su postgres -c «psql -Upostgres template1»

Создадим пользователя:

=# CREATE USER alerta WITH ENCRYPTED PASSWORD ‘alerta123’;

* в данном примере мы создадим пользователя alerta с паролем alerta123.

Создадим базу данных:

=# CREATE DATABASE alerta WITH ENCODING=’UTF-8′;

* данной командой мы создадим базу alerta.

Дадим полные права пользователю alerta на базу alerta:

=# GRANT all ON DATABASE alerta TO alerta;

Отключаемся от базы:

Открываем на редактирование файл pg_hba.conf. Он находится в одной и той же директории с конфигом postgresql. Чтобы узнать его расположение, вводим команду:

ps aux | grep postgres | grep — -D

Мы увидим что-то на подобие:

postgres  3356  0.0  0.4 318768 27312 ?        S    09:47   0:00 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf

Нас интересует строка с указанием местоположения файла postgresql.conf — в нашем примере, /etc/postgresql/10/main. Теперь, открываем в данной директории файл pg_hba.conf:

vi /etc/postgresql/10/main/pg_hba.conf

Находим строку:

local   all       all            peer

… и выше нее добавляем:

local   alerta       alerta            md5

* в данном примере мы добавили право пользователю alerta подключаться к базе alerta с локального сервера. При подключении пользователь должен ввести пароль.

Перезапускаем СУБД:

systemctl restart postgresql

Пробуем подключиться к базе alerta:

psql -d alerta -Ualerta -W

Вводим пароль (в нашем примере, alerta123) — мы должны увидеть командную оболочку SQL:

Выходим из sql-оболочки:

Установка Alerta Server

Ставим менеджер python пакетов pip:

apt-get install python3-pip

Обновляем его (устанавливается не самая последняя версия):

pip3 install —upgrade pip

Устанавливаем сервер алертов:

pip3 install alerta-server

Если мы хотим работать с базой PostgreSQL, то также установим пакеты:

apt-get install libpq-dev python-psycopg2

pip3 install psycopg2

Создаем конфигурационный файл со следующим содержимым:

vi /etc/alertad.conf

CORS_ORIGINS = [
    ‘http://alerta.local’,
    ‘http://alerta.local:8000’,
    ‘http://alerta.local:8080’,
    ‘http://alerta.local:8081’,
    r’https?://\w*\.?local\.alerta\.io:?\d*/?.*’  # => http(s)://*.local.alerta.io:<port>
]

* я у себя буду использовать домен alerta.local для работы с алертой — в продуктивной среде домен нужно заменить другим.

Если мы хотим использовать СУБД PostgreSQL, то также добавим 2 строки:

DATABASE_URL = ‘postgresql://alerta:[email protected]
DATABASE_NAME = ‘alerta’

Запускаем алерту:

alertad run —port 8080

Мы должны увидеть что-то на подобие:

Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)

Подключаемся к серверу новой SSH-сессией. Проверяем, что сервер запустился и слушает на порту 8080:

ss -tunlp | grep 8080

Должны увидеть:

tcp    LISTEN     0      128    127.0.0.1:8080                  *:*                   users:((«alertad»,pid=7729,fd=4))

Установка веб-консоли

Для использования веб-консоли необходимо сначала ее загрузить и распаковать архив, а также установить http-прокси (мы будем использовать NGINX).

Загрузка и распаковка

Создаем каталог для консоли:

mkdir -p /var/www/alerta

Скачиваем консоль:

wget https://github.com/alerta/alerta-webui/releases/latest/download/alerta-webui.tar.gz

… и распаковываем ее:

tar zxvf alerta-webui.tar.gz -C /var/www/alerta —strip-components 1

Установка и настройка веб-сервера NGINX

Вносим изменение в настройку портала:

vi /var/www/alerta/config.json

{«endpoint»: «http://alerta.local:8081»}

* в данном примере, мы поменяли localhost на alerta.local (домен, который я использую у себя) и порт 8080 на 8081.

Устанавливаем пакет командой:

apt-get install nginx

Создаем конфигурационный файл со следующим содержимым:

vi /etc/nginx/conf.d/alerta.conf

server {
        listen 80;
        server_name alerta.local;
        location / {
            proxy_pass http://127.0.0.1:8000/;
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
        rewrite /alerts.* / permanent;
}

server {
        listen 8081;
        server_name alerta.local;
        location / {
            proxy_pass http://127.0.0.1:8080/;
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
}

* обратите внимание, что необходимо заменить alerta.local на тот, что будет использоваться у вас.

Разрешаем автозапуск nginx и стартуем сервис:

systemctl enable nginx

systemctl restart nginx

Снова запускаем веб-консоль алерты:

cd /var/www/alerta && python3 -m http.server 8000

Открываем браузер и переходим на нашу веб страницу: http://alerta.local (доменное имя должно быть зарегистрировано в DNS или прописано в локальном файле hosts). Должна открыться консоль Alerta:

Внешний вид веб-консоли Alerta

Тестовая отправка тревоги

Устанавливаем консольную команду alerta:

pip3 install alerta

Отправляем тревогу:

alerta send -r server01 -e NotPing -E Production -S Website -s major -t «Server01 is down.» -v ERROR

В нашей консоли появится сообщение:

Отправленная тревога в веб-консоли Alerta

Автозапуск

В данной инструкции мы запускали вручную сервисы alerta и веб-сервис python. Теперь необходимо автоматизировать эти запуски.

Alertad

Создаем сервис systemd:

vi /etc/systemd/system/alertad.service

[Unit]
Description=Alerta Service
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/alertad run —port 8080
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

Применяем изменения в systemd:

systemctl daemon-reload

Разрешаем автозапуск сервиса и стартуем его:

systemctl enable alertad

systemctl start alertad

Alerta Web Console

Создаем сервис systemd:

vi /etc/systemd/system/alertaweb.service

[Unit]
Description=Alerta Web Service
After=network.target

[Service]
Type=simple
WorkingDirectory=/var/www/alerta
ExecStart=/usr/bin/python3 -m http.server 8000
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

Применяем изменения в systemd:

systemctl daemon-reload

Разрешаем автозапуск сервиса и стартуем его:

systemctl enable alertaweb

systemctl start alertaweb

Аутентификация через Active Directory

Устанавливаем компоненты, необходимые для установки python-ldap:

apt-get install libpq-dev python-dev libxml2-dev libxslt1-dev libldap2-dev libsasl2-dev libffi-dev

… после сам python-ldap:

pip3 install python-ldap

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

vi /etc/alertad.conf

Добавляем строки для настройки LDAP:

AUTH_REQUIRED = True
AUTH_PROVIDER = ‘ldap’
ADMIN_USERS = [‘[email protected]’]

LDAP_URL = ‘ldap://ldap-server:389’
LDAP_DOMAINS = {
    ‘admins24.local’: ‘cn=%s,ou=Пользователи,dc=admins24,dc=local’
}
LDAP_DOMAINS_BASEDN = {
    ‘admins24.local’: ‘dc=admins24,dc=local’
}

* где: AUTH_REQUIRED — требовать или нет аутентификацию (по умолчанию, алерта разрешает неконтролируемый вход); AUTH_PROVIDER — указыввает на механизм проверки подлинности; ADMIN_USERS — перечисляет список пользователей с правами администратора; LDAP_URL — сервер AD DS; LDAP_DOMAINS — фильтр для поиска учетных записей; LDAP_DOMAINS_BASEDN — корень домена. В данном примере мы требуем аутентификацию; подключаемся к серверу ldap-server; ищем пользователей по cn, которая соответствует логину в организационном юните Пользователи; в моем случае используется домен admins24.local.
* стоит обратить внимание, что Alerta требует в качестве логина cn из AD, а также в качестве лонинов требуются email — таким образом, имена учетных записей в AD должны быть написаны латиницей.

Перезапускаем службу, созданную нами для алерты:

systemctl restart alertad

Готово. Чтобы войти в систему необходимо в качестве логина использоваться email — <логин>@<домен>, например, [email protected]

Логирование

Для анализа ошибок и предупреждений в работе alerta можно включить режим отладки и записать результат в log-файл.

Для этого открываем конфигурационный файл:

vi /etc/alertad.conf

Добавляем:

LOG_HANDLERS = [‘console’, ‘file’]
LOG_FILE = ‘/var/log/alertad.log’
LOG_MAX_BYTES = 5*1024*1024
LOG_BACKUP_COUNT = 2
LOG_FORMAT = ‘verbose’

Перезапускаем наш сервис:

systemctl restart alertad

Лог файл можно читать командой:

tail -f /var/log/alertad.log

Обновление до новой версии

Рассмотрим процесс обновления Alerta Server и Web Console.

Alerta Server

Обновление серверной части выполняется с помощью менеджера pip. Сначала можно обновить его самого:

pip3 install —upgrade pip

После можно обновить алерту:

pip3 install —upgrade alerta-server

Перезапускаем службу:

systemctl restart alertad

Веб консоль

Перейдя по ссылке https://github.com/alerta/alerta-webui/releases/latest/ можно получить информацию о последней версии веб-портала для алерты. Если наша версия ниже и мы хотим ее обновить, сначала скачаем архив на сервере. Если мы ранее уже ставили обновление, может остаться ранее загруженный файл — удалим его:

rm alerta-webui.tar.gz

Теперь загрузим новый архив:

wget https://github.com/alerta/alerta-webui/releases/latest/download/alerta-webui.tar.gz

Обязательно сохраним текущий портал, перенеся его в другой каталог, например /backup:

mkdir -p /backup/alerta_web

mv /var/www/alerta /backup/alerta_web/alerta_old_`date +%Y-%m-%d`

После создаем новый каталог alerta в /var/www/:

mkdir /var/www/alerta

И распаковываем в него скачанный архив:

tar zxvf alerta-webui.tar.gz -C /var/www/alerta —strip-components 1

Возвращаем из старого каталога конфигурационный файл:

cp /backup/alerta_web/alerta_old_`date +%Y-%m-%d`/config.json /var/www/alerta/

Перезапускаем службу:

systemctl restart alertaweb