Logstash是一个开源的数据收集引擎,具有实时传输数据的能力。它可以统一过滤来自不同源的数据,并按照您自定义的配置文件将过滤的数据输出到目标数据源中。本文介绍在ECS上部署Logstash的方法,并通过一个简单的示例演示如何使用Logstash迁移数据到阿里云Elasticsearch(简称ES)中。

创建并配置阿里云ES

  1. 创建阿里云ES实例。
    本文创建的实例的版本通用商业版6.7,其他配置保持默认,详情请参见创建阿里云Elasticsearch实例
  2. 开启实例的自动创建索引功能。
    1. 实例创建成功后,返回阿里云Elasticsearch控制台
    2. 单击目标实例ID/名称链接。
    3. 在左侧导航栏,单击ES集群配置
    4. YML文件配置区域右侧,单击修改配置
    5. YML参数配置页面,将自动创建索引设置为允许自动创建索引
      重启实例

创建并配置阿里云ECS

  1. 创建ECS实例。
    创建ECS实例的具体步骤请参见创建ECS实例。要求所创建的ECS实例能够同时访问自建Logstash集群和阿里云ES集群(已符合条件的ECS不需要重复购买)。
    说明 建议您购买与阿里云ES在同一区域和可用区,以及同一专有网络VPC(Virtual Private Cloud)下的ECS实例。您也可以购买经典网络的ECS实例,前提是该ECS实例能够通过经典网络访问VPC内的阿里云ES服务。
  2. 在ECS实例中安装JDK,要求JDK版本为1.8及以上版本。
    安装方式请参见安装JDK

安装Logstash

  1. 在ECS实例中下载Logstash。
    Elastic官网中,下载与阿里云ES版本一致的Logstash(建议下载6.7.0版本)。
    wget https://artifacts.elastic.co/downloads/logstash/logstash-6.7.0.tar.gz
  2. 对下载的Logstash压缩包进行解压缩。
    tar -xzvf logstash-6.7.0.tar.gz

使用Logstash同步增量数据

  1. 连接ECS实例,切换到Logstash目录。
    cd logstash-6.7.0
  2. 创建conf文件。
    touch test.conf
  3. 配置test.conf文件。
    配置示例如下。
    input {
        file {
            path => "/your/file/path/xxx"
            }
    }
    filter {
    }
    output {
      elasticsearch {
        hosts => ["http://<instanceId>.elasticsearch.aliyuncs.com:9200"]
        user => "<user-name>"
        password => "<logstash-password>"
      }
    }
    参数 说明
    path 日志文件的路径。本文以/var/log/meaasges为例。
    hosts 阿里云ES实例的访问地址。instanceId为实例ID,可在实例的基本信息页面获取。例如:http://es-cn-45xxxxxxxxxxxxju.elasticsearch.aliyuncs.com:9200
    user 访问阿里云ES实例的账号,默认为elastic。
    注意
    • 实际业务中不建议使用elastic用户,这样会降低系统安全性。建议使用自建用户,并给予自建用户分配相应的角色和权限,详情请参见附录一:创建角色附录二:创建用户
    • 用户名需要使用英文引号,防止在启动Logstash时,因出现特殊字符报错。
    password 访问阿里云ES实例的密码,在创建实例时设定,您也可以修改密码。
    注意 密码需要使用英文引号,防止在启动Logstash时,因为特殊字符报错。

    Logstash提供了丰富的input、filter、output插件,只需要简单的配置就可是实现数据的流转,详情请参见官方配置文件结构文档。

  4. 执行logstash命令。
    按照上一步中配置的conf文件,执行logstash命令。
    bin/logstash -f test.conf

    命令执行成功后,系统会自动通过Logstash获取日志文件的变化,并提交到阿里云ES集群。只要监控的日志文件有新增内容,Logstash就会自动同步数据到ES集群中。

  5. 验证数据同步结果。
    1. 登录目标阿里云ES实例的Kibana控制台。
      登录控制台的具体步骤请参见登录Kibana控制台
    2. 单击左侧导航栏的Dev Tools(开发工具)。
    3. Console中,执行以下命令。
      GET /logstash-*/_search
      运行成功后,结果如下。验证成功结果

监控Logstash节点

  1. 进入Logstash安装目录的config文件中。
    cd /logstash-6.7.0/config
  2. 配置logstash.yml文件。
    打开logstash.yml文件。
    vim logstash.yml

    在logstash.yml文件中,去掉以下几个参数的注释,并配置参数值。

    配置xpack监控
    参数 说明
    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
  3. 返回Logstash安装目录,启动Logstash服务。
    cd ../
    bin/logstash -f test.conf

    启动成功后,结果如下。

    Logstash服务启动成功
  4. 登录目标阿里云ES实例的Kibana控制台。
    登录控制台的具体步骤请参见登录Kibana控制台
  5. 单击左侧导航栏的Monitoring,查看Logstash监控信息。
    查看Logstash监控信息

附录一:创建角色

以添加具有logstash-* 读写权限的角色为例,操作步骤如下:

  1. 登录目标阿里云ES实例的Kibana控制台。
    登录控制台的具体步骤请参见登录Kibana控制台
  2. 单击左侧导航栏的Management
  3. Security区域,单击Roles
  4. 单击Create role,然后输入相关参数配置。
    Create role参数
    参数 说明
    Role name 角色名称,自定义输入。
    Indices 选择对应的索引文件。需要输入logstash-*
    Privileges 为角色分配索引权限。需要添加readwritecreatdelete以及create_index权限。
    Granted fields 授权的字段。可选,本文使用*
  5. 单击Create role,完成创建。

附录二:创建用户

本章节以创建监控Logstash服务的用户为例,分别介绍通过命令和通过Kibana控制台两种方式,创建用户的方法。
注意 阿里云ES集群默认会禁掉logstash_system用户,因此您需要创建一个角色为logstash_system的用户名(用户名不可以配置为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> 当前用户名的全名描述。
    添加成功后,结果如下。添加用户成功
  • 通过Kibana控制台添加用户
    1. 登录目标阿里云ES实例的Kibana控制台。

      登录控制台的具体步骤请参见登录Kibana控制台

    2. 单击左侧导航栏的Management
    3. Security区域,单击Users,再单击Create new user创建用户
    4. New user页面,输入用户信息。New user
      参数 说明
      Username 用户名,可以自定义。本章节以创建Logstash监控用户为例,设置用户名为logstash_system_monitor
      Password 用户的密码。
      Confirm password 确认密码。
      Full name 当前用户名的全名描述,可选。
      Email address 用户的邮箱地址,可选。
      Roles 用户的角色,需要选择logstash_system角色。
    5. 单击Create user,完成创建。