Logstash是一个开源的数据收集引擎,具有实时传输数据,并过滤数据的能力。如果您对迁移实时性要求不高,可以使用Logstash进行数据迁移。本文介绍在ECS上部署自建Logstash,并通过该Logstash将一个日志文件迁移到阿里云Elasticsearch(ES)中。
前提条件
已创建阿里云ES实例,并开启实例的自动创建索引功能。
说明本文以通用商业版8.5.1为例。
具体操作,请参见创建阿里云Elasticsearch实例和快速访问与配置。
已创建ECS实例,ECS实例需要能够同时访问自建Logstash集群和阿里云ES集群。 具体操作,请参见自定义购买实例。
说明建议您购买与阿里云ES在同一区域、同一可用区、同一专有网络VPC下的ECS实例。
在ECS实例中安装JDK。 具体操作,请参见安装JDK。
说明JDK版本选择Temurin 17及以上。Java JDK版本与Logstash版本的兼容情况,请参见JVM兼容表。
准备待迁移的数据,本文以ECS的日志数据为例。
操作步骤
(可选)步骤一:创建角色和用户
自建Logstash访问ES或在Kibana中查看Logstash监控时,需要使用ES的账号,您可以使用elastic
用户或自建用户。
实际业务中建议使用自建用户,并给自建用户分配相应的角色和权限。使用elastic用户会降低系统安全性。
创建角色
以添加具有logstash-*
读写权限的角色为例。
登录目标阿里云ES实例的Kibana控制台。
具体步骤,请参见登录Kibana控制台。
单击Kibana页面左上角的图标,选择Management > Stack Management。
在左侧导航栏,选择安全 > 角色。
在角色页面,单击创建角色,配置角色参数。
部分参数说明:
参数
说明
角色名称
角色名称,自定义输入。
索引
选择对应的索引文件。需要输入logstash-*。
权限
为角色分配索引权限。需要添加read、write、create、delete以及create_index权限。
单击创建角色,完成创建。
创建用户
以创建监控Logstash服务的用户为例。 您可以选择以下任一方式创建用户:
阿里云ES集群默认会禁用logstash_system
用户,因此您需要创建一个角色为logstash_system
的用户名,但需要注意用户名不可以配置为logstash_system
。
方法一:通过Kibana控制台添加用户
登录目标阿里云ES实例的Kibana控制台。
具体步骤,请参见登录Kibana控制台。
单击Kibana页面左上角的图标,选择Management > Stack Management。
在左侧导航栏,选择安全 > 用户。
在用户页面,单击创建用户。
在创建用户页面,配置用户信息。
部分参数说明:
参数
说明
Username
用户名,可以自定义。本章节以创建Logstash监控用户为例,设置用户名为logstash_system_monitor。
Roles
用户的角色,需要选择logstash_system角色。
单击创建用户,完成创建。
方法二:通过命令行方式创建用户
连接ECS实例,通过以下命令添加用户。
curl -u elastic:<es-password> -XPOST http://<instanceId>.elasticsearch.aliyuncs.com:9200/_xpack/security/user/logstash_system_monitor -d '{"password" : "<logstash-monitor-password>","roles" : ["logstash_system"],"full_name" : "<your full name>"}'
参数
说明
es-password
阿里云ES实例的密码,即您登录Kibana控制台的密码。
<instanceId>
阿里云ES实例的ID,可在实例的基本信息页面获取。
<logstash-monitor-password>
您创建的
logstash_system_monitor
用户的密码。<your full name>
当前用户名的全名描述。
添加成功后,结果如下。
步骤二:在ECS上安装Logstash
连接ECS实例。
具体步骤请参见连接ECS实例。
下载Logstash。
进入Elastic官网,下载与阿里云ES实例版本一致的Logstash。
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.5.1-linux-x86_64.tar.gz
说明下载Logstash7.4版本
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.4.0.tar.gz
对下载的Logstash压缩包进行解压缩。
以8.5.1版本为例。
tar -xzvf logstash-8.5.1-linux-x86_64.tar.gz
步骤三:配置并执行Logstash迁移任务
进入Logstash目录。
cd logstash-8.5.1
创建conf文件。
touch test.conf
配置test.conf文件。
配置示例如下。
input { file { path => "/your/file/path/xxx" } } filter { } output { elasticsearch { hosts => "<http://<instanceId>.elasticsearch.aliyuncs.com:9200>" index => "<index-name>" user => "<user-name>" password => "<logstash-password>" } }
参数
说明
path
日志文件的路径。本文以/var/log/messages为例。
hosts
阿里云ES实例的访问地址。
instanceId
为实例ID,可在实例的基本信息页面获取。例如:http://es-cn-45xxxxxxxxxxxxju.elasticsearch.aliyuncs.com:9200
。index
文件写入目标ES中的索引名字,索引名字自定义。
user
访问阿里云ES实例的账号。 本文使用elastic。
重要实际业务中建议使用自建用户,使用elastic用户会降低系统安全性。
用户名上需要加英文引号(""),防止在启动Logstash时,因出现特殊字符报错。
password
阿里云ES实例账号的密码。
重要密码上需要加英文引号(""),防止在启动Logstash时,因为特殊字符报错。
Logstash提供了丰富的input、filter、output插件,只需要简单的配置即可实现数据的流转,详情请参见官方配置文件结构文档。
启动logstash。
bin/logstash -f test.conf
命令执行成功后,系统会自动通过Logstash获取日志文件的变化,并提交到阿里云ES集群。只要监控的日志文件有新增内容,Logstash就会自动同步数据到ES集群中。
步骤四:查看迁移成功的数据
登录目标阿里云ES实例的Kibana控制台。
具体步骤,请参见登录Kibana控制台。
单击Kibana页面左上角的图标,选择Management > 开发工具。
在Kibana控制台中,执行以下命令。
GET /logstash-*/_search
(可选)步骤五:监控Logstash节点
进入Logstash安装目录的config文件中。
cd logstash-8.5.1/config
配置logstash.yml文件。
打开logstash.yml文件。
vim logstash.yml
在logstash.yml文件中,去掉以下几个参数的注释,并配置参数值。
xpack.monitoring.enabled:true xpack.monitoring.elasticsearch.username:"<user-name>" xpack.monitoring.elasticsearch.password:"<logstash-password>" xpack.monitoring.elasticsearch.hosts:["http://es-cn-nwy3fwjp8xxxxxxx.elasticsearch.aliyuncs.com:9200"]
参数
说明
xpack.monitoring.enable
默认为
false
,需要设置为true
。xpack.monitoring.elasticsearch.username
您创建的Logstash监控账号,本文使用elastic用户。
重要实际业务中建议使用自建用户,使用elastic用户会降低系统安全性。
xpack.monitoring.elasticsearch.password
Logstash监控用户的密码。
xpack.monitoring.elasticsearch.hosts
阿里云ES实例的访问地址。例如:
http://es-cn-45xxxxxxxxxxxxju.elasticsearch.aliyuncs.com:9200
。
返回Logstash安装目录,启动Logstash服务。
cd ../ bin/logstash -f test.conf
登录目标阿里云ES实例的Kibana控制台。
具体步骤,请参见登录Kibana控制台。
单击Kibana页面左上角的图标,选择Management > 堆栈监测。
(可选)在弹出的Create rules对话框,单击OK。
在集群概览页面,查看Logstash监控信息。
相关文档
阿里云ES插件能够提升集群在稳定性、查询和写入性能、分词查询、数据检索等各方面的能力,请参见插件配置概述。