找了不少使用 docker-elk 搭建的博客, 英文的閱讀吃力不說, 鏡像源也是慢的讓人頭皮發麻, 因此重新編排了一個docker-compose,源都是從 https://hub.docker.com/ 上找的, 即使拉的國內鏡像源應該也能很好的支持了吧?
環境
- Docker 18.06.0-ce
- docker-compose 1.22.0
給每個容器最少分配 1G 的內存
軟件版本
- logstash: 5.*
- elasticsearch: 5.*
- kibana: 5.*
啟動前的配置
在各個目錄下都有對應的 config 配置, 根據各自的情況自行處理
拿默認的 logstash/confg/test.conf 中的配置舉例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
input { file { #這里的路徑指的是 logstash 容器中的路徑, 外部接入需要使用 volume 進行目錄映射 path => "/logs/input/*" } # 在 logstash 容器中的輸入 stdin {} # 因為做了本地5000端口和容器5000端口進行綁定, 所以可以用 nc 工具測試一下 # echo "Test Logstash TCP Input Plugin" | nc localhost 5000 tcp { type => "tcp" port => 5000 mode => "server" } } output { file { #這里的路徑指的是 logstash 容器中的路徑, 外部接入需要使用 volume 進行目錄映射 path => "/logs/output/%{+yyyy-MM-dd-HH}/%{host}.log" } stdout { codec => rubydebug } elasticsearch { hosts => "elasticsearch:9200" # 這里設置的 index 在 kibana 中會用到 index => "file-log-%{+YYYY.MM}" } } |
啟動容器
執行
1
2
|
git clone https: //github .com /gaopengfei123123/docker-elk .git && cd docker-elk docker-compose up -d --build |
等一會看到執行成功的提示
1
2
3
|
Creating docker-elk_elasticsearch_1 ... done Creating docker-elk_logstash_1 ... done Creating docker-elk_kibana_1 ... done |
在本地瀏覽器輸入 http://localhost:5601/
進入 kibana 界面
注意, 第一次啟動時有可能會出現提示 elasticsearch not found
這類的問題, 可以先等個一兩分鐘刷新一下就好了, 如果還是不行就谷歌或者提 issue 解決一下
同目錄下輸入
1
|
docker-compose stop |
則停止所有服務
測試一下
在 logs/input/
目錄下新增個 test.log 文件, 然后輸入點東西驗證一下, 或者命令行執行echo "Test Logstash TCP Input Plugin" | nc localhost 5000
通過 tcp 發送日志
1
|
docker-compose logs -f |
查看各容器日志輸出
TODO
- 引入 kafka 做緩沖
- 搭建 es 集群
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://segmentfault.com/a/1190000016077052