Docker安裝ELK

利用elk進(jìn)行日志提取分析。

安裝elasticsearch

創(chuàng)建一個內(nèi)網(wǎng)組,方便其他組件之間直接通過內(nèi)網(wǎng)訪問,比如logstash和kibana等。

docker network create elk-net

啟動Elasticsearch:

docker run -d --name elasticsearch --net elk-net -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.12.0

注意:elasticsearch不支持lastest標(biāo)簽
-d:后臺運行
--net:加入內(nèi)網(wǎng)組
9200用于外部通訊,基于http協(xié)議,程序與es的通信使用9200端口。
9300jar之間就是通過tcp協(xié)議通信,遵循tcp協(xié)議,es集群中的節(jié)點之間也通過9300端口進(jìn)行通信。
discovery.type:使用單機模式
elasticsearch:7.12.0:鏡像名加標(biāo)簽

啟動后可以使用命令測試
curl http://localhost:9200/
出現(xiàn)如下結(jié)果表示安裝成功

image.png
image.png

安裝logstash

創(chuàng)建pipeline文件logstash.conf,放在c:\pipeline目錄下,內(nèi)容如下

input {
  file {
    path => "/tmp/logs/t-monitor-error.log"
    start_position => "beginning"
    type => monitor
  }
}

filter {
    grok {
      match => { "message" => "%{TIMESTAMP_ISO8601:time} \| %{GREEDYDATA:thread} \| %{LOGLEVEL:level} \| %{GREEDYDATA:class} \| %{GREEDYDATA:logstr}" }
    }
}

output {
  elasticsearch { hosts => ["elasticsearch:9200"] }
  stdout { codec => rubydebug }
}

path:需要讀取的日志文件,為容器中的目錄,可以掛載宿主機目錄
type:自定義
grok:根據(jù)正則表達(dá)式對日志內(nèi)容進(jìn)行分段分詞,定義參照Patern
output:輸出到es和控制臺,因為加入同一個network,所以可以直接用容器名訪問。

日志文件t-monitor-error.log放到c:\logs目錄下
啟動:

docker run --rm -it --network elk-net -v /c/pipeline/:/usr/share/logstash/pipeline/ -v /c/logs/:/tmp/logs/ --name logstash logstash:7.12.0

rm:一次性啟動,關(guān)閉時會刪除容器,若想后臺運行可改為-d
掛載目錄:
/c/pipeline/:/usr/share/logstash/pipeline/
/c/logs/:/tmp/logs/

若啟動出錯,可能是由于掛載目錄失敗,docker destop需要進(jìn)行如下配置,將C盤根目錄加入Resources的FILE SHARING列表中。

image.png

啟動成功后控制臺會打印解析完成的信息
image.png

若出現(xiàn)中文亂碼,說明log文件不是utf-8格式的
并且也可以直接使用API在es中查詢
先用curl http://localhost:9200/_cat/indices?v找到index
image.png

然后查詢index中的數(shù)據(jù)curl http://localhost:9200/logstash-2021.04.14-000001/_search
image.png

可以看到數(shù)據(jù)已經(jīng)寫入es了,程序可以使用REST API進(jìn)行查詢。

安裝kibana

docker run -d --name kibana --network elk-net -p 5601:5601 kibana:7.12.0

打開kibana瀏覽器頁面http://localhost:5601/
配置Index patterns為logstash*

image.png
image.png

配置完成后,就可以在discover中看到log信息,可以進(jìn)行條件查詢或者全文搜索。
image.png

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

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

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