当前位置:   article > 正文

ELK数据分析

elk数据分析

一、ELK概述

 

ELK是三个开源软件的缩写,分别表示:Elasticsearch,logstash,kibana。

ELK通常用来构建日志分析平台、数据分析搜索平台等

 

官方文档

官方文档

 

组件介绍

Elasticsearch是一个开源的分布式全文检索和数据分析平台,它的特点是:分布式、零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,负载均衡等特点。

Kibana 是一个针对elasticearch的开源的数据分析及可视化数据平台,用来搜索、查看交互存储在elasticsearch中的数据,使用kibana,可以通过各种图表进行高级数据分析及展示。

Logstash是一款基于插件的数据收集和处理引擎。Logstash配有大量的插件,以便人们能够轻松进行配置以在多种不同的架构中收集、处理并转发数据。

Beats轻量的数据收集处理工具(Agent),具有占用资源少的优点,适合于各个服务 器上采集数据后传输给Logstash,官方也推荐此工具。Beats有多种类型,比较常用的是FileBeats。

 

组件关系图

 

二 、Logstash详解

 

架构图

处理过程可分为一个或多个管道,在每个管道中,会有一个或多个输入插件接收或收集数据,然后这些数据会加入内部队列。默认情况下,这些数据很少会储存在内存中,但是为了提高可靠性和弹性,也可以进行配置以扩大规模并长期存储在磁盘上。

处理线程会以小批量的形式从队列中读取数据,并通过任何配置的过滤插件按顺序进行处理。Logstash自带大量的插件,能够满足特定类型的操作需要,也就是解析、处理并丰富数据的过程。

处理完数据后,处理线程会将数据发送到输出插件,这些插件负责对数据进行格式化并进一步发送数据 。(例如发送到Elasticsearch)

安装LogStash

任何Logstash配置都必须至少包括一个输入插件和一个输出插件。过滤插件是可选项。

解压安装

  1. tar -zxvf logstash-6.4.0.tar.gz -C /usr
  2. #移动至安装目录
  3. cd /usr/logstash-6.4.0/
  4. #创建并编辑配置文件
  5. vi config/simple.conf

配置本地文件

  1. # 第一个案例 配置内容如下
  2. input {
  3. file {
  4. path => ["/root/testdata.log"] # 需要采集数据的文件
  5. sincedb_path => "/dev/null"
  6. start_position => "beginning" # 头开始读取文件
  7. }
  8. }
  9. filter {
  10. }
  11. output {
  12. stdout {
  13. codec => rubydebug #输出位置为控制台
  14. }
  15. }

启动测试

  1. #指定配置文件,并启动
  2. bin/logstash -r -f config/simple.conf

 

三、使用Logstash解析Nignx日志

 

安装Nginx

  1. # 需要安装gcc,安装gcc命令
  2. yum install gcc-c++ perl-devel pcre-devel openssl-devel zlib-devel wget

 

日志格式分析

192.168.23.1客户端地址

- 客户端用户名

【07/Jan/2019:03:38:21 -0500】 服务器时间

GET /favicon.ico HTTP/1.1 请求内容

404 返回的http状态码

571 返回的大小

http://192.168.23.143/  可以记录用户是从哪个链接访问过来的。

Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36 用户所使用的代理(一般为浏览器)

 

使用Grok插件解析数据

Grok插件用来将非结构化的数据解析为结构化数据

官方文档:https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html

解析工具:http://grokdebug.herokuapp.com/

更多语法参考:https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns

 

修改logstash配置文件,内容如下:

  1. input {
  2. file {
  3. path => ["/usr/local/nginx/logs/access.log"]
  4. sincedb_path => "/dev/null"
  5. start_position => "beginning"
  6. }
  7. }
  8. filter {
  9. grok {
  10. match =>{
  11. "message" => "%{IPORHOST:client_ip} - %{USER:auth} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:http_referer} %{QS:http_user_agent}"
  12. }
  13. }
  14. geoip {
  15. source => "client_ip"
  16. }
  17. date {
  18. match => [ "time" , "dd/MMM/YYYY:HH:mm:ss Z" ]
  19. }
  20. }
  21. output {
  22. stdout {
  23. codec => rubydebug
  24. }
  25. }

geoip:使用GeoIP数据库对client_ip字段地址进行解析,可得出该IP的经纬度、国家与城市等信息,但是精确度不高,这主要依赖于GeoIP数据库。

date:默认情况下,elasticsearch内记录的date字段是elasticsearch接收到该日志的时间,但在实际应用中需要修改为日志中所记录的时间。这时候需要指定记录的字段并指定时间格式。如果匹配成功,则将日志的时间替换至字段中。

 

四、使用ELK搭建日志采集分析平台

Filebeat安装

安装

  1. #安装
  2. tar -zxvf filebeat-6.4.0-linux-x86_64.tar.gz -C /usr

 

配置

vi /usr/filebeat-6.4.0-linux-x86_64/filebeat.yml

 

  1. 21 - type: log
  2. 22
  3. 23 # Change to true to enable this input configuration.
  4. 24 enabled: true
  5. 25
  6. 26 # Paths that should be crawled and fetched. Glob based paths.
  7. 27 paths:
  8. 28 - /usr/local/nginx/logs/access*.log

 

修改第145行。日志传输给logstash

 

书写Logstash配置文件

  1. # 配置输入为 beats
  2. input {
  3. beats {
  4. port => "5044"
  5. }
  6. }
  7. # 数据过滤 解析
  8. filter {
  9. grok {
  10. match =>{
  11. "message" => "%{IPORHOST:client_ip} - %{USER:auth} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:http_referer} %{QS:http_user_agent}"
  12. }
  13. }
  14. geoip {
  15. source => "client_ip"
  16. }
  17. date {
  18. match => [ "time" , "dd/MMM/YYYY:HH:mm:ss Z" ]
  19. }
  20. }
  21. # 输出到本机的 ES
  22. output {
  23. elasticsearch {
  24. hosts => [ "192.168.23.143:9200" ]
  25. index => "logs-%{+YYYY.MM.dd}"
  26. }
  27. }

如果配置文件没有问题,可能是配置文件的格式不对。里面含有空格,粘贴的时候一定要删除出现的乱码。

出错的时候查看报错的文件提示在第几行,修改报错行。

启动服务测试

 

启动logstash

bin/logstash -r -f config/elk.conf

 

启动:filebeat

  1. # 启动filebeat
  2. ./filebeat

 

五、深度分页解决方案

推荐:深度分页解决方案

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/934186
推荐阅读
相关标签
  

闽ICP备14008679号