ES系列二、Mac 通過docker搭建ELK日志收集系統


一、ELK簡介

  • Elasticsearch:用於存儲收集到的日志信息;
  • Logstash:用於監控,過濾,收集日志,SpringBoot應用整合了Logstash以后會把日志發送給LogstashLogstash再把日志轉發給Elasticsearch
  • Kibana:通過Web端的可視化界面來查看日志。

二、解決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版本要一致。我這里都使用 6.8.0版本。因為版本7改動太大,沒深入研究,坑有點多。

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

2、查看已拉取的 ElasticSearch:

  • 操作命令 : docker image ls elasticsearch
  • 操作示例:
    localhost:~ gs$ docker image ls elasticsearch
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    elasticsearch       6.8.0               d0b291d7093b        14 months ago       895MB 
      

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:6.8.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:6.8.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:6.8.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:9200  localhost:5601 能夠正常,說明整個elk環境已搭建完成。至此,整個ELK環境已經能夠搭建完成。

 

 

四、docker 安裝head插件

  安裝elasticsearch head插件監控管理
  安裝命令:docker pull mobz/elasticsearch-head:5
  啟動命令:docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5 

  網頁打開elasticsearch-head頁面,填入ES地址,一般會出現不上的狀態,這是跨域拒絕訪問問題。

  解決方案:進入elasticsearch容器內部,修改elasticsearch.yml,增加跨域的配置(需要重啟es才能生效)

       輸入命令:docker ps      獲得容器id
       進入容器:docker exec -it (容器id) bash

       修改配置:vi config/elasticsearch.yml

   添加內容:

http.cors.enabled: true
http.cors.allow-origin: "*"

  重啟es,head插件正常生效。

  示例:

localhost:~ gs$ docker ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                                            NAMES
50f552d6ea3a        mobz/elasticsearch-head:5   "/bin/sh -c 'grunt s…"   10 minutes ago      Up 10 minutes       0.0.0.0:9100->9100/tcp                           hardcore_kepler
27093a50ff74        kibana:6.8.0                "/usr/local/bin/kiba…"   5 hours ago         Up 10 minutes       0.0.0.0:5601->5601/tcp                           kibana
6b42e98a52ff        logstash:6.8.0              "/usr/local/bin/dock…"   5 hours ago         Up 10 minutes       5044/tcp, 0.0.0.0:4560->4560/tcp, 9600/tcp       logstash
64085c37858a        elasticsearch:6.8.0         "/usr/local/bin/dock…"   5 hours ago         Up 10 minutes       0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   elasticsearch
localhost:~ gs$ docker exec -it 64085c37858a bash
[root@64085c37858a elasticsearch]# vi config/elasticsearch.yml
[root@64085c37858a elasticsearch]# 

  

 

 

 

參考文獻:https://blog.csdn.net/kouxinsu8594/article/details/107129482


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM