ELK集群+filebeat收集nginx日志
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压缩包后依次运行以下命令完成安装:
1 | tar -zxvf nginx-1.16.1.tar.gz //解压 |
运行成功后访问http://localhost:80(nginx默认启动占用80端口),出现以下图片内容即为安装成功:
2.修改nginx日志的打印格式为json
1 | cd /usr/local/nginx/conf/ //进入nginx配置文件目录 |
将以下代码放到http大括号内:
1 | log_format access_json '{ "@timestamp": "$time_iso8601", ' |
然后在对应的server大括号内增加以下代码完成json格式化:
1 | access_log /usr/local/nginx/logs/access_json.log access_json; |
并在/usr/local/nginx/logs/目录下创建access_json.log文件,然后重启运行以下命令重启nginx:
1 | cd /usr/local/nginx/sbin |
再次访问http://localhost/,然后查看/usr/local/nginx/logs下的日志文件,对比默认的access.log和修改过的access_json.log,可以发现日志文件成功json化:
3.配置elasticsearch
进入elasticsearch安装目录下的config文件夹,往里面的elasticsearch.yml添加以下代码:
1 | cluster.name: <这里输入自定义的集群名称> |
进入elasticsearch的安装目录并输入以下命令在后台启动:
1 | ./bin/elasticsearch |
4.配置filebeat
在filebeat目录下的filebeat中对应位置修改以下代码为:
1 | filebeat.inputs: |
1 | output.logstash: |
在filebeat安装目录下输入以下命令在后台启动并查看启动是否成功:
1 | nohup ./filebeat -e -c filebeat.yml -d "publish" & |
5.配置logstash
在logstash 目录下创建一个nginx_logs.conf文件,其内容如下:
1 | # 监听5044端口作为输入 |
在logstash安装目录下输入以下命令在后台启动并查看启动是否成功:
1 | nohup bin/logstash -f nginx_logs.conf & |
6.配置kibana
修改config目录下的kibana.yml文件为:
1 | server.port: 5601 |
在kibana安装目录下输入以下命令在后台启动并查看启动是否成功:
1 | nohup bin/kibana & |
7.访问
打开http://localhost:9200/nginx-access-2020.02.10/_search //其中的日期是你运行的那一天
发现网页中有nginx的日志信息:
也可以通过elasticsearch的可视化header插件看到信息:
访问http://localhost:5601/(进入kibana),能够查看到elasticsearch的索引信息: