AdGuard Home 轉送記錄到 Graylog
BUBU 因家裡都有在使用 AdGuard Home
服務,因一直想要把該服務的記錄檔轉送到 Graylog
,剛好前陣子有一位大神 節省哥 分享了轉送的腳本及資訊看板。
運行環境
環境都是在 「Proxmox VE 」 虛擬系統上架設,都是以 「 LXC 」模式為主,除非有特殊狀況會告知使用 「 VM 」 模式
- 系統環境: Debian 11、12
設安過程
- 因該腳本是用
Python
編寫需安裝必要的套件
apt install python3 python3-pip python3-venv python3-yaml -y
-
安裝相關函式,
Python
在3.11
以上版本需要進到虛擬環境才能安裝pip
相關套件- Debian11
pip3 install watchdog pip3 install python-dateutil
- Debian12(這是免進虛擬環境可以直接執行安裝套件)
pip3 install --user --break-system-packages watchdog pip3 install --user --break-system-packages python-dateutil
-
連到 節省哥的 GitHub 抓取執行腳本,以下是需要修改的地方
# AGH 記錄位置
log_file_path = '/usr/local/AdGuardHome/data/querylog.json'
# 預設跳過
last_position_file = '/opt/resend_adguardhome_log.tmp'
# AGH 設定檔位置
config_path = '/usr/local/AdGuardHome/AdGuardHome.yaml'
# Graylog 連線位置
graylog_host = '192.168.1.83'
# Graylog 接收的 Prot 號
graylog_port = 32201
- 註冊成服務
vim /etc/systemd/system/agh_log.service
[Unit]
Description=AGH Log Python Script
After=network.target
[Service]
# 修改您轉送腳本位置
ExecStart=/usr/bin/python3 /path/to/agh_log.py
Restart=always
RestartSec=5
StandardOutput=append:/var/log/agh_log_output.log
StandardError=append:/var/log/agh_log_error.log
[Install]
WantedBy=multi-user.target
- 重新載入
systemd
設定
sudo systemctl daemon-reload
- 啟動時執行該服務
systemctl enable agh_log.service --now
- 再去
Graylog
後台建立新的Inputs
使用GELF UDP
建立新的接收的通道 - 再到
Graylog
匯入 節省哥分享的資訊看板,匯入是從Content Packs
這裡匯入並且安裝即可時使用
- 如果這樣子的資訊看板不符合您想要看的資訊,您可以再自行修改即可。
- 如果想要開機進入系統後自動執行該腳本可參考本篇使用 Debian \ Ubuntu 開機啟動 方式來執行。
補充說明
BUBU 在測試的時候發現到該腳本會自己不見,因此建立一個監控腳本確認該轉送腳本是否還活著
- 監控腳本
vim check_agh_log.sh
#!/bin/bash
# 定義要檢查的腳本名稱
SCRIPT_NAME="agh_log.py"
# 定義日誌檔案的位置
LOG_FILE="/root/agh_log_restart.log"
# 檢查該腳本是否正在執行
pgrep -f $SCRIPT_NAME > /dev/null
# 如果該腳本沒有在執行,則啟動它並記錄事件
if [ $? -ne 0 ]; then
echo "$(date '+%Y-%m-%d %H:%M:%S') - $SCRIPT_NAME 沒有在執行,重新啟動中..." >> $LOG_FILE
/usr/bin/python3 /root/$SCRIPT_NAME &
else
echo "$SCRIPT_NAME 正在執行中。"
fi
- 讓該腳本有執行權限
chmod +x check_agh_log.sh
- 註冊成服務
vim /etc/systemd/system/check_agh_log.service
[Unit]
Description=Check and Restart agh_log.py if not running
After=network.target
[Service]
Type=simple
# 修改您監控轉送腳本的位置
ExecStart=/path/to/check_agh_log.sh
Restart=on-failure
RestartSec=60
StandardOutput=append:/var/log/check_agh_log_restart.log
StandardError=append:/var/log/check_agh_log_error.log
[Install]
WantedBy=multi-user.target
- 重新載入
systemd
設定
sudo systemctl daemon-reload
- 啟動時執行該服務
systemctl enable check_agh_log.service --now