Skip to main content

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
  • 安裝相關函式,Python3.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

備註





參考相關網頁