最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nginx日志導(dǎo)入elasticsearch的方法示例

 更新時(shí)間:2019年05月26日 08:59:32   作者:zdz  
這篇文章主要介紹了nginx日志導(dǎo)入elasticsearch的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

將nginx日志通過filebeat收集后傳入logstash,經(jīng)過logstash處理后寫入elasticsearch。filebeat只負(fù)責(zé)收集工作,logstash完成日志的格式化,數(shù)據(jù)的替換,拆分 ,以及將日志寫入elasticsearch后的索引的創(chuàng)建。

1、配置nginx日志格式

log_format main    '$remote_addr $http_x_forwarded_for [$time_local] $server_name $request ' 
            '$status $body_bytes_sent $http_referer ' 
            '"$http_user_agent" '
            '"$connection" '
            '"$http_cookie" '
            '$request_time '
            '$upstream_response_time';

2、安裝配置filebeat,啟用nginx module

tar -zxvf filebeat-6.2.4-linux-x86_64.tar.gz -C /usr/local
cd /usr/local;ln -s filebeat-6.2.4-linux-x86_64 filebeat
cd /usr/local/filebeat

啟用nginx模塊

./filebeat modules enable nginx

查看模塊

./filebeat modules list

創(chuàng)建配置文件

vim /usr/local/filebeat/blog_module_logstash.yml
filebeat.modules:
- module: nginx
 access:
  enabled: true
  var.paths: ["/home/weblog/blog.cnfol.com_access.log"]
 #error:
 # enabled: true
 # var.paths: ["/home/weblogerr/blog.cnfol.com_error.log"]


output.logstash:
 hosts: ["192.168.15.91:5044"]

啟動(dòng)filebeat

./filebeat -c blog_module_logstash.yml -e

3、配置logstash

tar -zxvf logstash-6.2.4.tar.gz /usr/local
cd /usr/local;ln -s logstash-6.2.4 logstash
創(chuàng)建一個(gè)nginx日志的pipline文件
cd /usr/local/logstash

logstash內(nèi)置的模板目錄

vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns

編輯 grok-patterns 添加一個(gè)支持多ip的正則

FORWORD (?:%{IPV4}[,]?[ ]?)+|%{WORD}

官方grok

http://grokdebug.herokuapp.com/patterns#

創(chuàng)建logstash pipline配置文件

#input {
# stdin {}
#}
# 從filebeat接受數(shù)據(jù)
input {
 beats {
 port => 5044
 host => "0.0.0.0"
 }
}

