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的索引信息: