Google Code Prettify

2020年5月3日 星期日

安裝 docker-elk

要使用 ELK,有高手已經準備好 docker 的版本,安裝設定會比較容易,這裡就整理一下 docker-elk 的安裝 (這裡假設 Ubuntu 裡已經安裝好 git、docker 及 docker-compose)。
  1. 從 github 下載
  2. git clone https://github.com/deviantony/docker-elk
    
    下載完當然就差不多如下圖所示,所有東西都在 docker-elk 目錄裡。
  3. 執行 docker-compose 啟動 ELK
  4. 在 docker-elk 目錄裡有個 docker-compose.yml,可以透過 docker-compose 操作 ELK,啟動的指令如下,預設的帳密是 elastic / changeme:
    docker-compose up -d
    
    第一次執行需要幾分鐘的時間,啟動後以 docker ps 查看,應該可以看到三個 container 在執行 (elasticsearch、logstash、kibana),並且可以看到,它們用的 port 為 9200、5000 及 5601,這些都是在 docker-compose.yml 中定義的。
  5. 測試 elasticsearch
  6. 用 curl 對 elasticsearch request 試看看:
    curl http://localhost:9200 -u elastic:changeme
    
    看到以下回應,就是成功了。
  7. 測試 Kibana
  8. 我的 Ubuntu 的 IP 是 192.168.0.155,所以我在瀏覽器上輸入 http://192.168.0.155:5601,會出現要輸入帳密的登入畫面,輸入預設的 elastic / changeme 後,會出現如下畫面: 
    確定 Kibana 也正常執行了。
  9. 測試 logstash
  10. 現在修改一下 docker-compose.yml,讓 logstash 可以用 tcp 5000 port 接收資料及用 udp 12201 port 接收資料,如下:
    接著再修改 ~/docker-elk/logstash/pipeline/logstash.conf,加入紅框的部份,表示要接收 udp 12201 port 的資料,如下: 
    按【ctrl-C】關閉 docker-elk,然後再重啟一次,再啟動後執行以下指令:
    curl -XPOST -D- 'http://localhost:5601/api/saved_objects/index-pattern' \
        -H 'Content-Type: application/json' \
        -H 'kbn-version: 7.6.2' \
        -u elastic:changeme \
        -d '{"attributes":{"title":"logstash-*","timeFieldName":"@timestamp"}}'
    
    這個指令會在 Kibana 建立一個 index pattern,然後執行以下指令,發出訊息到 ELK,看看 Kibana 會怎麼顯示。
    docker run --log-driver=syslog --log-opt syslog-address=tcp://0.0.0.0:5000 --log-opt syslog-facility=daemon alpine echo hello world tcp
    docker run --log-driver=gelf --log-opt gelf-address=udp://0.0.0.0:12201 alpine echo hello world udp
    
    然後查看 Kibana,可以看到如下的顯示:
    表示 docker 的 log 確實經由 logstash 的 tcp 5000 port 及 udp 12201 port 送到 Kibana 了。

沒有留言:

張貼留言