filter {
 # 添加一個(gè)調(diào)試的開關(guān)
 mutate{add_field => {"[@metadata][debug]"=>true}}
 grok {
 # 過濾nginx日志
 #match => { "message" => "%{NGINXACCESS_TEST2}" }
 #match => { "message" => '%{IPORHOST:clientip} # (?<http_x_forwarded_for>[^\#]*) # \[%{HTTPDATE:[@metadata][webtime]}\] # %{NOTSPACE:hostname} # %{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion} # %{NUMBER:response} # (?:%{NUMBER:bytes}|-) # (?:"(?:%{NOTSPACE:referrer}|-)"|%{NOTSPACE:referrer}|-) # (?:"(?<http_user_agent>[^#]*)") # (?:"(?:%{NUMBER:connection}|-)"|%{NUMBER:connection}|-) # (?:"(?<cookies>[^#]*)") # %{NUMBER:request_time:float} # (?:%{NUMBER:upstream_response_time:float}|-)' }
 #match => { "message" => '(?:%{IPORHOST:clientip}|-) (?:%{TWO_IP:http_x_forwarded_for}|%{IPV4:http_x_forwarded_for}|-) \[%{HTTPDATE:[@metadata][webtime]}\] (?:%{HOSTNAME:hostname}|-) %{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion} %{NUMBER:response} (?:%{NUMBER:bytes}|-) (?:"(?:%{NOTSPACE:referrer}|-)"|%{NOTSPACE:referrer}|-) %{QS:agent} (?:"(?:%{NUMBER:connection}|-)"|%{NUMBER:connection}|-) (?:"(?<cookies>[^#]*)") %{NUMBER:request_time:float} (?:%{NUMBER:upstream_response_time:float}|-)' }
    match => { "message" => '(?:%{IPORHOST:clientip}|-) %{FORWORD:http_x_forwarded_for} \[%{HTTPDATE:[@metadata][webtime]}\] (?:%{HOSTNAME:hostname}|-) %{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion} %{NUMBER:response} (?:%{NUMBER:bytes}|-) (?:"(?:%{NOTSPACE:referrer}|-)"|%{NOTSPACE:referrer}|-) %{QS:agent} (?:"(?:%{NUMBER:connection}|-)"|%{NUMBER:connection}|-) %{QS:cookie} %{NUMBER:request_time:float} (?:%{NUMBER:upstream_response_time:float}|-)' }
 }
 # 將默認(rèn)的@timestamp(beats收集日志的時(shí)間)的值賦值給新字段@read_tiimestamp
 ruby { 
 #code => "event.set('@read_timestamp',event.get('@timestamp'))"
 #將時(shí)區(qū)改為東8區(qū)
 code => "event.set('@read_timestamp',event.get('@timestamp').time.localtime + 8*60*60)"
 }
 # 將nginx的日志記錄時(shí)間格式化
 # 格式化時(shí)間 20/May/2015:21:05:56 +0000
 date {
 locale => "en"
 match => ["[@metadata][webtime]","dd/MMM/yyyy:HH:mm:ss Z"]
 }
 # 將bytes字段由字符串轉(zhuǎn)換為數(shù)字
 mutate {
 convert => {"bytes" => "integer"}
 }
 # 將cookie字段解析成一個(gè)json
 #mutate {
 # gsub => ["cookies",'\;',',']
 #} 
 # 如果有使用到cdn加速http_x_forwarded_for會(huì)有多個(gè)ip,第一個(gè)ip是用戶真實(shí)ip
 if[http_x_forwarded_for] =~ ", "{
     ruby {
         code => 'event.set("http_x_forwarded_for", event.get("http_x_forwarded_for").split(",")[0])'
        }
    }
 # 解析ip,獲得ip的地理位置
 geoip {
 source => "http_x_forwarded_for"
 # # 只獲取ip的經(jīng)緯度、國家、城市、時(shí)區(qū)
 fields => ["location","country_name","city_name","region_name"] 
 }
 # 將agent字段解析,獲得瀏覽器、系統(tǒng)版本等具體信息
 useragent {
 source => "agent"
 target => "useragent"
 }
 #指定要?jiǎng)h除的數(shù)據(jù)
 #mutate{remove_field=>["message"]}
 # 根據(jù)日志名設(shè)置索引名的前綴
 ruby {
 code => 'event.set("@[metadata][index_pre]",event.get("source").split("/")[-1])'
 } 
 # 將@timestamp 格式化為2019.04.23
 ruby {
 code => 'event.set("@[metadata][index_day]",event.get("@timestamp").time.localtime.strftime("%Y.%m.%d"))'
 }
 # 設(shè)置輸出的默認(rèn)索引名
 mutate {
 add_field => {
  #"[@metadata][index]" => "%{@[metadata][index_pre]}_%{+YYYY.MM.dd}"
  "[@metadata][index]" => "%{@[metadata][index_pre]}_%{@[metadata][index_day]}"
 }
 }
 # 將cookies字段解析成json
# mutate {
# gsub => [
#  "cookies", ";", ",",
#  "cookies", "=", ":"
# ]
# #split => {"cookies" => ","}
# }
# json_encode {
# source => "cookies"
# target => "cookies_json"
# }
# mutate {
# gsub => [
#  "cookies_json", ',', '","',
#  "cookies_json", ':', '":"'
# ]
# }
# json {
# source => "cookies_json"
# target => "cookies2"
# }
 # 如果grok解析存在錯(cuò)誤,將錯(cuò)誤獨(dú)立寫入一個(gè)索引
 if "_grokparsefailure" in [tags] {
 #if "_dateparsefailure" in [tags] {
 mutate {
  replace => {
  #"[@metadata][index]" => "%{@[metadata][index_pre]}_failure_%{+YYYY.MM.dd}"
  "[@metadata][index]" => "%{@[metadata][index_pre]}_failure_%{@[metadata][index_day]}"
  }
 }
 # 如果不存在錯(cuò)誤就刪除message
 }else{
 mutate{remove_field=>["message"]}
 }
}

output {
 if [@metadata][debug]{
 # 輸出到rubydebuyg并輸出metadata
 stdout{codec => rubydebug{metadata => true}}
 }else{
 # 將輸出內(nèi)容轉(zhuǎn)換成 "."
 stdout{codec => dots} 
 # 將輸出到指定的es
 elasticsearch {
  hosts => ["192.168.15.160:9200"]
  index => "%{[@metadata][index]}"
  document_type => "doc"
 } 
 }
}

