云搜索服务支持使用Logstash将其收集的数据迁移到Elasticsearch中,方便用户通过 Elasticsearch搜索引擎高效管理和获取数据。数据文件支持JSON、CSV等格式。
Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据、转换数 据,然后将数据发送到Elasticsearch中。Logstash的官方文档请参见:https://
www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html。
数据导入分为如下2种场景:
● Logstash部署在外网时导入数据
● Logstash部署在弹性云服务器上时导入数据
前提条件
● 为方便操作,建议采用Linux操作系统的机器部署Logstash。
● Logstash的下载路径为:https://www.elastic.co/cn/downloads/logstash-oss 说明
Logstash要求使用OSS版本,选择和CSS一致版本。
● 安装完Logstash后,再根据如下步骤导入数据。安装Logstash的操作指导,请参
见:https://www.elastic.co/guide/en/logstash/current/installing-logstash.html
● 安装Logstash之前,需要先安装JDK。在Linux操作系统中,您可以执行yum -y install java-1.8.0命令直接安装1.8.0版本JDK。在Windows操作系统中,您可以 访问JDK官网,下载符合操作系统版本的JDK,并根据指导安装。
● 在“Logstash部署在弹性云服务器上时导入数据”场景中,请确保此弹性云服务 器与接入的Elasticsearch集群在同一个VPC下。
Logstash 部署在外网时导入数据
当Logstash部署在外网时,导入数据的流程说明如图4-4所示。
图4-4 Logstash 部署在外网时导入数据示意图
1. 创建一个跳转主机,并按如下要求进行配置。
ssh -g -L <跳转主机的本地端口:节点的内网访问地址和端口号> -N -f root@<跳转主机的私网IP地址>
说明
ssh -g -L 9200:192.168.0.81:9200 -N -f [email protected]
4. 登录部署了Logstash的服务器,将需要进行操作的数据文件存储至此服务器中。
} }
– input:指明了数据的来源。实际请根据用户的具体情况来设置。input参数的 详细解释和使用介绍请参见https://www.elastic.co/guide/en/logstash/
current/input-plugins.html。
– filter:指定对数据进行处理的方式。例如,对日志进行了提取和处理,将非 结构化信息转换为结构化信息。filter参数的详细解释和使用介绍请参见
https://www.elastic.co/guide/en/logstash/current/filter-plugins.html。
– output:指明了数据的目的地址。output参数的详细解释和使用介绍请参见
https://www.elastic.co/guide/en/logstash/current/output-plugins.html。<跳转主机的公网IP地址>请从弹性云服务器管理控制台的
“IP地址”列中获取标有“弹性公网”对应的IP地址。<跳转主机对外开放的 端口号>即为步骤1中的端口,例如:9200。
以步骤4中“/tmp/access_log/”的数据文件为例,输入数据文件从首行开始,且 过滤条件保持为空,即不做任何数据处理操作。跳转主机的公网IP和端口号为
“192.168.0.227:9200”。导入数据的索引名称为“myindex”。配置文件的示例 如下所示,配置文件按实际数据情况修改完成后,输入“:wq”保存。
input { file{
path => "/tmp/access_log/*"
start_position => "beginning"
} } filter { } output { elasticsearch {
hosts => "192.168.0.227:9200"
index => "myindex"
} }
说明
如果在使用中出现license相关的报错,可以尝试设置ilm_enabled => false。
如果集群开启了安全模式,则需要先下载证书。
a. 在集群基本信息页面下载证书。
图4-5 下载证书
b. 将下载的证书存放到部署logstash服务器中。
c. 修改配置文件logstash-simple.conf。
以步骤4中“/tmp/access_log/”的数据文件为例,输入数据文件从首行开 始,且过滤条件保持为空,即不做任何数据处理操作。跳转主机的公网IP和 端口号为“192.168.0.227:9200”。导入数据的索引名称为“myindex”,证 书存放路径为“/logstash/logstash6.8/config/CloudSearchService.cer”。配 置文件的示例如下所示,配置文件按实际数据情况修改完成后,输入“:wq”
保存。input{
file {
path => "/tmp/access_log/*"
start_position => "beginning"
} }filter { } output{
elasticsearch{
hosts => ["https://192.168.0.227:9200"]
index => "myindex"
user => "admin"
password => "******"
cacert => "/logstash/logstash6.8/config/CloudSearchService.cer"
} }
说明
password:登录安全集群的密码。
7. 执行如下命令将Logstash收集的数据导入到集群中。
./bin/logstash -f logstash-simple.conf 说明
此命令需要在存放logstash-simple.conf文件的目录下执行。例如,logstash-simple.conf文 件存放在/root/logstash-7.1.1/,则需要先进入该路径,再执行此命令。
8. 登录云搜索服务管理控制台。
9. 在左侧导航栏中,选择“集群管理”,进入集群列表页面。
10. 在集群列表页面中,单击待导入数据的集群“操作”列的“Kibana”。
11. 在Kibana的左侧导航中选择“Dev Tools”,进入Console界面。
图4-6 登录 Dev Tools 界面
12. 在已打开的Kibana的Console界面,通过搜索获取已导入的数据。
在Kibana控制台,输入如下命令,搜索数据。查看搜索结果,如果数据与导入数 据一致,表示数据文件的数据已导入成功。
GET myindex/_search
Logstash 部署在弹性云服务器上时导入数据
当Logstash部署在同一VPC的弹性云服务时,导入数据的流程说明如图4-7所示。
图4-7 Logstash 部署在弹性云服务器上时导入数据示意图
1. 确保已部署Logstash的弹性云服务器与待导入数据的集群在同一虚拟私有云下,
https://www.elastic.co/guide/en/logstash/current/output-plugins.html。<节点的内网访问地址和端口号>为集群中节点的内网访问地 址和端口号。
当集群包含多个节点时,为了避免节点故障,建议将上述命令中<节点的内网 访问地址和端口号>替换为该集群中多个节点的内网访问地址和端口号,多个 节点的内网访问地址和端口号之间用英文逗号隔开,填写格式请参见如下示 例。
hosts => ["192.168.0.81:9200","192.168.0.24:9200"]
当集群只包含一个节点时,填写格式请参见如下示例。
hosts => "192.168.0.81:9200"
以步骤2中“/tmp/access_log/”的数据文件为例,输入数据文件从首行开始,且 过滤条件保持为空,即不做任何数据处理操作。需导入数据的集群,其节点内网 访问地址和端口号为“192.168.0.81:9200”。导入数据的索引名称为
“myindex”。配置文件的示例如下所示,配置文件按实际数据情况修改完成 后,输入“:wq”保存。
input { file{
path => "/tmp/access_log/*"
start_position => "beginning"
} } filter { } output { elasticsearch {
hosts => "192.168.0.81:9200"
index => "myindex"
} }
如果集群开启了安全模式,则需要先下载证书。
a. 在集群基本信息页面下载证书。
图4-8 下载证书
b. 将下载的证书存放到部署logstash服务器中。
c. 修改配置文件logstash-simple.conf。
以步骤2中“/tmp/access_log/”的数据文件为例,输入数据文件从首行开 始,且过滤条件保持为空,即不做任何数据处理操作。跳转主机的公网IP和 端口号为“192.168.0.227:9200”。导入数据的索引名称为“myindex”,证 书存放路径为“/logstash/logstash6.8/config/CloudSearchService.cer”。配 置文件的示例如下所示,配置文件按实际数据情况修改完成后,输入“:wq”
保存。input{
file {
path => "/tmp/access_log/*"
start_position => "beginning"
} }filter { } output{
elasticsearch{
hosts => ["https://192.168.0.227:9200"]
index => "myindex"
user => "admin"
password => "******"
cacert => "/logstash/logstash6.8/config/CloudSearchService.cer"
} }
说明
password:登录安全集群的密码。
4. 执行如下命令将Logstash收集的弹性云服务器的数据导入到集群中。
./bin/logstash -f logstash-simple.conf
5. 登录云搜索服务管理控制台。
6. 在左侧导航栏中,选择“集群管理”,进入集群列表页面。
7. 在集群列表页面中,单击待导入数据的集群“操作”列的“Kibana”。
8. 在Kibana的左侧导航中选择“Dev Tools”,进入Console界面。
图4-9 选择 Dev Tools
9. 在已打开的Kibana的Console界面,通过搜索获取已导入的数据。
在Kibana控制台,输入如下命令,搜索数据。查看搜索结果,如果数据与导入数 据一致,表示数据文件的数据已导入成功。
GET myindex/_search