“如何使用 Docker 建置本地測試用的 ELK”


在這篇文章中,我們將一步步帶你如何使用 Docker 來建置一個本地測試用的 ELK 伺服器。ELK 是 Elasticsearch、Logstash 和 Kibana 的簡稱,它們組成了一個強大的日誌管理和分析系統。本文將以有趣且口語化的方式,讓你輕鬆掌握如何在本地環境中使用 Docker 來運行 ELK。準備好開始了嗎?讓我們一探究竟吧!

什麼是 ELK Stack?

ELK Stack 是一組開源工具,主要由三個部分組成:

  • Elasticsearch:一個分佈式搜索和分析引擎,用於存儲和檢索數據。
  • Logstash:一個數據處理管道,從多種來源收集數據,轉換後再發送到目標位置。
  • Kibana:一個數據可視化平台,讓你可以在圖形介面上探索和分析數據。

先決條件

在開始之前,請確保你已經安裝了 Docker。如果還沒有,請從 Docker 官方網站 下載並安裝。

步驟一:建立 Docker Compose 文件

首先,我們需要建立一個 docker-compose.yml 文件,來定義 Elasticsearch、Logstash 和 Kibana 服務。以下是範例配置:

version: '7.9'

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.9.3
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
      - ES_JAVA_OPTS=-Xms512m -Xmx512m
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata:/usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"

  logstash:
    image: docker.elastic.co/logstash/logstash:7.9.3
    container_name: logstash
    volumes:
      - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
    ports:
      - "5044:5044"
      - "9600:9600"

  kibana:
    image: docker.elastic.co/kibana/kibana:7.9.3
    container_name: kibana
    environment:
      ELASTICSEARCH_URL: http://elasticsearch:9200
    ports:
      - "5601:5601"

volumes:
  esdata:
    driver: local

步驟二:建立 Logstash 配置文件

接下來,我們需要建立一個 logstash.conf 文件,來定義 Logstash 的配置。

input {
  beats {
    port => 5044
  }
}

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  date {
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}

output {
  elasticsearch {
    hosts => ["http://elasticsearch:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
  }
  stdout { codec => rubydebug }
}

步驟三:執行 Docker Compose

現在,我們已經準備好所有需要的配置文件,可以開始運行 Docker Compose 來啟動 ELK 服務了。打開終端機,導航到包含 docker-compose.ymllogstash.conf 文件的目錄,然後運行以下指令:

docker-compose up

這個指令將會拉取所需的 Docker 映像檔(如果尚未存在),並啟動 ELK 堆疊的服務。

步驟四:存取 Kibana

當服務啟動後,你可以在瀏覽器中導航到 http://localhost:5601 來存取 Kibana 的網頁介面。

選擇性步驟:持久化數據

如果你希望持久化 Elasticsearch 的數據,請確保在 docker-compose.yml 文件中正確配置了 esdata 卷。這樣可以確保在重啟容器後,數據不會丟失。

排除故障

記憶體問題

Elasticsearch 可能會佔用大量記憶體。如果遇到記憶體問題,可能需要為 Docker 分配更多的記憶體。

網路問題

確保 docker-compose.yml 文件中定義的端口不會被其他服務佔用。


小結

恭喜你!現在你已經成功地使用 Docker 建置了一個本地測試用的 ELK 伺服器。這是一個強大的工具組合,可以幫助你收集、處理和可視化日誌數據。希望這篇文章對你有所幫助,如果有任何問題,歡迎隨時留言討論!

以下是本文所述步驟和配置的摘要:

步驟說明
步驟一建立 Docker Compose 文件
步驟二建立 Logstash 配置文件
步驟三執行 Docker Compose
步驟四存取 Kibana
選擇性步驟持久化數據
排除故障處理記憶體和網路問題

希望這篇指南能讓你輕鬆上手 ELK Stack,開始你的日誌管理之旅吧!