重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
小生博客:http://xsboke.blog.51cto.com
為和平等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及和平網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計、成都做網(wǎng)站、和平網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
-------謝謝您的參考,如有疑問,歡迎交流
目錄
Grok
官方介紹Web
端配置使用filebeat收集nginx訪問日志,output到logstash,
logstash使用grok filter plugin將獲取到的nginx日志結(jié)構(gòu)化
將結(jié)構(gòu)化的nginx日志output到elasticsearch
這里只列出了和grok
相關(guān)的配置,其他配置參考文章ELK7.4-快速入門實現(xiàn)數(shù)據(jù)收集.
web 172.16.100.251 nignx/filebeat/logstash
elasticsearch 172.16.100.252 elasticsearch/kibana
Grok
的官方介紹解析任意文本并將其結(jié)構(gòu)化。
Grok
是將非結(jié)構(gòu)化日志數(shù)據(jù)解析為結(jié)構(gòu)化和可查詢內(nèi)容的好方法。
該工具非常適合syslog
日志,apache
和其他Web
服務(wù)器日志,MySQL
日志,以及通常用于人類而非計算機使用的任何日志格式。
Grok
語法:%{SYNTAX:SEMANTIC}
SYNTAX
:匹配語法,也就是Grok
語法.附:點擊查看:Grok PatternsSEMANTIC
:用于標(biāo)識匹配到的字符串,也就是field
.官方推薦的一個驗證Grok語法的web工具,使用方法,將需要解析的字符串寫入到第一個文本輸入框,將寫好的Grok表達式寫入第二個輸入框,然后勾選Named Captures Only
即可.
示例:
Nginx Log Format
:$request_time|$host|$remote_addr|[$time_local]
Nginx Log
:0.123|baidu.com|192.168.0.1|[18/Oct/2019:11:22:14 +0800]
web
配置Nginx Log Format
# 這里的日志格式比較復(fù)雜,是為了更好的展示Grok
log_format access '$request_time|$host|$remote_addr|$remote_user|[$time_local]|$request|$status|$upstream_status|$upstream_response_time|$upstream_addr|$body_bytes_sent|$request_body|$http_referer|$http_user_agent|$http_x_forwarded_for|$http_x_forwarded_path,$server_addr|$upstream_cache_status';
filebeat
vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/jpg_access.log
tags: ["nginx_access"]
logstash
vim /etc/logstash/conf.d/nginx.conf
input {
beats {
port => 5044
}
}
filter {
if "nginx_access" in [tags] {
grok {
match => { "message" => "%{NUMBER:request_time}\|%{IPORHOST:host}\|%{IPORHOST:remote_addr}\|%{USERNAME:remote_user}\|\[%{HTTPDATE:time_local}\]\|%{NOTSPACE:request_method} %{NOTSPACE:request} (?:HTTP/%{NUMBER:http_version})\|%{NUMBER:status}\|%{NUMBER:upstream_status}\|%{NUMBER:upstream_response_time}\|%{NOTSPACE:upstream_addr}\|%{NUMBER:body_bytes_sent}\|%{NOTSPACE:request_body}\|%{NOTSPACE:http_referer}\|%{GREEDYDATA:http_user_agent}\|%{NOTSPACE:http_x_forwarded_for}\|%{NOTSPACE:http_x_forwarded_path}\|%{NOTSPACE:upstream_cache_status}" }
}
geoip {
source => "http_x_forwarded_for" # 通過geoip庫查詢IP歸屬地
}
}
}
output {
if "nginx_access" in [tags] {
elasticsearch {
hosts => ["172.16.100.252"]
index => "nginx_access-%{+YYYY.MM.dd}"
}
}
}
然后在Kibana
上面添加索引,在Discover
頁面就會看多自定義的fields
這樣在更利于后期的數(shù)據(jù)分析,并且在Discover
頁面可以更直觀的過濾或者查看數(shù)據(jù).