Хочу сегодня наглядно показать, как можно очень быстро, буквально, за 30 минут, начать собирать и обрабатывать логи. Я расскажу, как зарегистрироваться в Elastic Cloud, развернуть там Elastic Stack и сразу начать собирать логи apache через filebeat. Для демонстрации возможностей будет использоваться триальный период в 14 дней. Этого вполне хватает, чтобы оценить сервис и понять, нужен он вам или нет.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Введение
У меня есть целый цикл статей про настройку и эксплуатацию ELK Stack для сбора логов с различных приложений. Так же я подробно рассказал, как установить и настроить ELK Stack себе, если у вас есть под него мощности и компетенции. В целом, там нет чего-то сильно сложного, но тем не менее, все равно необходимо повозиться, чтобы все заработало.
Не обязательно все это разворачивать и настраивать у себя, если хочется просто попробовать продукт, чтобы понять, нужен он вам или нет. Есть сервис - https://cloud.elastic.co, где можно за 2 минуты зарегистрировать и развернуть свой стэк на базе Elasticsearch и Kibana. Отличие от описанного мной способа разворачивания стека в том, что тут не будет Logstash. Во многих случаях можно обойтись без него, так что это не критично. Особенно для того, чтобы просто попробовать.
Итак, прежде чем приступить к настройке, зарегистрируйтесь в облаке и активируйте учетную запись.
Запуск Elastic Stack в Elastic Cloud
При первом входе в личный кабинет у вас будет возможность создать Deployment с Elasticsearch.
Дальше нужно выбрать платформу, где вы хотите произвести установку сервиса, и регион. Я для теста выбрал Google Cloud Platform во Frankfurt. Все остальное оставил по дефолту. Дальше внизу жмете Create Deployment и ждете, когда он развернется. Обычно 2-3 минуты.
Дожидаемся окончание процесса установки и переходим в Kibana.
Логинимся в Kibana с учетными данными, которые указаны в личном кабинете, в Deployment. Username обычно elastic и какой-то пароль. При первом входе вам предложат залить набор демо данных, чтобы посмотреть функционал системы. Если хотите - посмотрите. Я там и так все видел, поэтому отказываюсь :) Буду лить свои логи от apache.
После выбора оказываетесь на главной странице Kibana. По сути Elastic Stack вы уже развернули и он готов принимать данные. Вот так, быстро и просто все настроилось. И DevOps не нужен :)
Можете тут осмотреться и познакомиться с системой.
Сбор логов через Filebeat в Elasticsearch
В качестве примера возьму, как обычно, свой "любимый" bitrix. Так выходит, что работать с ним приходится довольно часто, так что использую его в своих статьях в качестве примера.
Итак, у нас развернут Bitrixenv для любого битрикс сайта. Система - Centos 7, логи будем собирать с веб сервера Apache. Для Nginx никакой разницы не будет, так как дефолтный формат логов у них один и тот же.
Нам необходимо установить на сервер filebeat и настроить его на отправку логов в наш кластер. Инструкция, как это сделать, есть в самой Kibana. Для этого идите на главную страницу и выберите Add log data.
Далее выбирайте Apache Logs и вкладку RPM.
Ниже будет подробная инструкция о том, как настроить отправку логов через filebeat в Elastic. Идем на сервер и ставим filebeat.
# curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.6.2-x86_64.rpm # rpm -vi filebeat-7.6.2-x86_64.rpm
Открываем конфигурационный файл /etc/filebeat/filebeat.yml и указываем реквизиты доступа, как они показаны в Kibana.
cloud.id: ":ZXVyb3BlLXdlc3QzLmdjcC5jbG91ZC5lcy5pbyRiNLPeRmNlODBkNzY0OTYxODk3YWVmZGZlNmI1ZWVjYyQ0NjdjOTQzNGJlYjk0YTk1YjBmYTQ5ZWQ4NTdkMzYzMA==" cloud.auth: "elastic:5344qwZjFyM9Q23THCuMxcSm"
Активируем модуль для apache.
# filebeat modules enable apache
Если у вас логи располагаются в дефолтном месте - /var/log/httpd/access_log и error_log, то больше ничего делать не надо. Если где-то в другом месте или с другими именами, то укажите до них путь в конфиге /etc/filebeat/modules.d/apache.yml примерно так:
- module: apache access: enabled: true var.paths: ["/path/to/log/apache/access.log*"] error: enabled: true var.paths: ["/path/to/log/apache/error.log*"]
Теперь загружаем дефолтные дашборды в кибану следующей командой.
# filebeat setup
И запускаем filebeat.
# systemctl enable --now filebeat
Идем в Kibana в раздел Discovery и наблюдаем там свои логи. У вас должен был появиться индекс filebeat-*.
Можете настроить список полей, которые вас интересуют в первую очередь, чтобы получить более наглядное представление.
Вы можете использовать поиск для группировки запросов по каким-то признакам, сохраненных в полях, на которые распарсен ваш лог. У вас уже есть готовый dashboard для логов apache. Идем в раздел Dashboard, через поиск находим дашборд для apache и смотрим его.
У меня тестовый сайт на локалхосте, поэтому дашборд неинформативен. Если прогнать через него реальный сайт, можно получить полезные данные. Пример самостоятельной сборки dashboard в Kibana под свои потребности описан у меня в статьях - Dashboard для логов Nginx и Мониторинг производительности бэкенда.
Заключение
Вот и все. Мы очень быстро и просто настроил сбор логов в Elastic Stack, используя триальный период в 14 дней. Этого будет достаточно, чтобы протестировать продукт и понять, нужен ли он вам. Далее вы можете либо выбрать платный тарифный план в облаке, либо собрать все на своих мощностях.
В стандартном деплойменте, который вы развернули для теста, используется кластер. Данные хранятся в двух различных сегментах облака, в третьем расположен мастер. И еще по виртуалке под Kibana и APM (мониторинг приложений). Если вам нужны только логи и нет необходимости настраивать отказоустойчивость, достаточно будет только виртуалки с Kibana и Elasticsearch. Собрать свой Deployment под задачи можно в самом начале, там, где мы выбирали готовый. При своей сборке сразу же будет видна ее стоимость в час. В целом, все удоволствие начинается от 16$ в месяц.
В следующем материале расскажу, как вывести id сессии посетителя Битрикс в лог файл и затем с помощью Kibana следить за его перемещениями по сайту.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Здравствуйте, а как собирать логи, на которых не хватает прав на чтение? Например доступ есть только у сервиса, даже админ без рута не может читать.
Очевидно, что никак. Надо дать права на чтение. Либо запускать сбор логов от пользователя сервиса.