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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

docker安装logstash及logstash配置

發(fā)布時間:2025/3/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker安装logstash及logstash配置 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、logstash跟es有版本對照關(guān)系

了解對照關(guān)系,決定要安裝的logstash版本

二、ELK出現(xiàn)的原因


三、Logstash工作原理

Logstash事件處理管道有三個階段:輸入→過濾器→輸出,輸入生成事件,過濾器修改它們,然后輸出將它們發(fā)送到其他地方。輸入和輸出支持編解碼器,使你能夠在數(shù)據(jù)進(jìn)入或離開管道時對其進(jìn)行編碼或解碼,而無需使用單獨的過濾器。

  • 輸入

你使用輸入將數(shù)據(jù)獲取到Logstash中,一些比較常用的輸入是:

屬性解析
file從文件系統(tǒng)上的文件進(jìn)行讀取,非常類似于UNIX命令tail -0F。
syslog在眾所周知的端口514上監(jiān)聽syslog消息并根據(jù)RFC3164格式進(jìn)行解析。
redis從redis服務(wù)器讀取數(shù)據(jù),同時使用Redis通道和Redis列表,Redis通常被用作集中式Logstash安裝中的“broker”,它將從遠(yuǎn)程Logstash “shipper”中的Logstash事件排隊。
beats處理Beats發(fā)送的事件。

有關(guān)可用輸入的更多信息,請參見輸入插件。

  • 過濾器

過濾器是Logstash管道中的中間處理設(shè)備,如果事件符合一定的條件,你可以將過濾器與條件語句組合在一起,對其執(zhí)行操作,一些有用的過濾器包括:

屬性解析
grok解析和構(gòu)造任意文本,Grok是目前Logstash中解析非結(jié)構(gòu)化日志數(shù)據(jù)到結(jié)構(gòu)化和可查詢數(shù)據(jù)的最佳方式,使用內(nèi)置的120種模式,你很可能會找到一個滿足你的需要!
mutate對事件字段執(zhí)行一般的轉(zhuǎn)換,你可以重命名、刪除、替換和修改事件中的字段。
drop完全刪除事件,例如debug事件。
clone復(fù)制事件,可能添加或刪除字段。
geoip添加關(guān)于IP地址地理位置的信息(在Kibana中還顯示了令人驚嘆的圖表!)

有關(guān)可用過濾器的更多信息,請參見過濾器插件。

  • 輸出

輸出是Logstash管道的最后階段,事件可以通過多個輸出,但是一旦所有的輸出處理完成,事件就完成了它的執(zhí)行,一些常用的輸出包括:

屬性解析
elasticsearch發(fā)送事件數(shù)據(jù)到Elasticsearch,如果你打算以一種高效、方便、易于查詢的格式保存數(shù)據(jù),那么使用Elasticsearch是可行的。
file將事件數(shù)據(jù)寫入磁盤上的文件。
graphite將事件數(shù)據(jù)發(fā)送到graphite,這是一種流行的用于存儲和繪制指標(biāo)的開源工具。http://graphite.readthedocs.io/en/latest/
statsd發(fā)送事件到statsd,“監(jiān)聽統(tǒng)計信息(如計數(shù)器和計時器)、通過UDP發(fā)送聚合并將聚合發(fā)送到一個或多個可插拔后端服務(wù)”的服務(wù),如果你已經(jīng)在使用statsd,這可能對你很有用!

有關(guān)可用輸出的更多信息,請參見輸出插件。

  • 編解碼器

Codecs是基本的流過濾器,可以作為輸入或輸出的一部分進(jìn)行操作,Codecs使你能夠輕松地將消息的傳輸與序列化過程分開,流行的codecs包括json、msgpack和plain(text)。

屬性解析
json以JSON格式對數(shù)據(jù)進(jìn)行編碼或解碼。
multiline將多行文本事件(如java異常和stacktrace消息)合并到單個事件中。

有關(guān)可用編解碼器的更多信息,請參見編解碼器插件。

  • 執(zhí)行模型

