使用Graylog和Opensearch進行日誌管理和備份

閱讀時間約 10 分鐘
近期專案需求,需要使用到Log工具,在效能、快速搭建、費用的考量下,決定使用Gray & Opensearch

創建 Graylog 和 Opensearch

1. 使用官方提供的Docker yaml檔就能快速建立,不過因為有備份需求,opensearch要增加快照設定

version: '3'
services:
opensearch:
image: "opensearchproject/opensearch:2.15.0"
environment:
- "OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g"
- "bootstrap.memory_lock=true"
- "discovery.type=single-node"
- "path.repo=/home/mmsd/graylog" # 配置快照路徑
- "plugins.security.disabled=true"
ulimits:
memlock:
hard: -1
soft: -1
ports:
- "9203:9200"
- "9303:9300"
volumes:
- "opensearch:/usr/share/opensearch/data" # 數據卷
- "/path/on/host/graylog:/home/mmsd/graylog" # 快照存儲路徑
volumes:
opensearch:

2. 啟動Docker container

docker compose up -d

手動備份Log

1. Docker container啟動後,就建立快照存儲庫

curl -X PUT "http://localhost:9203/_snapshot/my_backup" -H 'Content-Type: application/json' -d'
{
"type": "fs",
"settings": {
"location": "/home/mmsd/graylog",
"compress": true
}
}'
  • 如果出現{"error":{"root_cause":[{"type":"exception","reason":"failed to create blob container"}],"type":"repository_verification_exception","reason":"[my_backup] path is not accessible on cluster-manager node","caused_by":{"type":"exception","reason":"failed to create blob container","caused_by":{"type":"access_denied_exception","reason":"/usr/share/opensearch/snapshot/tests-G5Qo2ODjTz6wqjlTiKsRDw"}}},"status":500}的錯誤,通常是因為容器對該路徑的權限不足,請參考權限不足解決方案

2.創建快照

curl -X PUT "http://localhost:9203/_snapshot/my_backup/snapshot_1"

3.確保快照已正確配置

curl -X GET "http://localhost:9203/_snapshot/my_backup?pretty"

4.確保 /path/on/host/graylog 目錄中能看到生成的快照文件

ls /path/on/host/graylog

5.備份索引

curl -X PUT "http://localhost:9203/_snapshot/my_backup/graylog_backup_$(date +%Y%m%d%H%M%S)?wait_for_completion=true" -H 'Content-Type: application/json' -d'
{
"indices": "graylog_0",
"ignore_unavailable": true,
"include_global_state": false
}'

6.刪除已備份的索引

curl -X DELETE "http://localhost:9203/graylog_0?pretty"

Recover Log data

1.關閉索引

curl -X POST "http://localhost:9203/graylog_0/_close?pretty"

2.Recover Log data

curl -X POST "http://localhost:9203/_snapshot/my_backup/graylog_backup/_restore" -H 'Content-Type: application/json' -d'
{
"indices": "graylog_0"
}'

3.重新開啟索引

curl -X POST "http://localhost:9203/graylog_0/_open?pretty"

自動備份

1.建立shell script

#!/bin/bash

# 備份索引
curl -X PUT "http://localhost:9203/_snapshot/my_backup/backup_$(date +%Y%m%d)?wait_for_completion=true" -H 'Content-Type: application/json' -d'
{
"indices": "graylog_*",
"ignore_unavailable": true,
"include_global_state": false
}'

# 刪除索引
curl -X DELETE "http://localhost:9203/graylog_0?pretty"

# 日誌
echo "$(date): Backup and deletion completed." >> /var/log/opensearch_backup.log

2.設定Cron Job

crontab -e
0 2 * * * /path/to/backup_script.sh

權限不足解決方案

排查與解決方式

1. 檢查宿主機目錄的權限

由於你使用的是 bind 挂载 /path/on/host/graylog:/home/mmsd/graylog,宿主機的目錄權限可能限制了 OpenSearch 的操作。

執行以下命令,檢查該目錄的所有者與權限:

ls -ld /path/on/host/graylog

假設輸出類似以下內容:

drwxr-xr-x 2 root root 4096 Nov 21 14:00 /path/on/host/graylog

可以看到,該目錄歸屬於 root,而 Docker 容器內的 OpenSearch 默認運行用戶不是 root,因此無法寫入。

2. 修改宿主機目錄的權限

給該目錄賦予容器的用戶寫入權限:

  • 改變目錄的擁有者 找到容器內的 OpenSearch 用戶 UID 和 GID,然後修改宿主機路徑的擁有者:
docker exec -it <opensearch_container_id> id

輸出類似:

uid=1000 gid=1000(opensearch)

在宿主機執行:

