ELK-搭建實(shí)時(shí)日志ELK分析系統(tǒng)(2)-配置日志合并,@timestamp,根據(jù)不同beats來源建立不同索引

本章設(shè)置環(huán)境基于上一張elk內(nèi)容搭建,ELK-搭建實(shí)時(shí)日志ELK分析系統(tǒng),這一章新增一些配置,以更合適的應(yīng)用于實(shí)際日志場(chǎng)景。

filebeat配置

filebeat是按行讀取數(shù)據(jù)發(fā)送給logstash的,所以索引到elasticsearch的日志都是一行一行的,這不利于查看,尤其是查看一些報(bào)錯(cuò)的堆棧信息時(shí),希望能把這些信息合并為一條。
我的日志形式是以'['開頭的,在filebeat.yml中增加配置,合并多行:

 paths:
    - /home/appadmin/elk/logs/*
    #- c:\programdata\elasticsearch\logs\*
  multiline:
    pattern: '^\['
    negate: true
    match: after

現(xiàn)在所有的堆棧信息都合并到了一起。
filebeat每次讀完數(shù)據(jù)都會(huì)記錄一個(gè)偏移量,下一次會(huì)根據(jù)記錄繼續(xù)讀取新的內(nèi)容,如果更改配置后需要重新讀取所有文件,先在elasticsearch中刪除之前的索引,然后殺掉filebeat,刪掉filebeat目錄的data目錄下的數(shù)據(jù),再重啟就可重新讀取所有文件。

logstash配置

默認(rèn)的索引到elasticsearch中的數(shù)據(jù)是按天來建立新索引的,每一天都會(huì)有一個(gè)新索引,這個(gè)時(shí)間是根據(jù)logstash中的@timestamp,這個(gè)字段默認(rèn)是logstash接收到數(shù)據(jù)的時(shí)間,如果你的日志系統(tǒng)及時(shí)性很好的話也沒什么大問題,但如果寫入量太大造成堵塞,或者導(dǎo)入一些歷史日志就會(huì)出現(xiàn)問題,因此最好是將@timestamp替換成日志記錄的時(shí)間,更改logstash中啟動(dòng)加載的配置文件如下配置:

# 數(shù)據(jù)過濾
filter {
    grok {
            match => { "message" => "%{TIMESTAMP_ISO8601:log_time}" }

    }
    geoip {
            source => "clientip"

    }
    date{
        match => ["log_time", "yyyy-MM-dd HH:mm:ss,SSS", "ISO8601"]
        target => "@timestamp"
    }
    mutate{
        remove_field => ["log_time"]
    }

}

TIMESTAMP_ISO8601是日志文件中的時(shí)間日期格式,將日志中的時(shí)間提取到字段log_time中,然后傳遞給@timestamp,文件中match => ["log_time", "yyyy-MM-dd HH:mm:ss,SSS", "ISO8601"],第一個(gè)是字段名,第二個(gè)是log_time的格式,第三個(gè)是要轉(zhuǎn)換的@timestamp格式。@timestamp要轉(zhuǎn)換成北京時(shí)間要+8h,在kibana中展示時(shí),kibana已經(jīng)默認(rèn)加上了這個(gè)時(shí)間差。

使用logstash收集多臺(tái)服務(wù)器filebeat傳遞數(shù)據(jù)時(shí)標(biāo)記來源并根據(jù)來源建立不同的索引

當(dāng)有多個(gè)項(xiàng)目,并且項(xiàng)目部署在多個(gè)服務(wù)器的時(shí)候,我們可能需要知道每個(gè)日志的來源服務(wù)器,并且根據(jù)不同的項(xiàng)目建立單獨(dú)的索引,所以可以添加以下配置完成:

  • 在filebeat中添加屬性,標(biāo)記日志來源:
    使用fields添加屬性,key和value都可以自己定義,如果和filebeat已存在的key重復(fù),將會(huì)替換它的值,使用屬性fields_under_root: true使得這些屬性在頂層結(jié)構(gòu)。添加的屬性會(huì)在索引到elasticsearch中的文檔中看到。
- type: log

  # Change to true to enable this input configuration.
  enabled: false

  # Paths that should be crawled and fetched. Glob based paths.
  enabled: true
  paths:
    - /home/appadmin/elk/logs/*
    #- c:\programdata\elasticsearch\logs\*
  fields:
    log_ip: 10.1.12.18
    log_source: 你的域名
  fields_under_root: true
  multiline:
    pattern: '^\['
    negate: true
    match: after

注意:在編輯filebeat.yml時(shí)不要使用tab符,否則會(huì)報(bào)錯(cuò)。

  • 在logstash中根據(jù)日志的來源建立不同的索引:
    編輯啟動(dòng)logstash加載的配置文件,修改output:
# 輸出到本機(jī)的 ES
output {
    elasticsearch {
            hosts => [ "localhost:9201"  ]
            index => "log-%{[log_source]}-%{+YYYY.MM.dd}"

    }
}

在index中引用filebeat中的log_source建立不同的索引。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容