在 Azure VM 上安装 Elastic Stack (ELK)
适用于:✔️ Linux VM ✔️ 灵活规模集
本文逐步讲解如何在 Azure 中的 Ubuntu VM 上部署 Elasticsearch、Logstash 和 Kibana。 若要查看实际操作中的 Elastic Stack,可选择连接到 Kibana 并处理某些示例日志记录数据。
此外,可以按照在 Azure 虚拟机上部署 Elastic 模块进行操作,获取有关在 Azure 虚拟机上部署 Elastic 的更多指导性教程。
本教程介绍如何执行下列操作:
- 在 Azure 资源组中创建 Ubuntu VM
- 在 VM 上安装 Elasticsearch、Logstash 和 Kibana
- 使用 Logstash 将示例数据发送到 Elasticsearch
- 在 Kibana 控制台中打开端口并处理数据
此部署适用于使用 Elastic Stack 进行基本开发的情况。 有关 Elastic 堆栈的详细信息,包括针对生产环境的建议,请参阅 Elastic 文档和 Azure 体系结构中心。
先决条件
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
如果选择在本地安装并使用 CLI,本教程要求运行 Azure CLI 2.0.4 或更高版本。 运行 az --version
即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI。
创建资源组
使用“az group create”命令创建资源组。 Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。
以下示例在“chinaeast” 位置创建名为“myResourceGroup” 的资源组。
az group create --name myResourceGroup --location chinaeast
创建虚拟机
使用 az vm create 命令创建 VM。
下面的示例创建一个名为 myVM 的 VM,并且在默认密钥位置中不存在 SSH 密钥时创建这些密钥。 若要使用特定的一组密钥,请使用 --ssh-key-value
选项。
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
创建 VM 后,Azure CLI 会显示类似于以下示例的信息。 记下 publicIpAddress
。 此地址用于访问 VM。
{
"fqdns": "",
"id": "/subscriptions/<subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
"location": "chinaeast",
"macAddress": "00-0D-3A-23-9A-49",
"powerState": "VM running",
"privateIpAddress": "10.0.0.4",
"publicIpAddress": "40.68.254.142",
"resourceGroup": "myResourceGroup"
}
通过 SSH 连接到 VM
如果还不知道 VM 的公共 IP 地址,请运行 az network public-ip list 命令:
az network public-ip list --resource-group myResourceGroup --query [].ipAddress
使用以下命令创建与虚拟机的 SSH 会话。 使用虚拟机的正确的公共 IP 地址进行替换。 在此示例中,IP 地址为 40.68.254.142。
ssh azureuser@40.68.254.142
安装 Elastic Stack
导入 Elasticsearch 签名密钥并更新 APT 源列表,以包括 Elastic 包存储库:
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
在 VM 上安装 Java Virtual 并配置 JAVA_HOME 变量 - 这是运行 Elastic Stack 组件所必需的。
sudo apt update && sudo apt install openjdk-8-jre-headless
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
运行以下命令更新 Ubuntu 包源并安装 Elasticsearch、Kibana 和 Logstash。
sudo apt update && sudo apt install elasticsearch kibana logstash
注意
Elastic 文档中详述了安装说明,包括目录布局和初始配置
启动 Elasticsearch
使用以下命令启动 VM 上的 Elasticsearch:
sudo systemctl start elasticsearch.service
此命令不会产生输出,因此请使用 curl
命令验证该 Elasticsearch 是否在 VM 上运行:
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:
sudo systemctl start logstash.service
在交互模式下测试 Logstash,确保它正确运行:
sudo /usr/share/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }'
这是基本 Logstash 管道,它将标准输入回响到标准输出。
The stdin plugin is now waiting for input:
hello azure
2017-10-11T20:01:08.904Z myVM hello azure
设置 Logstash,将内核消息从此 VM 转发到 Elasticsearch。 在名为 vm-syslog-logstash.conf
的空目录中新建文件,并粘贴到以下 Logstash 配置中:
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"
}
}
测试此配置,然后将 syslog 数据发送到 Elasticsearch:
sudo /usr/share/logstash/bin/logstash -f vm-syslog-logstash.conf
将 syslog 项发送到 Elasticsearch 时回响的终端中会显示这些 syslog 项。 发送一些数据后,请使用 CTRL+C
退出 Logstash。
启动 Kibana 并在 Elasticsearch 中直观显示数据
编辑 /etc/kibana/kibana.yml
并更改 Kibana 侦听的 IP 地址,以便通过 Web 浏览器对其进行访问。
server.host: "0.0.0.0"
使用以下命令启动 Kibana:
sudo systemctl start kibana.service
通过 Azure CLI 打开端口 5601,允许远程访问 Kibana 控制台:
az vm open-port --port 5601 --resource-group myResourceGroup --name myVM
打开 Kibana 控制台并选择“创建”,根据之前发送给 Elasticsearch 的 syslog 数据生成默认索引 。
在 Kibana 控制台上选择“发现”,搜索、浏览和筛选 syslog 事件 。
后续步骤
本教程已将 Elastic Stack 部署到 Azure 中的开发 VM。 你已了解如何执行以下操作:
- 在 Azure 资源组中创建 Ubuntu VM
- 在 VM 上安装 Elasticsearch、Logstash 和 Kibana
- 通过 Logstash 将示例数据发送到 Elasticsearch
- 在 Kibana 控制台中打开端口并处理数据