ELK集群+filebeat收集nginx日志(linux系统)

1.在elastic官网https://www.elastic.co/cn/下载elasticsearch、logstash、kibana以及filebeat的tar.gz压缩包,以及本示例用ELK集群所收集日志的nginx(http://nginx.org/en/download.html
),这里用的ELK以及filebeat的版本都为7.3.2,nginx的版本为1.16.1。nginx的安装过程:
下载完nginx压缩包后依次运行以下命令完成安装:

tar -zxvf nginx-1.16.1.tar.gz        //解压
cd nginx-1.16.1         //进入nginx目录 
./configure          //执行 ./configure命令
make            //把各种语言写的源码文件,变成可执行文件和各种库文件
make install        //把这些编译出来的可执行文件和库文件复制到合适的地方
cd /usr/local/nginx/sbin        //进入nginx启动目录
./nginx                 //运行nginx

运行成功后访问http://localhost:80(nginx默认启动占用80端口),出现以下图片内容即为安装成功:

截图

2.修改nginx日志的打印格式为json:

cd /usr/local/nginx/conf/         //进入nginx配置文件目录
vim nginx.conf            //编辑nginx.conf配置文件

将以下代码放到http大括号内:

log_format access_json '{ "@timestamp": "$time_iso8601", '
                         '"time": "$time_iso8601", '
                         '"remote_addr": "$remote_addr", '
                         '"remote_user": "$remote_user", '
                         '"body_bytes_sent": "$body_bytes_sent", '
                         '"request_time": "$request_time", '
                         '"status": "$status", '
                         '"host": "$host", '
                         '"request": "$request", '
                         '"request_method": "$request_method", '
                         '"uri": "$uri", '
                         '"http_referrer": "$http_referer", '
                         '"body_bytes_sent":"$body_bytes_sent", '
                         '"http_x_forwarded_for": "$http_x_forwarded_for", '
                         '"http_user_agent": "$http_user_agent" '
                    '}';

然后在对应的server大括号内增加以下代码完成json格式化:

access_log  /usr/local/nginx/logs/access_json.log access_json;

并在/usr/local/nginx/logs/目录下创建access_json.log文件,然后重启运行以下命令重启nginx:

cd /usr/local/nginx/sbin
nginx -s reload

再次访问http://localhost/,然后查看/usr/local/nginx/logs下的日志文件,对比默认的access.log和修改过的access_json.log,可以发现日志文件成功json化:

截图

截图

3.配置elasticsearch:
进入elasticsearch安装目录下的config文件夹,往里面的elasticsearch.yml添加以下代码:

cluster.name: <这里输入自定义的集群名称>
node.name: master    //结点名称
node.master: true
network.host: 127.0.0.1

进入elasticsearch的安装目录并输入以下命令在后台启动:

./bin/elasticsearch

4.配置filebeat:
在filebeat目录下的filebeat中对应位置修改以下代码为:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /usr/local/nginx/logs/access_json.log        #获取对应nginx目录下的日志
  json.keys_under_root: true
  json.overwrite_keys: true
  fields:
    appname: nginx_access
output.logstash:
  # The Logstash hosts
  hosts: ["localhost:5044"]          #输出到logstash(logstash的启动端口为5044)

在filebeat安装目录下输入以下命令在后台启动并查看启动是否成功:

nohup ./filebeat -e -c filebeat.yml -d "publish"  &
tail -f nohup.out

5.配置logstash:
在logstash 目录下创建一个nginx_logs.conf文件,其内容如下:

# 监听5044端口作为输入
input { 
    beats {
      port => "5044" 
    }
}

output {
    if [fields][appname] == "nginx_access" {
       elasticsearch {
             hosts => ["127.0.0.1:9200"]       #输出到elasticsearch(elasticsearch的默认启动端口为9200)
             index => "nginx-access-%{+YYYY.MM.dd}"      
       }
    }
}

在logstash安装目录下输入以下命令在后台启动并查看启动是否成功:

nohup bin/logstash -f nginx_logs.conf &
tail -f nohup.out

6.配置kibana:
修改config目录下的kibana.yml文件为:

server.port: 5601
server.host: "localhost"
server.name: "mykibana"
elasticsearch.hosts: ["http://localhost:9200"]    //连接elasticsearch

在kibana安装目录下输入以下命令在后台启动并查看启动是否成功:

nohup bin/kibana & 
tail -f nohup.out

7.访问http://localhost:9200/nginx-access-2020.02.10/_search //其中的日期是你运行的那一天
发现网页中有nginx的日志信息:

截图

也可以通过elasticsearch的可视化header插件看到信息:
截图

访问http://localhost:5601/(进入kibana),能够查看到elasticsearch的索引信息:

截图

你可能感兴趣的:(ELK集群+filebeat收集nginx日志(linux系统))