Наблюдение за сетевым трафиком облака с помощью логов
Наблюдение за сетевым трафиком облака с помощью логов
В современном сложном цифровом ландшафте поддержание видимости и понимание поведения системы важны для эффективной работы. Логи дают детальное представление о системных событиях и ошибках. Однако извлечение действенных выводов из огромных объёмов данных логов может быть сложной задачей без правильных инструментов и методологий. Дашборды можно создавать с помощью запросов 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в вашем запросе на правило обработки логов. - Использование метрик логов для оповещения.