iT邦幫忙

2024 iThome 鐵人賽

DAY 1
7

https://ithelp.ithome.com.tw/upload/images/20240915/20118848FQCVL7oRpP.png

Graylog 是一套成熟且功能強大的記錄收集與分析系統,近幾年來我已經分享過許多經驗,例如:

延續我過去的傳統,為了以快速上線使用為目標,本系列將直接以先實作後詳解的方式,協助各位朋友儘快導入 Graylog 的應用。

在本次的系列文章中,將會採用 Graylog Open 版本進行實作,它是 Graylog 方案中唯一開源的版本,也是最容易入手與上手自建的版本。


系統需求

Graylog 採用 Java 開發,可以運作在多種 Linux 發行版本,以下是官方列舉的支援清單:

支援 Linux 發行版本

  • Debian 10, 11, 12
  • Ubuntu 20.04, 22.04
  • Red Hat Enterprise Linux 7, 8, 9 及其衍生的 Rocky/Alma Linux 均同
  • SUSE Linux Enterprise Server 12, 15

本系列文章將以 Ubuntu 22.04 做為教學範例。

補充:

Graylog 也支援 Docker 容器形式部署,不過這未在本系列文章的討論範圍。

Graylog 可以安裝在實體機、虛擬機或者容器,對於資源的需求取決於應用場景的記錄數量,在進入使用的初期,我們可以先從以下規格入門:

處理器與記憶體

  • 處理器 4 核心以上 (必須支援 AVX 指令集,否則其中的 MongoDB 將無法安裝或啟動)
  • 記憶體 8GB 以上
  • 磁碟容量 80GB 以上 (後面章節會提到保存容量計算方式)
  • 網路介面卡一張

軟體架構說明

Graylog 除了自身以外,採用了多種成熟的開源軟體套件搭配應用,深度整合後提供強大的系統能力。下圖是它的相關軟體架構圖。

https://ithelp.ithome.com.tw/upload/images/20240915/201188482zRsLUHpjo.png
Graylog 軟體架構圖

圖中灰色的區塊是指安裝 Graylog 伺服器的主機,裡面包含以下主要三大套件:

  • Graylog:提供所有記錄的輸入、輸出與處理,以及 WebUI
  • MongoDB:存放所有設定
  • OpenSearch:存放所有記錄資料與索引
題外話:

網路上有部份文章提到 Graylog 搜尋記錄快的原因在於 它將所有 Log 存放至 MongoDB,這是不正確的資訊。

在安裝這三大套件時,需要留意 Graylog 官方所列出的 Graylog 相容性清單:

https://ithelp.ithome.com.tw/upload/images/20240915/20118848OpvQAZHEnw.png
Graylog 版本與套件相容性清單


準備作業系統環境

請準備一部事先安裝好的 Ubuntu Server 22.04 版本,設定好網路可連通後,接著即可進行以下初始設定作業。

檢查處理器是否支援 AVX 指令集

lscpu | grep avx

執行後如有出現 Flags 資訊即表示支援,若無任何資訊顯示,則需要檢視硬體規格或虛擬機的處理器設定是否正確。

https://ithelp.ithome.com.tw/upload/images/20240915/20118848SKFv3c1W97.png
檢視處理器 AVX 指令集能力

技巧:

若是搭配 Proxmox VE 虛擬機,可將客體機的 CPU 類型選擇 Haswell、Skylake,或直接選用 Host。

設定正確時區 (台北時區)

sudo timedatectl set-timezone Asia/Taipei

將所有套件升級至最新版本

sudo apt update
sudo apt ugprade

安裝相關工具

sudo apt install -y net-tools htop iftop python3-pip glances nano vim curl gnupg 

上述作業全部完成後,建議重新開機。


安裝 MongoDB 7.0

準備軟體套件金鑰

sudo wget -qO- 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xf5679a222c647c87527c2f8cb00a0bd1e2c63c11' | sudo apt-key add -

curl -fsSL https://pgp.mongodb.com/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor

準備 MongoDB 套件來源

# 設定套件庫來源
sudo echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

# 更新套件庫清單
sudo apt update

安裝 MongoDB 套件

sudo apt install mongodb-org

設為開機啟動與立即啟動 MongoDB 服務

sudo systemctl daemon-reload
sudo systemctl enable mongod.service
sudo systemctl restart mongod.service

檢視 MongoDB 服務執行狀況

sudo systemctl status mongod.service

當服務顯示為 active (running) 時,即表示正常運作。

https://ithelp.ithome.com.tw/upload/images/20240915/20118848xh5JtJHX0s.png
檢視 OpenSearch 服務狀況


安裝 OpenSearch 2.15

準備軟體套件金鑰

sudo curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | sudo gpg --dearmor --batch --yes -o /usr/share/keyrings/opensearch-keyring

準備 OpenSearch 套件來源

# 設定套件庫來源
sudo echo "deb [signed-by=/usr/share/keyrings/opensearch-keyring] https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt stable main" | sudo tee /etc/apt/sources.list.d/opensearch-2.x.list

# 更新套件庫清單
sudo apt update

安裝 OpenSearch 指定版本套件與指定管理者密碼

sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD='Y0urP@$$w0rd****' apt install opensearch=2.15.0
說明一:

目前在相容性清單上所列,Graylog 6.x 最新支援到 OpenSearch 2.15.x,因此我們需要特別限定版本以免過高。

說明二:

自 OpenSearch 2.12 版本開始,要求需要指定 ADMIN PASSWORD 且密碼還需要滿足複雜性要求,否則無法正確完成安裝程序。

