Поиск по сайту:

Как анализировать журналы CloudWatch с помощью сервиса AWS Elasticsearch


Elasticsearch — поисковая система с открытым исходным кодом. Он обычно используется в сочетании с агрегацией журналов, чтобы упростить анализ журналов сервера. AWS предлагает его как управляемый сервис вместе с Kibana, панелью визуализации для Elasticsearch.

Зачем возиться с лог-файлами?

В Linux все регистрируется. Системные действия регистрируются в /var/log/syslog, и большинство приложений создают файлы журналов. В частности, веб-серверы создают записи в журнале для каждого запроса, что делает анализ журналов очень мощным инструментом. Nginx регистрирует кучу информации для каждого запроса, включая:

  • IP-адрес подключающегося пользователя.
  • Имя пользователя, если используется обычная аутентификация (в большинстве случаев пустое)
  • Время запроса
  • Сам запрос (например, «GET /index.php?url=abc»)
  • Возвращен код состояния
  • Количество отправленных байтов, исключая заголовки HTTP (полезно для отслеживания фактического размера трафика)
  • Реферер HTTP (то есть сайт, с которого пришел пользователь)
  • Пользовательский агент браузера пользователя

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

Это практически невозможно сделать вручную, особенно если у вас много веб-серверов. Elasticsearch (ES) решает эту проблему, позволяя выполнять сложные запросы к агрегированным файлам журналов. Kibana – это инструментальная панель визуализации, которая служит интерфейсом для ES. AWS предоставляет обе эти возможности в виде одного управляемого сервиса с сервисом AWS Elasticsearch.

Вы должны заплатить за сервер, на котором работает Elasticsearch, хотя с вас взимается небольшая надбавка по сравнению со стандартными тарифами EC2. Если вы просто время от времени проводите анализ, вам не нужно постоянно запускать этот сервер. Однако, если вы используете его постоянно, вы можете приобрести зарезервированные экземпляры, чтобы снизить цену.

Чтобы все это заработало, вам нужно перенести файлы журналов из инстанса EC2 в CloudWatch. AWS упрощает это с помощью агента журналов CloudWatch — вам следует прочитать наше руководство по его настройке, прежде чем приступать к работе с Elasticsearch.

Если вы просто запускаете один или два веб-сервера, вам, вероятно, не нужен весь сервис только для просмотра ваших журналов. CloudWatch Logs сам по себе имеет отличные встроенные инструменты поиска на вкладке Insights и может выполнять некоторые простые визуализации.

Но если у вас есть множество серверов и много данных для анализа, вы можете воспользоваться Elasticsearch и Kibana.

Начало работы с AWS Elasticsearch

Перейдите в консоль Elasticsearch и создайте новый домен. Домен ES — это кластер серверов, которые работают как одна поисковая система. Настройка довольно проста; дайте ему имя и укажите, какой экземпляр вы хотите запустить. По умолчанию используется r5.large, но вам, вероятно, следует сначала настроить экземпляр t2.small, чтобы попробовать его.

Укажите размер диска, достаточный для хранения ваших журналов (по умолчанию 10 ГБ), и нажмите «Создать». Инициализация новых доменов занимает около 10 минут, так что возьмите чашку кофе и вернитесь через некоторое время.

После настройки перейдите в консоль CloudWatch и выберите свою группу журналов. Под кнопкой действий выберите «Stream to Amazon Elasticsearch Service»:

Выберите домен ES, который вы только что настроили, а затем создайте новую роль IAM для функции Lambda, которая выполняет потоковую передачу. Политика должна быть предварительно настроена, но если это не так, ей нужен доступ к Elasticsearch:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "es:*"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:es:region:account-id:domain/target-domain-name/*"
        }
    ]
}

Нажмите «Далее», и вам будет предложено указать формат. Вы можете ввести здесь собственный формат или выбрать «Общий формат журнала», который используется по умолчанию для большинства журналов веб-сервера.

Щелкните настройку и запустите потоковую передачу журнала. Вы должны увидеть, что журналы загружаются в течение нескольких секунд.

Перейдите к своему экземпляру Kibana (URL-адрес конечной точки находится на панели информации о домене) и создайте начальный индекс. Появится вся новая информация журнала, передаваемая в кластер Elasticsearch, которую вы можете просмотреть в своих журналах на вкладке «Обнаружение».

Отсюда все настроено, и вы можете использовать Kibana по своему усмотрению. На вкладке «Визуализация» можно найти параметры для создания и настройки графиков, которые вы можете организовать в виде информационных панелей.

Вы можете отслеживать общее состояние вашего домена Elasticsearch на информационной панели:

Elasticsearch и Kibana потребляют довольно много вычислительной мощности, особенно при работе с огромными наборами данных и сложными запросами. Сам ES можно настроить для регистрации собственных запросов в CloudWatch на вкладке «Журналы», что полезно для просмотра того, какие запросы занимают больше всего времени для обработки (и нужен ли вам более крупный экземпляр).