摘要:是一個完全開源的工具,他可以對你的日志進行收集分析,并將其存儲供以后使用。也是一個開源和免費的工具,他可以為和提供的日志分析友好的界面,可以幫助您匯總分析和搜索重要數據日志。
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文件名稱 } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39461.html
摘要:問題初衷最近有個項目需求,需要統計下用戶的使用情況,比如什么時候登錄的,查詢了什么內容等信息。缺點擴展能力需要靠自己設計,統計展示畫面需要自己做。可輕松應對分布式,數據量大的情況。通過,如下修改,在重啟后又會恢復原值。 問題初衷 最近有個項目需求,需要統計下用戶app的使用情況,比如:什么時候登錄的,查詢了什么內容等信息。 解決方案 1.定義用戶軌跡模型,每步操作都寫到數據庫中,然后在...
摘要:編者的話產品經理為了紀念四歲生日,撰寫一系列文章,介紹如何使用收集和處理環境日志。在將日志發送到的上下文中,使用日志驅動可能是最簡單的方法。如果使用或日志記錄驅動程序,則需要將定義為輸入。 [編者的話] Daniel Berman ( Logz.io 產品經理)為了紀念 Docker 四歲生日,撰寫一系列文章,介紹如何使用 ELK 收集和處理 Dockerized 環境日志。小數今天...
摘要:日志監控和分析在保障業務穩定運行時,起到了很重要的作用。本文搭建的的是一個分布式的日志收集和分析系統。對于隊列上的這些未處理的日志,有不同的幾臺進行接收和分析。再由統一的進行日志界面的展示。如等配置文件可以配置,等日志報表可視化熟練 ELK簡介ELKStack即Elasticsearch + Logstash + Kibana。日志監控和分析在保障業務穩定運行時,起到了很重要的作用。比...
閱讀 1402·2021-11-22 09:34
閱讀 1378·2021-09-22 14:57
閱讀 3400·2021-09-10 10:50
閱讀 1372·2019-08-30 15:54
閱讀 3690·2019-08-29 17:02
閱讀 3472·2019-08-29 12:54
閱讀 2611·2019-08-27 10:57
閱讀 3316·2019-08-26 12:24