固定 OpenSearch 版本

sudo apt-mark hold opensearch

設定 OpenSearch 當中提供 Graylog 所需部份

# 編輯設定檔
sudo nano /etc/opensearch/opensearch.yml

# 將檔案內的內容以註解掉,增加下面內容
cluster.name: graylog
node.name: ${HOSTNAME}
discovery.type: single-node
network.host: 0.0.0.0
action.auto_create_index: false
plugins.security.disabled: true
path.data: /var/lib/opensearch
path.logs: /var/log/opensearch

設定 OpenSearch 記憶體配置

# 編輯設定檔
sudo nano /etc/opensearch/jvm.options

# 找到 Xms 與 Xmx 設定值,將它修改為這台主機記憶體的 50%
# 例如這台主機有 8GB,Xms 與 Xmx 就設定為 4g
-Xms4g
-Xmx4g

調整處理大量索引時效能參數

sudo sysctl -w vm.max_map_count=262144
echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.conf > /dev/null

設為開機啟動與立即啟動 OpenSearch 服務

sudo systemctl daemon-reload
sudo systemctl enable opensearch.service
sudo systemctl start opensearch.service

檢視 OpenSearch 服務執行狀況

sudo systemctl status opensearch.service

安裝 Graylog 6.0

下載並執行 Graylog 套件庫設定程式安裝檔

# 下載套件庫設定程式
wget https://packages.graylog2.org/repo/packages/graylog-6.0-repository_latest.deb

# 安裝執行套件庫設定程式
sudo dpkg -i graylog-6.0-repository_latest.deb

# 更新套件庫清單
sudo apt update

安裝 Graylog 套件

sudo apt install graylog-server

產生管理者密碼雜湊值

echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1

執行後,請輸入要使用的管理密碼並按下 Enter,再將出現的編碼後結果先複製起來,稍候將會使用。

https://ithelp.ithome.com.tw/upload/images/20240915/201188482m2W2mEfBv.png
產生管理者密碼雜湊值

產生伺服器金鑰

< /dev/urandom tr -dc A-Z-a-z-0-9 | head -c${1:-96};echo;

執行後會隨機產生一組金鑰,請將它複製起來,稍候會用。

https://ithelp.ithome.com.tw/upload/images/20240915/20118848UK0ygDmpfg.png
產生伺服器金鑰

修改 Graylog 伺服器設定檔

# 編輯 Graylog 伺服器設定檔
sudo nano /etc/graylog/server/server.conf

# 設定伺服器金鑰,填入稍早隨機產出的金鑰值
password_secret = XnjmzBOkFCtoRqlfISRxV9jGHY6jD2Ln3CMoxP00GBdkFtTGIUVxMvoXtplfI8p3K3Sdv0ooxodwVwAfRGTDgTIxh6b8cVpm 

# 設定管理者密碼,填入稍早設定好的管理者密碼雜湊值
root_password_sha2 = 90ecc336d6200b1389eb49c4b557ee42892345c2f727453ae82c96e6de94098e

# 設定管理者時區
root_timezone = Asia/Taipei

# 設定網頁伺服器監聽位址
http_bind_address = 0.0.0.0:9000

# 設定 OpenSearch 連接帳號密碼與位址
# 注意:若 OpenSearch 密碼設定時有特殊符號,記得要將它做 URL 編碼,例如
# @ 改為 %40 | $ 改為 %24 | # 改為 %23 | * 改為 %2A
elasticsearch_hosts = http://admin:Y0urP%40%24%24w0rd%2A%2A%2A%2A@127.0.0.1:9200

https://ithelp.ithome.com.tw/upload/images/20240915/20118848qr3ZBQ7pwe.png
修改 Graylog 伺服器設定檔一

https://ithelp.ithome.com.tw/upload/images/20240915/201188483cHBtwNPy6.png
修改 Graylog 伺服器設定檔二

https://ithelp.ithome.com.tw/upload/images/20240915/20118848o0YjdlSgCm.png
修改 Graylog 伺服器設定檔三

設為開機啟動與立即啟動 Graylog 服務

sudo systemctl daemon-reload
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service

檢視 Graylog 服務執行狀況

sudo systemctl status graylog-server.service

檢視必要服務連接埠是否已在監聽

sudo watch netstat -tnpl

執行後會每兩秒更新一次最新的連接埠監聽狀況,直到看見 27017, 9300, 9200, 9000 這四個連接埠均已在監聽,即表示安裝與啟動正確無誤,可按下 Ctrl + C 離開列表。

https://ithelp.ithome.com.tw/upload/images/20240915/201188484hcKGKohAd.png
檢視連接埠監聽狀況


進入 Graylog 使用介面

請用瀏覽器開啟 Graylog 主機網址,以範例主機 IP 為 192.168.1.51,其格式為 http://192.168.1.51:9000

在登入畫面中輸入預設管理員帳戶 admin,並請輸入稍早所設定的密碼,即可登入。

https://ithelp.ithome.com.tw/upload/images/20240915/20118848P703moyma7.png
Graylog 登入介面

登入完成後,可看見 Graylog 系統首頁。從下一篇開始,我們將會介紹 Graylog 的畫面基本配置與使用方式。

https://ithelp.ithome.com.tw/upload/images/20240915/20118848TkAZfNKPDs.png
Graylog 系統首頁


參考資料


下一篇
Graylog 使用者介面
系列文
突破困境:開源記錄收集與分析系統10
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言