Полноценный почтовый сервер с iredmail на ubuntu

Что такое Zextras

Продукт Zextras состоит из двух компонентов — Zextras Suite и Team Pro. Рассмотрим функционал каждого из них. Начнем с Zextras Suite и его основных возможностей (не всех):

  1. Одноканальный (1:1) мессенджер с поддержкой аудио и видео звонков.
  2. Создание и редактирование документов, таблиц, презентаций в интегрированной LibreOffice с поддержкой форматов документов Microsoft Office, кроме бизнес аналитики, OLAP.
  3. Совместная работа с документами через web интерфейс. В том числе преобразование в pdf в один клик.
  4. Индивидуальный виртуальный диск Drive для хранения документов с возможностью делиться файлами.
  5. Поддержка различных Storage для хранения информации, в том числе объектные, типа S3 с приоритезацией хранения данных на хранилищах разных типов.
  6. Расширенная возможность бэкапа (компрессия, дедупликация) и восстановления данных, в том числе удаленных писем и т.д. Все это связано с поддержкой различных Storage из предыдущего пункта.
  7. Поддержка мобильных устройств, в том числе с помощью Active Sync. Есть мобильные приложения для iOS и Android.
  8. Поддержка клиента Microsoft Outlook с помощью того же Active Sync.
  9. Расширенные возможности администрирования. Делегирование нескольким администраторам ограниченных прав, логирование их действий и т.д.

Продукт Team Pro дает дополнительные возможности к перечисленным выше:

  1. Многоканальные видеозвонки для организации видеоконференций.
  2. Возможность общения с внешними пользователями, не зарегистрированными в системе.
  3. Демонстрация своего экрана для одного или нескольких зрителей, возможность делиться файлами.

Все перечисленные возможности интегрированы в стандартный интерфейс Zimbra и управляются через него. Расширения Zextras являются надстройкой, не изменяя код самого почтового сервера. Их можно без проблем удалить. Аудио и видеочаты реализованы на базе WebRTC, поэтому работают через браузер и не требуют установки дополнительного ПО.

Zextras полностью платный продукт. Open source версии нет. Можно воспользоваться 30-ти дневным триалом для тестирования функционала. Стоимость различных лицензий можно узнать у официального партнера Zextras в РФ — SVZcloud.

С теорией и описанием закончили. Переходим к установке и настройке. Начнем с установки Zimbra.

Step 4: Create a Database and User for PostfixAdmin

Log into MySQL/MariaDB shell as root with the following command. You will need to enter the MySQL/MariaDB root password.

mysql -u root -p

Once you are logged in, create a database for PostfixAdmin using the following command. I named it , but you can use whatever name you like. (Don’t leave out the semicolon.)

create database postfixadmin;

Then enter the command below to create a database user for PostfixAdmin. This command also grant all privileges of postfixadmin database to the user. Replace with your preferred password. Note that the password should not contain the character, or you might not be able to log in later.

grant all privileges on postfixadmin.* to 'postfixadmin'@'localhost' identified by 'postfixadmin_password';

Flush the privileges table for the changes to take effect and then get out of MariaDB shell.

flush privileges;

exit;

Установка

Первичная задача – скачать файл установки с официального сайта https://github.com/iredmail/iRedMail/releases/download/1.0/iRedMail-1.0.tar.gz.

Следующим шагом мы распаковываем данный файл tar zxf iRedMail-x.y.z.tar.gz.

Переходим в распакованную папку и запускаем скрипт bash iRedMail.sh.

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

Далее выбираем веб сервер, без него не будет работать наш веб-интерфейс. В текущей версии мы выбираем Ngnix.

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

Необходимо задать пароль для postmaster@домен. Данный пользователь будет администратором нашего почтового сервера и необходим для добавления и редактирования учетных записей на сервере.

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

После прохождения всех этапов скрипт выводит указанные нами выше данные, проверяем их и если все верно соглашаемся с установкой.

После проведенной установки скрипт выведет информацию повторно. После чего для запуска нашего сервера нам достаточно перезагрузить наш сервер.

Проверяем нашу «админскую» панель на работоспособность, заходя по адресу https://домен/iredadmin.

По итогу проведенных работ нами был поднят почтовый сервер с использованием средств iRedMail.

Using IPv4 Only

By default, Postfix uses both IPv4 and IPv6 protocols, as can been seen with:

postconf inet_protocols

Output:

inet_protocols = all

