ELK单机搭建与使用(二)

01 前言   

    上期我们演示了怎样安装单机版ELK:ELK单机搭建与使用(一),现在用这个平台来收集日志。nginx经常被用于反向代理,我们来试试收集它的相关日志。

    本文转自我个人的公众号:天目星    ,请大家多多关注。


一、使用的软件版本与架构图

    linux: CentOS 7.5.1804

    ElasticSearch: elasticsearch-6.2.4

    Logstash: logstash-6.2.4

    Kibana: kibana-6.2.4

    filebeat: filebeat-6.2.4

    服务器

    ELK服务端: 192.168.0.1

    Shipper端: 192.168.0.2


二、安装软件

ELK的beats组件常用的有以下几种:

filebeat:进行文件和目录采集,可用于收集日志数据。

heartbeat:系统间连通性检测,可收集icmp, tcp, http等系统的连通性情况。

Winlogbeat:专门针对windows的事务日志的数据采集。

packetbeat:通过网络抓包、协议分析,收集网络相关数据。

metricbeat:进行指标采集,主要用于监控系统和软件的性能。(系统、中间件等)


在Shipper端安装filebeat

rpm -ivh filebeat-6.2.4-x86_64.rpm

三、配置与启动

我们使用filebeat收集本机的nginx日志

编辑:vim /etc/filebeat/filebeat.yml

###################### Filebeat Configuration Example ######filebeat.prospectors:- type: log  enabled: true  paths:    - /usr/local/nginx/logs/nginx_access.log  fields:    log_source: 192.168.159.31-nginx
#------------------ Logstash output -----------------------## 输出至logstashoutput.logstash:  # The Logstash hosts  hosts: ["192.168.0.1:5000"]  index: "filebeat"

对应的logstash服务端,也要配置入口

编辑:vim /etc/logstash/conf.d/nginx.conf

input {  # 配置入口监听端口  beats {    port => 5000  }}filter {  # 配置过滤器    grok {  # 定义日志的输出格式        match => { "message" => "%{IPORHOST:http_host} %{IPORHOST:clientip} - %{USERNAME:remote_user} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:http_verb} %{NOTSPACE:http_request}(?: HTTP/%{NUMBER:http_version})?|%{DATA:raw_http_request})\" %{NUMBER:response} (?:%{NUMBER:bytes_read}|-) %{QS:referrer} %{QS:agent} %{QS:xforwardedfor} %{NUMBER:request_time:float}"}    }    geoip {        source => "clientip"    }}output {  # 配置ES主机与index信息    stdout { codec => rubydebug }    elasticsearch {        hosts => ["192.168.0.1:9200"]        index => "nginx-test-%{+YYYY.MM.dd}"  }}

配置好重启logstash服务

回到Shipper端,配置nginx

# 在http中添加如下配置http {
...省略...# 新增收集的日志根式log_format test '$http_host $remote_addr - $remote_user [$time_local] "$request" '                '$status $body_bytes_sent "$http_referer" '                '"$http_user_agent" "$http_x_forwarded_for"';
# 在server中新增网站,访问此站点的用户反向代理至Kibana服务器   server {   listen 8888;      server_name www.test.com;
      location / {          proxy_pass http://192.168.0.1:5601;          proxy_set_header Host $host;          proxy_set_header X-Real-IP $remote_addr;          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;      }            access_log logs/nginx_access.log test;  #日志路径    }    ...省略...}

重启nginx服务并访问此站点生成日志

http://www.test.com:8888


查收生成的日志

tail /usr/local/nginx/logs/nginx_access.log
### nginx_access.log ###... 省略...www.test.com:8888 192.168.159.1 - - [22/Apr/2019:11:11:28 +0800] "GET /ui/favicons/favicon-32x32.png HTTP/1.1" 304 0 "http://www.test.com:8888/app/kibana" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" "-"www.test.com:8888 192.168.159.1 - - [22/Apr/2019:11:11:28 +0800] "GET /ui/favicons/favicon-16x16.png HTTP/1.1" 304 0 "http://www.test.com:8888/app/kibana" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" "-"www.test.com:8888 192.168.159.1 - - [22/Apr/2019:11:11:31 +0800] "GET /ui/favicons/favicon-32x32.png HTTP/1.1" 304 0 "http://www.test.com:8888/app/kibana" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" "-"www.test.com:8888 192.168.159.1 - - [22/Apr/2019:11:11:31 +0800] "GET /ui/favicons/favicon-32x32.png HTTP/1.1" 304 0 "http://www.test.com:8888/app/kibana" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" "-"www.test.com:8888 192.168.159.1 - - [22/Apr/2019:11:11:31 +0800] "GET /ui/favicons/favicon-16x16.png HTTP/1.1" 304 0 "http://www.test.com:8888/app/kibana" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" "-"

四、在kibana中配置index收集nginx日志

进入kibana


创建index

选择需建立的index

设置过滤条件

完成index的建立

点击Discover发现日志没有找到,原来没有选择需要查看的index

可以看到日志了


02 结尾   

   此篇文章只是简单的介绍收集客户端日志的原理,让大家有一个初步的体验。在后期我还会演示ELK的其他项目,请大家继续关注。

请关注我的个人公众号

猜你喜欢

转载自blog.csdn.net/Gordon_luo/article/details/92803239