Наблюдение за сетевым трафиком облака с помощью логов

Материал из Документация Ключ-АСТРОМ
Версия от 18:57, 13 октября 2026; IKuznetsov (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Наблюдение за сетевым трафиком облака с помощью логов

В современном сложном цифровом ландшафте поддержание видимости и понимание поведения системы важны для эффективной работы. Логи дают детальное представление о системных событиях и ошибках. Однако извлечение действенных выводов из огромных объёмов данных логов может быть сложной задачей без правильных инструментов и методологий. Дашборды можно создавать с помощью запросов DQL, которые могут обрабатывать любой тип данных, хранящихся в хранилище данных.

Введение

Это руководство описывает подход к использованию Ключ-АСТРОМ для наблюдения за вашей облачной сетью для выявления входящего трафика HTTP(S) в вашу виртуальную частную сеть (VPC). Логи содержат важную информацию для наблюдаемости. Они фиксируют различные события, действия и ошибки, возникающие во время работы системы. Вы можете использовать либо запросы логов DQL, либо метрики для создания дашбордов, которые дают ценную информацию о любых возникающих ошибках, их частоте, длительности и влиянии.

Целевая аудитория

Эта статья предназначена для инженеров по надёжности (SRE), которые отвечают за мониторинг сетевой активности для обнаружения входящего трафика HTTP(S), направленного в виртуальную частную сеть (VPC).

Сценарий

Вы хотите мониторить и анализировать входящий трафик HTTP(S) в вашу виртуальную частную сеть (VPC). Для этого необходимо использовать логи потоков VPC — функцию, которая собирает информацию об IP-трафике, поступающем и исходящем через сетевые интерфейсы в вашей VPC.

Предварительные требования

Убедитесь, что все перечисленные условия выполнены, прежде чем начать:

  • Настройте логирование IP-трафика с помощью логов потоков VPC.
  • Отправьте логи в Ключ-АСТРОМ. Вы можете выбрать один из следующих вариантов интеграции для потоковой передачи логов:
    • API загрузки логов
    • Пересылка облачных логов
    • ЕдиныйАгент
  • Убедитесь, что включены следующие разрешения:
    • storage:logs:read. Инструкции см. в разделе Настройка разрешений для логов.
  • У вас должны быть необходимые разрешения для настройки и доступа к инструментам мониторинга в Ключ-АСТРОМ.
  • У вас должны быть разрешения на загрузку данных логов в Ключ-АСТРОМ.

Шаги

Когда ваши логи уже находятся в Ключ-АСТРОМ, выполните следующие шаги:

  • Откройте приложение Дашборды.
  • Нажмите кнопку + и создайте новый раздел Запрос к хранилищу данных.
  • Введите приведённый ниже запрос DQL в поле Запрос и нажмите Запустить, чтобы отобразить результаты.
fetch logs
| filter matchesValue(cloud.log_group, "*vpc*") and matchesValue(cloud.log_group, "*flow-logs*")
| filterOut matchesValue(content, "*SKIPDATA*")
| filterOut matchesValue(content, "*NODATA*")
| parse content, "STRING:account_id SPACE STRING:action SPACE STRING:az_id SPACE INT:bytes SPACE IPV4:dstaddr SPACE INT:dstport SPACE STRING:end SPACE STRING:flow_direction SPACE STRING:instance_id SPACE STRING:interface_id SPACE STRING:log_status SPACE INT:packets SPACE STRING:pkt_dst_service SPACE IPADDR:pkt_dstaddr SPACE STRING:pkt_src_service SPACE IPV4:pkt_srcaddr SPACE INT:protocol SPACE STRING:region SPACE IPV4:srcaddr SPACE INT:srcport SPACE STRING:start SPACE STRING:sublocation_id SPACE STRING:sublocation_type SPACE STRING:subnet_id SPACE INT:tcp_flags SPACE STRING:traffic_path SPACE STRING:type SPACE STRING:version SPACE STRING:vpc_id"
| filter isNotNull(vpc_id)
| filter flow_direction=="egress"
| filter srcport == 80 or srcport == 443
| summarize bytes_sum=sum(bytes), by: vpc_id

Результат запроса

vpc_id bytes_sum
vpc-03d503e892fa5ca6c 175.45
vpc-03e6789b7b1ca80e7 55.10
vpc-04a3112f5612b0e8f 108.34
vpc-95a855f0 313.22
  • Настройте единицы измерения, в которых должны отображаться результаты. Перейдите в Визуализировать > Единицы измерения и форматы. Выберите Переопределить и задайте Единицу измерения, например Kilobyte (kB).

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

Создайте правило обработки для извлечения необходимых атрибутов

  • Перейдите в Настройки > Мониторинг логов > Обработка и для настройки метрики в Настройки > Мониторинг логов > Извлечение метрик.
  • Создайте сопоставление для обработки логов. Определите поля Метка, Имя и ID. Сопоставление в этом примере: matchesValue(cloud.log_group, "*flow-logs*") AND matchesValue(cloud.log_group, "*vpc*").
  • Создайте определение процессора. Если входящая строка лога совпадает с сопоставлением, выполняется преобразование, определённое в процессоре. В поле Определение процессора введите следующий пример правила:
PARSE(content, "STRING:account_id SPACE STRING:action SPACE STRING:az_id SPACE INT:bytes SPACE IPV4:dstaddr SPACE INT:dstport SPACE STRING:end SPACE STRING:flow_direction SPACE STRING:instance_id SPACE STRING:interface_id SPACE STRING:log_status SPACE INT:packets SPACE STRING:pkt_dst_service SPACE IPADDR:pkt_dstaddr SPACE STRING:pkt_src_service SPACE IPV4:pkt_srcaddr SPACE INT:protocol SPACE STRING:region SPACE IPV4:srcaddr SPACE INT:srcport SPACE STRING:start SPACE STRING:sublocation_id SPACE STRING:sublocation_type SPACE STRING:subnet_id SPACE INT:tcp_flags SPACE STRING:traffic_path SPACE STRING:type SPACE STRING:version SPACE STRING:vpc_id")
| FIELDS_ADD(log.type:("cloud.vpc"), srcaddr_orig:srcaddr, dstaddr_orig:dstaddr)
| FIELDS_ADD(dstaddr : IF(flow_direction=="egress" AND pkt_dst_service=="-" AND NOT (IP_TRUNC(dstaddr,8)==IPADDR("10.0.0.0") OR IP_TRUNC(dstaddr,12)==IPADDR("172.16.0.0") OR IP_TRUNC(dstaddr,16)==IPADDR("192.168.0.0")), IPADDR("0.0.0.0") , dstaddr), srcaddr : IF(flow_direction=="ingress" AND pkt_src_service=="-" AND NOT (IP_TRUNC(srcaddr,8)==IPADDR("10.0.0.0") OR IP_TRUNC(srcaddr,12)==IPADDR("172.16.0.0") OR IP_TRUNC(srcaddr,16)==IPADDR("192.168.0.0")), IPADDR("0.0.0.0"), srcaddr))
  • Протестируйте правило. В разделе Тестирование правила введите образец лога в соответствии с примером ниже.
{"event.type": "LOG","content":"469103632743 REJECT use1-az2 44 10.128.28.180 27779 1689064141 ingress i-04bb973d2eed6b020 eni-0de8f47fff9b3a6e4 OK 1 - 10.128.28.180 - 35.203.210.29 6 us-east-1 35.203.210.29 50134 1689064083 - - subnet-0f2348e654d860382 2 - IPv4 5 vpc-03d503e892fa5ca6c","status": "INFO","timestamp": "1669634833000","cloud.account.id": "908047316593","cloud.log_group": "vpc-flow-logs","cloud.log_stream": "eni-0e05139020bdc4ebd-all","cloud.region": "us-east-1","cloud.provider": "cloud","loglevel": "INFO","cloud.log_forwarder": "908047316593:us-east-1:cloud-flow-logs-lambda"}
  • Выберите Тестировать правило и просмотрите результат.
{"srcaddr": "0.0.0.0","dstport": "27779","vpc_id": "vpc-03d503e892fa5ca6c","pkt_srcaddr": "35.203.210.29","dstaddr": "10.128.28.180","type": "IPv4","pkt_dst_service": "-","content": "469103632743 REJECT use1-az2 44 10.128.28.180 27779 1689064141 ingress i-04bb973d2eed6b020 eni-0de8f47fff9b3a6e4 OK 1 - 10.128.28.180 - 35.203.210.29 6 us-east-1 35.203.210.29 50134 1689064083 - - subnet-0f2348e654d860382 2 - IPv4 5 vpc-03d503e892fa5ca6c","packets": "1","protocol": "6","cloud.log_forwarder": "908047316593:us-east-1:cloud-flow-logs-lambda","traffic_path": "-","tcp_flags": "2","sublocation_id": "-","pkt_src_service": "-","dstaddr_orig": "10.128.28.180","action": "REJECT","end": "1689064141","cloud.log_group": "vpc-flow-logs","sublocation_type": "-","timestamp": "2022-11-28T11:27:13.000000000Z","pkt_dstaddr": "10.128.28.180","cloud.region": "us-east-1","start": "1689064083","version": "5","az_id": "use1-az2","log.type": "cloud.vpc","cloud.log_stream": "eni-0e05139020bdc4ebd-all","cloud.provider": "cloud","instance_id": "i-04bb973d2eed6b020","account_id": "469103632743","log_status": "OK","interface_id": "eni-0de8f47fff9b3a6e4","cloud.region": "us-east-1","flow_direction": "ingress","cloud.account.id": "908047316593","bytes": "44","loglevel": "INFO","event.type": "LOG","cloud.account.id": "908047316593","subnet_id": "subnet-0f2348e654d860382","srcport": "50134","region": "us-east-1","srcaddr_orig": "35.203.210.29","status": "INFO"}

Настройте метрику

  • Перейдите в Настройки > Мониторинг логов > Извлечение метрик.
  • Введите Ключ метрики, Сопоставление и установите Измерение метрики как Значение атрибута, а Атрибут как bytes.
  • Установите Измерение как vpc_id. Чтобы увидеть результаты, изучите метрики на дашборде Запрос к хранилищу данных. Отфильтруйте по Ключу метрики, установите Агрегацию как sum, По vpc_id и Преобразовать в значение как sum.

Выберите Запустить и выберите, как вы хотите отобразить результаты на вкладке Визуализировать. Вы также можете просмотреть результаты за определённый временной диапазон.

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

Заключение

Закрепление запросов логов на дашбордах даёт значительные преимущества и может идеально соответствовать вашим конкретным вариантам использования, особенно когда вас интересует список отдельных записей. Вместо повторного выполнения одного и того же запроса вы можете зафиксировать его результаты и отобразить их на дашборде для удобства обращения и мониторинга. В ситуациях, когда вы полагаетесь на агрегаты (используя команду summarize или makeTimeseries в вашем запросе DQL), вам следует рассмотреть использование метрик логов для оптимизации дашбордов с точки зрения производительности.

Дополнительная литература

  • Стратегии дашбордов логов
  • Обработка логов, если вам нужно извлечь дополнительные атрибуты из логов.
  • Замените команду PARSE в вашем запросе на правило обработки логов.
  • Использование метрик логов для оповещения.