Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы
В этой статье описано, как развернуть Elasticsearch, Logstash и Kibana на виртуальной машине Ubuntu в Azure. Чтобы увидеть Elastic Stack в действии, вы можете по желанию подключиться к Kibana и работать с образцами данных журналов.
Кроме того, вы можете следовать модулю Deploy Elastic на виртуальных машинах Azure , чтобы получить более подробное руководство по развертыванию Elastic на виртуальных машинах Azure.
В этом руководстве описано, как:
- Создание виртуальной машины Ubuntu в группе ресурсов Azure
- Установка Elasticsearch, Logstash и Kibana на виртуальной машине
- Отправка примеров данных в Elasticsearch с помощью Logstash
- Открытие портов и работа с данными в консоли Kibana
Это развертывание подходит для базовой разработки с помощью Elastic Stack. Дополнительные сведения об Эластичном стеке, включая рекомендации по рабочей среде, см. в документации по Elastic и в Центре архитектуры Azure.
Предпосылки
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье "Начало работы с Azure Cloud Shell".
Если вы предпочитаете запускать справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, попробуйте запустить Azure CLI в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы завершить процесс проверки подлинности, выполните действия, отображаемые в терминале. Сведения о других параметрах входа см. в статье "Проверка подлинности в Azure с помощью Azure CLI".
Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений и управление ими с помощью Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
- Для работы с этой статьей требуется Azure CLI версии 2.0.4 или более поздней. Если вы используете Azure Cloud Shell, последняя версия уже установлена.
Создайте группу ресурсов
В этом разделе переменные среды объявляются для использования в последующих командах. Случайный суффикс добавляется к именам ресурсов для уникальности.
export RANDOM_SUFFIX=$(openssl rand -hex 3)
export RESOURCE_GROUP="myResourceGroup$RANDOM_SUFFIX"
export REGION="eastus2"
az group create --name $RESOURCE_GROUP --location $REGION
Результаты:
{
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxxxxx",
"location": "eastus",
"managedBy": null,
"name": "myResourceGroupxxxxxx",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
Создание виртуальной машины
В этом разделе создается виртуальная машина с уникальным именем, а также создается ключи SSH, если они еще не существуют. Случайный суффикс добавляется для обеспечения уникальности.
export VM_NAME="myVM$RANDOM_SUFFIX"
az vm create \
--resource-group $RESOURCE_GROUP \
--name $VM_NAME \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
При создании виртуальной машины Azure CLI отображает сведения, аналогичные следующему примеру. Обратите внимание на publicIpAddress. Этот адрес используется для доступа к виртуальной машине.
Результаты:
{
"fqdns": "",
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxxxxx/providers/Microsoft.Compute/virtualMachines/myVMxxxxxx",
"location": "eastus",
"macAddress": "xx:xx:xx:xx:xx:xx",
"powerState": "VM running",
"privateIpAddress": "10.0.0.4",
"publicIpAddress": "x.x.x.x",
"resourceGroup": "$RESOURCE_GROUP"
}
SSH-подключение к виртуальной машине
Если вы еще не знаете общедоступный IP-адрес виртуальной машины, выполните следующую команду, чтобы перечислить ее:
az network public-ip list --resource-group $RESOURCE_GROUP --query [].ipAddress
Используйте следующую команду, чтобы создать сеанс SSH с виртуальной машиной. Замените правильный общедоступный IP-адрес виртуальной машины. В этом примере IP-адрес — 40.68.254.142.
export PUBLIC_IP_ADDRESS=$(az network public-ip list --resource-group $RESOURCE_GROUP --query [].ipAddress -o tsv)
Установка эластичного стека
В этом разделе вы импортируете ключ подписи Elasticsearch и обновите список источников APT, чтобы включить репозиторий пакетов Elastic. За этим следует установка среды выполнения Java, которая требуется для компонентов Elastic Stack.
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
"
Установите виртуальную машину Java на виртуальной машине и настройте переменную JAVA_HOME:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo apt install -y openjdk-8-jre-headless
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
"
Выполните следующую команду, чтобы обновить источники пакетов Ubuntu и установить Elasticsearch, Kibana и Logstash.
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
wget -qO elasticsearch.gpg https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo mv elasticsearch.gpg /etc/apt/trusted.gpg.d/
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
sudo apt update
# Now install the ELK stack
sudo apt install -y elasticsearch kibana logstash
"
Примечание.
Подробные инструкции по установке, включая макеты каталогов и начальную конфигурацию, хранятся в документации Elastic.
Запуск Elasticsearch
Запустите Elasticsearch на виртуальной машине с помощью следующей команды:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo systemctl start elasticsearch.service
"
Эта команда не выдает выходных данных, поэтому убедитесь, что Elasticsearch выполняется на виртуальной машине с помощью этой команды curl:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sleep 11
sudo curl -XGET 'localhost:9200/'
"
Если выполняется Elasticsearch, вы увидите следующие выходные данные:
Результаты:
{
"name" : "w6Z4NwR",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "SDzCajBoSK2EkXmHvJVaDQ",
"version" : {
"number" : "5.6.3",
"build_hash" : "1a2f265",
"build_date" : "2017-10-06T20:33:39.012Z",
"build_snapshot" : false,
"lucene_version" : "6.6.1"
},
"tagline" : "You Know, for Search"
}
Запуск Logstash и добавление данных в Elasticsearch
Запустите Logstash с помощью следующей команды:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo systemctl start logstash.service
"
Проверьте Logstash, чтобы убедиться, что он работает правильно:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
# Time-limited test with file input instead of stdin
sudo timeout 11s /usr/share/logstash/bin/logstash -e 'input { file { path => "/var/log/syslog" start_position => "end" sincedb_path => "/dev/null" stat_interval => "1 second" } } output { stdout { codec => json } }' || echo "Logstash test completed"
"
Это базовый конвейер Logstash, который отражает стандартные входные данные в стандартные выходные данные.
Настройте Logstash для пересылки сообщений ядра из этой виртуальной машины в Elasticsearch. Чтобы создать файл конфигурации Logstash, выполните следующую команду, которая записывает конфигурацию в новый файл с именем vm-syslog-logstash.conf:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
cat << 'EOF' > vm-syslog-logstash.conf
input {
stdin {
type => "stdin-type"
}
file {
type => "syslog"
path => [ "/var/log/*.log", "/var/log/*/*.log", "/var/log/messages", "/var/log/syslog" ]
start_position => "beginning"
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => "localhost:9200"
}
}
EOF
"
Проверьте эту конфигурацию и отправьте данные системного журнала в Elasticsearch:
# Run Logstash with the configuration for 60 seconds
sudo timeout 60s /usr/share/logstash/bin/logstash -f vm-syslog-logstash.conf &
LOGSTASH_PID=$!
# Wait for data to be processed
echo "Processing logs for 60 seconds..."
sleep 65
# Verify data was sent to Elasticsearch with proper error handling
echo "Verifying data in Elasticsearch..."
ES_COUNT=$(sudo curl -s -XGET 'localhost:9200/_cat/count?v' | tail -n 1 | awk '{print $3}' 2>/dev/null || echo "0")
# Make sure ES_COUNT is a number or default to 0
if ! [[ "$ES_COUNT" =~ ^[0-9]+$ ]]; then
ES_COUNT=0
echo "Warning: Could not get valid document count from Elasticsearch"
fi
echo "Found $ES_COUNT documents in Elasticsearch"
if [ "$ES_COUNT" -gt 0 ]; then
echo "✅ Logstash successfully sent data to Elasticsearch"
else
echo "❌ No data found in Elasticsearch, there might be an issue with Logstash configuration"
fi
В терминале отображаются записи системного журнала, отправляемые в Elasticsearch. Используйте CTRL+C, чтобы выйти из Logstash после отправки некоторых данных.
Запуск Kibana и визуализация данных в Elasticsearch
Измените файл конфигурации Kibana (/etc/kibana/kibana.yml) и измените IP-адрес Kibana, чтобы получить доступ к нему из веб-браузера:
server.host: "0.0.0.0"
Запустите Kibana с помощью следующей команды:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo systemctl start kibana.service
"
Откройте порт 5601 из Azure CLI, чтобы разрешить удаленный доступ к консоли Kibana:
az vm open-port --port 5601 --resource-group $RESOURCE_GROUP --name $VM_NAME
Дальнейшие действия
В этом руководстве вы развернули Elastic Stack в виртуальной машине разработки в Azure. Вы узнали, как:
- Создание виртуальной машины Ubuntu в группе ресурсов Azure
- Установка Elasticsearch, Logstash и Kibana на виртуальной машине
- Отправка примеров данных в Elasticsearch из Logstash
- Открытие портов и работа с данными в консоли Kibana