logstash7.5.1同步nginx日志到elasticsearch

测试环境:centos

前言:本文在已经安装elasticsearch的基础进行,可参考我的上篇博客--  elasticsearch7.5.1集群安装+head插件安装

本文实现如下简单粗暴的日志收集架构

上面的架构是还没有进行日志过滤的,只是简单的将nginx日志通过logstash传输到es中,过滤环节是很耗时间和资源的。所以一般都会加上一个消息中间件比如kafka或redis这种读写性能是非常高的应用。本文只简单演示如上的功能。

在开始之前先配置一下nginx日志的格式,在nginx配置文件中修改如下

 log_format main '{"client_ip":"$remote_addr","log_time":"$time_local","request":"$request","status":"$status","body_bytes_sent":"$body_bytes_sent","http_referer":"$http_referer","AgentVersion":"$http_user_agent","upstream_addr":"$upstream_addr","request_time":"$request_time","upstream_response_time":"$upstream_response_time"}';

一、下载logstash

1、wget https://www.elastic.co/downloads/past-releases/logstash-7-5-1

2、解压:

tar -xzf logstash-7.5.1.tar.gz

 3、进入到目录logstash-7.5.1中新建一个配置文件(logstash-nginx-log.conf)用于配置输入、输出信息

加入如下配置:

input{
  file{
    #日志存放路径
    path => "/var/log/nginx/access.log"
    #从日志文件开头读取
    start_position => "beginning"
    #设置多长时间检测文件是否修改 默认是1s
    stat_interval => "2"
    codec => "json"
  }
}

filter {}
output {  # 定义日志输出

    elasticsearch {
        hosts => ["localhost:9200"]       # 定义es服务器的ip,这里使用本地
        index => "nginx-log"              #定义索引名称
    }

    stdout {
        codec => json_lines
    }

}

4、启动logstash

 ./bin/logstash -f logstash-nginx-log.conf

5、常见错误

如遇到如下错误:

:Logstash could not be started because there is already another instance usin

解决办法:

之前运行的实例有缓冲,保存在data/里面有.lock文件删除掉即可。

rm -rf data/.lock

启动成功后logstash回把nginx日志传输到elasticsearch中

6、head插件查看数据

可以通过head插件来查看日志传输情况

可以看到nginx的日志已经同步到了elasticsearch。

7、可以用kibana简单的分析一下日志(需要安装)

查看所有访问中状态分布:

 可以看出在所有请求中有22次是成功的。

到此演示结束!

发布了17 篇原创文章 · 获赞 70 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/zzqaaasss/article/details/104124997