通过filebeat采集日志到logstash再送到ES

2021-09-24 14:22:45 浏览数 (1)

首先得安装 logstash ,安装完后在logstash的安装目录下新建vi filebeat-pipeline.conf filebeat-pipeline.conf的具体配置如下:

代码语言:javascript复制
input {
    beats {
        port => "5044"
    }
}
output {
    elasticsearch { hosts => ["172.28.65.24:9200"] }
    stdout { codec => rubydebug}
}

input配置表示通过5044端口接收beats的数据 output配置表示输出到elasticsearch,并且同时输出到标准输出也就是控制台。然后通过命令

代码语言:javascript复制
bin/logstash -f filebeat-pipeline.conf --config.reload.automatic

应用filebeat-pipeline.conf启动logstash。

启动以后可以看到logstash的启动日志5044端口的服务已经起了,可以接受通过filebeat通过5044端口传过来的数据了。

接下来配置filebeat 在filebeat的安装目录找到filebeat.yml 配置获取日志文件的路径及输出到logstash的配置。不直接输出到ES了。

具体配置如下:将output.elasticsearch的配置屏蔽 配置output.logstash,配置正确的logstash的服务主机和端口

启动filebeat 进行日志数据采集

代码语言:javascript复制
./filebeat -e -c filebeat.yml -d "publish"

我们访问nginx服务提供的web服务http://172.28.65.32/ 在logstash的控制台 可以看到相应的访问access.log 日志

同时在ES 中也可以看到有相应的日志数据

三、直接通过rsyslog采集日志到logstash在送到ES

在很多情况下你需要采集的web服务器并不是自己能够控制的,不是说你想装filebeat就可以让你装的,这时候就可以要求目标数据源通过 syslog 的方式将日志发出来。我们可以再通过 logstash送到ES或其他的日志存储处理平台。

通过syslog往日志服务器上发nginx的日志有两种方式,一种就是利用nginx的配置往外发日志,一种就是通过配置linux的rsyslog的配置往外发日志。

0 人点赞