iT邦幫忙

2024 iThome 鐵人賽

DAY 10
0

本章節「OpenSource」概要

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

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服務

訪問kibana後台

瀏覽器打開 http://localhost:5601
現在尚無任何資料,請跟著下一篇學習加入系統日誌

https://ithelp.ithome.com.tw/upload/images/20240804/20168384fTVZ4ndqsK.jpg

排錯思路

  1. kibana後台無法訪問
    檢查你的es是否沒起來,kibana需要依賴es起來才會跟著起來

  2. 查看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及名稱之處

  1. services:底下的elasticsearch01: 改成02,03...等
  2. network.publish_host: 192.168.10.1 改成2,3...等
  3. node.name: elasticsearch01 改成02,03...等
  4. volumes:底下的路徑 改成02,03...等

然後在任意一台上安裝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

https://ithelp.ithome.com.tw/upload/images/20240804/20168384uZbWBzx9En.jpg

後台查看節點已運行在不同主機上
查看方式:登入kibana > 主頁找到Monitor the stack > Nodes

以上,ELK Stack初步的搭建就到此告一段落


上一篇
Day 9: Kubernetes PV 與 PVC
下一篇
Day 11: Logstash 配置與查詢系統日誌
系列文
DevOps需要的技能樹...(應該)都點得到!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言