sudo chown -R 1000:1000 /path/on/host/graylog

3. 重啟 OpenSearch 容器

權限修改後,重新啟動容器:

docker compose restart opensearch

4. 重新創建快照存儲庫

再次執行 API 請求來創建快照存儲庫:

curl -X PUT "http://localhost:9203/_snapshot/my_backup" -H 'Content-Type: application/json' -d'
{
"type": "fs",
"settings": {
"location": "/home/mmsd/graylog",
"compress": true
}
}'
avatar-img
0會員
1內容數
軟體開發 & 金融投資的日常筆記
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
本篇參與的主題活動
BHC炸雞台灣首家分店於11/11台北大巨蛋地下街B2「遠東Garden City花園綠廊」正式登場,從國父紀念館捷運站五號出口步行約2分鐘。店面特別規畫內用和外帶動線,讓球迷們可以更快速外帶點餐,也有計畫明年擴展至南部。
BHC炸雞台灣首家分店於11/11台北大巨蛋地下街B2「遠東Garden City花園綠廊」正式登場,從國父紀念館捷運站五號出口步行約2分鐘。店面特別規畫內用和外帶動線,讓球迷們可以更快速外帶點餐,也有計畫明年擴展至南部。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
呈上篇,若是在大型系統中使用,重複被調用時,在每次紀錄時都會創建一個新的 FileHandler,這會導致日誌處理器不斷累積,從而使日誌重複記錄。 [Python]使用logging創建兩個以上的日誌紀錄 使用__new__的方法來避免重複調用 改良後 setup_logger 方法中創建一
Thumbnail
本文介紹瞭如何使用BAT腳本和CMD指令來自動執行檔案和空目錄的刪除作業。通過設定各種參數和指令,可以快速、有效地執行定期刪除作業,節省硬體空間並提升工作效率。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
前面已經安裝好IIS後,並且也新建站台了,那麼接下來這篇就會分享如何使用它
Thumbnail
Lua 開檔寫檔的運用 io.output()...
Thumbnail
如果所有裝置都可以透過單一檔案管理器統一管理這會有多方便? 紅茶最近在Github上找到專案,名叫Spacedrive。這個專案的宗旨,開發團隊希望未來只需要一個App就可以連接所有裝置和雲端空間,來更方便的管理自己手上的檔案。
Thumbnail
工具功能 (1) 彈性任意查詢檔案,如對來源目錄設定,檔案修改日期 設定,檔名特定字串或副檔名設定後,自動查出明細,並可展開至各階子目錄處理     (2) 依查詢後結果,可產出 LIST ,提供查詢結果之確認,再依此對檔案作複 (3) 可對檔案作移動,複製至別處,刪除處理,使電腦可騰出硬碟空間
Thumbnail
支援Go所有的類型儲存,且可以用原生SQL敘述與跨資料庫查詢。 映射關係 table->struct record->object field->attribute 安裝 go get github.com/astaxie/beego/orm​ go get github.com
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
呈上篇,若是在大型系統中使用,重複被調用時,在每次紀錄時都會創建一個新的 FileHandler,這會導致日誌處理器不斷累積,從而使日誌重複記錄。 [Python]使用logging創建兩個以上的日誌紀錄 使用__new__的方法來避免重複調用 改良後 setup_logger 方法中創建一
Thumbnail
本文介紹瞭如何使用BAT腳本和CMD指令來自動執行檔案和空目錄的刪除作業。通過設定各種參數和指令,可以快速、有效地執行定期刪除作業,節省硬體空間並提升工作效率。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
前面已經安裝好IIS後,並且也新建站台了,那麼接下來這篇就會分享如何使用它
Thumbnail
Lua 開檔寫檔的運用 io.output()...
Thumbnail
如果所有裝置都可以透過單一檔案管理器統一管理這會有多方便? 紅茶最近在Github上找到專案,名叫Spacedrive。這個專案的宗旨,開發團隊希望未來只需要一個App就可以連接所有裝置和雲端空間,來更方便的管理自己手上的檔案。
Thumbnail
工具功能 (1) 彈性任意查詢檔案,如對來源目錄設定,檔案修改日期 設定,檔名特定字串或副檔名設定後,自動查出明細,並可展開至各階子目錄處理     (2) 依查詢後結果,可產出 LIST ,提供查詢結果之確認,再依此對檔案作複 (3) 可對檔案作移動,複製至別處,刪除處理,使電腦可騰出硬碟空間
Thumbnail
支援Go所有的類型儲存,且可以用原生SQL敘述與跨資料庫查詢。 映射關係 table->struct record->object field->attribute 安裝 go get github.com/astaxie/beego/orm​ go get github.com