Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
30 сентября 2027 г. журналы потоков группы безопасности сети (NSG) будут сняты с использования. В рамках этого вывода из эксплуатации вы больше не сможете создавать новые журналы потоков NSG начиная с 30 июня 2025 года. Мы рекомендуем перейти на использованиежурналов потоков виртуальной сети, которые устраняют ограничения журналов потоков NSG. После даты прекращения поддержки аналитика трафика, использующая журналы потоков NSG, больше не будет поддерживаться, а существующие ресурсы журналов потоков NSG в подписках будут удалены. Однако записи журналов потоков NSG не будут удалены и будут продолжать следовать соответствующим политикам хранения. Дополнительные сведения см. в официальном объявлении.
Журналы потоков для групп безопасности сети (NSG) содержат сведения, которые могут быть полезны для анализа входящего и исходящего IP-трафика в сетевых интерфейсах. Эти журналы потоков отображают входящие и исходящие потоки на основе правил NSG, сетевого интерфейса, к которому относится поток, 5-кортежной информации о потоке (исходный/целевой IP-адрес, исходный/целевой порт, протокол), а также сведения о том, был ли трафик разрешен или отклонен.
Можно иметь множество групп безопасности сети в вашей сети с включенным ведением журналов потоков. Такой объем регистрируемых данных усложняет синтаксический анализ и получение аналитических сведений из журналов. В этой статье представлено решение для централизованного управления этими журналами потоков NSG с помощью Grafana, средства графирования с открытым исходным кодом, Elasticsearch, распределённой поисковой и аналитической системы, и Logstash, который является серверным конвейером обработки данных с открытым исходным кодом.
Сценарий
Журналы потоков для NSG можно включить с помощью Сетевого обозревателя и сохранять их в хранилище Blob Azure. Плагин Logstash используется для подключения и обработки журналов потоков из облачного хранилища и отправки их в Elasticsearch. После хранения журналов потоков в Elasticsearch их можно проанализировать и визуализировать на настраиваемых панелях мониторинга в Grafana.
Этапы установки
Включение ведения журнала потоков для групп безопасности сети
В рамках данного сценария вам необходимо включить ведение журнала потоков по меньшей мере для одной группы безопасности сети в своей учетной записи. Инструкции по включению журналов потоков для групп безопасности сети представлены в статье Общие сведения о ведении журнала потоков для групп безопасности сети.
Рекомендации по настройке
В этом примере Grafana, Elasticsearch и Logstash настроены на сервере Ubuntu LTS, развернутом в Azure. Эта минимальная настройка используется для запуска всех трех компонентов— они работают на одной виртуальной машине. Такая конфигурация актуальна только для тестовых и некритических рабочих нагрузок. Можно разработать Logstash, Elasticsearch и Grafana для независимого масштабирования в нескольких экземплярах. Чтобы получить дополнительные сведения, мы рекомендуем ознакомиться с руководством для каждого из этих компонентов.
Установка Logstash
Вы используете Logstash для сглаживания логов трафика, отформатированных в JSON, до уровня кортежа потока.
Следующие инструкции используются для установки Logstash в Ubuntu. Инструкции по установке этого пакета в Red Hat Enterprise Linux см. в разделе "Установка из репозиториев пакетов " yum".
Введите следующие команды, чтобы установить Logstash.
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb sudo dpkg -i logstash-5.2.0.debНастройте Logstash, чтобы проанализировать журналы потоков и отправить их в Elasticsearch. Создайте файл logstash.conf следующим образом:
sudo touch /etc/logstash/conf.d/logstash.confДобавьте в файл следующее содержимое. Измените имя учетной записи хранения и ключ доступа, чтобы они соответствовали деталям вашей учетной записи хранения.
input { azureblob { storage_account_name => "mystorageaccount" storage_access_key => "VGhpcyBpcyBhIGZha2Uga2V5Lg==" container => "insights-logs-networksecuritygroupflowevent" codec => "json" # Refer https://learn.microsoft.com/azure/network-watcher/network-watcher-read-nsg-flow-logs # Typical numbers could be 21/9 or 12/2 depends on the nsg log file types file_head_bytes => 12 file_tail_bytes => 2 # Enable / tweak these settings when event is too big for codec to handle. # break_json_down_policy => "with_head_tail" # break_json_batch_count => 2 } } filter { split { field => "[records]" } split { field => "[records][properties][flows]"} split { field => "[records][properties][flows][flows]"} split { field => "[records][properties][flows][flows][flowTuples]"} mutate { split => { "[records][resourceId]" => "/"} add_field => { "Subscription" => "%{[records][resourceId][2]}" "ResourceGroup" => "%{[records][resourceId][4]}" "NetworkSecurityGroup" => "%{[records][resourceId][8]}" } convert => {"Subscription" => "string"} convert => {"ResourceGroup" => "string"} convert => {"NetworkSecurityGroup" => "string"} split => { "[records][properties][flows][flows][flowTuples]" => "," } add_field => { "unixtimestamp" => "%{[records][properties][flows][flows][flowTuples][0]}" "srcIp" => "%{[records][properties][flows][flows][flowTuples][1]}" "destIp" => "%{[records][properties][flows][flows][flowTuples][2]}" "srcPort" => "%{[records][properties][flows][flows][flowTuples][3]}" "destPort" => "%{[records][properties][flows][flows][flowTuples][4]}" "protocol" => "%{[records][properties][flows][flows][flowTuples][5]}" "trafficflow" => "%{[records][properties][flows][flows][flowTuples][6]}" "traffic" => "%{[records][properties][flows][flows][flowTuples][7]}" "flowstate" => "%{[records][properties][flows][flows][flowTuples][8]}" "packetsSourceToDest" => "%{[records][properties][flows][flows][flowTuples][9]}" "bytesSentSourceToDest" => "%{[records][properties][flows][flows][flowTuples][10]}" "packetsDestToSource" => "%{[records][properties][flows][flows][flowTuples][11]}" "bytesSentDestToSource" => "%{[records][properties][flows][flows][flowTuples][12]}" } add_field => { "time" => "%{[records][time]}" "systemId" => "%{[records][systemId]}" "category" => "%{[records][category]}" "resourceId" => "%{[records][resourceId]}" "operationName" => "%{[records][operationName]}" "Version" => "%{[records][properties][Version]}" "rule" => "%{[records][properties][flows][rule]}" "mac" => "%{[records][properties][flows][flows][mac]}" } convert => {"unixtimestamp" => "integer"} convert => {"srcPort" => "integer"} convert => {"destPort" => "integer"} add_field => { "message" => "%{Message}" } } date { match => ["unixtimestamp" , "UNIX"] } } output { stdout { codec => rubydebug } elasticsearch { hosts => "localhost" index => "nsg-flow-logs" } }
Предоставленный файл конфигурации Logstash состоит из трех частей: данные входа, фильтр и данные выхода. В секции входных данных описан источник, из которого Logstash получает журналы для обработки – в этом случае мы будем использовать входной плагин "azureblob" (устанавливается на следующих этапах), который позволит нам получить доступ к JSON-файлам журналов потоков NSG, хранящимся в объектном хранилище BLOB.
Затем на этапе фильтрации каждый файл журнала потоков упрощается до плоской структуры, чтобы каждый отдельный кортеж потока и его связанные свойства превращались в отдельное событие Logstash.
Наконец, выходной раздел перенаправит каждое событие Logstash серверу Elasticsearch. Вы можете изменить файл конфигурации Logstash в соответствии со своими потребностями.
Установка плагина для ввода данных в Logstash из объектного хранилища Azure Blob.
Этот подключаемый модуль Logstash позволяет обращаться к журналам потоков непосредственно из настроенной для них учетной записи хранилища BLOB-объектов. Чтобы установить этот подключаемый модуль, из каталога установки Logstash по умолчанию (в этом случае — /usr/share/logstash/bin) выполните следующую команду:
sudo /usr/share/logstash/bin/logstash-plugin install logstash-input-azureblob
Более подробную информацию об этом плагине Logstash для Azure Storage Blobs см. в разделе Logstash input plugin for Azure Storage Blobs.
Установка Elasticsearch
Для установки Elasticsearch можно использовать следующий скрипт. Сведения об установке Elasticsearch см. в статье Elastic Stack.
sudo apt-get install apt-transport-https openjdk-8-jre-headless uuid-runtime pwgen -y
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://packages.elastic.co/elasticsearch/5.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-5.x.list
sudo apt-get update && apt-get install elasticsearch
sudo sed -i s/#cluster.name:.*/cluster.name:\ grafana/ /etc/elasticsearch/elasticsearch.yml
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
Установка Grafana
Чтобы установить и запустить Grafana, выполните следующие команды:
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_4.5.1_amd64.deb
sudo apt-get install -y adduser libfontconfig
sudo dpkg -i grafana_4.5.1_amd64.deb
sudo service grafana-server start
Для получения дополнительной информации об установке см. Установка в Debian / Ubuntu.
Добавление сервера Elasticsearch в качестве источника данных
Затем необходимо добавить индекс Elasticsearch, содержащий журналы потоков в качестве источника данных. Источник данных можно добавить, выбрав параметр Добавить источник данных и заполнив соответствующую форму.
Создание панели мониторинга
Теперь, когда вы успешно настроили Grafana для чтения из индекса Elasticsearch, содержащего журналы потоков NSG, можно создавать и персонализировать панели мониторинга. Чтобы создать панель мониторинга, выберите команду создания первой панели мониторинга. В примере конфигурации графика ниже показаны потоки, сегментированные по правилу NSG.
Заключение
Интеграция Network Watcher с Elasticsearch и Grafana теперь обеспечивает удобный и централизованный способ управления и визуализации логов потоков NSG, а также других данных. Grafana располагает рядом других мощных графических возможностей, которые можно использовать для дальнейшего управления журналами потоков, а также анализа сетевого трафика. Теперь, когда вы настроили экземпляр Grafana и подключили его к Azure, можно продолжить изучение других функций, предлагаемых Grafana.
Следующий шаг
- Узнайте больше об использовании наблюдателя за сетями.