Logstash事件處理管道協(xié)調(diào)輸入、過濾器和輸出的執(zhí)行。Logstash管道中的每個輸入階段都在自己的線程中運(yùn)行,輸入將事件寫入位于內(nèi)存(默認(rèn))或磁盤上的中央隊列,每個管道工作線程從這個隊列中取出一批事件,通過配置的過濾器運(yùn)行事件批處理,然后通過任何輸出運(yùn)行過濾的事件,可以配置批處理的大小和管道工作線程的數(shù)量(參見調(diào)優(yōu)和分析Logstash性能)。默認(rèn)情況下,Logstash使用內(nèi)存有限隊列在管道階段之間(輸入→過濾器和過濾器→輸出)來緩沖事件,如果Logstash不安全的終止,則存儲在內(nèi)存中的任何事件都將丟失。為了防止數(shù)據(jù)丟失,你可以啟用Logstash將運(yùn)行中的事件持久化到磁盤上,有關(guān)更多信息,請參見持久隊列。

四、logstash的配置文件

  • logstash.yml
    你可以在Logstash設(shè)置文件logstash.yml中設(shè)置選項來控制Logstash執(zhí)行,例如,你可以指定管道設(shè)置、配置文件的位置、日志記錄選項和其他設(shè)置。當(dāng)你運(yùn)行Logstash時,logstash.yml文件中的大多數(shù)設(shè)置都可以作為命令行標(biāo)志使用,在命令行中設(shè)置的任何標(biāo)志都會覆蓋logstash.yml文件中的相應(yīng)設(shè)置。logstash.yml文件是用YAML編寫的,它的位置因平臺而異(參見Logstash目錄布局),你可以以層次結(jié)構(gòu)形式指定設(shè)置或使用平面鍵,例如,要使用分層表單設(shè)置管道批處理大小和批延遲,你需要指定:
  • pipeline:batch:size: 125delay: 50

    要表示與平面鍵相同的值,需要指定:

    pipeline.batch.size: 125 pipeline.batch.delay: 50

    logstash.yml文件還支持bash風(fēng)格的環(huán)境變量插值設(shè)置值。

    pipeline:batch:size: ${BATCH_SIZE}delay: ${BATCH_DELAY:50} node:name: "node_${LS_NODE_NAME}" path:queue: "/tmp/${QUEUE_DIR:queue}"

    注意,${VAR_NAME:default_value}表示法是受支持的,在上面的示例中,它設(shè)置了一個默認(rèn)的批延遲50和一個默認(rèn)的path.queue為/tmp/queue的。

    模塊也可以在logstash.yml文件中指定,模塊定義將具有這種格式:

    modules:- name: MODULE_NAME1var.PLUGIN_TYPE1.PLUGIN_NAME1.KEY1: VALUEvar.PLUGIN_TYPE1.PLUGIN_NAME1.KEY2: VALUEvar.PLUGIN_TYPE2.PLUGIN_NAME2.KEY1: VALUEvar.PLUGIN_TYPE3.PLUGIN_NAME3.KEY1: VALUE- name: MODULE_NAME2var.PLUGIN_TYPE1.PLUGIN_NAME1.KEY1: VALUEvar.PLUGIN_TYPE1.PLUGIN_NAME1.KEY2: VALUE

    如果使用命令行標(biāo)志--modules,則忽略在logstash.yml文件中定義的任何模塊。
    logstash.yml文件包括以下設(shè)置,如果你使用的是X-Pack,請參閱Logstash中的X-Pack設(shè)置。

    設(shè)置描述默認(rèn)值
    node.name節(jié)點的描述性名稱機(jī)器的主機(jī)名
    path.dataLogstash及其插件用于任何持久需求的目錄LOGSTASH_HOME/data
    pipeline.id管道的IDmain
    pipeline.workers將并行執(zhí)行管道的過濾和輸出階段的工人數(shù)量,如果你發(fā)現(xiàn)事件正在備份,或者CPU沒有飽和,請考慮增加這個數(shù)字,以更好地利用機(jī)器處理能力主機(jī)CPU核心的數(shù)量
    pipeline.batch.size在嘗試執(zhí)行過濾器和輸出之前,單個工作線程將從輸入中收集的最大事件數(shù),更大的批處理大小通常更高效,但代價是增加內(nèi)存開銷,你可能需要增加jvm.options配置文件中的JVM堆空間,有關(guān)更多信息,請參閱Logstash配置文件125
    pipeline.batch.delay當(dāng)創(chuàng)建管道事件批處理時,在向管道工作人員發(fā)送一個較小的批處理之前,等待每個事件的時間為多少毫秒50
    pipeline.unsafe_shutdown當(dāng)設(shè)置為true時,即使內(nèi)存中仍然存在游離事件,也會在關(guān)閉期間強(qiáng)制Logstash退出,默認(rèn)情況下,Logstash將拒絕退出,直到所有接收到的事件都被推送到輸出,啟用此選項可能導(dǎo)致關(guān)閉期間的數(shù)據(jù)丟失false
    path.config主管道的Logstash配置路徑,如果指定目錄或通配符,配置文件將按字母順序從目錄中讀取None
    config.test_and_exit當(dāng)設(shè)置為true時,檢查配置是否有效,然后退出,注意,在此設(shè)置中沒有檢查grok模式的正確性,Logstash可以從一個目錄中讀取多個配置文件,如果你把這個設(shè)置和log.level: debug結(jié)合起來,Logstash將對合并后的配置文件進(jìn)行日志記錄,并用它來自的源文件注解每個配置塊false
    config.reload.automatic當(dāng)設(shè)置為true時,定期檢查配置是否已更改,并在更改配置時重新加載配置,這也可以通過SIGHUP信號手動觸發(fā)false
    config.reload.intervalLogstash多久檢查一次配置文件以查看更改3s
    config.debug當(dāng)設(shè)置為true時,將完整編譯的配置顯示為debug日志消息,你還必須設(shè)置log.level: debug,警告:日志消息將包含傳遞給插件配置的任意密碼選項,可能會導(dǎo)致明文密碼出現(xiàn)在日志中!false
    config.support_escapes當(dāng)設(shè)置為true時,引號中的字符串將處理以下轉(zhuǎn)義序列:\n變成文字換行符(ASCII 10),\r變成文字回車(ASCII 13),\t變成文字制表符(ASCII 9),\變成字面反斜杠\,"變成一個文字雙引號,'變成文字引號false
    modules當(dāng)配置時,modules必須位于上表中描述的嵌套YAML結(jié)構(gòu)中None
    queue.type用于事件緩沖的內(nèi)部隊列模型,為基于內(nèi)存中的遺留隊列指定memory,或者persisted基于磁盤的ACKed隊列(持久隊列)memory
    path.queue啟用持久隊列時存儲數(shù)據(jù)文件的目錄路徑(queue.type: persisted)path.data/queue
    queue.page_capacity啟用持久隊列時使用的頁面數(shù)據(jù)文件的大小(queue.type: persisted),隊列數(shù)據(jù)由分隔成頁面的僅追加的數(shù)據(jù)文件組成64mb
    queue.max_events啟用持久隊列時隊列中未讀事件的最大數(shù)量(queue.type: persisted)0(無限)
    queue.max_bytes隊列的總?cè)萘?#xff08;字節(jié)數(shù)),確保磁盤驅(qū)動器的容量大于這里指定的值,如果queue.max_events和queue.max_bytes都指定,Logstash使用最先達(dá)到的任何標(biāo)準(zhǔn)1024mb(1g)
    queue.checkpoint.acks當(dāng)啟用持久隊列時,在強(qiáng)制執(zhí)行檢查點之前的最大ACKed事件數(shù)(queue.type: persisted),指定queue.checkpoint.acks: 0設(shè)置此值為無限制1024
    queue.checkpoint.writes啟用持久隊列時強(qiáng)制執(zhí)行檢查點之前的最大寫入事件數(shù)(queue.type: persisted),指定queue.checkpoint.writes: 0設(shè)置此值為無限制1024
    queue.drain啟用時,Logstash會一直等到持久隊列耗盡后才關(guān)閉false
    dead_letter_queue.enable標(biāo)記指示Logstash以插件支持的DLQ特性false
    dead_letter_queue.max_bytes每個dead letter隊列的最大大小,如果條目將增加dead letter隊列的大小,超過此設(shè)置,則刪除條目1024mb
    path.dead_letter_queue存儲dead letter隊列數(shù)據(jù)文件的目錄路徑path.data/dead_letter_queue
    http.host指標(biāo)REST端點的綁定地址“127.0.0.1”
    http.port指標(biāo)REST端點的綁定端口9600
    log.level日志級別,有效的選項是:fatal、error、warn、info、debug、traceinfo
    log.format日志格式,設(shè)置為json日志以JSON格式,或plain使用Object#.inspectplain
    path.logsLogstash將其日志寫到的目錄LOGSTASH_HOME/logs
    path.plugins哪里可以找到自定義插件,你可以多次指定此設(shè)置以包含多個路徑,插件應(yīng)該在特定的目錄層次結(jié)構(gòu)中:PATH/logstash/TYPE/NAME.rb,TYPE是inputs、filters、outputs或codecs,NAME是插件的名稱特定于平臺的

    五、logstash配置

    下面的示例演示如何配置Logstash來過濾事件,處理Apache日志和syslog消息,并使用條件來控制哪些事件由過濾器或輸出處理。如果你需要幫助構(gòu)建grok模式,請嘗試grok調(diào)試器,Grok調(diào)試器是基本許可證下的X-Pack特性,因此可以免費(fèi)使用。

    • 配置過濾器

    過濾器是一種在線處理機(jī)制,它提供了根據(jù)需要對數(shù)據(jù)進(jìn)行切片和切割的靈活性,讓我們看一下活動中的一些過濾器,下面的配置文件設(shè)置了grok和date過濾器。

    input { stdin { } }filter {grok {match => { "message" => "%{COMBINEDAPACHELOG}" }}date {match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]} }output {elasticsearch { hosts => ["localhost:9200"] }stdout { codec => rubydebug } }

    使用此配置運(yùn)行Logstash:

    bin/logstash -f logstash-filter.conf
    現(xiàn)在,將下面的行粘貼到你的終端并按Enter鍵,這樣它就會被stdin輸入處理:

    127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] “GET /xampp/status.php HTTP/1.1” 200 3891 “http://cadenza/xampp/navi.php” “Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0”
    你應(yīng)該會看到返回到stdout的是這樣的:

    {"message" => "127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"","@timestamp" => "2013-12-11T08:01:45.000Z","@version" => "1","host" => "cadenza","clientip" => "127.0.0.1","ident" => "-","auth" => "-","timestamp" => "11/Dec/2013:00:01:45 -0800","verb" => "GET","request" => "/xampp/status.php","httpversion" => "1.1","response" => "200","bytes" => "3891","referrer" => "\"http://cadenza/xampp/navi.php\"","agent" => "\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"" }

    如你所見,Logstash(在grok過濾器的幫助下)能夠解析日志行(碰巧是Apache的“組合日志”格式),并將其分解為許多不同的離散信息,一旦開始查詢和分析日志數(shù)據(jù),這就非常有用。例如,你將能夠輕松地在HTTP響應(yīng)碼、IP地址、referrers等上運(yùn)行報表。Logstash有很多現(xiàn)成的grok模式,因此如果你需要解析通用的日志格式,很可能已經(jīng)有人為你完成了這項工作,有關(guān)更多信息,請參閱GitHub上Logstash grok模式的列表。本例中使用的另一個過濾器是date過濾器,這個過濾器會解析一個時間戳,并將其用作事件的時間戳(不管你什么時候使用日志數(shù)據(jù))。你將注意到,本例中的@timestamp字段設(shè)置為2013年12月11日,盡管Logstash在隨后的某個時間攝取了該事件,這在備份日志時非常方便,它使你能夠告訴Logstash“使用此值作為此事件的時間戳”。

    • 處理Apache日志

    讓我們做一些有用的事情:處理apache訪問日志文件!我們將從本地主機(jī)上的文件中讀取輸入,并根據(jù)需要使用條件處理事件。首先,創(chuàng)建一個名為logstash-apache.conf的文件包含以下內(nèi)容(你可以根據(jù)需要更改日志文件路徑):

    input {file {path => "/tmp/access_log"start_position => "beginning"} }filter {if [path] =~ "access" {mutate { replace => { "type" => "apache_access" } }grok {match => { "message" => "%{COMBINEDAPACHELOG}" }}}date {match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]} }output {elasticsearch {hosts => ["localhost:9200"]}stdout { codec => rubydebug } }

    然后,使用以下日志條目(或使用你自己的webserver中的一些日志條目)創(chuàng)建上面配置的輸入文件(在本例中為“/tmp/access_log”):

    71.141.244.242 - kurt [18/May/2011:01:48:10 -0700] "GET /admin HTTP/1.1" 301 566 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3" 134.39.72.245 - - [18/May/2011:12:40:18 -0700] "GET /favicon.ico HTTP/1.1" 200 1189 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; .NET4.0C; .NET4.0E)" 98.83.179.51 - - [18/May/2011:19:35:08 -0700] "GET /css/main.css HTTP/1.1" 200 1837 "http://www.safesand.com/information.htm" "Mozilla/5.0 (Windows NT 6.0; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"

    現(xiàn)在,使用-f標(biāo)志運(yùn)行Logstash以將其傳遞到配置文件:

    bin/logstash -f logstash-apache.conf
    現(xiàn)在你應(yīng)該在Elasticsearch中看到你的apache日志數(shù)據(jù)了,Logstash打開并讀取指定的輸入文件,處理遇到的每個事件。記錄到此文件的任何追加行也將被捕獲,由Logstash作為事件處理,并存儲在Elasticsearch中。還有一個額外的好處,他們儲藏的字段“type”設(shè)置為“apache_access”(這是由輸入配置中的type ? "apache_access"行)。

    在這個配置中,Logstash只查看apache access_log,但是通過更改上面配置中的一行就可以同時查看access_log和error_log(實際上是任何文件匹配*log):

    input {file {path => "/tmp/*_log" ...

    當(dāng)你重新啟動Logstash時,它將同時處理error和access日志,但是,如果你檢查數(shù)據(jù)(可能使用elasticsearch-kopf),你會看到access_log被分解為離散字段,而error_log則不是。這是因為我們使用了grok過濾器來匹配標(biāo)準(zhǔn)的組合apache日志格式,并自動將數(shù)據(jù)分割為單獨的字段。如果我們能根據(jù)它的格式來控制行是如何被解析的,不是很好嗎?嗯,我們可以…
    注意,Logstash不會重新處理access_log文件中已經(jīng)查看的事件,從文件中讀取數(shù)據(jù)時,Logstash保存其位置,并只在添加新行時處理它們。

    • 使用條件

    你可以使用條件來控制哪些事件由過濾器或輸出處理,例如,你可以根據(jù)出現(xiàn)在哪個文件(access_log、error_log以及以“l(fā)og”結(jié)尾的其他隨機(jī)文件)中來標(biāo)記每個事件。

    input {file {#標(biāo)簽type => "systemlog-localhost"#采集點path => "/tmp/*_log"#開始收集點start_position => "beginning"#掃描間隔時間,默認(rèn)是1s,建議5sstat_interval => "5"} } filter {if [path] =~ "access" {mutate { replace => { type => "apache_access" } }grok {match => { "message" => "%{COMBINEDAPACHELOG}" }}date {match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]}} else if [path] =~ "error" {mutate { replace => { type => "apache_error" } }} else {mutate { replace => { type => "random_logs" } }} }output {elasticsearch { hosts => ["localhost:9200"] }stdout { codec => rubydebug } }

    這個示例使用type字段標(biāo)記所有事件,但實際上不解析error或random文件,有很多類型的錯誤日志,它們應(yīng)該如何標(biāo)記取決于你使用的日志。

    類似地,你可以使用條件將事件定向到特定的輸出,例如,你可以:

    • 警告nagios任何狀態(tài)為5xx的apache事件
    • 將任何4xx狀態(tài)記錄到Elasticsearch
    • 通過statsd記錄所有的狀態(tài)代碼

    要告訴nagios任何具有5xx狀態(tài)碼的http事件,首先需要檢查type字段的值,如果是apache,那么你可以檢查status字段是否包含5xx錯誤,如果是,發(fā)送到nagios。如果不是5xx錯誤,檢查status字段是否包含4xx錯誤,如果是,發(fā)送到Elasticsearch。最后,將所有apache狀態(tài)碼發(fā)送到statsd,無論狀態(tài)字段包含什么:

    output {if [type] == "apache" {if [status] =~ /^5\d\d/ {nagios { ... }} else if [status] =~ /^4\d\d/ {elasticsearch { ... }}statsd { increment => "apache.%{status}" }} }
    • 處理Syslog消息

    Syslog是Logstash最常見的用例之一,而且它處理得非常好(只要日志行大致符合RFC3164),Syslog實際上是UNIX網(wǎng)絡(luò)日志記錄標(biāo)準(zhǔn),它將消息從客戶端發(fā)送到本地文件,或通過rsyslog發(fā)送到集中式日志服務(wù)器。對于本例,你不需要一個功能正常的syslog實例;我們將從命令行中偽造它,這樣你就可以了解發(fā)生了什么。

    首先,讓我們?yōu)長ogstash + syslog創(chuàng)建一個簡單的配置文件,名為logstash-syslog.conf。

    input {tcp {port => 5000type => syslog}udp {port => 5000type => syslog} }filter {if [type] == "syslog" {grok {match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }add_field => [ "received_at", "%{@timestamp}" ]add_field => [ "received_from", "%{host}" ]}date {match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]}} }output {elasticsearch { hosts => ["localhost:9200"] }stdout { codec => rubydebug } }

    使用這個新配置運(yùn)行Logstash:

    bin/logstash -f logstash-syslog.conf

    通常,客戶端將連接到端口5000上的Logstash實例并發(fā)送消息,對于本例,我們將telnet到Logstash并輸入一條日志行(類似于前面在STDIN中輸入日志行),打開另一個shell窗口與Logstash syslog輸入進(jìn)行交互并輸入以下命令:

    telnet localhost 5000

    復(fù)制粘貼以下行作為示例(你可以自己嘗試一些,但是要記住,如果grok過濾器對你的數(shù)據(jù)不正確,它們可能無法解析)。

    Dec 23 12:11:43 louis postfix/smtpd[31499]: connect from unknown[95.75.93.154] Dec 23 14:42:56 louis named[16000]: client 199.48.164.7#64817: query (cache) 'amsterdamboothuren.com/MX/IN' denied Dec 23 14:30:01 louis CRON[619]: (www-data) CMD (php /usr/share/cacti/site/poller.php >/dev/null 2>/var/log/cacti/poller-error.log) Dec 22 18:28:06 louis rsyslogd: [origin software="rsyslogd" swVersion="4.2.0" x-pid="2253" x-info="http://www.rsyslog.com"] rsyslogd was HUPed, type 'lightweight'.

    現(xiàn)在,當(dāng)你的原始shell處理和解析消息時,你應(yīng)該會看到Logstash的輸出!

    {"message" => "Dec 23 14:30:01 louis CRON[619]: (www-data) CMD (php /usr/share/cacti/site/poller.php >/dev/null 2>/var/log/cacti/poller-error.log)","@timestamp" => "2013-12-23T22:30:01.000Z","@version" => "1","type" => "syslog","host" => "0:0:0:0:0:0:0:1:52617","syslog_timestamp" => "Dec 23 14:30:01","syslog_hostname" => "louis","syslog_program" => "CRON","syslog_pid" => "619","syslog_message" => "(www-data) CMD (php /usr/share/cacti/site/poller.php >/dev/null 2>/var/log/cacti/poller-error.log)","received_at" => "2013-12-23 22:49:22 UTC","received_from" => "0:0:0:0:0:0:0:1:52617","syslog_severity_code" => 5,"syslog_facility_code" => 1,"syslog_facility" => "user-level","syslog_severity" => "notice" }

    六、安裝及例子

    docker pull logstash:7.14.0
  • 啟動
  • docker run -d --name=logstash logstash:7.14.0
  • 復(fù)制文件,以便下次啟動掛載
  • docker cp logstash:/usr/share/logstash /mydata/logstash
  • 授權(quán)掛載文件夾
  • chmod 777 -R /mydata/logstash
  • 在es正常運(yùn)行的前提下
    • 編輯/mydata/logstash/config/logstash.yml如下
    http.host: "0.0.0.0" #根據(jù)實際修改es的ip:port xpack.monitoring.elasticsearch.hosts: [ "http://192.168.31.196:9200" ] # 主管道的Logstash配置路徑,如果指定目錄或通配符,配置文件將按字母順序從目錄中讀取 path.config: /usr/share/logstash/config/conf.d/*.conf #Logstash將其日志寫到的目錄 path.logs: /usr/share/logstash/logs
  • 然后根據(jù)下面的內(nèi)容編寫logstash.conf文件,就可以啟動logstash的收集日志功能
  • input {file {#標(biāo)簽type => "systemlog-localhost"#采集點(這里一定要注意,由于我是docker啟動的logstash,這里是容器內(nèi)的文件,如果要生成外面日志索引,那么文件的路徑一定要掛載正確)path => "/usr/share/logstash/logs/access_log.2021-03-19.log"#開始收集點start_position => "beginning"#掃描間隔時間,默認(rèn)是1s,建議5sstat_interval => "5"} }output {elasticsearch {#集群的話,直接添加多個urlhosts => ["172.17.0.3:9200"]#es的用戶名和密碼user =>"elastic"password =>"elastic"#建立的索引以日期區(qū)分index => "logstash-system-localhost-%{+YYYY.MM.dd}"}#在控制臺輸出logstash的日志stdout { codec=> rubydebug } }

    控制臺的輸出,說明在es中已經(jīng)生成索引

  • 在kibana中查看生成的索引
  • 關(guān)于如何docker安裝es,docker安裝kibana

    參考文章

    總結(jié)

    以上是生活随笔為你收集整理的docker安装logstash及logstash配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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