跳到主要內容
節省工具箱Jason Tools
經驗分享

Graylog 準備與安裝

Jason Cheng 瀏覽 19,214 次
Graylog 準備與安裝
本文目錄
  1. 系統需求
  2. 軟體架構說明
  3. 準備作業系統環境
  4. 安裝 MongoDB 7.0
  5. 安裝 OpenSearch 2.15
  6. 安裝 Graylog 6.0
  7. 進入 Graylog 使用介面
  8. 參考資料

本文原載於 iT 邦幫忙 2024 鐵人賽系列〈突破困境:開源記錄收集與分析系統〉第 1 天,原文連結。

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

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

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

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

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


準備作業系統環境

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

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

lscpu | grep avx

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

技巧:
若是搭配 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) 時,即表示正常運作。


安裝 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,再將出現的編碼後結果先複製起來,稍候將會使用。

產生伺服器金鑰

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

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

修改 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

設為開機啟動與立即啟動 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 離開列表。


進入 Graylog 使用介面

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

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

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


參考資料

延伸閱讀