更新时间:2024-11-29 GMT+08:00

Elasticsearch对接Logstash

操作场景

Logstash是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据存储到Elasticsearch,如日志搜索场景等。

Elasticsearch使用Basic认证对接Logstash安全性较低,存在风险,建议使用客户端工具esClient.sh对密码进行加密。

前提条件

已下载安装Logstash。

  1. 下载Logstash安装包“logstash-oss-7.10.2-linux-x86_64.tar.gz”并上传至待安装节点,例如“/opt”目录下。确认当前系统为X86服务器还是TaiShan服务器,选择开源社区下载地址。
    • X86服务器:https://artifacts.elastic.co/downloads/logstash/logstash-oss-7.10.2-linux-x86_64.tar.gz
    • TaiShan服务器:https://artifacts.elastic.co/downloads/logstash/logstash-oss-7.10.2-linux-aarch64.tar.gz
  2. 解压安装包,并进入对应解压目录,以X86服务器安装过程为例。

    cd /opt

    tar -xvf logstash-oss-7.10.2-linux-x86_64.tar.gz

    cd logstash-7.10.2/

操作步骤

利用Logstash往Elasticsearch写入数据。

  1. 执行以下命令创建数据源文件“log.log”,例如将文件放置于“/opt/log/”目录下。

    touch log.log
    2016-07-11T23:56:42.000+00:00 INFO this is a test! 127.0.0.1
    2016-07-11T23:56:42.000+00:00 INFO this is a test! 127.0.0.222

  2. 执行以下命令创建配置文件“safe2Es.conf”,例如将文件放置于“/opt/logstash-7.10.2/”目录下。

    touch safe2Es.conf
    input{
            file{
                    path => "/opt/log/log.log"
            }
    }
    filter{
            grok{
                    match=>{ "message" =>"%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:log-level} %{DATA:message} %{IP:address}" }
            }
    }
    output{
            elasticsearch{
                    hosts => ["https://ip1:httpport1","https://ip2:httpport2"]
                    index => "filtertest"
                    user => "username"
                    password => "password"                //此处使用加密后的密码
                    ssl => true
                    ssl_certificate_verification => false
                    cacert => "${BIGDATA_HOME}/om-agent/nodeagent/security/cert/subcert/certFile/sslservercet.crt" 
            }
    }

    关键配置参数说明:

    • input:数据源。
    • filter:数据过滤处理方式。
    • output:数据输出方式。
      • hosts:需要连接的EsNode实例的IP地址和端口。
      • index:索引名称。
      • user:具有Elasticsearch指定操作权限的用户,Elasticsearch用户权限设置请参考Elasticsearch鉴权模式
      • password:通过客户端工具esClient.sh加密后的用户密码。
      • ssl:配置为true,开启ssl加密。
      • ssl_certificate_verification:配置为false,Logstash不校验Elasticsearch服务端证书。
    • 普通模式下,无需配置user、password、ssl、ssl_certificate_verification。
    • 在配置参数password时,通过esClient.sh encrypt对密码加密后进行配置,操作方式见使用Elasticsearch客户端章节的6
    • cacert:MRS集群任意节点的sslservercet.crt证书文件路径。如果Logstash安装在MRS集群之外,则需配置该参数,并将证书拷贝至Logstash安装节点。

  3. 执行如下命令,运行Logstash。

    cd /opt/logstash-7.10.2/

    sh bin/logstash -f safe2Es.conf

    • 启动后,往“log.log”里面添加数据(Logstash默认是增量模式,监控到数据源有变化后,开始往Elasticsearch里面写数据)。
    • 如需后台运行,可执行如下命令运行Logstash:

      nohup sh bin/logstash -f safe2Es.conf &

    • Logstash启动前需要确保默认数据存储目录data.path为空。

  4. 查询验证写入的Elasticsearch索引数据。

    curl -XGET --tlsv1.2 --negotiate -k -u : "https://ip:httpport/filtertest/_search?pretty"