1. 程式人生 > 實用技巧 >Mac 通過docker搭建ELK日誌收集系統

Mac 通過docker搭建ELK日誌收集系統

一、解決docker拉取映象慢的問題

  前提是我們的mac安裝好了docker,並且可以正常啟動關閉。但是當我們對映象進行拉取的時候,會發現速度非常的慢,停在下面這個介面很久也不動。

  解決方法:我們可以進入阿里雲的官網,登陸之後搜尋docker,如下圖

  在工作列點選 Docker Desktop 應用圖示 -> Perferences,在左側導航選單選擇 Docker Engine,在右側輸入欄編輯 json 檔案。將https://nt1wiw3g.mirror.aliyuncs.com加到"registry-mirrors"的陣列裡,點選 Apply & Restart按鈕,等待Docker重啟並應用配置的映象加速器。如下圖:

然後你拉取映象的速度就會和我一樣飛快啦!兄弟們,起飛!

二、Mac下Docker安裝ELK環境

1、mac安裝elk,elasticsearch、logstash、kibana版本要一致。我這裡都使用7.5.0版本。

# 檢視是否安裝了elk
docker images
# 清理之前的版本
docker rmi $(docker images -aq)
# 安裝 elk 7.5.0 版本
docker pull elasticsearch:7.5.0
docker pull kibana:7.5.0
docker pull logstash:7.5.0
# 檢視是否下載成功
docker images

2、檢視已拉取的 ElasticSearch:

  • 操作命令 :docker image ls elasticsearch
  • 操作示例:
    localhost:docker gs$ docker image ls elasticsearch
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    elasticsearch       7.5.0               911f580307ae        8 months ago        766MB
    localhost:docker gs$   

3、開始搭建

  第一步:建立3個資料夾,用於存放Elasticsearch資料、Logstash的外掛和Logstash的配置檔案,由於Kibana主要是用於把logstash收集到的日誌進行視覺化分析,故本例不做更多配置。xxxxxxx為本機下的使用者。

mkdir -p /Users/xxxxxxx/elk/elasticsearch/data
mkdir -p /Users/xxxxxxx/elk/elasticsearch/plugins
mkdir -p /Users/xxxxxxx/elk/logstash

  另外可以再建立一個資料夾,用於存放docker-compose.yml檔案

mkdir -p /Users/xxxxxxx/elk/docker

  第二步:在/Users/xxxxxxx/elk/logstash目錄下建立logstash的配置檔案logstash.conf

input {
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4560
    codec => json_lines
  }
}
output {
  elasticsearch {
    hosts => "es:9200"
    index => "springboot-logstash-%{+YYYY.MM.dd}"
  }
}

  第三步:在/Users/xxxxxxx/elk/docker建立docker-compose.yml檔案

version: '3'
services:
  elasticsearch:
    image: elasticsearch:7.5.0
    container_name: elasticsearch
    environment:
      - "cluster.name=elasticsearch" #設定叢集名稱為elasticsearch
      - "discovery.type=single-node" #以單一節點模式啟動
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m" #設定使用jvm記憶體大小
    volumes:
      - /Users/xxxxxxx/elk/elasticsearch/data:/usr/share/elasticsearch/data #資料檔案掛載
      - /Users/xxxxxxx/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins #外掛檔案掛載
    ports:
      - 9200:9200
      - 9300:9300
  kibana:
    image: kibana:7.5.0
    container_name: kibana
    links:
      - elasticsearch:es #可以用es這個域名訪問elasticsearch服務
    depends_on:
      - elasticsearch #kibana在elasticsearch啟動之後再啟動
    environment:
      - "elasticsearch.hosts=http://es:9200" #設定訪問elasticsearch的地址
    ports:
      - 5601:5601
  logstash:
    image: logstash:7.5.0
    container_name: logstash
    volumes:
      - /Users/xxxxxxx/elk/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf #掛載logstash的配置檔案
    depends_on:
      - elasticsearch #kibana在elasticsearch啟動之後再啟動
    links:
      - elasticsearch:es #可以用es這個域名訪問elasticsearch服務
    ports:
      - 4560:4560

  第四步:在docker-compose.yml檔案目錄下啟動elk

docker-compose up -d

  示例:

localhost:docker gs$ /Users/gs/elk/docker/docker-compose.yml 
-bash: /Users/gs/elk/docker/docker-compose.yml: Permission denied
localhost:docker gs$ docker-compose up -d
elasticsearch is up-to-date
kibana is up-to-date
logstash is up-to-date

    第五步:訪問localhost:9200localhost:5601能夠正常,說明整個elk環境已搭建完成。至此,整個ELK環境已經能夠搭建完成。