摘要:是一个完全开源的工具,他可以对你的日志进行收集分析,并将其存储供以后使用。也是一个开源和免费的工具,他可以为和提供的日志分析友好的界面,可以帮助您汇总分析和搜索重要数据日志。
ELK 由 ElasticSearch 、 Logstash 和 Kiabana 三个开源工具组成。官方网站: https://www.elastic.co/products
Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制, restful 风格接口,多数据源,自动搜索负载等。 Logstash 是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用。 kibana 也是一个开源和免费的工具,他 Kibana 可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
elk工作流程:
数据--[输入数据]-->Logstash--[过滤输出数据]-->Elasticsearch--[展示分析数据]-->kibana
这里主要说下Logstash的配置(其他安装配置都比较简单,且文档丰富)
常规日志格式
1、 首先是配置Nginx访问日志的格式,根据日志分析需求配置
log_format access "$http_host $remote_addr - $remote_user [$time_local] "$request" " "$status $body_bytes_sent "$http_referer" " ""$http_user_agent" " "$request_time $upstream_response_time " ""$http_x_forwarded_for"";
2、 Logstash,它主要是连接数据和es的管道,一切数据源,过滤,输出地址均在logstash配置文件中进行配置,写配置文件的时候需要根据elk的版本号对应配置,比如我在配置过程中filter中没有type设置项,执行时就会有报错,可以根据报错信息进行对应修改
input { file { path => "/Users/User/log/access.log" type => "web_nginx_access" } } filter { if [type] == "web_nginx_access" { grok { match => [ "message", "%{IPORHOST:http_host} %{IPORHOST:user_ip} - - [%{HTTPDATE:timestamp}] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion:float})?|%{DATA:rawrequest})" %{NUMBER:response:int} (?:%{NUMBER:bytes:int}|-) %{QS:referrer} %{QS:useragent} (?:%{NUMBER:request_time:float}|-) (?:%{NUMBER:upstream_time:float}|-)" ] } } geoip { source => "user_ip" } if [type] == "web_nginx_access" { date { match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ] } } useragent { target => "ua" source => "useragent" } } output { elasticsearch { hosts => "127.0.0.1" index => "logstash-web_nginx_access-%{+YYYY.MM.dd}" } }
Json日志格式
1、nginx配置使用json格式,logstash的配置会非常简单
2、logstash配置
input { file { path => "/Users/User/log/access.log" type => "web_nginx_access" start_position => beginning codec => "json" } } filter { } output { elasticsearch { hosts => "127.0.0.1" index => "logstash-web_nginx_access-%{+YYYY.MM.dd}" } }
自定义格式
1、例如程序记录的日志格式是这样的:[NOTICE] [2017-04-05 12:00:00] [404] [/index.php] [500] [id=123&btime=2017&etime=2018] [路径不存在];就可以在logstash自定义正则匹配,重命名字段
2、logstash配置
input { file { path => ["/opt/logs/applog/applog_*.log", "***.log"] #日志路径,可以是数组形式 start_position => beginning #从日志开始位置导入数据 sincedb_path => "/etc/logstash/conf.d/sincedb" #存储导入进度,删除后会重新导入所有数据 } } filter { grok { match => { "message" => "(?[(.*?)])s*(? [(.*?)])s*(? [(.*?)])s*(? [(.*?)])s*(? [(.*?)])s*(? [(.*?)])s*(? [(.*?)])s*"} #匹配规则,match可以是多个,自动匹配合适的规则表达式 } } output { elasticsearch { hosts => "127.0.0.1:9200" index => "logstash-%{+YYYY.MM.dd}" #生成es文件名称 } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/39461.html
摘要:问题初衷最近有个项目需求,需要统计下用户的使用情况,比如什么时候登录的,查询了什么内容等信息。缺点扩展能力需要靠自己设计,统计展示画面需要自己做。可轻松应对分布式,数据量大的情况。通过,如下修改,在重启后又会恢复原值。 问题初衷 最近有个项目需求,需要统计下用户app的使用情况,比如:什么时候登录的,查询了什么内容等信息。 解决方案 1.定义用户轨迹模型,每步操作都写到数据库中,然后在...
摘要:编者的话产品经理为了纪念四岁生日,撰写一系列文章,介绍如何使用收集和处理环境日志。在将日志发送到的上下文中,使用日志驱动可能是最简单的方法。如果使用或日志记录驱动程序,则需要将定义为输入。 [编者的话] Daniel Berman ( Logz.io 产品经理)为了纪念 Docker 四岁生日,撰写一系列文章,介绍如何使用 ELK 收集和处理 Dockerized 环境日志。小数今天...
摘要:日志监控和分析在保障业务稳定运行时,起到了很重要的作用。本文搭建的的是一个分布式的日志收集和分析系统。对于队列上的这些未处理的日志,有不同的几台进行接收和分析。再由统一的进行日志界面的展示。如等配置文件可以配置,等日志报表可视化熟练 ELK简介ELKStack即Elasticsearch + Logstash + Kibana。日志监控和分析在保障业务稳定运行时,起到了很重要的作用。比...
阅读 1401·2021-11-22 09:34
阅读 1377·2021-09-22 14:57
阅读 3399·2021-09-10 10:50
阅读 1369·2019-08-30 15:54
阅读 3689·2019-08-29 17:02
阅读 3471·2019-08-29 12:54
阅读 2608·2019-08-27 10:57
阅读 3315·2019-08-26 12:24