Ескерім
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: ✔️ Виртуальные машины 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