使用 docker-compose 搭建一個 elk 系統

找了很多使用 docker-elk 搭建的博客, 英文的閱讀吃力不說, 鏡像源也是慢的讓人頭皮發麻, 所以從新編排了一個 docker-compose,源都是從 https://hub.docker.com/ 上找的, 即便拉的國內鏡像源應該也能很好的支持了吧?

環境

  • Docker 18.06.0-ce
  • docker-compose 1.22.0

給每一個容器最少分配 1G 的內存git

軟件版本

  • logstash: 5.*
  • elasticsearch: 5.*
  • kibana: 5.*

啓動前的配置

在各個目錄下都有對應的 config 配置, 根據各自的狀況自行處理github

拿默認的 logstash/confg/test.conf 中的配置舉例:docker

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}"  
    }
}

啓動容器

執行瀏覽器

git clone https://github.com/gaopengfei123123/docker-elk.git && cd docker-elk
docker-compose up -d --build

等一會看到執行成功的提示ruby

Creating docker-elk_elasticsearch_1 ... done
Creating docker-elk_logstash_1      ... done
Creating docker-elk_kibana_1        ... done

在本地瀏覽器輸入 http://localhost:5601/ 進入 kibana 界面bash

注意, 第一次啓動時有可能會出現提示 elasticsearch not found 這類的問題, 能夠先等個一兩分鐘刷新一下就行了, 若是仍是不行就谷歌或者提 issue 解決一下elasticsearch

同目錄下輸入tcp

docker-compose stop

則中止全部服務工具

測試一下

logs/input/ 目錄下新增個 test.log 文件, 而後輸入點東西驗證一下, 或者命令行執行echo "Test Logstash TCP Input Plugin" | nc localhost 5000 經過 tcp 發送日誌測試

docker-compose logs -f

查看各容器日誌輸出

TODO

  • 引入 kafka 作緩衝
  • 搭建 es 集羣

github 地址

相關文章
相關標籤/搜索