一、ELK簡介
Elasticsearch
:用於存儲收集到的日志信息;Logstash
:用於監控,過濾,收集日志,SpringBoot
應用整合了Logstash
以后會把日志發送給Logstash
,Logstash
再把日志轉發給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