Postfix will try IPv6 first if the receiving SMTP server has an IPv6 address. If your mail server doesn’t have a public IPv6 address, it’s better to disable IPv6 in Postfix to prevent unnecessary IPv6 connections. Simply run the following command to disable IPv6 in Postfix.

sudo postconf -e "inet_protocols = ipv4"

You can also make Postfix use IPv4 first with the following command.

sudo postconf -e "smtp_address_preference = ipv4"

Then restart Postfix for the changes to take effect.

sudo systemctl restart postfix

Команды

Проверка синтаксиса postfix -c ПУТЬ_К_ФАЙЛУ_НАСТРОЕК_main.cf check
Состояние очереди postqueue -c ПУТЬ_К_ФАЙЛУ_НАСТРОЕК_main.cf -p
Обработка очереди немедленно postqueue -c ПУТЬ_К_ФАЙЛУ_НАСТРОЕК_main.cf -f
Очистка очереди postsuper -c ПУТЬ_К_ФАЙЛУ_НАСТРОЕК_main.cf -d ALL
Тест адресации postmap -q [email protected] ldap:/etc/postfix/ldap-users.cf

Работа с несколькими экземплярами

При решении некоторых задач можно воспользоваться возможностью работы с несколькими экземплярами (instance) сервера.

Для работы нужно добавить такие строки:/etc/postfix/main.cf

multi_instance_enable = yes
multi_instance_wrapper = ${command_directory}/postmulti -p -g ИМЯ_ГРУППЫ reload
multi_instance_directories = /etc/postfix-mx /etc/postfix-1 /etc/postfix-n

1
2
3

multi_instance_enable=yes

multi_instance_wrapper=${command_directory}postmulti-p-gИМЯ_ГРУППЫreload

multi_instance_directories=etcpostfix-mxetcpostfix-1etcpostfix-n

в переменной 
multi_instance_directories указывается экземпляры программы, в примере использованы следующие:

  • etcpostfix-mx
  • etcpostfix-1
  • etcpostfix-n

Для того, чтобы при запуске/останове и перезапуске Postfix и по команде

service postfix …

1 service postfix…

нужно параметре 
multi_instance_wrapper нужно указать имя группы (
ИМЯ_ГРУППЫ) в куда входя нужные экземпляров программы.

Также для того, чтобы разрешить работу с несколькими экземплярами можно использовать команду

postmulti -e init

1 postmulti-einit

Для управления служит программа 
postmulti.

Примеры:

Создание postmulti -I ИМЯ_ЭКЗЕМПЛЯРА -G ИМЯ_ГРУППЫ -e create
Активация postmulti -i ИМЯ_ЭКЗЕМПЛЯРА -e enable
Управление экземпляром postmulti -i ИМЯ_ЭКЗЕМПЛЯРА -p КОМАНДА

Безопасность

mynetworks список подсетей с которых разрешена отправка через этот сервер
disable_vrfy_command=yes Клиент, подключившийся к серверу, может командой 
vrfy [email protected] определить, существует ли заданный адрес в системе
show_user_unknown_table_name=no При попытке клиента отправить письмо несуществующему пользователю по умолчанию сервер выдаст 
550(reject) с сообщением 
user unknown inlocal recipient table (или другой таблице). Отключаем, пусть сервер сообщает 
user unknown
smtpd_helo_required=yes Требуем от клиента приветствия (HELO/EHLO). Все, кто подключается, должны представляться
smtpd_helo_restrictions= permit_mynetworks, permit_sasl_authenticated, reject_invalid_hostname, reject_non_fqdn_hostname, reject_invalid_helo_hostname, reject_unknown_helo_hostname Ограничения для этапа 
HELOEHLO. Применяются к имени хоста, его IP-адресу и приветствию 
HELOEHLO:Разрешаем доверенные сетиРазрешаем тем, кто прошёл аутентификациюОтбрасываем неправильное (несуществующее) имя хостаОтбрасываем не полностью определённое доменное имя хостаОтбрасываем, если хост по HELO/EHLO не имеет А или МХ записи
smtpd_sender_restrictions= reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unlisted_sender, permit_mynetworks, permit_sasl_authenticated Ограничения для этапа MAIL FROM. Применяется ко всему предыдущему + имя отправителя:Отбрасываем не полностью определённое имя отправителяОтбрасываем отправителя с несуществующего доменаОтбрасываем несуществующих отправителейПроверяем отправителя. Если с нашего домена, то проверим, находится ли он в доверенной сети или прошёл аутентификациюРазрешаем отправлять с доверенных сетейРазрешаем отправлять прошедшим аутентификацию
smtpd_recipient_restrictions= reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unlisted_recipient, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination reject_invalid_hostname Ограничения для этапа RCPT TO. Применяется к предыдущему + имя получателя:reject, если получатель отсутствует в списке нашего домена или списке пересылки. Чтобы сервер не стал открытым 
relay
smtpd_data_restrictions= reject_unauth_pipelining, reject_multi_recipient_bounce Ограничения для этапа DATA:Отвергаем запрос, когда клиент посылает команды SMTP раньше времениreject клиента с пустым именем отправителя, который отправляет сразу нескольким получателям
smtpd_etrn_restrictions= permit_mynetworks, permit_sasl_authenticated, reject Ограничиваем клиентов, которые могут запрашивать очистку очереди сообщений

