Day 10: ELK Stack 安裝與多節點
Day 11: Logstash 配置與查詢系統日誌
Day 12: Redis 安裝與配置
Day 13: Redis 高可用性與集群設置
Day 14: Prometheus 與 Grafana 安裝與監控
Day 15: 配置 Prometheus 監控 Kubernetes 叢集
Day 16: 使用 Grafana 進行數據視覺化及串接告警
ELK Stack 是一套開源工具組合,用於日誌和數據分析。它包括 Elasticsearch(分佈式搜索和分析引擎)、Logstash(數據收集和處理工具)和 Kibana(數據可視化平台)。ELK Stack 可以集中收集、索引和分析日誌數據,並通過直觀的儀表板進行可視化,幫助企業實時監控和排查問題。
今天採用的腳本來自Github,是單機三集群版本
作者deviantony/專案docker-elk
為什麼不採用bitnami的?
因為ELK Stack是個集成的服務,且很多情況需要多節點支撐
如果還要一個一個去架就太複雜也太不方便了
安裝git
sudo apt-get install git
下載專案
git clone https://github.com/deviantony/docker-elk.git
執行初始安裝腳本
docker-compose up setup
運行ELK集成
docker-compose up
驗證是否安裝成功
curl http://localhost:9200 -u elastic:changeme
逐一進入服務重置密碼(會打印在畫面上)
#elasticsearch
docker-compose exec elasticsearch bin/elasticsearch-reset-password --batch --user elastic
#logstash
docker-compose exec elasticsearch bin/elasticsearch-reset-password --batch --user logstash_internal
#kibana
docker-compose exec elasticsearch bin/elasticsearch-reset-password --batch --user kibana_system
如果想要將changeme直接修改為自己的預設密碼,可以編輯.env文件之後再up服務
瀏覽器打開 http://localhost:5601
現在尚無任何資料,請跟著下一篇學習加入系統日誌
kibana後台無法訪問
檢查你的es是否沒起來,kibana需要依賴es起來才會跟著起來
查看es日誌發現以下
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
sudo nano /etc/sysctl.conf
在最末尾貼入以下內容
vm.max_map_count=262144
存檔之後套用
sysctl -p
套用了之後再次docker compose up服務即可
請保留原本git clone下來的專案(或複製一份出來)
將底下的docker-compose.yml腳本
改寫成各節點獨立一份,再到多個機器上部署
version: '3.7'
services:
elasticsearch01:
build:
context: elasticsearch/
args:
ELASTIC_VERSION: ${ELASTIC_VERSION}
volumes:
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro,z
- ./volumes/elasticsearch01:/usr/share/elasticsearch/data:z
#指定運行的用戶
user: "1000:0"
ports:
- 9200:9200
- 9300:9300
environment:
ES_JAVA_OPTS: -Xms512m -Xmx512m
ELASTIC_PASSWORD: ${ELASTIC_PASSWORD:-}
#宣告自己的主機地址
network.publish_host: 192.168.10.1
node.name: elasticsearch01
#允許成為master節點
node.master: true
#允許成為data節點
node.data: true
#其實可以把節點的角色寫死,這裡不寫死
node.roles: master,data
discovery.seed_hosts: "192.168.10.2,192.168.10.3"
cluster.initial_master_nodes: 192.168.10.1,192.168.10.2,192.168.10.3
networks:
- elk
networks:
elk:
driver: bridge
第二份和第三份也一樣
只需修改四處有關節點ip及名稱之處
然後在任意一台上安裝logstash及kibana即可
logstash
version: '3.7'
services:
logstash:
build:
context: logstash/
args:
ELASTIC_VERSION: ${ELASTIC_VERSION}
volumes:
- ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro,Z
- ./logstash/pipeline:/usr/share/logstash/pipeline:ro,Z
user: "1000:0"
ports:
- 5044:5044
- 50000:50000/tcp
- 50000:50000/udp
- 9600:9600
environment:
LS_JAVA_OPTS: -Xms256m -Xmx256m
LOGSTASH_INTERNAL_PASSWORD: ${LOGSTASH_INTERNAL_PASSWORD:-}
networks:
- elk
restart: unless-stopped
networks:
elk:
driver: bridge
kibana
version: '3.7'
services:
kibana:
build:
context: kibana/
args:
ELASTIC_VERSION: ${ELASTIC_VERSION}
volumes:
- ./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml:ro,Z
user: "1000:0"
ports:
- 5601:5601
environment:
KIBANA_SYSTEM_PASSWORD: ${KIBANA_SYSTEM_PASSWORD:-}
networks:
- elk
restart: unless-stopped
networks:
elk:
driver: bridge
後台查看節點已運行在不同主機上
查看方式:登入kibana > 主頁找到Monitor the stack > Nodes
以上,ELK Stack初步的搭建就到此告一段落