啟動(dòng)logstash

nohup bin/logstash -f test_pipline2.conf &

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文搞懂Nginx限流(簡(jiǎn)單實(shí)現(xiàn))

    一文搞懂Nginx限流(簡(jiǎn)單實(shí)現(xiàn))

    這篇文章主要介紹了一文搞懂Nginx限流(簡(jiǎn)單實(shí)現(xiàn)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • Kubernetes中Nginx配置熱加載的全過程

    Kubernetes中Nginx配置熱加載的全過程

    Nginx已經(jīng)是互聯(lián)網(wǎng)IT業(yè)界一個(gè)無敵的存在,作為反向代理、負(fù)載均衡、Web服務(wù)器等多種角色的扮演者,下面這篇文章主要給大家介紹了關(guān)于Kubernetes中Nginx配置熱加載的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Nginx雙機(jī)熱備的實(shí)現(xiàn)步驟

    Nginx雙機(jī)熱備的實(shí)現(xiàn)步驟

    本文主要介紹了Nginx雙機(jī)熱備的實(shí)現(xiàn)步驟,是國內(nèi)企業(yè)中最為普遍的一種高可用方案,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • nginx降權(quán)與匹配php詳細(xì)講解

    nginx降權(quán)與匹配php詳細(xì)講解

    大部分網(wǎng)站開發(fā)語言都要運(yùn)行在服務(wù)器,比如主流的nginx、apache等等,下面這篇文章主要給大家介紹了關(guān)于nginx降權(quán)與匹配php的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 關(guān)于Nginx服務(wù)器可視化配置問題

    關(guān)于Nginx服務(wù)器可視化配置問題

    Nginx是一款輕量級(jí)的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,在BSD-like 協(xié)議下發(fā)行,這篇文章主要介紹了Nginx服務(wù)器可視化配置,需要的朋友可以參考下
    2022-10-10
  • Nginx代理proxy pass配置去除前綴的實(shí)現(xiàn)

    Nginx代理proxy pass配置去除前綴的實(shí)現(xiàn)

    這篇文章主要介紹了Nginx代理proxy pass配置去除前綴的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • nginx中用JSON格式記錄日志的配置示例

    nginx中用JSON格式記錄日志的配置示例

    這篇文章主要介紹了nginx中用JSON格式記錄日志的配置示例,其實(shí)就是定義一個(gè)JSON的日志格式,然后在需要的地方調(diào)用即可,需要的朋友可以參考下
    2014-07-07
  • nginx中的location路徑配置(實(shí)路徑和虛路徑)

    nginx中的location路徑配置(實(shí)路徑和虛路徑)

    這篇文章主要介紹了nginx中的location路徑配置(實(shí)路徑和虛路徑),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Nginx 流量控制/限流的具體實(shí)現(xiàn)示例

    Nginx 流量控制/限流的具體實(shí)現(xiàn)示例

    限流是一種流量控制手段,用于限制單位時(shí)間內(nèi)可以通過系統(tǒng)的請(qǐng)求數(shù)或連接數(shù),本文主要介紹了Nginx流量控制/限流的具體實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Nginx實(shí)現(xiàn)404頁面的配置方法的兩種方法

    Nginx實(shí)現(xiàn)404頁面的配置方法的兩種方法

    在使用Nginx作為Web服務(wù)器時(shí),配置404頁面是一項(xiàng)基本需求,本文介紹了兩種配置404頁面的方法,這兩種方法各有特點(diǎn),可以根據(jù)實(shí)際需求選擇適合的配置方式
    2024-09-09

最新評(píng)論

隆安县| 格尔木市| 海盐县| 汪清县| 淮北市| 德昌县| 九台市| 舟曲县| 古蔺县| 原平市| 西峡县| 庆云县| 景宁| 辛集市| 绩溪县| 随州市| 上林县| 全南县| 聊城市| 富蕴县| 苏尼特左旗| 慈溪市| 红河县| 西宁市| 女性| 南京市| 宕昌县| 凤山县| 凤阳县| 寿宁县| 金寨县| 长海县| 甘泉县| 中卫市| 平顺县| 车致| 高阳县| 黎城县| 渝中区| 涪陵区| 枣庄市|