Step 9: Genereate a Custom SELinux Policy for the Web Server

During installation, PostfixAdmin needs to read the Dovecot configuration files in order to create password. By default, SELinux doesn’t allow the web server to read Dovecot configuration files. We need to create a custom SELinux policy to allow this action.

Install required packages.

sudo dnf install binutils rpm-build setools-console policycoreutils-python3 policycoreutils-devel

Generate a custom policy for httpd. (If you use Nginx, replace with .)

sudo sepolicy generate --init /usr/sbin/httpd

Edit the type enforcement file.

sudo nano httpd.te

Add the following line at the end of this file, so Apache/Nginx will be able to read Dovecot configuration files.

dovecot_read_config(httpd_t)

Save and close the file. Then install the new SELinux policy.

sudo ./httpd.sh

Now Apache/Nginx should be able to read Dovecot configuration files.

If you don’t know what to add to the file, run the following command after a SELinux denial happens.

sudo ausearch -m AVC -ts recent | audit2allow -R

will suggest changes.

Установка и настройка fail2ban

Установка fail2ban на любом дистрибутиве не представляет никаких сложностей, так как продукт популярный и присутствует почти во всех репозиториях. Ставим через пакетный менеджер в Centos 7,8. У вас должен быть подключен .

# yum install fail2ban
# dnf install fail2ban

В Ubuntu / Debian fail2ban ставится из базовых репозиториев.

# apt install fail2ban

В Centos по умолчанию используется firewalld для управления правилами фаервола. Чтобы изменить это и перейти на iptables, достаточно удалить файл 00-firewalld.conf.

# rm /etc/fail2ban/jail.d/00-firewalld.conf

Дальше нас будет интересовать конфигурационный файл jail.conf. По умолчанию в нем очень много параметров и комментариев. Мне не удобно работать с таким огромным файлом. Большая часть информации оттуда мне не нужна. Я привел его к такому виду.

before = paths-fedora.conf


ignoreip = 127.0.0.1/8  10.1.3.29/32
bantime  = 30m
findtime  = 30m
maxretry = 5
backend = auto
usedns = warn
logencoding = auto
enabled = false
mode = normal

Я выделил ip адрес zabbix сервера, на котором настроен мониторинг работы почтового сервера и мониторинг tls сертификатов. Если его не добавить в исключения, то он будет забанен, так как регулярно подключается к почтовому серверу, но не проходит авторизацию. Ему это не нужно для работы.

Когда будете редактировать, не забудьте на всякий случай сохранить оригинал конфига. Базовая настройка fail2ban закончена. Все остальное я оставил дефолтное. Переходим к настройке правил блокировки.

Восстановление из резервных копий

Перед началом восстановления, переносим резервные копии на новый сервер.

Восстановление баз данных

Нам необходимо восстановить несколько баз — содержимое /var/vmail/backup/mysql/. В моем случае было:

  • amavisd
  • iredadmin
  • iredapd
  • mysql
  • roundcubemail
  • vmail

Если мы переносим нашу почтовую систему на новый сервер, базу mysql восстанавливать не нужно.

 Архивы баз находятся в сжатом виде. Первым делом, распаковываем их:

bzip2 -d amavisd-*.sql.bz2

bzip2 -d iredadmin-*.sql.bz2

bzip2 -d iredapd-*.sql.bz2

bzip2 -d mysql-*.sql.bz2

bzip2 -d vmail-*.sql.bz2

* если система вернула ошибку и не распаковала архив, необходимо установить пакет bzip2.

Теперь можно восстановить базы:

mysql -v -u root -p amavisd < amavisd-*.sql

