日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ELK-使用nxlog+filebeat采集不同类型的日志输出到logstash

發(fā)布時(shí)間:2023/12/31 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ELK-使用nxlog+filebeat采集不同类型的日志输出到logstash 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

ELK-使用nxlog+filebeat采集不同類(lèi)型的日志輸出到logstash

文章目錄

    • ELK-使用nxlog+filebeat采集不同類(lèi)型的日志輸出到logstash
  • 前言
  • 正常的采集配置
  • 開(kāi)啟多個(gè)端口監(jiān)聽(tīng)
  • 優(yōu)化nxlog(關(guān)鍵字放在開(kāi)頭)
  • 再優(yōu)化nxlog(關(guān)鍵字放在結(jié)尾)
  • 使用filebeat

前言

網(wǎng)絡(luò)上有很例子給出一示例是采集一種類(lèi)型的日志輸出到logstash,但一個(gè)系統(tǒng)上日志種類(lèi)很多,同一個(gè)采集端能區(qū)分不同日志類(lèi)型嗎?
下面的結(jié)構(gòu)是nxlog做客戶端采集,通過(guò)tcp協(xié)議發(fā)送到logstash,然后logstash傳輸?shù)絜lasticsearch。
前提條件必需:

  • 安裝好elasticsearch,logstash,nxlog,filebeat
  • nxlog/filebeats安裝在windows系統(tǒng),elasticsearch/logstash安裝在linux系統(tǒng)
  • 正常的采集配置

    nxlog配置nxlog.conf:

    <Input in_donglilog>Module im_fileFile "D:\\jar\\dongli\\logs\\spring-boot.log"SavePos TRUE </Input><Output out_donglitcp>Module om_tcpHost 192.168.1.238Port 514 </Output><Route 1>Path in_donglilog => out_donglitcp </Route>

    采集D:\jar\dongli\logs\spring-boot.log日志,輸出到192.168.1.238:514上

    logstash配置:

    input {tcp {port => 514type=>"plm"} } output{if [type] == "plm"{elasticsearch {hosts => ["127.0.0.1:9200"]index => "kelian-%{+YYYY.MM.dd}"}} }

    通過(guò)tcp協(xié)議監(jiān)控514端口,這時(shí)候logstash工作mode是server(另一個(gè)工作mode是client,用于采集并發(fā)送數(shù)據(jù)),是監(jiān)控514端口數(shù)據(jù)的。
    網(wǎng)上例子多數(shù)止步于些,監(jiān)聽(tīng)一個(gè)端口,然后接收數(shù)據(jù),發(fā)送到elasticsearch。
    假設(shè),我們不僅僅監(jiān)控dongli的日志D:\jar\dongli\logs\spring-boot.log日志,我還監(jiān)聽(tīng)另一個(gè)系統(tǒng)日志,假設(shè)應(yīng)用為kelian。這2個(gè)日志格式不一樣。nxlog配置相對(duì)簡(jiǎn)單,主要是logstash怎么能區(qū)分接收的不同日志,在elasticsearch創(chuàng)建不同的index。總不能把2個(gè)應(yīng)用日志輸出到同一個(gè)index吧。

    開(kāi)啟多個(gè)端口監(jiān)聽(tīng)

    這個(gè)方法最簡(jiǎn)單,不同應(yīng)用開(kāi)啟不同端口監(jiān)控
    nxlog配置

    <Input in_donglilog>Module im_fileFile "D:\\jar\\dongli\\logs\\spring-boot.log"SavePos TRUE </Input><Output out_donglitcp>Module om_tcpHost 192.168.1.238Port 514 </Output><Route 1>Path in_donglilog => out_donglitcp </Route><Input in_kelianlog>Module im_fileFile "D:\\jar\\kelaien\\logs\\spring-boot.log"SavePos TRUE </Input><Output out_keliantcp>Module om_tcpHost 192.168.1.238Port 515 </Output> <Route 2>Path in_kelianlog => out_keliantcp </Route>

    logstash配置:

    input {tcp {port => 514type=>"dongli"}tcp {port => 515type=>"kelian"} } output{if [type] == "dongli"{elasticsearch {hosts => ["127.0.0.1:9200"]index => "dongli-%{+YYYY.MM.dd}"}}if [type] == "kelian"{elasticsearch {hosts => ["127.0.0.1:9200"]index => "kelian-%{+YYYY.MM.dd}"}} }

    最簡(jiǎn)單,但我不希望這么做,因?yàn)槊吭黾右粋€(gè)應(yīng)用就會(huì)增加一個(gè)端口,而增加一個(gè)端口就要增加這個(gè)端口對(duì)外開(kāi)放,如果是阿里云ECS,還要修改安全組規(guī)則。個(gè)人覺(jué)得麻煩,但是這也不失為一種可選方式

    優(yōu)化nxlog(關(guān)鍵字放在開(kāi)頭)

    要是能攜帶一個(gè)數(shù)據(jù)區(qū)分發(fā)送日志類(lèi)型就好了。遺憾的是,nxlog并沒(méi)有提供這種選項(xiàng),怎么辦?
    修改傳輸?shù)臄?shù)據(jù)。
    nxlog每讀一行發(fā)送到logstash,在每行日志前加個(gè)特殊的字符串,然后logstash截取這個(gè)字符串,根據(jù)這個(gè)特殊的字符串創(chuàng)建不同的index。

    原理是logstash字符引用,只要是input輸入的值,都可以引用

    nxlog配置:

    <Input in_donglilog>Module im_fileFile "D:\\jar\\dongli\\logs\\spring-boot.log"SavePos TRUE </Input> <Input in_kelianlog>Module im_fileFile "D:\\jar\\kelaien\\logs\\spring-boot.log"SavePos TRUE </Input><Processor proc_donglilog>Module pm_transformerExec $raw_event = "dongli " + $raw_event; </Processor> <Processor proc_kelianlog>Module pm_transformerExec $raw_event = "kelian " + $raw_event; </Processor><Output out_donglitcp>Module om_tcpHost 192.168.1.238Port 514 </Output><Output out_keliantcp>Module om_tcpHost 192.168.1.238Port 514 </Output><Route 1>Path in_donglilog => proc_donglilog => out_donglitcp </Route><Route 2>Path in_kelianlog => proc_kelianlog => out_keliantcp </Route>

    通過(guò)Processor模塊,在每行日志行都添加了應(yīng)用名。
    logstash配置:

    input {tcp {port => 514type=>"plm"} } filter{if [type] == "plm" {grok{match=>{"message" => "%{WORD:key} %{WORD}"}}mutate{gsub=>["message","%{key}",""]}} } output{if [type] == "plm"{if [key] == "dongli" { elasticsearch {hosts => ["127.0.0.1:9200"]index => "dongli-%{+YYYY.MM.dd}"}}if [key] == "kelian" { elasticsearch {hosts => ["127.0.0.1:9200"]index => "kelian-%{+YYYY.MM.dd}"}}} }

    處理的關(guān)鍵在過(guò)濾器代碼中

    grok{match=>{#拿到應(yīng)用名"message" => "%{WORD:key} %{WORD}"}}mutate{#將message里應(yīng)用名替換為空gsub=>["message","%{key}",""]}

    在output里就可以使用字段引用功能做判斷了

    if [type] == "plm"{if [key] == "dongli" { }if [key] == "kelian" { }}

    缺點(diǎn)
    有個(gè)缺點(diǎn),只對(duì)單行日志有作用,如果有多行合并為一行的異常日志就不適合,因?yàn)閷㈥P(guān)鍵字添加到行頭,破壞了數(shù)據(jù)完。
    當(dāng)使用multiline插件過(guò)濾輸入數(shù)據(jù)時(shí),行頭沒(méi)辦法區(qū)分,當(dāng)使用multiline插件,合并多行時(shí)會(huì)出問(wèn)題。

    codec => multiline{#以[開(kāi)頭視為一行pattern => "^["negate => truewhat => "previous"}

    再優(yōu)化nxlog(關(guān)鍵字放在結(jié)尾)

    如果把關(guān)鍵字放在每行的結(jié)尾呢
    nxlog配置:

    <Input in_donglilog>Module im_fileFile "D:\\jar\\dongli\\logs\\spring-boot.log"SavePos TRUE </Input> <Input in_kelianlog>Module im_fileFile "D:\\jar\\kelaien\\logs\\spring-boot.log"SavePos TRUE </Input><Processor proc_donglilog>Module pm_transformerExec $raw_event = $raw_event + "(dongli)"; </Processor> <Processor proc_kelianlog>Module pm_transformerExec $raw_event = $raw_event + "(kelian)"; </Processor><Output out_donglitcp>Module om_tcpHost 192.168.1.238Port 514 </Output><Output out_keliantcp>Module om_tcpHost 192.168.1.238Port 514 </Output><Route 1>Path in_donglilog => proc_donglilog => out_donglitcp </Route><Route 2>Path in_kelianlog => proc_kelianlog => out_keliantcp </Route>

    注意代碼

    <Processor proc_donglilog>Module pm_transformerExec $raw_event = $raw_event + "(dongli)"; </Processor> <Processor proc_kelianlog>Module pm_transformerExec $raw_event = $raw_event + "(kelian)"; </Processor>

    關(guān)鍵放在行尾并用小括號(hào)括起來(lái)。
    logstash配置:

    input {tcp {port => 514codec => multiline{pattern => "^\d{4}(\-|\/|.)\d{1,2}\1\d{1,2}"negate => truewhat => "previous"}type=>"plm"} } filter{if [type] == "plm" {grok{match=>{"message" => "(?<ckey>[(]\w+[)\\r])"}}mutate{gsub=>["message","[(]%{ckey}[)]",""]#gsub=>["ckey","\r",""]}} } output{if [type] == "plm"{if [ckey] == "(dongli)" { elasticsearch {hosts => ["127.0.0.1:9200"]index => "dongli-%{+YYYY.MM.dd}"}}if [ckey] == "(kelian)" { elasticsearch {hosts => ["127.0.0.1:9200"]index => "kelian-%{+YYYY.MM.dd}"}}} }

    主要的處理在過(guò)濾器里

    if [type] == "plm" {grok{match=>{"message" => "(?<ckey>[(]\w+[)\\r])"}}mutate{gsub=>["message","[(]%{ckey}[)]",""]}}

    拿到關(guān)鍵字,然后把message字段里關(guān)鍵刪除。
    這種方式也不失為一種解決方案,但不絕不是優(yōu)雅的方案

    使用filebeat

    它天生可多攜帶關(guān)鍵字,而且在windows運(yùn)行也很穩(wěn)定,所以我推薦使用filebeat替代nxlog。
    filebeat.yml配置:

    filebeat.inputs: - type: logenabled: truepaths:- D:\jar\dongli\logs\spring-boot.loggfields:appname: dongli - type: logenabled: truepaths:- D:\jar\kelaien\logs\spring-boot.logfields:appname: kelaien

    logstash配置

    input{beats {port => 515type=>"beatss"} }output{if [fields][appname] == "dongli"{elasticsearch {hosts => ["127.0.0.1:9200"]index => "dongli-%{+YYYY.MM.dd}"}}if [fields][appname] == "kelaien"{elasticsearch {hosts => ["127.0.0.1:9200"]index => "kelaien-%{+YYYY.MM.dd}"}} }

    上面對(duì)應(yīng)的是單行日志,如果是多行日志,它的配置放在filebeats而不是logstash
    filebeat.yml配置:

    filebeat.inputs: - type: logenabled: truepaths:- D:\jar\dongli\logs\spring-boot.loggmultiline:pattern: '^\d{4}-\d{1,2}-\d{1,2}'negate: truematch: afterfields:appname: dongli - type: logenabled: truepaths:- D:\jar\kelaien\logs\spring-boot.logmultiline:pattern: '^\d{4}-\d{1,2}-\d{1,2}'negate: truematch: afterfields:appname: kelaien

    多行的關(guān)鍵代碼是

    multiline:pattern: '^\d{4}-\d{1,2}-\d{1,2}'negate: truematch: after

    總結(jié)

    以上是生活随笔為你收集整理的ELK-使用nxlog+filebeat采集不同类型的日志输出到logstash的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日韩精品一区二区电影 | 亚洲精品一区二区三区蜜桃久 | 蜜桃综合网 | 欧美人与性动交g欧美精器 国产在线视频91 | porn国产| 99久久99久久精品国产片 | 三级三级久久三级久久18 | 奇米色在线 | 国产精品亚洲а∨天堂免在线 | 久久久欧洲 | 亚洲理伦 | 成人午夜精品无码区 | 色婷婷综合久久久中文字幕 | 久久免费看毛片 | 少妇搡bbbb搡bbb搡小说 | 小香蕉影院| 日韩无 | 午夜影院污 | 欧美久久久久久又粗又大 | 亚洲精品乱码久久久久久久久久久久 | 三上悠亚在线一区 | av加勒比在线 | 成人性做爰aaa片免费看不忠 | 99黄色 | 国产乱强伦一区二区三区 | 成人片网址 | 动漫裸体无遮挡 | 精品欧美一区二区三区久久久 | 天天射天天草 | 91蝌蚪 | 一级香蕉视频在线观看 | 欧美成年人网站 | 欧美a在线视频 | av狠狠操| 成人国产欧美 | 黄网站视频在线观看 | 成人免费一区二区 | 99re7| 久久久久久久久久久97 | 91亚色在线观看 | 老汉av网站 | 久草最新网址 | 国产毛片久久久久久国产毛片 | 97avcc| 亚洲区免费 | 在线a毛片 | 荒野求生21天去码版网站 | 日韩欧美成人一区二区 | 欧美熟妇久久久久 | 兔费看少妇性l交大片免费 日韩高清不卡 | 2019自拍偷拍 | 国产欧美日韩在线观看 | 亚洲黄色免费看 | 日本www在线 | 99插插插 | 美女被出白浆 | 国产成人精品av在线观 | 99在线观看视频 | 蝌蚪网在线视频 | 大肉大捧一进一出好爽 | 日本aⅴ在线观看 | 亚洲欧美日韩综合在线 | 中日韩精品视频在线观看 | 日韩久久一区二区三区 | 国产精品视频福利 | 少妇裸体挤奶汁奶水视频 | 欧美春色 | 成人午夜免费视频 | 日本人三级 | 亚洲影院中文字幕 | 久久久久免费精品 | 国产a∨精品一区二区三区仙踪林 | 国产一级片在线 | 强行无套内谢大学生初次 | 日本在线观看网站 | 久久无码高潮喷水 | 在线不卡 | 欧美激情在线免费 | bbbbbbbbb毛片大片按摩 | 久久视频精品在线 | 97超级碰碰碰 | 亚洲a色| 亚洲色中色 | 亚洲第一免费播放区 | 中文字幕av在线免费观看 | 久久精品视频观看 | 男女男精品视频网站 | 美日韩精品 | 久久久久人妻一区精品色 | 青娱乐超碰| 国产中文字幕av | 国产有码在线 | 亚洲精品综合久久 | 欧美日韩国产精品一区二区三区 | 永久精品网站 | 日韩美女激情视频 | 少妇又紧又色又爽又刺激 | 日日做夜夜爽毛片麻豆 | 视频一区三区 |