Установка и запуск сервера Alerta на Ubuntu


Сервер Alerta может принимать тревожные события, таким образом, она представляет из себя систему мониторинга. Также Alerta может интегрироваться с другими системами мониторинга, например, Zabbix.
Сервер баз данных
MongoDB
PostgreSQL
Alerta Server
Консоль управления
Загрузка
NGINX
Тестовая отправка тревоги
Настройка автозапуска
Alertad
Alerta Web Console
Пользователи Active Directory
Логирование
Обновление
Сервер
Веб-консоль
Установка сервера баз данных
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;
Отключаемся от базы:
=# \q
Открываем на редактирование файл 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:
alerta=>
Выходим из sql-оболочки:
=> \q
Установка 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:alerta123@localhost'
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:
pip3 install alerta
Отправляем тревогу:
alerta send -r server01 -e NotPing -E Production -S Website -s major -t "Server01 is down." -v ERROR
В нашей консоли появится сообщение:
Автозапуск
В данной инструкции мы запускали вручную сервисы 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 = ['mosk@dmosk.local']
LDAP_URL = 'ldap://ldap-server:389'
LDAP_DOMAINS = {
'dmosk.local': 'cn=%s,ou=Пользователи,dc=dmosk,dc=local'
}
LDAP_DOMAINS_BASEDN = {
'dmosk.local': 'dc=dmosk,dc=local'
}
* где: AUTH_REQUIRED — требовать или нет аутентификацию (по умолчанию, алерта разрешает неконтролируемый вход); AUTH_PROVIDER — указыввает на механизм проверки подлинности; ADMIN_USERS — перечисляет список пользователей с правами администратора; LDAP_URL — сервер AD DS; LDAP_DOMAINS — фильтр для поиска учетных записей; LDAP_DOMAINS_BASEDN — корень домена. В данном примере мы требуем аутентификацию; подключаемся к серверу ldap-server; ищем пользователей по cn, которая соответствует логину в организационном юните Пользователи; в моем случае используется домен dmosk.local.
* стоит обратить внимание, что Alerta требует в качестве логина cn из AD, а также в качестве лонинов требуются email — таким образом, имена учетных записей в AD должны быть написаны латиницей.
Перезапускаем службу, созданную нами для алерты:
systemctl restart alertad
Готово. Чтобы войти в систему необходимо в качестве логина использоваться email — <логин>@<домен>, например, master@dmosk.local.
Логирование
Для анализа ошибок и предупреждений в работе 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