mysql -v -u root -p iredadmin < iredadmin-*.sql

mysql -v -u root -p iredapd < iredapd-*.sql

mysql -v -u root -p mysql < mysql-*.sql

* напомним еще раз, базу mysql восстанавливать не нужно, если мы перенесли почту на новый сервер. 

mysql -v -u root -p vmail < vmail-*.sql

Восстановление почты

Копируем данные в каталог /var/vmail/vmail1 (в случае, если мы не выбрали другой при установке).

Если мы создавали архив, то сначала распакуем его, например:

tar -xvf vmail.tar.gz

и переносим распакованное содержимое в каталог хранения почты (по умолчанию, /var/vmail/vmail1):

mv /tmp/var/vmail/vmail1/* /var/vmail/vmail1/

* в моем случае, распакованный архив находился в каталоге /tmp/var/vmail/vmail1; каталог для хранения почты — /var/vmail/vmail1.

Восстановление LDAP

На новом сервере заходим в каталог с дистрибутивом, который использовался для установки iRedMail. Открываем файл iRedMail.tips, например:

vi /tmp/iRedMail-0.9.8/iRedMail.tips

Находим пароли для учетных записей cn=vmail,dc=xx,dc=xx и cn=vmailadmin,dc=xx,dc=xx в строках:

OpenLDAP:
    …
    * LDAP bind dn (read-only): cn=vmail,dc=example,dc=com, password: rzeuzCPZN5dlHiyWEt9g6GWL5Jo6S9
    * LDAP admin dn (used for iRedAdmin): cn=vmailadmin,dc=example,dc=com, password: FQ6Pk3hCKxL1dKv047NM0aJPEGanOv

* в данном примере, записываем пароли rzeuzCPZN5dlHiyWEt9g6GWL5Jo6S9 и FQ6Pk3hCKxL1dKv047NM0aJPEGanOv.

Используя данные пароли и получаем на них хэш:

slappasswd -h ‘{ssha}’ -s ‘rzeuzCPZN5dlHiyWEt9g6GWL5Jo6S9’

slappasswd -h ‘{ssha}’ -s ‘FQ6Pk3hCKxL1dKv047NM0aJPEGanOv’

В ответ мы получаем что-то подобное:

{SSHA}3rs/fqNZpKaWytqaQVE8AKltriyd1BsW

{SSHA}20vytDcG0NsSE8twwI/ldWW1+YCIi+xW

Теперь распаковываем архив с ldap:

bzip2 -d /tmp/2019-02-09-03-00-01.ldif.bz2

* в данном примере мы распаковываем архив из каталога /tmp.

Открываем распакованный ldif файл:

vi /tmp/2019-02-09-03-00-01.ldif

Находим учетные записи cn=vmail и cn=vmailadmin и строки их паролей, например:

dn: cn=vmail,dc=iredmail,dc=org

userPassword:: e1NTSEF9dVFnWENnWWkrWDMzMmJSNVJlazN0YjR5NllBRW9tN3hnZ1VTa0E9PQ==

dn: cn=vmailadmin,dc=iredmail,dc=org
userPassword:: e1NTSEF9eFhsWjd6MHRlQzYxRFc5QklJSStFNXBZU0YyTHIwVnh2UTNIRWc9PQ==

… и меняем на такие строки:

dn: cn=vmail,dc=iredmail,dc=org

userPassword: {SSHA}3rs/fqNZpKaWytqaQVE8AKltriyd1BsW

dn: cn=vmailadmin,dc=iredmail,dc=org
userPassword: {SSHA}20vytDcG0NsSE8twwI/ldWW1+YCIi+xW

* обратите внимание, что, во-первых, мы заменили пароли на наши хеши. Во-вторых, после userPassword мы убрали один знак двоеточия

Останавливаем службу для ldap:

systemctl stop slapd

Переходим в каталог хранения данных ldap:

cd /var/lib/ldap/<домен>/

Если в нем есть файл DB_CONFIG, переносим его, остальное удаляем:

mv DB_CONFIG /tmp

rm -rf ./*

После возвращаем DB_CONFIG:

mv /tmp/DB_CONFIG ./

Снова запускаем сервис ldap:

systemctl start slapd

В каталоге с данными для ldap появятся файлы. Снова останавливаем сервис slapd:

systemctl stop slapd

Теперь восстанавливаем данные:

slapadd -f /etc/openldap/slapd.conf -l /tmp/2019-02-09-03-00-01.ldif

Запускаем ldap и проверяем, что он запустился:

systemctl start slapd

systemctl status slapd

Восстановление конфигов

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

  1. /var/www/roundcubemail/config/config.inc.php
    где путь /var/www может быть другим. Конфиг для roundcube.
  2. /etc/postfix/mysql*.cf
    настройки postfix.
  3. Содержимое /etc/dovecot/conf.d, файлы /etc/dovecot/dovecot-mysql.conf и /etc/dovecot/dovecot.conf.
    настройки dovecot.
  4. Содержимое /var/lib/dkim
    сертификаты для подписи DKIM.

Setting Up MySQL to Send Email with Postfix and Dovecot

Create a MySQL Database for Your Postfix Email Server

Follow the steps below to create the database and add tables for virtual users, domains and aliases:

  1. Use the
    mysql_secure_installation tool to configure additional security options. This tool will ask if you want to set a new password for the MySQL root user, but you can skip that step:

    Answer Y at the following prompts:

    • Remove anonymous users?
    • Disallow root login remotely?
    • Remove test database and access to it?
    • Reload privilege tables now?
  2. Log in to MySQL as a root user:

  3. Create a new database:

  4. Create the MySQL user and grant the new user permissions over the database. Replace with a secure password for mailuser:

  5. Run to reload the MySQL database and apply the change:

  6. Switch to the new database:

Adding a Domain within MySQL

  1. Verify that you are still logged into the MySQL shell. If not, run to access MySQL.

  2. Add the domains to the table. Replace the values for and with your own settings:

  3. If needed, repeat this process to add another domain.

Adding an Email Address within MySQL

  1. If you are still logged in to MySQL, return to your main Linux shell by typing and hitting enter.

  2. The output will look similar to . Copy this output, ignoring the first 14 characters of {SHA512-CRYPT}. Since the SHA512-CRYPT scheme was used, the password should start with $6$.

  3. Log back into MySQL as the root user:

Alternatively, the password hash can be generated directly within the MySQL INSERT statement above by replacing (deleting the single quote characters as well) with one of the following:

  • Using the
    function: , replacing with the plain text password desired for the email user. This function has been removed from MySQL 5.8 and above.
  • Using the
    function: , replacing with the plain text password desired for the email user. This function generates the hash in a slightly different scheme. When configuring the Dovecot MYSQL settings () in this guide, set to instead of .

Adding an Alias within MySQL

  1. Verify that you are still logged into the MySQL shell. If not, run to access MySQL.

  2. Verify the alias was added correctly by running a SELECT query on the table.

Test DKIM Key

Enter the following command on your CentOS 8/RHEL 8 server to test your key.

sudo opendkim-testkey -d your-domain.com -s 20200308 -vvv

If everything is OK, you will see the message.

opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: checking key '20200308._domainkey.linuxbabe.com'
opendkim-testkey: key OK

Note that your DKIM record may need sometime to propagate to the Internet. Depending on the domain registrar you use, your DNS record might be propagated instantly, or it might take up to 24 hours to propagate. You can go to https://www.dmarcanalyzer.com/dkim/dkim-check/, enter as the selector and enter your domain name to check DKIM record propagation.

If you see “Key not secure”, don’t panic. This is because DNSSEC isn’t enabled on your domain name. DNSSEC is a security standard for secure DNS query. Most domain names haven’t enabled DNSSEC. You can continue to follow this guide.

Now we can start the opendkim service.

sudo systemctl start opendkim

And enable auto-start at boot time.

sudo systemctl enable opendkim

OpenDKIM listens on .

Step 6: Create Apache Virtual Host or Nginx Config File for PostfixAdmin

Apache

If you use Apache web server, create a virtual host for PostfixAdmin.

sudo nano /etc/httpd/conf.d/postfixadmin.conf

Put the following text into the file. Replace with your real domain name and don’t forget to set DNS A record for it.

<VirtualHost *:80>
  ServerName postfixadmin.example.com
  DocumentRoot /var/www/postfixadmin/public/

  ErrorLog /var/log/httpd/postfixadmin_error.log
  CustomLog /var/log/httpd/postfixadmin_access.log combined

  <Directory />
    Options FollowSymLinks
    AllowOverride All
  </Directory>

  <Directory /var/www/postfixadmin/public/>
    Options FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
  </Directory>

</VirtualHost>

Save and close the file. Reload Apache for the changes to take effect.

sudo systemctl reload httpd

Now you should be able to see the PostfixAdmin web-based install wizard at .

Nginx

If you use Nginx web server, create a virtual host for PostfixAdmin.

sudo nano /etc/nginx/conf.d/postfixadmin.conf

Put the following text into the file. Replace with your real domain name and don’t forget to set DNS A record for it.

server {
   listen 80;
   listen :80;
   server_name postfixadmin.example.com;

   root /usr/share/nginx/postfixadmin/public/;
   index index.php index.html;

   access_log /var/log/nginx/postfixadmin_access.log;
   error_log /var/log/nginx/postfixadmin_error.log;

   location / {
       try_files $uri $uri/ /index.php;
   }

   location ~ ^/(.+\.php)$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
   }
}

Save and close the file. Then test Nginx configuration.

sudo nginx -t

If the test is successful, reload Nginx for the changes to take effect.

sudo systemctl reload nginx

Now you should be able to see the PostfixAdmin web-based install wizard at .

Obtaining TLS Certificate with Apache Web Server

You need to have an Apache virtual host for before obtaining Let’s Encrypt TLS certificate. Create the virtual host file:

sudo nano /etc/httpd/conf.d/mail.your-domain.com.conf

Then paste the following text into the file.

<VirtualHost *:80>        
        ServerName mail.your-domain.com

        DocumentRoot /var/www/html/
</VirtualHost>

Save and close the file. Reload Apache for the changes to take effect.

sudo systemctl reload httpd

Once virtual host is created and enabled, run the following command to obtain Let’s Encrypt TLS certificate.

sudo certbot certonly -a apache --agree-tos --staple-ocsp --email  -d mail.your-domain.com

After a while, you should see the following lines which means the certificate is successfully obtained. You can also see the directory under which your cert is stored.

Заключение

Я постарался рассказать подробно и понятно о полной настройке ELK Stack. Информацию в основном почерпнул в официальной документации. Мне не попалось более ли менее подробных статей ни в рунете, ни в буржунете, хотя искал я основательно. Вроде бы такой популярный и эффективный инструмент, но статей больше чем просто дефолтная установка я почти не видел. Буквально одна на хабре попалась с какой-то более ли менее кастомизацией.

Какие-то проверенные моменты я не стал описывать в статье, так как посчитал их неудобными и не стал использовать сам. Например, если отказаться от logstash и отправлять данные с beats напрямую в elasticsearch, то на первый взгляд все становится проще. Штатные модули beats сами парсят вывод, устанавливают готовые визуализации и дашборды в Kibana. Вам остается только зайти и любоваться красотой :) Но на деле все выходит не так красиво, как хотелось бы. Кастомизация конфигурации усложняется. Изменение полей в логах приводит к более сложным настройкам по вводу этих изменений в систему. Все настройки поступающей информации переносятся на каждый beats, изменяются в конфигах отдельных агентов. Это неудобно.

В то же время, при использовании logstash, вы просто отправляете данные со всех beats на него и уже в одном месте всем управляете, распределяете индексы, меняете поля и т.д. Все настройки перемещаются в одно место. Это более удобный подход. Плюс, при большой нагрузке вы можете вынести logstash на отдельную машину.

Я не рассмотрел в своей статье такие моменты как создание визуализаций и дашбордов в Кибана, так как материал уже и так получился объемный. Я устал писать эту статью :) Смотрите остальные мои материалы по данной теме. Там есть примеры.

Так же я не рассмотрел такой момент. Logstash может принимать данные напрямую через syslog. Вы можете, к примеру, в nginx настроить отправку логов в syslog, минуя файлы и beats. Это может быть более удобно, чем описанная мной схема. Особенно это актуально для сбора логов с различных сетевых устройств, на которые невозможно поставить агента, например mikrotik. Syslog поток так же можно парсить на ходу с помощью grok. Отдельно надо рассмотреть автоочистку старых индексов в elasticsearch.

Подводя итог скажу, что с этой системой хранения логов нужно очень вдумчиво и внимательно разбираться. С наскока ее не осилить. Чтобы было удобно пользоваться, нужно много всего настроить. Я описал только немного кастомизированный сбор данных, их визуализация — отдельный разговор. Сам я постоянно использую и изучаю систему, поэтому буду рад любым советам, замечаниям, интересным ссылкам и всему, что поможет освоить тему.

Все статьи раздела elk stack — https://serveradmin.ru/category/elk-stack/.

Онлайн курс «DevOps практики и инструменты»

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.

Проверьте себя на вступительном тесте и смотрите программу детальнее по .

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

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