使用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
1會員
7內容數
軟體開發 & 金融投資的日常筆記
留言
avatar-img
留言分享你的想法!
本篇參與的主題活動
全新 vocus 挑戰活動「方格人氣王」來啦~四大挑戰任你選,留言 / 愛心 / 瀏覽數大 PK,還有新手專屬挑戰!無論你是 vocus 上活躍創作者或剛加入的新手,都有機會被更多人看見,獲得站上版位曝光&豐富獎勵!🏆
流浪者,不是在流浪就是在準備流浪的路上。 平常肉身被困在辦公室的時候,只能用Google map靈魂旅行,於是知道許許多多的冷門國家,總是好奇在世界另一個角落的人是怎麼生活的。 某次看到一則新聞:一天之內跨年兩次。狂男在雪梨跨年完後直接飛到庫克群島再跨年一次,才知道世界上有一個這樣的國家(狂
有位學生曾問我:該怎麼創作內容? ​ 這問題,讓我想起 村上春樹 的「寫作秘密」 ;村上春樹,早期開始寫小說,一直有個困擾,他腦中畫面太多,情緒也太滿,結果一寫下去——卻是密密麻麻的形容詞、冗長的對白、複雜的句子...
此篇文章提供寶可夢集換式卡牌遊戲最新擴充包的資訊,包含上線日期、特色卡牌、活動內容、新周邊以及收集建議等,幫助玩家做好準備迎接新卡包。
田中達也的微縮攝影,不只是童趣,而是一場日常物件的顛覆性變革。 他運用日本「見立」概念,將筷子變成跳高竿、刮鬍刀變雪山,創造出全新視角的奇幻世界。本篇文章深入解析他的視覺傳達、創意思維與高產法則,探索他如何將設計發想課的思維融入日常,透過每天一張作品,將創意變成生活習慣。快來揭開這場微縮藝術的秘密!
大學生如何透過創業競賽累積實戰經驗、拓展人脈、提升技能並獲取獎金,進而提升個人競爭力。文章分享了參與創業競賽的心路歷程,以及尋找創業點子、製作簡報、團隊合作等實用技巧。
含 AI 應用內容
#創業#競賽#簡報
全新 vocus 挑戰活動「方格人氣王」來啦~四大挑戰任你選,留言 / 愛心 / 瀏覽數大 PK,還有新手專屬挑戰!無論你是 vocus 上活躍創作者或剛加入的新手,都有機會被更多人看見,獲得站上版位曝光&豐富獎勵!🏆
流浪者,不是在流浪就是在準備流浪的路上。 平常肉身被困在辦公室的時候,只能用Google map靈魂旅行,於是知道許許多多的冷門國家,總是好奇在世界另一個角落的人是怎麼生活的。 某次看到一則新聞:一天之內跨年兩次。狂男在雪梨跨年完後直接飛到庫克群島再跨年一次,才知道世界上有一個這樣的國家(狂
有位學生曾問我:該怎麼創作內容? ​ 這問題,讓我想起 村上春樹 的「寫作秘密」 ;村上春樹,早期開始寫小說,一直有個困擾,他腦中畫面太多,情緒也太滿,結果一寫下去——卻是密密麻麻的形容詞、冗長的對白、複雜的句子...
此篇文章提供寶可夢集換式卡牌遊戲最新擴充包的資訊,包含上線日期、特色卡牌、活動內容、新周邊以及收集建議等,幫助玩家做好準備迎接新卡包。
田中達也的微縮攝影,不只是童趣,而是一場日常物件的顛覆性變革。 他運用日本「見立」概念,將筷子變成跳高竿、刮鬍刀變雪山,創造出全新視角的奇幻世界。本篇文章深入解析他的視覺傳達、創意思維與高產法則,探索他如何將設計發想課的思維融入日常,透過每天一張作品,將創意變成生活習慣。快來揭開這場微縮藝術的秘密!
大學生如何透過創業競賽累積實戰經驗、拓展人脈、提升技能並獲取獎金,進而提升個人競爭力。文章分享了參與創業競賽的心路歷程,以及尋找創業點子、製作簡報、團隊合作等實用技巧。
含 AI 應用內容
#創業#競賽#簡報
你可能也想看
Google News 追蹤
Thumbnail
全新 vocus 挑戰活動「方格人氣王」來啦~四大挑戰任你選,留言 / 愛心 / 瀏覽數大 PK,還有新手專屬挑戰!無論你是 vocus 上活躍創作者或剛加入的新手,都有機會被更多人看見,獲得站上版位曝光&豐富獎勵!🏆
Thumbnail
本文探討AI筆記工具的優缺點、選擇建議及未來趨勢,比較NotebookLM、OneNote+Copilot、Notion AI、Obsidian+GPT插件和Palantir Foundry等工具,並強調安全注意事項及個人需求評估的重要性。
Thumbnail
全方位分析脫離繼承戰的方法,大膽猜測誰會成為卡丁國下一任國王。
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
全新 vocus 挑戰活動「方格人氣王」來啦~四大挑戰任你選,留言 / 愛心 / 瀏覽數大 PK,還有新手專屬挑戰!無論你是 vocus 上活躍創作者或剛加入的新手,都有機會被更多人看見,獲得站上版位曝光&豐富獎勵!🏆
Thumbnail
本文探討AI筆記工具的優缺點、選擇建議及未來趨勢,比較NotebookLM、OneNote+Copilot、Notion AI、Obsidian+GPT插件和Palantir Foundry等工具,並強調安全注意事項及個人需求評估的重要性。
Thumbnail
全方位分析脫離繼承戰的方法,大膽猜測誰會成為卡丁國下一任國王。
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